ax86 - phphttps://www.ax86.net/2008-07-18T22:26:00+02:00Hübsche Daten mit PHP2008-07-18T22:26:00+02:002008-07-18T22:26:00+02:00Tbluetag:www.ax86.net,2008-07-18:/2008/07/18/huebsche-daten-mit-php/<p>Falls jemand einmal in der Lage sein sollte, Daten in <span class="caps">PHP</span> “hübsch”
(“Heute”, “Gestern”, “am 03.09.2006 um 13:30:42”) darzustellen zu
müssen/wollen, habe ich für denjenigen den passenden <span class="caps">PHP</span>-Code.</p>
<div class="highlight"><pre><span></span><span class="cp"><?php</span>
<span class="c1">// Für alle Fälle:</span>
<span class="nb">date_default_timezone_set</span><span class="p">(</span><span class="s1">'Europe/Berlin'</span><span class="p">);</span>
<span class="c1">// Für deutsche Wochentagsabkürzungen, bei Bedarf entspr. abändern:</span>
<span class="nb">setlocale</span><span class="p">(</span><span class="nx">LC_TIME</span><span class="p">,</span> <span class="s1">'de_DE'</span><span class="p">);</span>
<span class="k">function</span> <span class="nf">nicedate</span><span class="p">(</span><span class="nv">$timestamp </span><span class="o">=</span> <span class="k">NULL</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$timestamp </span><span class="o">===</span> <span class="k">NULL</span><span class="p">)</span> <span class="p">{</span>
<span class="nv">$timestamp </span><span class="o">=</span> <span class="nb">time</span><span class="p">();</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$timestamp </span><span class="o">>=</span> <span class="nb">mktime</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&&</span>
<span class="nv">$timestamp </span><span class="o"><=</span> <span class="nb">mktime</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="mi">59</span><span class="p">,</span> <span class="mi">59</span><span class="p">))</span>
<span class="p">{</span>
<span class="c1">// Bei Bedarf Datumsformat abändern, siehe auch die anderen</span>
<span class="c1">// zwei strftime()-Aufrufe.</span>
<span class="k">return</span> <span class="nb">strftime</span><span class="p">(</span><span class="s1">'Heute um %H:%M:%S'</span><span class="p">,</span> <span class="nv">$timestamp</span><span class="p">);</span>
<span class="p">}</span> <span class="k">elseif</span> <span class="p">(</span>
<span class="nv">$timestamp </span><span class="o">>=</span> <span class="nb">mktime</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">date</span><span class="p">(</span><span class="s1">'n'</span><span class="p">),</span> <span class="nb">date</span><span class="p">(</span><span class="s1">'j'</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&&</span>
<span class="nv">$timestamp </span><span class="o"><=</span> <span class="nb">mktime</span><span class="p">(</span><span class="mi">23</span><span class="p">,</span> <span class="mi">59</span><span class="p">,</span> <span class="mi">59</span><span class="p">,</span> <span class="nb">date</span><span class="p">(</span><span class="s1">'n'</span><span class="p">),</span> <span class="nb">date</span><span class="p">(</span><span class="s1">'j'</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span>
<span class="p">{</span>
<span class="k">return</span> <span class="nb">strftime</span><span class="p">(</span><span class="s1">'Gestern um %H:%M:%S'</span><span class="p">,</span> <span class="nv">$timestamp</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">return</span> <span class="nb">strftime</span><span class="p">(</span><span class="s1">'%a, %d.%m.%y, %H:%M:%S'</span><span class="p">,</span> <span class="nv">$timestamp</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">// Aktuelles Datum:</span>
<span class="k">echo</span> <span class="nx">nicedate</span><span class="p">()</span><span class="o">.</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="c1">// Gestern:</span>
<span class="k">echo</span> <span class="nx">nicedate</span><span class="p">(</span><span class="nb">mktime</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mo">00</span><span class="p">,</span> <span class="nb">date</span><span class="p">(</span><span class="s1">'n'</span><span class="p">),</span> <span class="nb">date</span><span class="p">(</span><span class="s1">'j'</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span><span class="o">.</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="c1">// Damals...</span>
<span class="k">echo</span> <span class="nx">nicedate</span><span class="p">(</span><span class="nb">mktime</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1999</span><span class="p">))</span><span class="o">.</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="c1">// Beispiel der Konvertierung eines Strings in einen Timestamp,</span>
<span class="c1">// siehe auch: http://www.php.net/manual/en/function.strtotime.php</span>
<span class="k">echo</span> <span class="nx">nicedate</span><span class="p">(</span><span class="nb">strtotime</span><span class="p">(</span><span class="s1">'Fri, 18 Jul 2008 14:12:06 GMT'</span><span class="p">));</span>
<span class="cp">?></span>
</pre></div>
<p>Die Ausgabe sieht dann so aus:</p>
<pre class="literal-block">
Heute um 14:22:32
Gestern um 13:30:00
Mo, 01.03.99, 10:45:23
Gestern um 16:12:06
</pre>
Vorratsdatenspeicherungs-Pagepeel: Plugin für b2evolution2008-06-03T22:38:00+02:002008-06-03T22:38:00+02:00Tbluetag:www.ax86.net,2008-06-03:/2008/06/03/vorratsdatenspeicherung-pagepeel-plugin/<p>Ich machs kurz: Ich habe mir ein b2evolution-Plugin geschrieben, das das
<a class="reference external" href="http://wiki.vorratsdatenspeicherung.de/Online-Demo">Pagepeel des <span class="caps">AK</span>
Vorratsdatenspeicherung</a>
einblendet. Es gibt ein paar Konfigurationseinstellungen, ich bin jetzt
allerdings zu müde, das genauer zu erklären. Eine kleine Dokumentation
zu den Einstellungen liegt bei.</p>
<p><a class="reference external" href="https://www.ax86.net/2008/06/03/vorratsdatenspeicherung-pagepeel-plugin/akvs_onlinedemo_plugin.zip">Download</a>
(Version 1.0.2; getestet mit b2evolution 2.4.2, funktioniert evtl.
auch mit früheren Versionen; veröffentlicht unter der <a class="reference external" href="http://www.opensource.org/licenses/gpl-2.0.php"><span class="caps">GPL</span>
v2</a>).</p>
<p>Installation: Zip-Archiv entpacken und den enthaltenen Ordner in das
Verzeichnis <em>plugins</em> verschieben, im Backend Plugin aktivieren,
Blog-IDs in den Plugin-Einstellungen eintragen, freuen. :) Kritik ist
natürlich willkommen.</p>
Patch für Phorum 5.2.7: User hinzufügen per ACP2008-05-15T22:27:00+02:002008-05-15T22:27:00+02:00Tbluetag:www.ax86.net,2008-05-15:/2008/05/15/patch-fuer-phorum-5-2-7-user-hinzufuegen/<p>Und noch ein Patch für <a class="reference external" href="http://phorum.org">Phorum</a>. Diesmal fehlte
mir die Möglichkeit, neue User direkt im Admin Control Panel hinzufügen
zu können und nicht immer den Umweg über das öffentliche
Registrierungsformular nehmen zu müssen.</p>
<p>Der Patch besteht aus der Datei <em>useradd.php</em>, die in den Ordner
<em>/include/admin</em> gehört und einem Patch, der einen Link
(<em>Users/Groups</em> -> <em>Add Users</em>) im <span class="caps">ACP</span>-Menü hinzufügt.</p>
<p>Der Patch ist so winzig, dass man ihn per Hand einpflegen kann (eine
Zeile). Dazu öffnet man <em>/include/admin/header.php</em> und fügt nach
Zeile 460 folgende Zeile ein:</p>
<pre class="literal-block">
$menu->add('Add Users', 'useradd', 'Allows administrator to add new users.');
</pre>
<p>Alternativ kann man natürlich auch das Programm <em>patch</em> und das
Patchfile (siehe unten) verwenden. Der Befehl <em>patch -p1 <
pfad/zur/patchdatei.patch</em> muss im Phorum-Basisverzeichnis ausgeführt
werden. So, wie der Befehl hier gezeigt wird, funktioniert er mit
(fast?) allen Unix/Linux-Shells.</p>
<p>Downloads:</p>
<ul class="simple">
<li><a class="reference external" href="https://www.ax86.net/2008/05/15/patch-fuer-phorum-5-2-7-user-hinzufuegen/phorum-5.2.7_acp_adduserlink.patch">Patchfile</a></li>
<li><a class="reference external" href="https://www.ax86.net/2008/05/15/patch-fuer-phorum-5-2-7-user-hinzufuegen/useradd.phps">useradd.phps</a>
(umbenennen in <em>useradd.php</em>)</li>
</ul>
<p>Auch hier gilt: Ich hafte nicht für etwaige Schäden, die durch diesen
Patch entstehen, die Verwendung erfolgt auf eigene Gefahr. Es besteht
kein Anspruch auf Funktionstüchtigkeit.</p>
<p>Ansonsten wünsche ich aber viel Vergnügen ;) und ermuntere zu Kritik.</p>
Patch für Phorum 5.2.7: Registrierung deaktivieren2008-05-14T16:12:00+02:002008-05-14T16:12:00+02:00Tbluetag:www.ax86.net,2008-05-14:/2008/05/14/patch-fuer-phorum-5-2-7-registrierung-de/<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The English version of this post can be found on the
<a class="reference external" href="http://www.phorum.org/phorum5/read.php?20,130169">Phorum.org support
forums</a>. <a class="reference external" href="http://www.phorum.org/phorum5/read.php?62,131018">Click
here</a> for the
post in the “Modules” forum.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Hinweis</p>
<p class="last">Diesen Patch gibt es auch als Modul, siehe Ende des Beitrages.</p>
</div>
<p>Der Titel sagt es eigentlich schon. Vor kurzem habe ich mir
<a class="reference external" href="http://phorum.org">Phorum</a> 5.2.7 installiert und es als gut
befunden. ;) Das einzige, was ich vermisste, war die Möglichkeit, die
Registrierung zu deaktivieren. Also habe ich das schnell nachgerüstet.</p>
<p>Mein Patch fügt im Admin-Bereich in den <em>General Settings</em> im
Abschnitt <em>User Settings</em> eine Option <em>Enable registration</em> hinzu. Auf
<em>No</em> gesetzt bewirkt die Option, dass User beim Versuch, sich zu
registrieren, eine Fehlermeldung bekommen. Das Bestätigen eines
Accounts ist immer noch möglich und wird vom Patch nicht beeinflusst.</p>
<p>Außerdem wird die Template-Variable <em>RegEnabled</em> gesetzt, so dass man
etwaige Links zur Registrierungsseite leicht ausblenden kann.</p>
<p>Auch wird eine neue Sprach-Variable <em>RegDisabled</em> verwendet, die die
entsprechende Meldung enthalten sollte (falls die Variable nicht
gesetzt ist, wird die englische Meldung angezeigt).</p>
<p>Die drei Standardtemplates von Phorum, die englische Sprachdatei sowie
die deutschen Sprachdateien von <a class="reference external" href="http://www.phorum.org/phorum5/read.php?65,129717">Oliver
Riesen</a> habe ich
bereits angepasst.</p>
<p><a class="reference external" href="https://www.ax86.net/2008/05/14/patch-fuer-phorum-5-2-7-registrierung-de/phorum-5.2.7_disable-registration.patch">Download</a>
des Patches für Phorum 5.2.7. Wie immer gilt auch hier: Ich hafte nicht
für etwaige Schäden, die durch diesen Patch entstehen, die Verwendung
erfolgt auf eigene Gefahr. Es gibt keinen Anspruch auf Funktionstüchtigkeit.</p>
<p>Der Patch wird (jedenfalls unter Linux) mit dem Befehl <em>patch</em>
angewendet. Das Programm <em>patch</em> ist meistens vorinstalliert oder kann
mit Hilfe des Paketmanagers nachinstalliert werden.</p>
<p>Der Befehl muss im Basisverzeichnis von Phorum ausgeführt werden (das
Verzeichnis enthält z. B. die Dateien <em>register.php</em> und
<em>common.php</em>):</p>
<pre class="literal-block">
patch -p1 < pfad-zum-patchfile.patch
</pre>
<p>Damit ist der Patch angewandt. Viel Spaß damit, Kritik bitte hier in den
Kommentaren posten.</p>
<div class="section" id="update">
<h2>Update</h2>
<p>Module sind immer besser als Patches.</p>
<p>Deshalb gibt es
<a class="reference external" href="https://www.ax86.net/2008/05/14/patch-fuer-phorum-5-2-7-registrierung-de/phorum_mod_noreg.zip">hier</a>
nun auch ein Modul (nur lauffähig mit Phorum >= 5.2.7). Aktiviert
deaktiviert es die Registrierung und definiert die Template-Variable
<em>RegDisabled</em>, so dass Links zu register.php und das
Registrierungsformular einfach ausgeblendet werden können.</p>
<p>Für das Modul gilt das gleiche wie für den Patch: Ich hafte nicht für
etwaige Schäden, die durch diesen Patch entstehen, die Verwendung
erfolgt auf eigene Gefahr. Es gibt keinen Anspruch auf Funktionstüchtigkeit.</p>
</div>
Saubere b2evolution-URLs mit lighttpd2008-04-24T16:34:00+02:002008-04-24T16:34:00+02:00Tbluetag:www.ax86.net,2008-04-24:/2008/04/24/saubere-b2evolution-urls-mit-lighttpd/<p>Steht wahrscheinlich schon oft irgendwo im Internet, aber da ich erst
nach ein paar Tagen auf die Lösung gekommen bin:</p>
<pre class="literal-block">
server.error-handler-404 = "/index.php"
</pre>
<p>Diese Konfigurationsoption tut das gleiche wie die folgenden Anweisungen
für die .htaccess-Datei von Apache (aus der sample.htaccess von b2evo):</p>
<pre class="literal-block">
RewriteEngine On
RewriteCond %{REQUEST\_FILENAME} !-d
RewriteCond %{REQUEST\_FILENAME} !-f
RewriteRule ^ index.php
</pre>
<p>Es werden einfach alle Anfragen, die normalerweise einen 404er-Fehler
auslösen würden, auf die index.php weitergeleitet, die dann den
Request-<span class="caps">URI</span> auswertet.</p>