function Installer_array_search_key($needle_key, $array) { foreach ($array as $key => $value) { if ($key == $needle_key) { return $value; } if (is_array($value)) { if (($result = Installer_array_search_key($needle_key, $value)) !== false) { return $result; } } } return false; }
function zip_installer_check_if_file_is_addon($zipList) { if (!is_array($zipList)) { return false; } $returnValue = ''; $i = 1; // ja, $i ist 1 :) foreach ($zipList as $el) { // Wir brauchen nur das erste Element if ($i == 1) { $installname = trim($el['file_name']); $returnValue = true; } else { // Alles danach ist unwichtig - break! break; } $i++; } // end foreach if ($returnValue) { // Prüft, ob wichtige Dateien, welche von einem Addon benötigt werden, exisitieren // Wenn nicht, handelt es sich um ein AddOn, sondern eventuell um einen Path, // oder eine Modifikation. Diese Daten können nicht vom Installer genutzt werden if (Installer_array_search_key($installname . 'config.inc.php', $zipList) == false or Installer_array_search_key($installname . 'install.inc.php', $zipList) == false or Installer_array_search_key($installname . 'uninstall.inc.php', $zipList) == false) { // Fehler, false zurück $returnValue = false; } else { $returnValue = $installname; // Jo, alles gut :) } // Wenn die Funktion nicht vorher schon durch ein return false abgebrochen wurde, // waren die Checks erfolgreich :) - Dann darf das AddOn auch installiert werden return $returnValue; } }
function Installer_check_if_file_is_addon($zipList, $installname) { $returnValue = ''; $i = 1; // ja, $i ist 1 :) foreach ($zipList as $el) { // Wir brauchen nur das erste Element if ($i == 1) { // Prüft, ob der erste Rückgabewert (im Normalfall Ordner des Addon) // mit dem AddOn-Key, welcher auf Redaxo.de eingetragen wurde, übereinstimmt if (trim($el['file_name']) != $installname . "/") { // Falsch - Check bricht an dieser Stelle ab! // Wir wollen jedoch noch einen weiteren Check machen, manchmal liefert // die ZipList ein falsches ergebnis if (preg_match('/^' . $installname . '/', $el['file_name'])) { $returnValue = true; } else { $returnValue = true; } } else { $returnValue = true; // Jo, alles gut :) } } else { // Alles danach ist unwichtig - break! break; } $i++; } // end foreach if ($returnValue) { // Prüft, ob wichtige Dateien, welche von einem Addon benötigt werden, exisitieren // Wenn nicht, handelt es sich um ein AddOn, sondern eventuell um einen Path, // oder eine Modifikation. Diese Daten können nicht vom Installer genutzt werden if (Installer_array_search_key($installname . '/config.inc.php', $zipList) == false or Installer_array_search_key($installname . '/install.inc.php', $zipList) == false or Installer_array_search_key($installname . '/uninstall.inc.php', $zipList) == false) { // Fehler, false zurück $returnValue = false; } else { $returnValue = true; // Jo, alles gut :) } // Wenn die Funktion nicht vorher schon durch ein return false abgebrochen wurde, // waren die Checks erfolgreich :) - Dann darf das AddOn auch installiert werden return $returnValue; } }