Klar erkennbar - es ist eine Programmierung ohne Plan geworden.
Man hat quasi mal einen Stein für eine Pflasterstraße gelegt ohne zu wissen wo diese Straße enden soll und immer weiter gebaut.
Problematisch - und das schon seit der Version 1 - die zahlreichen sinnlosen Mysql Abfragen und die Aufbereitung von Zwischenergebnissen mit PHP , obwohl man vieles direkt mit Mysql erledigen könnte.
Da wird via Mysql sortiert (ORDER BY) was das Zeug hält, aber ohne zu prüfen ob man dafür einen Index hat bzw. ob ein vorhandener Index auch genutzt wird.
Und so wird massiv der Mysql - Service belastet. Statt ein einfaches WHERE kommen dann viel zu häufig Filesorts und gar Temp - Tabellen dabei heraus.
Selbstverständlich kann man Inhalte erfolgreich abspeichern, auch wenn die Tabelle content_props komplett fehlt.
Klar ist auch das bei einer Störung im Mysql - Bereich und einem Update z.B. von Gruppenrechten der Inhalt der ganzen Gruppe flöten geht.
Solche Fehler sind nur dämlich:
// let them add scripts to the end ie: a jQuery plugin
if(!empty($append)) {
$append_list = explode(",", trim(str_replace(' ','',$append)));
foreach($append_list as $key => $item) {
$scripts['user_'+$key] = array('local'=>$item);
}
}
Das ergibt dann Warning: A non-numeric value encountered
und eine Fehlfunktion.
InnoDB - der Default-Tabellentyp bei Mysql - offenbar unbekannt.
Transactions ? Hä - was ist das ? Ein unbekanntes Wesen ?
Oder solch dämliche Code - Varianten:
Original
public function HasProperty($name) {
if (!$name)
return FALSE;
if (!is_array($this->_props))
$this->_load_properties();
if (!is_array($this->_props))
return FALSE;
return in_array($name, array_keys($this->_props));
}
Richtig
public function HasProperty($name) {
if (!$name)
return FALSE;
if (!is_array($this->_props))
$this->_load_properties();
if (!is_array($this->_props))
return FALSE;
return array_key_exists($name, $this->_props);
}
die im Original umständlich wie sonst etwas sind und nicht gerade von PHP Kenntnissen zeugen und die zudem unter PHP 7.1 zu Fehlern führen.
Von überflüssigem Code wollen wir noch nicht einmal reden, hier nur das kleinste Beispiel:
$orig_memory = (function_exists('memory_get_usage')?memory_get_usage():0);
Die Dev's von Cmsmadesimple leben hinter dem Mond denn ab PHP 5.2.1 ist memory_ger_usage grundsätzlich vorhanden.
Der seit Jahren völlig nutzlose und sogar unterm Strich langsamer machender Contentcache bleibt erhalten und wird extrem umständlich ausgeführt, genauso die Aufbereitung der Navigation.
Grund: die frühen Entwickler wie auch die jetzigen haben viel zu wenig Ahnung von Mysql.
Das es auch anders und sehr viel schneller geht habe ich bereits vor Jahren mit dem damaligen Fork Powercms gezeigt.
Ebenso die Suchliste. Darin sind jede Menge Sonderzeichen etc. enthalten nach denen man nicht sucht und auch nicht suchen kann.
Geändert aber wurde natürlich nichts.
Von Mysql Fulltext haben die auch noch nie etwas gehört - so scheint es.
Das ein Aufruf von
debug_buffer('loading page functions');
grundsätzlich für PHP ein Aufwand ist leuchtet allen ein.
Erst in der Funktion abzufragen ob debug gesetzt ist ist seit Jahren ein haarsträubender Unsinn.
Aber das nun zu korrigieren wie hier
if ($config["debug"] == true) debug_buffer('loading page functions');
ist ja ein Aufwand und für wen oder was ? Damit das ganze ein wenig schneller wird.
Und so kann man es weiter treiben ohne Ende.
Allein beim Thema Navigationsaufbereitung könnte man seitenweise langsamen Codemüll entsorgen.
Die Einbindung von Smarty ist und bleibt eine Katastrophe auch wenn die DEV's dies den Anwendern als Fortschritt verkaufen wollen.
So ist und war der Einsatz von Smarty von seiten deren Entwickler nie gedacht.
Und so kommt was kommen muss - dieser Einsatz passt nicht zur letzten aktuellen Version von Smarty, man verwendet noch immer eine Uralt Smarty DEV Version mit allen Macken die da enthalten sind.
Und es droht weiteres Ungemach.
Der Macher von Smarty - Tews - ist dabei seine Hardwarefirma in einem Neubau ziehen zu lassen, der gerade am entstehen ist.
Zufällig entsteht das Gebäude auch noch an der Stelle wo das Haus stand in dem ich geboren wurde (was nichts zur Sache beiträgt).
Die erklärte Absicht von Herrn Tews ist die, das seien Firma ordentlich wachsen soll. Hintergrund ist wohl auch sein Alter, das einen Ruhestand schon rechtfertigen kann und natürlich sein Interesse das alles seinen Kindern zu vermachen.
Tews hat also für Smarty sehr wenig bis keine Zeit zur Verfügung. So stammt die letzte Smarty Version vom 21.12.2015. Eine Terminvorstellung für eine neue Version die auch den geänderten PHP Verhältnissen angepasst wurde gibt es nicht.
Und im Forum von Smarty geht es nun ähnlich zu wie bei cmsmadesimnple.org - tausende Postings werden nicht beantwortet. Schreibt man dazu etwas nett und freundlich wird der Account gelöscht.
Man ist da also sprachlos geworden und bedient sich solcher Mittel.
Die Löschung hat Tews garantiert nicht selbst vorgenommen sondern derjenige der das nun machen soll.
Ich gehe davon aus, das Smarty langsam aber sicher der Projekttod bevorsteht.
Das sieht natürlich sehr böse aus für ein System wie Cmsmadesimple.
Cmsms wartet tatsächlich offenbar auf eine neue Version von Smarty von denen man glaubt das gewisse Dinge da verändert werden, die einen simplen Tausch der Versionen in dem verschrobenen Einsatz bei Cmsms ermöglichen - darauf aber werden sie ewig warten.
Ich selbst setze für meine Projekte kein Smarty mehr ein sondern meine eigene selbst entwickelte Templateengine, die so offen, klar und auch relativ klein ist, das man sie leicht verwenden kann.











