PHP auf Version 8.2.13 umgestellt

- Veröffentlicht unter Ankündigungen von

Das Blog-System HTMLy wird in der Programmiersprache PHP entwickelt, welche immer wieder Aktualisierungen (z. B. wegen neuer Funktionen oder Sicherheitsupdates) erhält. Bislang war auf dem Server meines Blogs PHP in Version 8.0.30 im Einsatz, nun eben Version 8.2.13.

Sollten bei euch irgendwelche Probleme auftauchen, dann sendet mir bitte eine E-Mail an die im Impressum genannte Adresse.

Umstellung der PHP-Version

- Veröffentlicht unter Ankündigungen von

Ich habe mich gestern erinnert, dass diese Seite noch mit einer PHP-Version des 7er Zweigs läuft, weil die Markdown-Komponente des von mir hier vorher betriebenen Miniblog nicht für PHP 8.x geeignet ist. Da HTMLy offiziell für PHP 8.0 freigegeben ist, habe ich die PHP-Version nun von 7.4.29 auf 8.0.19 umgestellt. Scheint bislang alles zu laufen.

FlatPress: Nachschlag zum Kommentarspam

- Veröffentlicht unter Software - Web von

Der Workaround aus meinem gestrigen Eintrag FlatPress: Kommentarspam trotz QuickSpamFilter? hat mir keine Ruhe gelassen, weshalb ich mich heute noch einmal ausführlicher damit befasst habe.

FlatPress: Kommentarspam trotz QuickSpamFilter?

- Veröffentlicht unter Software - Web von

Jep. Habe ich. – Ursache: Ein weiterer Bug in FlatPress. :-/

Diese Instanz von FlatPress ist so eingestellt, dass sämtliche neuen Kommentare von mir gesichtet und freigeschaltet werden müssen, bevor sie euch da draußen angezeigt werden. Dazu habe ich das Plugin "Comment Center" mit einer entsprechenden Regel versehen. Da ich aber faul bin, möchte ich Kommentare, die z. B. Links zu Webseiten enthalten, auf denen man "lustige Pillen" kaufen kann, gar nicht erst moderieren, sondern bereits bei der Erstellung abweisen. Dafür gibt es das Plugin "QuickSpamFilter", in dem man die bösen Wörter hinterlegt, die dann zur Ablehnung eines Kommentars führen.

FlatPress: Mein erstes Plugin ist fertig (CountPages) :-)

- Veröffentlicht unter Software - Web von

Ich habe mich in den letzten Tagen daran versucht, ein Plugin für FlatPress zu erstellen. Nichts Aufregendes, "CountPages", so der Name, zählt einfach nur die Seiten (Beiträge, Entwürfe und statische Seiten) in eurem Blog durch und präsentiert euch das Ergebnis.

Aufgabe Nr. 4: Favicon einbinden

- Veröffentlicht unter Software - Web von

Update 2013-09-17: Zwischenzeitlich hat Florian eingeräumt, dass der lizenzrechtliche Status des Icons, vorsichtig ausgedrückt, doch nicht so klar ist. Ich verwende daher stattdessen nun die Datei npp.ico von Notepad++.


Bei knapp 30 Grad Celsius Zimmertemperatur um 21 Uhr bin ich wenig motiviert, die (vermutlich) große Aufgabe „Feed-Generator“ anzugehen. Ich beschränke mich deswegen erneut auf eine kleine.

Und da ich ein miserabler Grafiker bin, „recycle“ ich für diesen Zweck das Icon meines bevorzugten Texteditors. Netterweise hat Florian Balmer Notepad2 unter einer BSD-Lizenz veröffentlicht.

Aus dem Quellcode-Archiv notepad2_4.2.25_src.zip entnehme ich die Datei res\Notepad2.ico und speichere sie als favicon.ico im Hauptverzeichnis meiner miniblog-Installation. Weiterhin notiere ich in der Datei index.php über der Zeile <style type="text/css"> eine neue Zeile <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />.

Und da Florian das Copyright für das Icon hat, wird der Footer-Abschnitt in der Datei index.php um die Zeile <a href="http://www.flos-freeware.ch/notepad2.html">Notepad2</a>-Favicon Copyright &copy; 2004-2011 <a href="http://www.flos-freeware.ch/">Florian Balmer</a></p> ergänzt.

2024-07-28: Falls oben „©“ dargestellt werden sollte, dann ist eigentlich
die Zeichenfolge 'Ampersand „copy“ Semikolon' gemeint, weil miniblog zu
diesem Zeitpunkt noch kein UTF-8 kannte.
Aber der HTMLy-Beitragseditor, zumindest bis einschließlich Version 2.9.9,
wandelt diese Zeichenfolge leider bei jedem Bearbeiten des Beitrags erneut
um und ich habe dann die manuelle Korrektur vergessen.

Bei dieser Gelegenheit kommt direkt darüber gleich noch die Zeile <p>Falls nicht anders bezeichnet, ist der Inhalt dieses Blogs unter der folgenden Lizenz veröffentlicht: <a href="http://creativecommons.org/licenses/by-sa/3.0/">CC Attribution-Share Alike 3.0 Unported</a><br />, die ich sowieso schon die ganze Zeit einbauen wollte.

Aufgabe Nr. 3: Darstellung des Datums ändern

- Veröffentlicht unter Software - Web von

Momentan sieht man z. B. „July 20, 2013“ als Erstellungsdatum eines Blog-Artikels. Ich möchte es jedoch gern im Format „Samstag, 20. Juli 2013, 22:24 Uhr“ anzeigen lassen.

In den Options des Admin-Panels ist standardmäßig F d, Y eingetragen. Das bedeutet:

  • F = Monat als ganzes Wort, wie January oder March,
  • d = Tag des Monats, 2-stellig mit führender Null und
  • Y = Vierstellige Jahreszahl.

Ich versuche es daher gemäß date zunächst einmal mit: l, d. F Y, H:i

Gar nicht mal schlecht! Allerdings sind Wochentag und Monat in englischer Sprache („Saturday, 20. July 2013, 22:24“). Mit date() in Zeile 44 der Datei includes/miniblog.php werde ich da nicht weiterkommen. Ich muss auf strftime umsteigen.

Ich schreibe also zuerst setlocale(LC_TIME, 'de_DE'); in eine neue Zeile der Datei includes/config.php und ersetze anschließend Zeile 44 der Datei includes/miniblog.php mit:

$postdate$' => strftime($config['date-format'], $posts['date']),

Zuletzt setze ich das „Date format“ in den Options des Admin-Panels auf %A, %d. %B %Y, %H:%M Uhr. Et voilà!

Als Perfektionist ändere ich dann selbstverständlich noch die Datenbanktabelle miniblog_config.

Aus:

Date format as per the PHP date function <a href="http://www.php.net/date">here</a>

wird:

Date format as per the PHP strftime function <a href="http://www.php.net/strftime">here</a>

Oha! Eine unerwünschte (aber eigentlich auch logische) Nebenwirkung: Im Admin-Panel ist die Datumsanzeige vermurkst, denn in der Datei adm/index.php wird in Zeile 22 ebenfalls date verwendet.

Aus:

<td>" . date($config['date-format'], $row['date']) . "</td>

wird:

<td>" . strftime($config['date-format'], $row['date']) . "</td>

Noch mehr date kommt im gesamten miniblog-Quellcode dann aber doch nicht vor. Schwein gehabt!

Aufgabe Nr. 2: Beschreibung „latest product updates“ ändern

- Veröffentlicht unter Software - Web von

Die Beschreibung steht in der Datei index.php im „H2“-Tag in Zeile 88. Mit meinen Erkenntnissen aus Aufgabe Nr. 1 sollte das also ein Kinderspiel werden.

Die Datenbanktabelle miniblog_config ergänze ich um eine neue Zeile:

  • miniblog-description,
  • Das persönliche Blog von Robert Riebisch,
  • Short subtitle of this blog

und korrigiere wieder die Reihenfolge mit dem SQL-Befehl:

ALTER TABLE miniblog_config ORDER BY FIELD(config_name, 'miniblog-title', 'miniblog-description', 'posts-per-page', 'date-format', 'password', 'miniblog-filename', 'use-modrewrite')

Anschließend ersetze ich Zeile 88 durch:

<h2><?=$config['miniblog-description']?></h2>

Funktioniert! Das war schon fast zu einfach. Aber ich habe mir heute bewusst nur eine kleine Aufgabe ausgesucht, denn ich habe wenig Zeit zur Verfügung.

Aufgabe Nr. 1: Titel „miniblog“ ändern

- Veröffentlicht unter Software - Web von

Nach der Installation von miniblog trägt die installierte Instanz den Namen „miniblog“. Diesen würde ich gern anpassen und wo steht dieser Name?

Auf jeden Fall in der Datei index.php im „Title“-Tag in Zeile 9 und im „H1“-Tag in Zeile 87. Könnte ich jetzt also einfach editieren. Ich möchte den Titel aber stattdessen gern in der Datenbank speichern, so dass er über das Admin-Panel angepasst werden kann.

Daher füge ich als ersten Schritt mittels phpMyAdmin in der Tabelle miniblog_config eine neue Zeile mit diesen Werten ein:

  • miniblog-title (für config_name),
  • Notepad (für config_value) sowie
  • Name of this blog (für config_explain).

Anschließend ersetze ich in der Datei index.php die Zeile 9 durch:

<title><?=$config['miniblog-title']?></title>

und die Zeile 87 durch:

<h1><?=$config['miniblog-title']?></h1>

Wow! Das klappt sogar besser als erwartet, denn miniblog liest in der Datei functions.php ab der Zeile 15 durch die Funktion mb_config() sämtliche in der Tabelle miniblog_config vorhandenen Zeilen ein und weist sie entsprechend PHP-Variablen zu. Das bedeutet, dass dank der Zeilen 102-148 der Datei adm/index.php der Wert auch bereits über das Admin-Panel verändert werden kann.

Nun steht dieser aber ganz unten auf der Seite. Er soll aber oben stehen. Hier hilft der folgende SQL-Befehl ausgeführt wieder mittels phpMyAdmin:

ALTER TABLE miniblog_config ORDER BY FIELD(config_name, 'miniblog-title', 'posts-per-page', 'date-format', 'password', 'miniblog-filename', 'use-modrewrite')

Damit ist die erste Aufgabe schon geschafft. Hurra! So kann es bitte weitergehen.