Freitag, 5. August 2016

Cmsms V 2 - keine Fortschritte

Der Code der V2 Version von Cmsmadesimple ist in einigen Teilen ein unstrukturiertes heilloses Durcheinander.
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.


Samstag, 16. Juli 2016

Das Qualitätsdilemma beim Cmsms

Das Cmsms nur bedingt für Webs taugt ist eigentlich bekannt.

Interessant ist aber folgendes .
Über die Domain welovecmsms.com wird das System beworben.

Das macht man ganz einfach - neue Websites die mit Cmsms erstellt wurden werden im Showcase - Teil gezeigt.

Das Problem besteht darin das keine einzige dieser Websites brauchbare oder gar gute Noten bei Google Pagespeed  erreicht.

Damit gehe ich nicht auf die Inhalte ein - die sind teils sogar recht gefällig gestaltet.

Diese Ergebnisse zeigen jedoch das die Webersteller allesamt keine Profis sind die wissen worauf es ankommt.

Wenn ein Webersteller das gewerblich macht ist es noch lange kein Beleg dafür das es sich um Profis handelt.

Hier bei den Showcases handelt es sich allesamt um absolut nicht zufriedenstellende Arbeiten bei dem der Endkunde lediglich den falschen Eindruck gewinnt ein gutes Web bekommen zu haben.

In Wirklichkeit hätte man sein Geld gleich in den Papierkorb werfen können.

Der Verdacht nährt sich das das System selbst es nicht einfach macht optimale Pagespeedwerte erzeugen zu können.

Und in der Tat  dieser Mangel wird durch Unfähigkeit auf beiden Seiten erzeugt - auf der Seite der Webersteller wie auf der Seite von Cmsms - vertreten durch die Entwickler.

Dienstag, 19. April 2016

One, two, three ...

Ich habe die Domain cmsmadesimple.one erworben - auf Vorrat und mit der Idee im Hintergrund das es vielleicht Leute gibt die Cmsms aus der Serie 1 weiter entwickeln wollen, da die Serie 2 aus meiner Sicht Schrott ist und alle enttäuscht haben die etwa grundlegende Anpassungen an die Nutzerwünsche erhofften.

Auch die angekündigten "tollen" Änderungen bei der nächsten 2 er Version sind ein Lacher.

Eigene Mysql - Klasse aber nicht etwa PDO nein stink normales Mysqli - das hätte man sich komplett sparen können - eine Überarbeitung  von AdoDB light hätte es auch getan.

Wobei natürlich das Hauptproblem bleibt - SQL Abfragen wie die Anfänger und statt möglichst viel auf Mysql zu schieben immer fleißig PHP dazwischen, obwohl man jede Menge auf einem Schlag mit Mysql  direkt hätte erledigen können.

Was die One betrifft - natürlich rede ich nicht von unmöglichen Änderungen sondern von Dingen die ich vor vielen Jahren schon längst einmal gemacht habe und somit praktisch aus dem vollen Schrank greifen kann.

Ob das aber jemals zu einem Angebot auf der One kommen wird hängt von einigen Faktoren ab.

Darüber aber reden wir erst wenn die Serie 1 von Cmsmadesimple.org eingestellt wurde.

Montag, 18. April 2016

cmsmadesimple.one

Ich habe die cmsmadesimple.one Domain erworben mit dem Gedanken das vielleicht irgendwelche Leute die 1 er Serie von Cmsmadesimple weiter führen und pflegen wollen, weil die Serie 2 vom Start weg vollkommen verkackt wurde.

Noch ist da kein Leben eingehaucht aber das geht heute sehr sehr schnell und dann muss sich Cmsms mit der Serie 2 warm einpacken.

Sonntag, 17. April 2016

Cmsms 2.1.3 - im wesentlichen nichts geändert

Übersetzungen nicht vorhanden oder Schrott, immer noch Uralt Smarty im Einsatz, Uralt Jquery im Einsatz und und und.

Man fragt sich eigentlich was die da machen - jedenfalls nix an den dringlichen Problemen.

Und dann immer noch solche Dinge wie:

  1. Cms ist mit Kompilierungsprüfung durch Smarty schneller als ohne.
  2. Der Einsatz vom Smarty Cache führt zum Fehlerfall bei allen aufgerufenen Seiten unter dem Apache Benchmark.
Also ehrlich - langsam muss man glauben das man den Entwicklern in's Gehirn geschissen hat.

Auch kann man den Ankündigungen zu einer besseren Datenbankklasse nicht trauen - zeigen doch die getätigten SQL Abfragen das die Developer nur rudimentäre Kenntnisse von SQL haben auf Anfängerniveau. Darüber hinaus wird mit SQL gearbeitet und anschließend Arbeit per PHP ausgeführt die man sogleich mit der Abfrage selbst hätte erledigen können.

Also aus meiner Sicht - das Grauen geht weiter.
Ich rate jedem sich ein anderes System zu suchen.












Donnerstag, 24. März 2016

Viel Smarty und doch keine Ahnung

Da zieht man eine Sache aus dem Smarty Forum heran als Argument warum man selbst die 1 er Version noch nicht auf Smarty aktuell umgestellt hat.

Da wird bei Smarty eine Sache behandelt mit einem Benchmark der als solches bereits falsch aufgestellt ist und der zudem in der Praxis natürlich  nie vorkommt - aber das ist bei allen Benchmarks der Fall.

Wie dem auch sei - man will mal wieder auf die nächste Smarty Version warten.

Dabei sollte man doch einfach mal einen Benchmark machen der so ausschaut:

<?php
require '../libs/Smarty.class.php';

$smarty = new Smarty();

$loop = 0;
$speed = 50000;

$start = microtime(true);
$smarty->assign("Name", "Fred Irving Johnathan Bradley Peppergill", true);
$smarty->assign("FirstName", array("John", "Mary", "James", "Henry"));
$smarty->assign("LastName", array("Doe", "Smith", "Johnson", "Case"));
$smarty->assign("Class", array(array("A", "B", "C", "D"), array("E", "F", "G", "H"),
                               array("I", "J", "K", "L"), array("M", "N", "O", "P")));

$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),
                                  array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));

$smarty->assign("option_values", array("NY", "NE", "KS", "IA", "OK", "TX"));
$smarty->assign("option_output", array("New York", "Nebraska", "Kansas", "Iowa", "Oklahoma", "Texas"));
$smarty->assign("option_selected", "NE");

for ($i=0; $i<$speed; $i++) {



$smarty->fetch('index.tpl');
$loop++; echo $loop.'<br />';
}

$time = microtime(true) - $start;

echo "Total: " . $time . "<br />";
echo "One: " . ($time/$loop) . "<br />";


Ja richtig . das ist die mitgelieferte Demo etwas verändert.

Die Ergebnisse:


3.29

50000

Total: 20.58358001709
One: 0.0004116716003418


3.27

Versuch 1
20594

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/www/html/test1/smarty27/libs/sysplugins/smarty_internal_template.php on line 367


Versuch 2
34326
Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/html/test1/smarty27/libs/sysplugins/smarty_internal_configfileparser.php on line 940

Was nichts weiter bedeutet das die Version 3.27 die bei dem ominösen Benchmark eine Rolle spielt ganz andere Fallen hat und das es ein ziemlicher Unsinn ist so zu argumentieren.

Das Problem - die bei cms...de haben nicht wirklich Ahnung.

Montag, 7. März 2016

Mysql Fulltext die letzte

Da cmsmadesimple.de den Vorschlag publiziert hat liefere ich nun eine Version die auch für den unerfahrenen Anwender von Cmsms brauchbar ist.

Sie besteht aus dem verändertem Script, einem uralten Modifierer für Smarty (der aber bis in die aktuelle Smarty Version läuft) und einem etwas angepasstem Template.

Die Version liefert einen Textauszug bei Treffer die sich auf Seiten beziehen.

Man beachte die Datei readme.

Hier gibt es die Scripte  http://112-6.de/files/uploads.tar.gz .

Unverändert ist eine logische AND Verknüpfung nicht möglich, da die Suchbegriffe bei Cmsms pro Stück in einem jeweils extra Datensatz ablegt sind.

Aber man kann sich behelfen.

Diese Bilder zeigen ein Beispiel was passiert:







Sonntag, 6. März 2016

Mysql Fulltext Suche Vollausbau

In der Stufe 3 kann man dann nun alle Features der Mysql Volltextsuche verwenden.

Auch diese Version gibt es von mir nicht im Download - aus bekannten Gründen.

Aber es funktioniert prima.

Hier zwei Bilder von Ergebnissen - im ersten Bild wird nach sidebar gesucht der Begriff muss genauso vorhanden sein.

Bei der zweiten Suche das Gleiche aber mit einem weiteren Suchbegriff  das ein - Zeichen davor hat - das bedeutet - das Wort Navigation darf nicht vorhanden sein.

Welche Möglichkeiten die komplette Volltextsuche hat liest man am besten bei Mysql nach.

Der Änderungsaufwand ist hier etwas größer  aber kein Problem.

Es zeigt nur wieder einmal die "Lahme Ente" bei den Cmsms Developern, denn die kennen weder Volltextsuche noch einen Textauszug.





Und hier noch ein anderer Screenshot


Mysql Fulltext Stufe 2

Diese Version ist nicht Bestandteil eines Downloads.
Sie soll nur zeigen das man mit wenig Eingriffen in die veröffentlichte Stufe 2 die Ausgabe stark verbessern kann, nämlich mit einem Textauszug.

Unterm Strich handelt es sich immer noch um eine vereinfachte Suche bei der ein AND nicht möglich ist, weil wir die vorhandene Suchworttabelle aus Kompatibilitätsgründen nutzen und da ist immer nur ein Wort pro Datensatz enthalten.
Ein OR ist ohne besondere Maßnahmen immer automatisch gegeben.

Die letzte Ausbaustufe ist dann der vollständige Verzicht auf Kompatibilität aber mit allen Möglichkeiten .
Worttabellen oder die Stemmerclass werden dazu überhaupt nicht benötigt.

Aber auch das wird kein Gegenstand einer Veröffentlichung sein - die Gründe sind einfach.
Stufe 2 und 3 erfordern mehr Kenntnisse die ich - nach eigenem Bekunden - noch nicht einmal dem Betreiber von cmsmadesimple.de zutrauen darf.

Und - alle Änderungen werden nicht von den Entwicklern übernommen oder unterstützt und nicht von cmsmadesimple.de in irgendeiner Form moderiert und thematisiert dauerhaft gesammelt und angeboten.
Das bedeutet - es sind Eintagsfliegen.
Aber es sind Eintagsfliegen die deutlich zeigen wie jämmerlich die Einstellungen der Developer von Cmsms gegenüber Anwendern ist und wie sehr man das Projekt über Jahrzehnte ausgebremst hat.

Samstag, 5. März 2016

Einfache Mysqlvolltextsuche bei Cmsmadesimple-Frontend

Mit einigen wenigen Änderungen kann eine einfache Volltextsuche bei Cmsmadesimple realisiert werden ohne das man an Kompatibilität verliert.
Einfach weil man eben nicht alles kann was man könnte wenn man es komplett umstellt, aber man kann mit * suchen und das ist doch schon etwas mehr als man vorher konnte.

Es sind nur 2 Dinge zu tun

1.
Eine Tabelle muss einen Fulltext Index bekommen - das macht man am besten über phpmyadmin (man achte auf den Prefix der hier cms_ ist).

ALTER TABLE `cms_module_search_index` ADD FULLTEXT(`word`);

2.
Man kopiere das veränderte Script  action.dosearch.php in den Ordner modules/Search

Das war es.

Hier gibt es das gepackte Script (vor dem kopieren auf den Server also entpacken).

Hinweise :

Ich gebe dazu weder eine Hilfestellung noch ein Support.
Erfahrungsgemäß werden solche Dinge nicht von Cmsmadesimple übernommen.

Bei Cmsmadesimple.de sind derartige Dinge nirgendwo gelistet und werden bestenfalls bei denen im Forum mal erwähnt und verschwinden dann, wenn die Aktualität einen Beitrag nach unten fallen lässt.

Die Änderung selbst ist 0815 sozusagen Stufe 2 im Schwierigkeitsgrad von 10, wenn man es alles selbst programmieren würde.
Das geänderte Script bezieht sich auf Cmsms Version 2.1.2 dürfte aber auch leicht an die 1 er Version anzupassen sein.

Ich habe das Script geändert um mal zu zeigen wie einfach es ist gewisse Kundenwünsche zu erfüllen wenn man denn nur will.

Die Dev's von Cmsms konnten nicht einmal eine halbe Stunde investieren um diesen Zustand zu erreichen und das seit 10 Jahren.



Nachttrag - habe noch ein Änderung vorgenommen die eine Änderung der Anzeige von Ergebnissen bewirkt (weil im Original da ein Fehler drin steckt).

Unterschiede sieht man hier:

Dienstag, 1. März 2016

Fork oder kein Fork

Vor Jahren legte ich  schon mal ein Fork von #Cmsms #Cmsmadesimple unter dem Namen Powercms auf, das weiter entwickelt nach diversen Versionen keinerlei Ähnlichkeit mehr mit Cmsms hatte - die Leistung von PowerCMS und die Möglichkeiten standen in einer ganz anderen Welt als Cmsms es tat.

Speed bis zu Faktor 40 schneller, Transaktionen, unbegrenzte Mehrsprachlichkeit im Frontend wie auch im Backend, Fulltextsuche und später auch eine komplett eigene Templateengine.

Folgend wurde aus PowerCMS eine komplett eigene Entwicklung in dem keine einzige Zeile mehr an Cmsms erinnerte.

Heute steht Cmsmadesimple  trotz vieler Versionen im Grunde genommen noch genau so da wie vor 10 Jahren.
In den wesentlichen Punkten hat sich nicht nur rein nichts geändert sondern man ist geradezu stehen geblieben.

Ich will hier nicht schon wieder endlos aufzählen was Cmsms alles versäumt hat - jeder der diese CMS kennt müsste das wissen.

Ursache des Übels ist einwandfrei der Developer Robert Campbell - aus meiner Sicht ein Vollversager in Sachen Team- und Projektführung, ein schlichter Programmierer ohne Visionen, ohne Mut zu Neuerungen - einfach eine lahme Ente.

Das meine nicht nur ich sondern viele andere Leute die dem Projekt sehr viel näher stehen als ich.

Dieser Developer ist noch nicht einmal in der Lage die wichtigsten und am dringlichsten anzusehenden Änderungen vorzunehmen und verwendet aus dem Grunde uralte Fremdlibs.

Der Hintergrund seiner Verweigerung ist damit zu beleuchten, das er schlagartig viele andere Dinge lösen müsste die er ebenfalls nie angegangen ist.
Damit aber würde seine bisherige Systematik seines Konzeptes restlos in die Tonne fallen.

Ich habe die aktuelle 2 er Version mal überarbeitet und auf den Stand der Technik gebracht mit überraschend guten Ergebnissen.
Natürlich ist klar das auch bei mir die alte Systematik von Cmsms gestorben ist.

Mich hat es auch in den Fingern gejuckt rechtzeitig zu seinem dämlichen nächsten Geekmoot die Version als Fork anzubieten.

Aber das lasse ich sein - es bringt nichts, da ich weder Zeit noch weitere Lust habe mich mit dem Thema Cmsmadesimple intensiv zu beschäftigen.

Wegen Cmsms bin ich ja seinerzeit zur PHP Programmierung gekommen, Visual Basic, diverse C Varianten und Modula waren vorher meine Welt, daher mein Interesse.

Ich setze Cmsms überhaupt nicht ein - die Leistung ist einfach zu beschissen.

Wenn die deutsche Fraktion davon träumt ihre eigene Version auf Basis 1 zu pflegen dann träumen die auch nur - richtig weiter entwickeln macht nur Sinn mit einem ziemlichen Umbau.

Den alten Mist am Leben zu erhalten ist nicht sinnvoll.

Nachtrag:

Wenn man solche Sprüche  auf dem Twitter Account von Anne-Mieke Bovelett liest, die bei Cmsms Marketing machen soll:

"See something “wrong” in an open source project? Offer concrete help instead of criticism! THAT’S the spirit, nothing else!"

dann kann man nur sehr laut lachen - die gute Frau hat tatsächlich keinerlei Ahnung wie man bei den Dev's von Cmsms mit anderen Dev's umgesprungen ist und wie man auch heute laufend mit Nutzern umspringt und anscheinend glaubt sie auch noch daran.

Grundsätzlich hat sie ja Recht aber jede Kritik - egal von wem - wie auch jede Hilfe - auch egal von wem - hat dieser Campbell mit fiesesten Methoden in die Tonne getreten, bis hin zum Rauswurf, Sperrung von Konten, Löschung von Beiträgen.

Auf der anderen Seite sollte sich die gute Bovelett doch schlicht einmal die Behandlung von Bugs und Feature Request's ansehen oder noch einfacher - sich öfters mal als Moderatorin in den ihr zugewiesenen Foren blicken lassen.

Samstag, 27. Februar 2016

Weniger ist mehr - oder nicht ?

Man schaue sich mal dieses Artikel an und setzte es geistig auf Webverhältnisse um.

Cmsmadesimple ist ein typisches Beispiel dafür was ich meine.
Man ersetze den Begriff Roboter durch Module und man hat es schon.

Für jeden Müll ein Modul, Module die sich teils gegenseitig benötigen, ein Haufen Parameter und Einstellungen sind zu lernen, Templates sind anzupassen usw. .

So weit so gut.

Kommt dann aber auch nur eine einzige Abweichung auf Grund eines Kundenwunsches der nicht über Parameter einstellbar wäre ist der Ofen bereits aus.

Wird ein Modul nicht mehr gewartet und ist dann nicht mehr lauffähig dann ist es eine Katastrophe.

So ähnlich ist es aber auch bei anderen Titeln.

Um Parameter und Einstellungen abarbeiten zu können sind Module zwangsweise relativ groß, verbrauchen viel RAM und sind in der Reaktion schwerfällig.

Hinzu kommt, das der generelle Einschub immer aktiv sein muss, egal ob die Seite nun ein Modul benötigt oder nicht.

Das Problem ist zweigleisig.

Zum einen schleppt ein Titel wie Cmsmadesimple immer unnötigen Ballast mit sich herum und zum anderen sind eine Vielzahl von sogenannten Webdesignern nicht in der Lage den kleinsten Kleinkram zu programmieren.
Das liegt zum einen an dem grundsätzlichen Unvermögen zum anderen aber auch daran das Cmsms alles verbaut und vernagelt hat was eine kleine Erweiterung möglich macht.

Man hat also einen Haufen Roboter (Module) kann aber individuelle Eigenschaften nur begrenzt und ganz spezielle Dinge nur mit gigantischem Aufwand realisieren (wenn man denn überhaupt PHP kann).

Dabei würde eine Einbindung von "meininclude.php" an der richtigen Stelle in der index.php  und, wenn benötigt, ein "meinadmininclude.php" im Adminbereich das sofort erledigen.

Dazu müsste man natürlich a. die Einschubstelle definieren b. aufzeigen was bis dahin alles schon abgearbeitet ist und c. was man zu berücksichtigen hat.

Denkanstöße die bei meinen eigenen Titeln zum Erfolg geführt haben - bei Cmsms wird man noch Jahre warten müssen um dann festzustellen - es passiert nichts.

Sonntag, 21. Februar 2016

Direktzugriff auf Mysqli Funktionen

Die von Cmsms verwendete Adodb Lib ist uralt , nicht gewartet und man kann damit einige Dinge nicht machen, die man mit Mysqli - Zugriff machen könnte.

Mit folgendem PHP Code geht alles.

   $db = cmsms()->GetDb();
    $dbid = $db->connectionId;
    unset($db);

    $r=mysqli_query ($dbid , 'select * from cms_content;');
    print_r($r);


Mit GetDb holt man sich das Adodb Objekt.

Mit $dbid = $db->connectionId; holt man sich die Verbindungsid/link zu Mysqli.

Das Objekt $db wird nicht mehr benötigt also weg damit mit unset($db);

Und nun kann man alle Mysqli Statements ausführen die es so gibt.

Beispiel:

 $r=mysqli_query ($dbid , 'select * from cms_content;');
 print_r($r);

$r enthält dann das Resultsetobjekt der Abfrage.

Aber warum sollte man es machen ?

Adodb auch in der light Version enthält allerhand Zeugs das man eigentlich für die meisten Dinge nicht benötigt.
Und es verwendet ja selbst Mysqli.
Also gewinnt man RAM und vor allem Speed bei der Abfrage wenn man diese Dinge direkt erledigt.

Freitag, 19. Februar 2016

Backup einfach gemacht

Bei  Cmsmadesimple.de gab es Diskussionen weil ein Modul, welches ein Backup ermöglichen soll, nicht weiter gepflegt wird und man damit eben das Problem hat ein Backup einfach ausführen zu können.

Ich schickte dem Inhaber der deutschen Site ein kleines Smarty Plugin mit dem man eben genau das Problem behebt, mit der Bitte das seinen Leuten zur Verfügung zu stellen.

Es wird nach lib/smarty/plugins kopiert und mit {backupcms} in einer beliebigen Seite eingebunden.

Wird die Seite aufgerufen und man hat im Backend als Superuser mit der Userid 1 sich erfolgreich angemeldet, dann wird das Backup gemacht.
Die Daten werden im Standard in das Verzeichnis tmp abgelegt, aus dem Namen geht Datum und Uhrzeit hervor und die Datei ist gz gepackt.
Zusätzlich wird ein Link ausgegeben damit man die Backupdatei downloaden kann.

Auch wenn das Thema bei Cmsmadesimple.de als dringlich dargestellt wurde - die Leute dort warten immer noch auf die kleine Lösung.

Auch eine Erinnerung an den Betreiber brachte nichts.
Offenbar ist sein Interesse an Cmsms teilweise nur gespielt.

Deswegen gibt es das Plugin hier:

function.backupcms.php.tar.gz

Es ist sehr leicht änderbar.

Getestet unter der aktuellen 2 er Version unter PHP 7 aktuell.
Es dürfte unter den 1 er Versionen ebenfalls funktionieren wenn als Treiber Mysqli verwendet wurde.

Montag, 18. Januar 2016

Wie man bei Cmsms V 2 eine einfache Mehrsprachlichkeit erzeugt

Wenn schon gebastel dann aber vom Ansatz her doch mal richtig und ausbaufähig.

Das bedeutet

wir ändern die aktuelle Version 2 ein wenig und zwar nur in der index.php.

$page = get_pageid_or_alias_from_url();
include "mylanguages.php";


Nach $page .....  wird nur das include hinzugefügt.

Das Script mylanguages.php liegt in der Root und sieht so aus:




$default_lang = 'de';
if (empty($_SESSION['mylang'])){
   $_SESSION['mylang']  = $default_lang;
}
if (!empty($params['lang']) && $params['lang'] <> $_SESSION['mylang']) {
$_SESSION['mylang']  = $params['lang'];

$faktor = 0;
$alias = '';
if ($params['lang'] == 'en') {
$faktor = 1;
} elseif ($params['lang'] == 'fr') {
$faktor = 2;
}
## usw . und so fort.
if ($faktor <> 0) {
$db = $_app->GetDb();
if (is_numeric($page))
{
$alias = $db->GetOne('SElECT content_alias FROM ' . cms_db_prefix() . 'content WHERE hierarchy=(SELECT REPLACE(cms_content.hierarchy,LEFT(hierarchy,5),LPAD((ABS(LEFT(hierarchy,5))+?),5,"0")) AS new FROM ' . cms_db_prefix() . 'content WHERE content_id=? )', array($faktor,$page));
 }
else
{
 $alias = $db->GetOne('SElECT content_alias FROM ' . cms_db_prefix() . 'content WHERE hierarchy=(SELECT REPLACE(cms_content.hierarchy,LEFT(hierarchy,5),LPAD((ABS(LEFT(hierarchy,5))+?),5,"0")) AS new FROM ' . cms_db_prefix() . 'content WHERE content_alias=? )', array($faktor,$page));
 }
}
 if (!empty($alias)) {
$page = $alias;
/*
* Hier können noch weitere Dinge an Smarty zugewiesen werden.
Die Variable $smarty liegt bereits vor
* also nur noch
$smarty->assignGlobal('Name',$wert);
*/
 }
}

und das war es auch schon.

Die Funktionsweise ist einfach.

Ist der in der Url übergebene Parameter lang gleich en dann wird zur ersten Hierarchie eine 1 addiert und der dafür gegebene content_alias bzw. nach Bedarf die content_id geholt und an $page zugewiesen.

Das bedeutet es wird eine Seite geholt deren Hierarchie nicht mit 00001. anfängt sondern  mit 00002. , die Subhierarchien bleiben die gleichen.
Wer will oder muss kann nach der Zuweisung zu $page auch noch andere Werte an Smarty übergeben die vielleicht für die Sprachsteuerung im Template benötigt werden könnten.

Da es aber ganz normale Inhalte sind kann man der jeweiligen Sprachgruppe auch ein entsprechend angepasstes Template verpassen.

Die ganze Sache ist einfach und ausbaufähig.

Gewurstel um einfache Mehrsprachlichkeit

Cmsms Anwender sind geschickt wenn es darum geht erkleckliche Mängel zu umgehen, denn wie in der Ex DDR sind sie Mängel gewöhnt. So z.B. das Thema Mehrsprachlichkeit, das mit einem Zusatzfeld in allen nötigen Tabellen und der Anpassung der Scripte erledigt gewesen wäre, wenn man denn als Developer gewollt hätte. PowerCMS hat das ja mal vorgemacht wie es geht. Um wenigstens eine Lösung für einfache Webs zu erhalten fummelte man sich ein Userplugin hin das eine Ummünzung von Sprache zu Sprache vornehmen soll.

  == UDT hierarchy_position ==] /** * Returns page_alias of valid [hierarchy] position * * @param string $params['page_position'] Mandatory. * @param string $params['assign'] */ $return = FALSE; $c_alias = cms_utils::get_current_alias(); $db = \CmsApp::get_instance()->GetDb(); $query = 'SELECT hierarchy FROM ' . cms_db_prefix() . 'content WHERE content_alias = ?'; $page_hierarchy = $db->GetOne($query, array($c_alias)); if (!empty($params[page_position])) { $lang_hierarchy = $params[page_position]; $lang_hierarchy .= substr($page_hierarchy, 5); $db = \CmsApp::get_instance()->GetDb(); $query = 'SELECT content_alias FROM ' . cms_db_prefix() . 'content WHERE hierarchy = ?'; $return = $db->GetOne($query, array($lang_hierarchy)); } if (isset($params['assign'])) {$smarty->assignGlobal($params['assign'], $return);} else {return $return;} 

Der Trick - man legt die verschiedenen Sprachinhalte einfache eine Haupthierarchie höher und pflegt sie 1:1 ein. Beispiel Wenn 00001..... deutsch ist wäre 00002..... z.B. englisch und das natürlich auch in den Unterseiten. Wenn also jemand deutsch hat und will englisch muss man den ersten Teil der Hierarchie nur um +1 erhöhen. Man muss also zunächst einmal den aktuellen content_alias erhalten, das macht man hier mit get_current_alias - vollkommen überflüssig, da der alias bereits unter Smarty gespeichert ist (page_alias) und somit direkt abrufbar wäre. Dann holt man sich die hierarchy über den (eindeutigen ?) content_alias und fummelt den ersten Teil um und macht eine erneute Abfrage. Besser wäre es dafür die content_id einzusetzen die ebenfalls bereits unter Smarty vorliegt. Alles ein wenig umständlich. Das kann man alles in einem Abwasch erledigen:

 Sql= select content_alias from cms_content where hierarchy=(SELECT REPLACE(cms_content.hierarchy,LEFT(hierarchy,5),LPAD((ABS(LEFT(hierarchy,5))+1),5,'0')) AS new FROM `cms_content` WHERE content_alias='cms_tags'LIMIT 1 )


 Ich habe hier mal zum Test als alias cms_tags vorgegeben. Die Seite in der Cmsms Demoversion hat die Hierarchy 00003.00001. Als Ergebnis wird der content_alias modules geliefert, diese Seite hat die Hierarchy 00004.00001 - das ist also die Starthierarchy plus 1 und es zeigt das es so funktioniert. Man muss bei mehr als zwei Sprachen das +1 als Parameter ausführen. Unterm Strich zeigt es , das die Bastler alles auf die einfachste Art zurück führen und damit viel zu kompliziert arbeiten- Man kann aber auch alles zentral steuern wenn man ein paar Zeilen in die index.php einsetzt.

Mittwoch, 13. Januar 2016

Ein einfacher CMSMS Trick um an protected Information heranzukommen

Man schreibe ein kleines Plugin:


<?php

function smarty_function_get_co_template_alias($params, $template)
{
 
    ob_start();  
    print_r($template->tpl_vars['content_obj']);
    $html=ob_get_clean();
    $finda='[mAlias:protected] =>';
    $findb='[';
    $wert='';
    $hlen=strlen($html);
    $xl=strlen($finda);
    $p1=@stripos($html,$finda);
    if ($p1 !==false && $hlen >= $p1+$xl) {
        $p2=stripos($html,$findb,$p1+$xl);
        if ($p2 !==false ) {
            $wert=substr($html, $p1+$xl,$p2-$xl-$p1);
        }

    }
   $template->assign('malias',$wert);
/*
     *  [mHierarchy:protected] => 00001
            [mIdHierarchy:protected] => 1
            [mHierarchyPath:protected] => home
            [mMenuText:protected] => Home
            [mActive:protected] => 1
            [mAlias:protected] => home
            [mOldAlias:protected] => home
            [mCachable:protected] => 1



Als aktiven Code einsetzen um zu sehen was da enthalten ist.
print_r($template->tpl_vars['content_obj']);
 

*/
 
}


Man setze das dann in eine Seite ein:

{get_co_template_alias}{$malias}


Und man erhält den Wert mAlias der eigentlich geschützt ist und nur mit der entsprechenden Klassenmethode aufrufbar gewesen wäre.

Man kann das Plugin natürlich aufbohren in dem man mittels Parameter den Suchwert und den Zuweisungsnamen bestimmt.


Smarty Rekursion ohne Ende

Wer über das Haupttemplate einer Seite die Ausgabe von var_export auf die Smarty-Inhalte erzwingt fällt aus allen Wolken - 90 mal kommt die Meldung das var_export keine Ausgabe von rekursiven Bestandteilen ermöglicht.

Betroffen ist ausschließlich Smarty.

Aber - es liegt nicht an Smarty sondern an dem absolut misslungenem Einsatz im Cmsmadesimple - System.

Der ist - was Smarty betrifft absoluter Schrott.

Und genau dieser Einsatz ist es der das System für große Webs völlig unbrauchbar macht und selbst bei kleineren Webs eine ziemlich lahme Ente werden lässt.

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Warning: var_export does not handle circular references in /var/www/html/cmsms/lib/smarty/plugins/function.get_co_template_alias.php on line 5

Freitag, 8. Januar 2016

Manche Tipps sind nicht gut

Das ist so ein Tipp  einer Cmsms - Anwenderin für  einen anderen, der sich nicht traut seine Cmsmadesimpleversion upzudaten.


Gut gemeint aber nicht gerade wirklich sinnig.

Die meisten Webserver sind auf Linux aufgebaut, die meisten Desktop-PC's auf Basis Windows.

Es gibt aber zwischen den Systemen teils heftige Differenzen z.B. im Dateisystem, was dazu führen kann das eine lokale Installation unter Windows auf einem Linuxserver nicht funktionieren wird.

Es macht also keinen großartigen Sinn eine lokale Installation auf einen echten Webserver mit einem anderen Betriebssystem zu übertragen.

Ein solcher Hinweis an andere Cmsms - User von einem angeblichen Cmsms - Profi (so die Titulierung im DE Forum wegen zahlreicher Beiträge) weist zudem die Hinweisgeberin nicht gerade als Profi aus.