Skip to content
Extraits de code Groupes Projets
Valider cee594c0 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Fix #4192 : si un dossier squelettes/ est present dans le plugin ET qu'on a...

Fix #4192 : si un dossier squelettes/ est present dans le plugin ET qu'on a pas de balise <chemin> dans le paquet.xml, il est automatiquement detecte et ajoute au path du site public
Au passage, on reorganise : les chemins par defaut sont geres a la compilation et pas a la lecture du paquet.xml, comme pour la detection des fichiers options, fonctions etc.
parent fd259bd3
Branches
Étiquettes
Aucune requête de fusion associée trouvée
...@@ -915,7 +915,10 @@ function ecrire_plugin_actifs($plugin, $pipe_recherche = false, $operation = 'ra ...@@ -915,7 +915,10 @@ function ecrire_plugin_actifs($plugin, $pipe_recherche = false, $operation = 'ra
* Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances * Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances
**/ **/
function plugins_precompile_chemin($plugin_valides, $ordre) { function plugins_precompile_chemin($plugin_valides, $ordre) {
$chemins = array(); $chemins = [
'public' => [],
'prive' => []
];
$contenu = ""; $contenu = "";
foreach ($ordre as $p => $info) { foreach ($ordre as $p => $info) {
// $ordre peur contenir des plugins en attente et non valides pour ce hit // $ordre peur contenir des plugins en attente et non valides pour ce hit
...@@ -933,32 +936,41 @@ function plugins_precompile_chemin($plugin_valides, $ordre) { ...@@ -933,32 +936,41 @@ function plugins_precompile_chemin($plugin_valides, $ordre) {
and strpos($dir, ":") === false // exclure le cas des procure: and strpos($dir, ":") === false // exclure le cas des procure:
) { ) {
$contenu .= "define('_DIR_PLUGIN_$prefix',$dir);\n"; $contenu .= "define('_DIR_PLUGIN_$prefix',$dir);\n";
foreach ($info['chemin'] as $chemin) { if (!$info['chemin']) {
if (!isset($chemin['version']) or plugin_version_compatible($chemin['version'], $chemins['public'][] = "_DIR_PLUGIN_$prefix";
$GLOBALS['spip_version_branche'], 'spip') $chemins['prive'][] = "_DIR_PLUGIN_$prefix";
) { if (is_dir(constant($dir_type) . $plug . '/squelettes/')) {
$dir = $chemin['path']; $chemins['public'][] = "_DIR_PLUGIN_{$prefix}.'squelettes/'";
if (strlen($dir) and $dir[0] == "/") { }
$dir = substr($dir, 1); }
} else{
if (strlen($dir) and $dir == "./") { foreach ($info['chemin'] as $chemin) {
$dir = ''; if (!isset($chemin['version']) or plugin_version_compatible($chemin['version'],
} $GLOBALS['spip_version_branche'], 'spip')
if (strlen($dir)) { ) {
$dir = rtrim($dir, '/') . '/'; $dir = $chemin['path'];
} if (strlen($dir) and $dir[0] == "/") {
if (!isset($chemin['type']) or $chemin['type'] == 'public') { $dir = substr($dir, 1);
$chemins['public'][] = "_DIR_PLUGIN_$prefix" . (strlen($dir) ? ".'$dir'" : ""); }
} if (strlen($dir) and $dir == "./") {
if (!isset($chemin['type']) or $chemin['type'] == 'prive') { $dir = '';
$chemins['prive'][] = "_DIR_PLUGIN_$prefix" . (strlen($dir) ? ".'$dir'" : ""); }
if (strlen($dir)) {
$dir = rtrim($dir, '/') . '/';
}
if (!isset($chemin['type']) or $chemin['type'] == 'public') {
$chemins['public'][] = "_DIR_PLUGIN_$prefix" . (strlen($dir) ? ".'$dir'" : "");
}
if (!isset($chemin['type']) or $chemin['type'] == 'prive') {
$chemins['prive'][] = "_DIR_PLUGIN_$prefix" . (strlen($dir) ? ".'$dir'" : "");
}
} }
} }
} }
} }
} }
} }
if (count($chemins)) { if (count($chemins['public']) or count($chemins['prive'])) {
$contenu .= "if (_DIR_RESTREINT) _chemin([" . implode(',', $contenu .= "if (_DIR_RESTREINT) _chemin([" . implode(',',
array_reverse($chemins['public'])) . "]);\n" array_reverse($chemins['public'])) . "]);\n"
. "else _chemin([" . implode(',', array_reverse($chemins['prive'])) . "]);\n"; . "else _chemin([" . implode(',', array_reverse($chemins['prive'])) . "]);\n";
......
...@@ -51,8 +51,8 @@ function plugins_infos_paquet($desc, $plug = '', $dir_plugins = _DIR_PLUGINS) { ...@@ -51,8 +51,8 @@ function plugins_infos_paquet($desc, $plug = '', $dir_plugins = _DIR_PLUGINS) {
$tree['description'] = $tree['prefix'] . "_description"; $tree['description'] = $tree['prefix'] . "_description";
paquet_readable_files($tree, "$dir_plugins$plug/"); paquet_readable_files($tree, "$dir_plugins$plug/");
if (!$tree['chemin']) { if (!$tree['chemin']) {
$tree['chemin'] = array(array('path' => '')); $tree['chemin'] = array();
} // initialiser par defaut }
// On verifie qu'il existe des balises spip qu'il faudrait rajouter dans // On verifie qu'il existe des balises spip qu'il faudrait rajouter dans
// la structure d'infos du paquet en fonction de la version spip courante // la structure d'infos du paquet en fonction de la version spip courante
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter