Ein Pluginsystem mit Paketserver in PHP – Teil 3
Ein Pluginsystem mit Paketserver in PHP – Teil 3
Nachdem wir nun wissen, wie ein Plugin aufgebaut ist und wir wir es im Frontend verwenden, müssen wir uns mit der Frage beschäftigen, wie wir die Plugins im Backend administrieren.
Generell ist meine Überlegung, dass das ACP eine PHP Datei hat, die je nach übergebener ID aus dem Pluginordner die Backenddateien nachlädt.
Ein Beispiel: Im ACP gibt es eine Datei plugin_list.php.
Rufen wir diese Datei auf, so erscheint eine Liste mit Plugins, wie hier:
Von hier aus, kann man die Plugins administrieren.
Dazu ruft man dann plugin_verwalten.php?appid=X auf, dann erscheint, je nach Plugin, die entsprechenden ACP Seite.
Um die plugin_list.php anzuzeigen, ist nicht viel nötig.
Der nötige SQL Befehl lautet:
SELECT * FROM plugins ORDER BY id;
Geben wir die Ergebnisse einfach als eine normale Liste aus:
$query = mysql_query("SELECT * FROM plugins ORDER BY id;");
$AppsNum = mysql_num_rows();
$AppsTd="";
while ($AppsArray = mysql_fetch_object($query)) {
$color ="red";
if ($AppsArray->activate=="1" || $AppsArray->activate=="true") { $color = "lightgreen"; }
$AppsTd .= '<tr style="background-color:'.$color.';"><td style="width:20%;">'.$AppsArray->name.'</td><td "width:5%;">'.$AppsArray->version.'</td><td "width:45%;">'.$AppsArray->desc.'</td><td "width:35%;"><a href="plugin_verwalten.php?appid='.$AppsArray->id.'">Administrieren</a></td></tr>';
}
echo 'Installierte Erweiterungen:<br><div class="cel" style="height:auto;">
<table style="width:100%;"><tr style="border: 1px black solid;"><td>Name</td><td>Version</td><td>Beschreibung</td><td>Optionen</td></tr> '.$AppsTd.'</table></div><br /><br />';
Die plugin_verwalten.php ist recht einfach aufgebaut, sie prüft nur, ob die angegebene ID konform und in der Datenbank existent ist und includiert dann die hinterlegten Dateien:
<?php
/*
Checke die Paratemter in der GET
*/
if (!isset($_GET['appid']) OR !is_numeric($_GET['appid'])){
trigger_error("Die Variable \"appid\" ist entweder nicht übergeben worden oder entspricht nicht den Vorraussetzungen.",E_USER_ERROR);
}
$appid = $_GET['appid'];
/*
Schauen wir mal nach der und laden alle Daten in ein array() ^^
Und natürlich wider zählen
*/
$query = mysql_query("SELECT * FROM plugins WHERE ID = ".$appid);
$row = mysql_fetch_object($query);
$num = mysql_num_rows();
/*
Wenn jetzt $num = 0 oder > 1 ist, dan stimmt was nicht
*/
if ($num != 1) {
trigger_error("Die ID ist nicht vorhanden und/oder mehrmals vergeben. Dies macht eine eindeutige Identifikation unmöglich.",E_USER_ERROR);
}
/*
So, dann schauen wir mal OptionFile an und laden die Datei hier rein^^
*/
define("apppath",$row->path);
require_once(apppath."/cp/index.php");
/*
Für mich ist die Sache damit erledigt
*/
Okay, nun wissen wir, wie wir die Backenddateien verwalten.
Im nächsten Teil installieren wir die Plugins via einem Updateserver.


