0251 / 590 837 15
info@a-coding-project.de
;

PluginInfos anzeigen (CMS)

Code & Blog Logo

Code & Blog Logo

Bei den Widgets in unserem CMS haben wir bereits den ersten Schritt in Richtung PluginSystem gemacht. Und genau dieses werden wir heute bearbeiten. Nach diesem Beitrag werden PluginInfos herausgesucht und im CMS unter Plugins angezeigt.

Die Plugins werden, wie ihr alle sicher wisst, in dem Verzeichnis /system/plugins in Unterordnern gespeichert. Und genau hier müssen wir nach installieren Plugins suchen. Dort bekommt jedes Plugin eine Datei info.php, in welchem diese Infos gespeichert sind. Die stehen natürlich nicht im Klartext dort, sondern schön in einem Objekt. Die Klasse dafür sieht so aus (system/classes/plugininfo.php):

<?PHP
  class PluginInfo{
    public $folder            = '';
    public $name              = '';
    public $description       = '';
    public $authorName        = '';
    public $authorLink        = '';
    public $version           = '';
    public $configurationFile = '';
    
    function isActivated(){
      return false;
    }
  }
?>

Die Klasse ist derzeit noch etwas leer. Sie wird in einem späterem Artikel weiter gefüllt. Das Laden der Plugins geschieht natürlich auch in einer Klasse. Hier werden Unterordner gesucht und in einer Liste angefügt. Das sieht dann so aus (system/classes/pluginlist.php):

<?PHP
  class PluginList{
    public $plugins;
    function Add($pluginInfo){
      $this->plugins[] = $pluginInfo;
    }
    
    function loadAll(){
      $oDir = openDir("../system/plugins/");
      while($item = readDir($oDir)){
        if(is_dir("../system/plugins/".$item)){
          if(file_exists("../system/plugins/".$item."/info.php")){
            include("../system/plugins/".$item."/info.php");
          }
        }
      }

      closeDir($oDir);
    }
  }
?>

Wie ihr hier seht, wird die info.php einfach nur importiert. Das heißt, wir müssen dort ein neues PluginInfo-Objekt erstellen und mit Add hinzufügen. Ich hab das ganze mal für unser Lookaround-Plugin gemacht (/system/plugins/lookaround/info.php):

<?PHP
  $pluginInfo = new PluginInfo();
  $pluginInfo->path              = "lookaround";
  $pluginInfo->name              = "Rungang durch CMS";
  $pluginInfo->description       = "Zeigt ein Video &uuml;ber dieses CMS";
  $pluginInfo->authorName        = "Stefan Wienstr&ouml;er";
  $pluginInfo->authorLink        = "http://SteviesWebsite.de";
  $pluginInfo->version           = "1.0.0";
  $pluginInfo->configurationFile = "settings.php";
  $this->Add($pluginInfo);
?>

Fehlt nun nur noch der Aufruf im Admin-Bereich. Dies geschieht in der Datei /admin/includes/plugins.php. Wer diese noch nicht im Admin-Menü hat, sollte einen Verweis nach /admin/index.php dem Menü {admin} hinzufügen. Die Datei macht fürs erste nur die Ausgabe der Daten:

<?PHP
  $plugins = new PluginList();
  $plugins->loadAll();
  foreach($plugins->plugins as $plugin){
    ?>
      <h2><?PHP echo $plugin->name; ?></h2>
      <p><?PHP echo $plugin->description; ?></p>
      <p style="font-size:80%">
        <?PHP echo $plugin->version; ?>
        <a href="<?PHP $plugin->authorLink; ?>">
          <?PHP echo $plugin->authorName; ?>
        </a>
      </p>
      <?PHP
        if($plugin->isActivated()){
          echo "<a href="/admin/index.php?page=plugins&deactivate=".$plugin->path."">Deaktvieren</a>";
        }
        else{
          echo "<a href="/admin/index.php?page=plugins&activate=".$plugin->path."">Aktivieren</a>";
        }
      ?>
    <?PHP
  }
?>

Was nun noch fehlt sind die (De)aktivierung und (De)installation der einzelnen Plugins. Neben den Widgets wird es später auch noch weitere Pluginmöglichkeiten geben, aber mehr verrate ich noch nicht ;-). Ich möchte das Community-System später am liebsten auf Plugins-basierend machen. So kann man dasganze auch ganz leicht abschalten. Denn die Fülle an Funktionen die man nie gebraucht ist bei anderen Systemen schon schlimm. Ich möchte lieber ein kleines System haben, was für den Zweck vorkonfiguriert wurde, zu dem man es auch braucht. Es wird dann wahrscheinlich mehrere Versionen geben. Einmal nur die Basis und dann eine oder mehrere mit vorinstallierten Plugins.

Kommentare

Daniel schrieb am 25.11.2009:

Ähhh. Hast Du da ein paar Wegstaben verbuchselt Aktviieren und Deaktviieren. April ist doch noch nicht. :-) MfG Daniel

Stefan Wienströer schrieb am 25.11.2009:

Ich hatte^^

Fabian schrieb am 02.10.2011:

"Aktvieren" ^ Da fehlt jetzt ein i ^^

Stefan Wienströer schrieb am 03.10.2011:

Habs geändert ;-)