NEWS plugin für XH_1.7

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
knollsen
Posts: 459
Joined: Wed Nov 06, 2013 2:28 pm

NEWS plugin für XH_1.7

Post by knollsen » Sat Jun 17, 2017 6:13 pm

Da beide Plugins RealBlog und NEWS 1.1.1 für XH_1.7 nicht kompatible sind, habe ich mal versucht News 1.1.1 kompatible zu machen, was auch funktionierte. Da ich früher sehr oft NEWS verwendet habe, sollte das auch bei dem Update klappen.
die Zeilen in der admin.php

Code: Select all

if (isset($news))
{
	global $sn;
	$f = "news";
	initvar('admin');
	$o .= print_plugin_admin('ON');
habe ich mit

Code: Select all

if (function_exists('XH_registerStandardPluginMenuItems')) {
    XH_registerStandardPluginMenuItems(true);
}
if (function_exists('XH_wantsPluginAdministration') && XH_wantsPluginAdministration('news')|| isset($news) && $news == 'true') {
	global $sn;
	$o .= print_plugin_admin('ON');
ersetzt.
Was ich jetzt nicht hinbekommen habe im Debug
NOTICE: Undefined offset: 0
C:\Portable_XH-1alpha1\html\...\cmsimple\functions.php:2624
den Fehler zu finden. So wie es scheint hat das was mit dem classNamen zu tun. Woran könnte das Problem noch liegen?

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: NEWS plugin für XH_1.7

Post by cmb » Sat Jun 17, 2017 7:06 pm

knollsen wrote:Da beide Plugins RealBlog und NEWS 1.1.1 für XH_1.7 nicht kompatible sind, habe ich mal versucht News 1.1.1 kompatible zu machen, was auch funktionierte.
Super! Es geht übrigens um https://github.com/davidstutz/cmsimple- ... /tag/1.1.1, wo ich nun auch ein entsprechendes Issue geöffnet habe.
knollsen wrote:Was ich jetzt nicht hinbekommen habe im Debug
NOTICE: Undefined offset: 0
C:\Portable_XH-1alpha1\html\...\cmsimple\functions.php:2624
den Fehler zu finden. So wie es scheint hat das was mit dem classNamen zu tun. Woran könnte das Problem noch liegen?
Ah, ein kleiner Bug im Autoloader! Habe ich gleich gefixt.
Christoph M. Becker – Plugins for CMSimple_XH

knollsen
Posts: 459
Joined: Wed Nov 06, 2013 2:28 pm

Re: NEWS plugin für XH_1.7

Post by knollsen » Sat Jun 17, 2017 8:31 pm

Ahh - Du brichst die Function dann ab. - also wäre die Pluginentwicklung damit noch etwas freier. Ich wollte schon die News.php in Controller und dann im Verz. classes packen und den Namen der classe News alles ändern.
Damit könnte ich bestätigen das News1.1.1, bis auf geringfügige bugs, kompatible wäre.
Was mir nicht gefällt an News ist das alles in eine TXT geschrieben wird - aber zumindestens sind die Kategorien getrennt.
Dann ist die Seitenweiterschaltung/Seitenanzeige endlos, egal ob es ne nächste Seite gibt oder nicht. (Ich glaub das ist schon ewig so)
Kann man das nicht mal fixen?
Vielen Dank!

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: NEWS plugin für XH_1.7

Post by cmb » Sat Jun 17, 2017 8:44 pm

knollsen wrote:Ahh - Du brichst die Function dann ab. - also wäre die Pluginentwicklung damit noch etwas freier. Ich wollte schon die News.php in Controller und dann im Verz. classes packen und den Namen der classe News alles ändern.
Würde XH_Autoload in diesem Fall weiter laufen, dann würde die Funktion ein paar Zeilen weiter trotzdem abgebrochen, da eine Datei `.php` vermutlich nicht vorhanden ist. Also lieber gleich abbrechen, so dass PHP nicht meckert.

Auf jeden Fall ist der Autoloader von 1.7 nicht verpflichtend gedacht, sondern rein optional. Wer ihn nutzen will, kann das gerne machen, und muss sich dann halt an die Konventionen halten, die noch dokumentiert werden müssen.
knollsen wrote:Was mir nicht gefällt an News ist das alles in eine TXT geschrieben wird - aber zumindestens sind die Kategorien getrennt.
Dann ist die Seitenweiterschaltung/Seitenanzeige endlos, egal ob es ne nächste Seite gibt oder nicht. (Ich glaub das ist schon ewig so)
Kann man das nicht mal fixen?
Bei News ist schon lange nichts mehr passiert, und ich fürchte, da wird sich von Davids Seite zumindest so bald auch nichts ändern. Also müssten andere ran – Freiwillige vor! :)
Christoph M. Becker – Plugins for CMSimple_XH

knollsen
Posts: 459
Joined: Wed Nov 06, 2013 2:28 pm

Re: NEWS plugin für XH_1.7

Post by knollsen » Mon Jun 26, 2017 1:04 am

Also ich hab mal news1.1.1 umgeschrieben und gleich die erwähnten Bugs beseitigt. Es ist für das XH 1.7 voll kompatible!
Rss und andere div. Sachen habe ich auch für Firefox gefixt.
Absolut Neu ist, das die Kurzbeschreibung und die Langbeschreibung in separaten Verzeichnis als db Dateien gespeichert werden. Und nur dann geladen werden wenn Sie gebraucht werden. Dies habe ich ja schon in diesem Forum erwähnt. (Ich wollte es wissen - Geschwindigkeit ....)
Ich glaube, ich habe 10 verschiedene Newsscripte getestet - Datenbank oder Single-FlatFiles ... nicht einer konnte an die Multi-FlatFiles mithalten.
So nun mal zu meinen Test
auf dieser Seite habe ich das News-Plugin 1.1.1 von David (Single-Flatfile) wobei die CSV mit einer Dateigröße von ungefähr 1,2 MB ist. Sie war schon mal größer, aber da die Seite gar nicht mehr ladbar war, hatte ich schon angefangen die Langbeschreibungen in PDF zu konvertieren um Platz zu schaffen. Selbst das geht nicht auf Dauer gut!
Auf dieser Seite ist die überarbeitete Version auf 1.7 XH installiert.
Der Vergleich zu den Multi-FlatFiles ist echt der Hammer und schlägt bestimmt sogar die Datenbankversion um längen.
Zumals gibt es auch keine Probleme beim spliten der CSV Datei mehr, da ja viele Kunden Copy/Paste von Webseiten oder Word machen, kann es vorkommen das ein Trenn-Zeichen (delimiter) vorhanden war und alles ging nicht mehr. Das einzige was jetzt noch in der CSV ist, ist Datum, Titel und Erstellungsdatum.
Wenn ich dann mal mehr Zeit habe, werde ich mich mal den zusätzlichen Funktionen widmen.
Nachtrag
Ein Konvertierungstool läuft auch schon erfolgreich um die alten Daten umzuarbeiten bzw. zu erstellen.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: NEWS plugin für XH_1.7

Post by cmb » Mon Jun 26, 2017 4:17 pm

knollsen wrote:Zumals gibt es auch keine Probleme beim spliten der CSV Datei mehr, da ja viele Kunden Copy/Paste von Webseiten oder Word machen, kann es vorkommen das ein Trenn-Zeichen (delimiter) vorhanden war und alles ging nicht mehr. Das einzige was jetzt noch in der CSV ist, ist Datum, Titel und Erstellungsdatum.
Ja, das kann man ganz gut so machen. Beim Realblog_XH habe ich auch darüber nachgedacht, aber die Teaser haben mich doch eine andere Lösung wählen lassen. Das Problem: die Übersichtsseite zeigt ja mehrere Teaser gemeinsam an (der User kann die Anzahl konfigurieren). Stehen alle Teaser in einer (CSV-)Datei, dann wird diese doch recht groß, und muss i.d.R. komplett geladen werden. Speichert man auch die Teaser in separaten Dateien, dann müssen eben entsprechend viele Dateien gelesen werden – das kann dann auch wieder ausbremsen. Dazu kommt, dass auch das Einlesen und Sortieren (nach u.U. unterschiedlichen Kriterien) der Hauptdatei Zeit kostet (usort() & Co. sind ziemlich langsam).

Wenn ein Plugin also voraussichtlich größere Datenmengen zu verwalten hat, würde ich immer auch SQLite in Erwägung ziehen. Da hat man viel Luft nach oben, kann auch unerwartete Anforderungen einpflegen, ohne dass die ursprünglich ausgearbeitete individuelle Speicherform hinfällig wird (was mit z.B. bei Forum_XH passieren könnte), und man kann sehr speichereffizient arbeiten (bei Realblog_XH werden nur diejenigen Daten, nicht Datensätze, geladen, die auch wirklich gebraucht werden).

Ich glaube, ich hatte es weiter oben schon kurz erwähnt: ich habe eine ganze Reihe alternativer Speicherformate ausprobiert (u.a. auch CSV-Dateien, die in einem serialized Format gecache't werden, weil zeilenweises Lesen in PHP super langsam ist; man vergleiche fgets() und file()) – nur in Einzelfällen konnte ich die Performance von SQLite (also ext/sqlite3, nicht ext/pdo_sqlite) toppen, aber nie für alle Fälle, die ein Plugin wie Realblog_XH unterstützen muss. Und einen weiteren Vorteil hat SQLite auch noch: Online-Locks erfolgt automatisch, und optimistische Offline-Locks sind sehr einfach und effizient zu realisieren.

Der einzige Nachteil, den ich bei SQLite sehe (abgesehen davon, dass es für viele Plugins Overkill ist): man kann die Daten nicht per Texteditor/Tabellenkalkulation bearbeiten. Aber einerseits ist ein Export nach und Import von CSV möglich, und andererseits gibt es hilfreiche Tools, die nach kurzer Einarbeitungszeit eine wunderbare Alternative bieten.
Christoph M. Becker – Plugins for CMSimple_XH

knollsen
Posts: 459
Joined: Wed Nov 06, 2013 2:28 pm

Re: NEWS plugin für XH_1.7

Post by knollsen » Mon Jun 26, 2017 11:45 pm

Wenn ein Plugin also voraussichtlich größere Datenmengen zu verwalten hat, würde ich immer auch SQLite in Erwägung ziehen...
Kommt sehr genau darauf an, wann bei Dir die größere Datenmengen anfangen. Ich geb Dir natürlich recht, aber wenn sowas mal anstehen würde, überlege ich mir das dann auch. Aber eh ich eine Datenbank installiere muss schon viel passieren. :D
Außerdem ist ne Datenbank erst gut, wenn man sie auch gut strukturiert.
Realblog hatte ich damals auch installiert und fande es richtig gut, doch letztendlich hat vor paar Jahren der Kunde entschieden da er News nach Kategorien brauchte.
(bei Realblog_XH werden nur diejenigen Daten, nicht Datensätze, geladen, die auch wirklich gebraucht werden).
Genau das war ja meine Überlegung. Leider bin ich im Bereich SQLite nicht der Profi, um einen sauberen Code zu zaubern. Deswegen würde mich das mal im Detail interessieren wie eine Realblog DB mit größer als 2 MB auf Platte verarbeitet kann. Die muss doch auch erst einmal geladen werden. Oder?
Ich denk mal das Dein Realblog oder News mit den Multi-FlatFiles ebenwürdig sind - was die Performance angeht. News ist im Code sehr einfach - bei Dir blick ich manchmal nicht durch wie sehr das doch verschachtelt ist. (habs aber nur mal kurz angeschaut).
Auf 1.7 funzt es noch nicht, aber das ist ja kein Problem dies zu ändern.

Code: Select all

private static function isAdministrationRequested()
    {
        global $realblog, $su;

        //return isset($realblog) && $realblog == 'true' || $su === 'realblog';
        return function_exists('XH_wantsPluginAdministration')
            && XH_wantsPluginAdministration('realblog')
            || isset($realblog) && $realblog == 'true';
    }
Könnte man doch so machen?

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: NEWS plugin für XH_1.7

Post by cmb » Tue Jun 27, 2017 10:11 am

knollsen wrote:Aber eh ich eine Datenbank installiere muss schon viel passieren. :D
Bei SQLite muss eben keine Datenbank installiert werden. :)
knollsen wrote:Realblog hatte ich damals auch installiert und fande es richtig gut, doch letztendlich hat vor paar Jahren der Kunde entschieden da er News nach Kategorien brauchte.
Kann ich gut verstehen. Inzwischen hat Realblog_XH auch einen minimalen Support für Kategorieren, der aber nur für beschränkte Anforderungen ausreicht.
knollsen wrote:Leider bin ich im Bereich SQLite nicht der Profi, um einen sauberen Code zu zaubern. Deswegen würde mich das mal im Detail interessieren wie eine Realblog DB mit größer als 2 MB auf Platte verarbeitet kann. Die muss doch auch erst einmal geladen werden. Oder?
Was wirklich hinter den Kulissen genau gelesen wird, ist ziemlich komplex. Aber auf jeden Fall muss immer nur ein Teil der Datenbank gelesen werden, eben das, was gebraucht wird.
knollsen wrote:News ist im Code sehr einfach - bei Dir blick ich manchmal nicht durch wie sehr das doch verschachtelt ist.
Das hat aber wohl nur wenig mit echten Flat-Files vs. SQLite zu tun, sondern ist allgemeiner Programmierstil. Vielleicht bietet dieses Tutorial eine verständliche Einführung.
knollsen wrote:Könnte man doch so machen?
Ja, sieht gut aus. Und nein, ich habe Realblog_XH nicht vergessen – weiß nur gerade nicht, wo ich anfangen soll.
Christoph M. Becker – Plugins for CMSimple_XH

knollsen
Posts: 459
Joined: Wed Nov 06, 2013 2:28 pm

Re: NEWS plugin für XH_1.7

Post by knollsen » Tue Jun 27, 2017 11:42 am

Vielen Dank! Bevor 1.7 rauskommt, lass ich mir das nochmal genau durch den Kopf gehen.
Gedacht hatte ich, das wenn keiner sqlite3 in der php.ini aktivieren kann, mit den MultiFlatfiles gut beraten ist.
Was meinst Du / Ihr? News auch mit sqlite oder so wie ich es umgesetzt habe. Ich bin mir wirklich nicht ganz sicher .... Schauen wir mal.
...Vielleicht bietet dieses Tutorial eine verständliche Einführung.
ich meinte allgemein nicht sqlite an sich. Sqlite ist top und übersichtlich.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: NEWS plugin für XH_1.7

Post by cmb » Tue Jun 27, 2017 12:01 pm

knollsen wrote:Gedacht hatte ich, das wenn keiner sqlite3 in der php.ini aktivieren kann, mit den MultiFlatfiles gut beraten ist.
Tja, bezüglicher der Verfügbarkeit von ext/sqlite3 bin ich mir auch nicht sicher. Bisher scheint das aber kein Problem zu sein.

Aber ja, Multi-Flatfiles sind grundsätzlich schon in Ordnung, und wenn du es bereits umgesetzt hast, dann kann's doch auch gerne so bleiben. Mir ging es eigentlich nur darum, dass man die Verwendung von SQLite in Erwägung ziehen sollte, wenn man bei einem Plugin mit recht großen Datenmengen rechnen kann, und konkrete Vorteile aufzuführen.
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply