Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- error_reporting (E_ALL | E_NOTICE);
- class Dir
- {
- private $root;
- private $filetype = array ();
- private $deny = array ();
- private $files = array ();
- // Festlegen des Startverzeichnisses
- public function setRoot ($var)
- {
- $this -> root = $var;
- }
- // Festlegen der verbotenenen Ordner
- public function denyFolder ($var)
- {
- $this -> deny = $var;
- }
- // Festlegen der erlaubten Dateitypen
- public function setFiletype ($var)
- {
- $this -> filetype = $var;
- }
- // Suche starten, gibt im Erfolgsfall $files als Array zurück
- public function startSearch ()
- {
- $this -> doNavigate();
- if ($this -> files)
- {
- return $this -> files;
- }
- else
- {
- return false;
- }
- }
- // rekursive Methode zum Durchlaufen aller Ordner und Dateien
- private function doNavigate ()
- {
- // "temporäres" Array zum späteren sortieren
- $sort = array ();
- // aktuelles Verzeichnis wird geöffnet, wenn Verzeichnis vorhanden
- // und Leserechte vorhanden sind
- if ($handle = opendir ($this -> root))
- {
- // Ordern und Dateien im "temopäres" Array $sort einlesen
- while ($found = readdir ($handle))
- {
- if ($found != '.' && $found != '..')
- {
- $sort[] = $this -> root.'/'.$found;
- }
- }
- // Überprüfung auf Inhalte
- if (sizeof ($sort) > 0)
- {
- // alphabetisch sortieren
- natcasesort($sort);
- // Array in Schleife durchlaufen
- foreach ($sort as $var)
- {
- // Wenn Ordner
- if (is_dir ($var))
- {
- // Prüfen auf erluabten Ordner
- if (!$this -> checkFolder($var))
- {
- // aktuelles Verzeichnis festlegen
- $this -> setFolder ($var);
- // Rekursion, Methode ruft sich selber noch einmal auf
- $this -> doNavigate();
- }
- }
- // Wenn Datei
- else if (is_file($var))
- {
- // Methode zum Schreiben der Informationen aufrufen
- $this -> setFile ($var);
- }
- }
- }
- // Verzeichnis schließen
- closedir($handle);
- }
- }
- // Methode, um aktuelles Verzeichnis anzupassen
- private function setFolder ($folder)
- {
- $this -> root = $folder;
- }
- // Methode zur Überprüfung der erlaubten Ordner
- private function checkFolder ($folder)
- {
- //Schleife zur Überprüfung aller verbotenen Ordner
- foreach ($this -> deny as $forbidden)
- {
- // Pfad in Einzelordner zerlegen
- $tmp = explode ('/', $folder);
- // Überprüfung des letzten Ordners
- if ($tmp[count($tmp) -1] == $forbidden)
- {
- // wenn verboten, true zurückgeben und abbrechen
- return true;
- }
- }
- }
- // Methode zur Erfassung der gewünschten Inhalte
- private function setFile ($file)
- {
- // Datei wird auf korrekten Typ hin überprüft
- if ($this -> checkFiletype($file))
- {
- // Dateigröße
- $filesize = filesize ($file);
- // letze Änderung
- $filetime = filemtime ($file);
- // Position des letzen "/"
- $mark = strrpos ($file, "/");
- // Pfad ohne Datei
- $path = substr ($file, 0, $mark);
- // Dateinamen ohne Pfadangabe
- $file = substr ($file, $mark + 1);
- // Infos in $files schreiben
- $this -> files[] = array (
- 'path' => $path,
- 'file' => $file,
- 'size' => $filesize,
- 'time' => $filetime
- );
- }
- }
- // Methode zur Überprüfung der gewünschten Dateitypen
- private function checkFiletype ($file)
- {
- //Schleife zur Überprüfung aller erlaubten Dateien
- foreach ($this -> filetype as $valid)
- {
- // wenn Dateiendung paßt, true zurückgeben und abbrechen
- if (substr ($file, -4) == $valid)
- {
- return true;
- }
- }
- }
- }
- // Definition aller benötigten Parameter
- $filetype = array ('.htm','.php');
- $folder = array ('allgemeines');
- $root = $_SERVER['DOCUMENT_ROOT'].'/update_neu';
- // Objekt vom Typ $dir erzeugen
- $dir = new Dir;
- // Startverzeichnis festlegen
- $dir -> setRoot ($root);
- // Erlaubte Ordner festlegen
- $dir -> denyFolder ($folder);
- // Erlaubte Dateitypen fetslegen
- $dir -> setFiletype ($filetype);
- // Suche beginnen
- $result = $dir -> startSearch();
- // Ergebnis ausgeben
- print_r($result);
- ?>
Advertisement
Add Comment
Please, Sign In to add comment