예제 #1
0
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;
    }
}
예제 #3
0
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;
    }
}