示例#1
0
文件: plugin.php 项目: spip/SPIP
/**
 * Construire la liste des infos strictement necessaires aux plugins a activer
 * afin de les memoriser dans une meta pas trop grosse
 * http://code.spip.net/@liste_plugin_valides
 *
 * @param array $liste_plug
 * @param bool $force
 * @return array
 */
function liste_plugin_valides($liste_plug, $force = false)
{
    $liste_ext = liste_plugin_files(_DIR_PLUGINS_DIST);
    $get_infos = charger_fonction('get_infos', 'plugins');
    $infos = array('_DIR_PLUGINS_DIST' => $get_infos($liste_ext, $force, _DIR_PLUGINS_DIST), '_DIR_PLUGINS' => $get_infos($liste_plug, $force, _DIR_PLUGINS));
    // creer une premiere liste non ordonnee mais qui ne retient
    // que les plugins valides, et dans leur derniere version en cas de doublon
    $infos['_DIR_RESTREINT'][''] = $get_infos('./', $force, _DIR_RESTREINT);
    $infos['_DIR_RESTREINT']['SPIP']['version'] = $GLOBALS['spip_version_branche'];
    $infos['_DIR_RESTREINT']['SPIP']['chemin'] = array();
    $liste_non_classee = array('SPIP' => array('nom' => 'SPIP', 'etat' => 'stable', 'version' => $GLOBALS['spip_version_branche'], 'dir_type' => '_DIR_RESTREINT', 'dir' => ''));
    foreach ($liste_ext as $plug) {
        if (isset($infos['_DIR_PLUGINS_DIST'][$plug])) {
            plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS_DIST');
        }
    }
    foreach ($liste_plug as $plug) {
        if (isset($infos['_DIR_PLUGINS'][$plug])) {
            plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS');
        }
    }
    if (defined('_DIR_PLUGINS_SUPPL') and _DIR_PLUGINS_SUPPL) {
        $infos['_DIR_PLUGINS_SUPPL'] = $get_infos($liste_plug, false, _DIR_PLUGINS_SUPPL);
        foreach ($liste_plug as $plug) {
            if (isset($infos['_DIR_PLUGINS_SUPPL'][$plug])) {
                plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS_SUPPL');
            }
        }
    }
    plugin_fixer_procure($liste_non_classee, $infos);
    return array($infos, $liste_non_classee);
}
示例#2
0
文件: plugin.php 项目: JLuc/SPIP
function liste_plugin_valides($liste_plug, $force = false)
{
    $liste_ext = liste_plugin_files(_DIR_PLUGINS_DIST);
    $get_infos = charger_fonction('get_infos', 'plugins');
    $infos = array('_DIR_PLUGINS_DIST' => $get_infos($liste_ext, $force, _DIR_PLUGINS_DIST), '_DIR_PLUGINS' => $get_infos($liste_plug, $force, _DIR_PLUGINS));
    // creer une premiere liste non ordonnee mais qui ne retient
    // que les plugins valides, et dans leur derniere version en cas de doublon
    $infos['_DIR_RESTREINT'][''] = $get_infos('./', $force, _DIR_RESTREINT);
    $infos['_DIR_RESTREINT']['SPIP']['version'] = $GLOBALS['spip_version_branche'];
    $infos['_DIR_RESTREINT']['SPIP']['chemin'] = array();
    $liste_non_classee = array('SPIP' => array('nom' => 'SPIP', 'etat' => 'stable', 'version' => $GLOBALS['spip_version_branche'], 'dir_type' => '_DIR_RESTREINT', 'dir' => ''));
    foreach ($liste_ext as $plug) {
        if (isset($infos['_DIR_PLUGINS_DIST'][$plug])) {
            plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS_DIST');
        }
    }
    foreach ($liste_plug as $plug) {
        if (isset($infos['_DIR_PLUGINS'][$plug])) {
            plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS');
        }
    }
    if (defined('_DIR_PLUGINS_SUPPL') and _DIR_PLUGINS_SUPPL) {
        $infos['_DIR_PLUGINS_SUPPL'] = $get_infos($liste_plug, false, _DIR_PLUGINS_SUPPL);
        foreach ($liste_plug as $plug) {
            if (isset($infos['_DIR_PLUGINS_SUPPL'][$plug])) {
                plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS_SUPPL');
            }
        }
    }
    // les procure de core.xml sont consideres comme des plugins proposes,
    // mais surchargeables (on peut activer un plugin qui procure ca pour l'ameliorer,
    // donc avec le meme prefixe)
    foreach ($infos['_DIR_RESTREINT']['']['procure'] as $procure) {
        $p = strtoupper($procure['nom']);
        if (!isset($liste_non_classee[$p])) {
            $procure['etat'] = '?';
            $procure['dir_type'] = '_DIR_RESTREINT';
            $procure['dir'] = $procure['nom'];
            $liste_non_classee[$p] = $procure;
            // on fournit une information minimale pour ne pas perturber la compilation
            $infos['_DIR_RESTREINT'][$procure['nom']] = array('prefix' => $procure['nom'], 'nom' => $procure['nom'], 'etat' => $procure['etat'], 'version' => $procure['version'], 'chemin' => array(), 'necessite' => array(), 'utilise' => array(), 'lib' => array(), 'menu' => array(), 'onglet' => array());
        }
    }
    return array($infos, $liste_non_classee);
}