Ich bin gerade dabei, unter Joomla eine Art automatisierte Lizenzverwaltung zu schreiben, welche mir auch die Verzeichnisse der Artikel einlesen soll, damit diese Dateien im Header die richtige Lizenznummer bekommen.
Das Ergebnis des Einlesens will ich auf der Webseite (im Backend) darstellen, es sollte ungefähr so aussehen:
Also zuerst ein Key im Array, darin das Verzeichnis als Array und darin die Dateien, welche in diesem Verzeichnis liegen, allerdings verschluckt PHP ab und zu ein paar Verzeichnisse und wirft den Inhalt 2-3 Verzeichnisse einfach in ein einziges, das wäre bei der späteren Installation richtig epic.
ZB.:
Am Pfad kann man erkennen, das dort eigentlich 2 Verzeichnisse zusammen geworfen wurden, welches so nicht sein sollte.
Die Verzeichnisse werden beim Einlesen durch eine statische Variable geprüft, damit genau das nicht passiert.
In der Klasse sind folgende Vars deklariert:
Aber wo liegt da der Fehler?
Das Ergebnis des Einlesens will ich auf der Webseite (im Backend) darstellen, es sollte ungefähr so aussehen:
Code:
array (size=18) 1 => array (size=1) 'orw_control_115/docs/' => array (size=2) 0 => string 'orw_control_115/docs/anleitung_installation.html' (length=48) 1 => string 'orw_control_115/docs/anleitung_update.html' (length=42) 2 => array (size=1) 'orw_control_115/docs/images/' => array (size=2) 0 => string 'orw_control_115/docs/images/bg_dark.png' (length=39) 1 => string 'orw_control_115/docs/images/bg_light.png' (length=40) 3 =>
Also zuerst ein Key im Array, darin das Verzeichnis als Array und darin die Dateien, welche in diesem Verzeichnis liegen, allerdings verschluckt PHP ab und zu ein paar Verzeichnisse und wirft den Inhalt 2-3 Verzeichnisse einfach in ein einziges, das wäre bei der späteren Installation richtig epic.
ZB.:
Code:
15 => array (size=1) 'orw_control_115/upload/wiso_includes/class/mail/clients/' => array (size=36) 0 => string 'orw_control_115/upload/wiso_includes/class/mail/clients/basic_sasl_client.php' (length=77) 1 => string 'orw_control_115/upload/wiso_includes/class/mail/clients/cram_md5_sasl_client.php' (length=80) 2 => string 'orw_control_115/upload/wiso_includes/class/mail/clients/digest_sasl_client.php' (length=78) 3 => string 'orw_control_115/upload/wiso_includes/class/mail/clients/index.html' (length=66) 4 => string 'orw_control_115/upload/wiso_includes/class/mail/clients/login_sasl_client.php' (length=77) 5 => string 'orw_control_115/upload/wiso_includes/class/mail/clients/ntlm_sasl_client.php' (length=76) 6 => string 'orw_control_115/upload/wiso_includes/class/mail/clients/plain_sasl_client.php' (length=77) 7 => string 'orw_control_115/upload/wiso_includes/class/mail/index.html' (length=58) 8 => string 'orw_control_115/upload/wiso_includes/class/mail/wiso.class.message.mail.php' (length=75) 9 => string 'orw_control_115/upload/wiso_includes/class/mail/wiso.class.message.smtp.php' (length=75) 10 => string 'orw_control_115/upload/wiso_includes/class/mail/wiso.class.sasl.php' (length=67) 11 => string 'orw_control_115/upload/wiso_includes/class/mail/wiso.class.smtp.php' (length=67) 12 => string 'orw_control_115/upload/wiso_includes/class/wiso.class.aktionen.php' (length=66) 13 => string 'orw_control_115/upload/wiso_includes/class/wiso.class.captcha.php' (length=65) 14 => string 'orw_control_115/upload/wiso_includes/class/wiso.class.cron.php' (length=62)
Die Verzeichnisse werden beim Einlesen durch eine statische Variable geprüft, damit genau das nicht passiert.
In der Klasse sind folgende Vars deklariert:
PHP-Code:
protected $count = 0;
protected $article_items = array ();
protected static $last_dir = '';
PHP-Code:
public function readArticleDir ($article_dir)
{
$entrys = \scandir ($article_dir);
foreach ($entrys as $entry)
{
if ($entry != '.' && $entry != '..')
{
if (is_dir ($article_dir . $entry))
{
if (self::$last_dir !== $article_dir . $entry)
{
self::$last_dir = $article_dir . $entry;
$this->count++;
}
self::readArticleDir ($article_dir . $entry . '/');
}
else
{
$this->article_items[$this->count][self::$last_dir][] = $article_dir . $entry;
}
}
}
}
Kommentar