/** * Scannt ein Verzeichnis nach einem Dateipattern und * vergleicht dabei die Versionen um die aktuellste Version dieser Datei zurückgeben zu können * * Als Beispiel: * jquery-1.3.2.min.js * jquery-1.4.1.min.js * jquery-1.5.1.min.js * jquery-1.5.2.min.js * * gibt logischerweise jquery-1.5.2.min.js zurück * * @param string $directory das Verzeichnis (mit trailingsslash) welches durchsucht werden soll * @param string $search sollte der String am Anfang der Datei sein. Dies kann auch eine regexp sein (mit / umschlossen) * @param array $fileRegexps können zusätzliche reguläre Ausdrücke sein um aus einer Datei den Versionsstring herauszubekommen, diese werden benutzt, wenn das normale vorgehen (match ((?:[0-9]\.)+[0-9]) scheitert */ public static function getLatestFileVersion($directory, $search, array $fileRegexps = array()) { $standardRx = '/((?:[0-9]\\.)+[0-9])/'; $files = glob($directory . '*.*'); $maxFile = NULL; $maxVersion = 0; $searchRx = S::startsWith($search, '/') ? $search : '/^' . $search . '/'; foreach ($files as $file) { $fileName = basename($file); if (preg::match($fileName, $searchRx) > 0) { if (($version = preg::qmatch($fileName, $standardRx, 1)) == '') { foreach ($fileRegexps as $fileRx) { if (($version = preg::qmatch($fileName, $fileRegexps)) != '') { break; } } } if ($version == '') { throw new Exception('Für Datei: "' . $fileName . '" konnte keine Version extrahiert werden'); } if (version_compare($version, $maxVersion, '>')) { $maxVersion = $version; $maxFile = $file; } } } return array($maxFile, $maxVersion); }
session_start(); define('ITPANEL', true); define('ROOT', dirname(__FILE__) . '/'); define('TPL', ROOT . 'template/'); include_once ROOT . 'system/config.php'; include_once ROOT . 'system/classes/db.class.php'; include_once ROOT . 'system/classes/system.class.php'; include_once ROOT . 'system/classes/preg.class.php'; include_once ROOT . 'system/classes/user.class.php'; include_once ROOT . 'system/classes/logs.class.php'; if (DEBUG_MODE == 1) { ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); } if (!preg::ip($_SERVER['REMOTE_ADDR'])) { die('Ошибка #3'); } $db = new db(DBHOST, DBUSER, DBPASS, DBNAME); if (@$_SESSION['user_id'] and @$_SESSION['user_login'] and @$_SESSION['user_password']) { $user = new user($_SESSION['user_id']); if ($_SESSION['user_ip'] != 0) { if ($_SESSION['user_ip'] != $_SERVER['REMOTE_ADDR']) { $user->logout(); } } if ($user->getBlock()) { $user->logout(); } } @($action = System::clear($_GET['action']));