" . _T('svp:erreur_actions_non_traitees', array(
- 'auteur' => sql_getfetsel('nom', 'spip_auteurs', 'id_auteur=' . sql_quote($this->lock['id_auteur'])),
- 'date' => affdate_heure($date)
- )) . "
\n";
- $todo .= "");
}
-
+
return $affiche;
}
@@ -614,16 +643,17 @@ class Actionneur {
* précis qui a posé le verrou.
*
* @see Actionneur::verrouiller()
- *
+ *
* @param int|string $id_auteur
* Identifiant de l'auteur, ou vide
* @return bool
* true si un verrou est là , false sinon
- **/
+ **/
function est_verrouille($id_auteur = '') {
if ($id_auteur == '') {
return ($this->lock['id_auteur'] ? true : false);
}
+
return ($this->lock['id_auteur'] == $id_auteur);
}
@@ -638,9 +668,9 @@ class Actionneur {
* Le verrou est signé par l'id_auteur de l'auteur actuellement identifié.
*
* Le verrou sera sauvegardé en fichier avec la liste des actions
- *
+ *
* @see Actionneur::sauver_actions()
- **/
+ **/
function verrouiller() {
$this->lock = array(
'id_auteur' => $GLOBALS['visiteur_session']['id_auteur'],
@@ -650,7 +680,7 @@ class Actionneur {
/**
* Enlève le verrou
- **/
+ **/
function deverrouiller() {
$this->lock = array(
'id_auteur' => 0,
@@ -666,15 +696,15 @@ class Actionneur {
* les erreurs générées, et le verrouillage.
*
* Le cache peut être lu avec la méthode get_actions()
- *
+ *
* @see Actionneur::get_actions()
- **/
+ **/
function sauver_actions() {
$contenu = serialize(array(
'todo' => $this->end,
'done' => $this->done,
'work' => $this->work,
- 'err' => $this->err,
+ 'err' => $this->err,
'lock' => $this->lock,
));
ecrire_fichier(_DIR_TMP . 'stp_actions.txt', $contenu);
@@ -685,16 +715,16 @@ class Actionneur {
*
* Restaure les informations contenues dans le fichier de cache
* et écrites avec la méthode sauver_actions().
- *
+ *
* @see Actionneur::sauver_actions()
- **/
+ **/
function get_actions() {
lire_fichier(_DIR_TMP . 'stp_actions.txt', $contenu);
$infos = unserialize($contenu);
- $this->end = $infos['todo'];
+ $this->end = $infos['todo'];
$this->work = $infos['work'];
$this->done = $infos['done'];
- $this->err = $infos['err'];
+ $this->err = $infos['err'];
$this->lock = $infos['lock'];
}
@@ -702,12 +732,12 @@ class Actionneur {
* Nettoyage des actions et verrou
*
* Remet tout à zéro pour pouvoir repartir d'un bon pied.
- **/
+ **/
function nettoyer_actions() {
$this->todo = array();
$this->done = array();
$this->work = array();
- $this->err = array();
+ $this->err = array();
$this->deverrouiller();
$this->sauver_actions();
}
@@ -722,7 +752,7 @@ class Actionneur {
* @return bool|array
* False si aucune action à faire,
* sinon tableau de description courte du paquet + index 'todo' indiquant l'action
- **/
+ **/
function one_action() {
// s'il reste des actions, on en prend une, et on la fait
// de meme si une action est en cours mais pas terminee (timeout)
@@ -755,6 +785,7 @@ class Actionneur {
$this->deverrouiller();
$this->sauver_actions();
}
+
return $action;
} else {
// on ne devrait normalement plus tomber sur un cas de verrouillage ici
@@ -764,6 +795,7 @@ class Actionneur {
$this->sauver_actions();
}
}
+
return false;
}
@@ -776,7 +808,7 @@ class Actionneur {
* Place dans la clé 'done' de description courte du paquet
* le résultat de l'action (un booléen indiquant si elle s'est bien
* déroulée).
- **/
+ **/
function do_action() {
if ($do = $this->work) {
$todo = 'do_' . $do['todo'];
@@ -802,13 +834,15 @@ class Actionneur {
if (!$this->tester_repertoire_plugins_auto()) {
return false;
}
- $i = sql_fetsel('*','spip_paquets','id_paquet='.sql_quote($info['i']));
+ $i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($info['i']));
if ($dirs = $this->get_paquet_id($i)) {
$this->activer_plugin_dossier($dirs['dossier'], $i);
+
return true;
}
-
- $this->log("GetOn : Erreur de chargement du paquet " .$info['n']);
+
+ $this->log("GetOn : Erreur de chargement du paquet " . $info['n']);
+
return false;
}
@@ -823,20 +857,21 @@ class Actionneur {
* false si erreur, true sinon.
*/
function do_on($info) {
- $i = sql_fetsel('*','spip_paquets','id_paquet='.sql_quote($info['i']));
+ $i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($info['i']));
// à télécharger ?
if (isset($i['id_zone']) and $i['id_zone'] > 0) {
return $this->do_geton($info);
}
-
+
// a activer uniquement
// il faudra prendre en compte les autres _DIR_xx
- if (in_array($i['constante'], array('_DIR_PLUGINS','_DIR_PLUGINS_SUPPL'))) {
+ if (in_array($i['constante'], array('_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL'))) {
$dossier = rtrim($i['src_archive'], '/');
$this->activer_plugin_dossier($dossier, $i, $i['constante']);
+
return true;
}
-
+
return false;
}
@@ -860,19 +895,21 @@ class Actionneur {
// $i est le paquet a mettre à jour (donc present)
// $maj est le paquet a telecharger qui est a jour (donc distant)
-
- $i = sql_fetsel('*','spip_paquets','id_paquet='.sql_quote($info['i']));
+
+ $i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($info['i']));
// on cherche la mise a jour...
// c'est a dire le paquet source que l'on met a jour.
if ($maj = sql_fetsel('pa.*',
array('spip_paquets AS pa', 'spip_plugins AS pl'),
array(
- 'pl.prefixe='.sql_quote($info['p']),
- 'pa.version='.sql_quote($info['maj']),
- 'pa.id_plugin = pl.id_plugin',
- 'pa.id_depot>'.sql_quote(0)),
- '', 'pa.etatnum DESC', '0,1')) {
+ 'pl.prefixe=' . sql_quote($info['p']),
+ 'pa.version=' . sql_quote($info['maj']),
+ 'pa.id_plugin = pl.id_plugin',
+ 'pa.id_depot>' . sql_quote(0)
+ ),
+ '', 'pa.etatnum DESC', '0,1')
+ ) {
// si dans auto, on autorise à mettre à jour depuis auto pour les VCS
$dir_actuel_dans_auto = '';
@@ -894,16 +931,18 @@ class Actionneur {
// alors que le nouveau est auto/X/Y ...
// il faut prendre en compte ce cas particulier et ne pas ecraser auto/X !
if (substr($i['src_archive'], 0, 5) == 'auto/' and (false === strpos($dirs['dossier'], $i['src_archive']))) {
- if (supprimer_repertoire( constant($i['constante']) . $i['src_archive']) ) {
+ if (supprimer_repertoire(constant($i['constante']) . $i['src_archive'])) {
sql_delete('spip_paquets', 'id_paquet=' . sql_quote($info['i']));
}
}
}
$this->ajouter_plugin_interessants_meta($dirs['dossier']);
+
return $dirs;
}
}
+
return false;
}
@@ -917,11 +956,13 @@ class Actionneur {
* false si erreur, true sinon
*/
function do_upon($info) {
- $i = sql_fetsel('*', 'spip_paquets', 'id_paquet='.sql_quote($info['i']));
+ $i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($info['i']));
if ($dirs = $this->do_up($info)) {
$this->activer_plugin_dossier($dirs['dossier'], $i, $i['constante']);
+
return true;
}
+
return false;
}
@@ -935,19 +976,20 @@ class Actionneur {
* false si erreur, true sinon
*/
function do_off($info) {
- $i = sql_fetsel('*','spip_paquets','id_paquet='.sql_quote($info['i']));
+ $i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($info['i']));
// il faudra prendre en compte les autres _DIR_xx
- if (in_array($i['constante'], array('_DIR_PLUGINS','_DIR_PLUGINS_SUPPL'))) {
+ if (in_array($i['constante'], array('_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL'))) {
include_spip('inc/plugin');
$dossier = rtrim($i['src_archive'], '/');
- ecrire_plugin_actifs(array(rtrim($dossier,'/')), false, 'enleve');
- sql_updateq('spip_paquets', array('actif'=>'non', 'installe'=>'non'), 'id_paquet='.sql_quote($info['i']));
+ ecrire_plugin_actifs(array(rtrim($dossier, '/')), false, 'enleve');
+ sql_updateq('spip_paquets', array('actif' => 'non', 'installe' => 'non'), 'id_paquet=' . sql_quote($info['i']));
$this->actualiser_plugin_interessants();
// ce retour est un rien faux...
// il faudrait que la fonction ecrire_plugin_actifs()
// retourne au moins d'eventuels message d'erreur !
return true;
}
+
return false;
}
@@ -961,22 +1003,23 @@ class Actionneur {
* false si erreur, true sinon
*/
function do_stop($info) {
- $i = sql_fetsel('*','spip_paquets','id_paquet=' . sql_quote($info['i']));
+ $i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($info['i']));
// il faudra prendre en compte les autres _DIR_xx
- if (in_array($i['constante'], array('_DIR_PLUGINS','_DIR_PLUGINS_SUPPL'))) {
+ if (in_array($i['constante'], array('_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL'))) {
include_spip('inc/plugin');
- $dossier = rtrim($i['src_archive'],'/');
+ $dossier = rtrim($i['src_archive'], '/');
$installer_plugins = charger_fonction('installer', 'plugins');
// retourne :
// - false : pas de procedure d'install/desinstalle
// - true : operation deja faite
// - tableau : operation faite ce tour ci.
- $infos = $installer_plugins($dossier, 'uninstall',$i['constante']);
+ $infos = $installer_plugins($dossier, 'uninstall', $i['constante']);
if (is_bool($infos) OR !$infos['install_test'][0]) {
include_spip('inc/plugin');
ecrire_plugin_actifs(array($dossier), false, 'enleve');
- sql_updateq('spip_paquets', array('actif'=>'non', 'installe'=>'non'), 'id_paquet='.sql_quote($info['i']));
+ sql_updateq('spip_paquets', array('actif' => 'non', 'installe' => 'non'), 'id_paquet=' . sql_quote($info['i']));
+
return true;
} else {
// echec
@@ -984,6 +1027,7 @@ class Actionneur {
}
}
$this->actualiser_plugin_interessants();
+
return false;
}
@@ -1000,11 +1044,12 @@ class Actionneur {
// on reverifie que c'est bien un plugin auto !
// il faudrait aussi faire tres attention sur un site mutualise
// cette option est encore plus delicate que les autres...
- $i = sql_fetsel('*','spip_paquets','id_paquet='.sql_quote($info['i']));
+ $i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($info['i']));
+
+ if (in_array($i['constante'], array('_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL'))
+ and substr($i['src_archive'], 0, 5) == 'auto/'
+ ) {
- if (in_array($i['constante'], array('_DIR_PLUGINS','_DIR_PLUGINS_SUPPL'))
- and substr($i['src_archive'], 0, 5) == 'auto/') {
-
$dir = constant($i['constante']) . $i['src_archive'];
if (supprimer_repertoire($dir)) {
$id_plugin = sql_getfetsel('id_plugin', 'spip_paquets', 'id_paquet=' . sql_quote($info['i']));
@@ -1053,6 +1098,7 @@ class Actionneur {
}
array_pop($chemins);
}
+
return true;
}
}
@@ -1073,20 +1119,23 @@ class Actionneur {
if (!defined('_DIR_LIB') or !_DIR_LIB) {
$this->err(_T('svp:erreur_dir_dib_indefini'));
$this->log("/!\ Pas de _DIR_LIB defini !");
+
return false;
}
if (!is_writable(_DIR_LIB)) {
- $this->err(_T('svp:erreur_dir_dib_ecriture', array('dir' => _DIR_LIB )));
+ $this->err(_T('svp:erreur_dir_dib_ecriture', array('dir' => _DIR_LIB)));
$this->log("/!\ Ne peut pas écrire dans _DIR_LIB !");
+
return false;
}
- if(!autoriser('plugins_ajouter')){
+ if (!autoriser('plugins_ajouter')) {
$this->err(_T('svp:erreur_auth_plugins_ajouter_lib'));
$this->log("/!\ Pas autorisé à ajouter des libs !");
+
return false;
}
-
- $this->log("Recuperer la librairie : " . $info['n'] );
+
+ $this->log("Recuperer la librairie : " . $info['n']);
// on recupere la mise a jour...
include_spip('action/teleporter');
@@ -1095,9 +1144,10 @@ class Actionneur {
if ($ok === true) {
return true;
}
-
+
$this->err($ok);
$this->log("Téléporteur en erreur : " . $ok);
+
return false;
}
@@ -1116,9 +1166,10 @@ class Actionneur {
}
$i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($info['i']));
-
+
if ($dirs = $this->get_paquet_id($info['i'])) {
$this->ajouter_plugin_interessants_meta($dirs['dossier']);
+
return true;
}
@@ -1140,7 +1191,7 @@ class Actionneur {
/**
- * Activer un plugin
+ * Activer un plugin
*
* @param string $dossier
* Chemin du répertoire du plugin
@@ -1149,32 +1200,39 @@ class Actionneur {
* @param string $constante
* Constante indiquant le chemin de base du plugin (_DIR_PLUGINS, _DIR_PLUGINS_SUPPL, _DIR_PLUGINS_DIST)
* @return void
- **/
+ **/
function activer_plugin_dossier($dossier, $i, $constante = '_DIR_PLUGINS') {
include_spip('inc/plugin');
$this->log("Demande d'activation de : " . $dossier);
-
+
//il faut absolument que tous les fichiers de cache
// soient inclus avant modification, sinon un appel ulterieur risquerait
// de charger des fichiers deja charges par un autre !
// C'est surtout le ficher de fonction le probleme (options et pipelines
// sont normalement deja charges).
- if (@is_readable(_CACHE_PLUGINS_OPT)) {include_once(_CACHE_PLUGINS_OPT);}
- if (@is_readable(_CACHE_PLUGINS_FCT)) {include_once(_CACHE_PLUGINS_FCT);}
- if (@is_readable(_CACHE_PIPELINES)) {include_once(_CACHE_PIPELINES);}
+ if (@is_readable(_CACHE_PLUGINS_OPT)) {
+ include_once(_CACHE_PLUGINS_OPT);
+ }
+ if (@is_readable(_CACHE_PLUGINS_FCT)) {
+ include_once(_CACHE_PLUGINS_FCT);
+ }
+ if (@is_readable(_CACHE_PIPELINES)) {
+ include_once(_CACHE_PIPELINES);
+ }
include_spip('inc/plugin');
ecrire_plugin_actifs(array($dossier), false, 'ajoute');
$installe = $i['version_base'] ? 'oui' : 'non';
if ($installe == 'oui') {
- if(!$i['constante'])
+ if (!$i['constante']) {
$i['constante'] = '_DIR_PLUGINS';
+ }
// installer le plugin au prochain tour
$new_action = array_merge($this->work, array(
- 'todo'=>'install',
- 'dossier'=>rtrim($dossier,'/'),
- 'constante'=>$i['constante'],
- 'v'=>$i['version'], // pas forcement la meme version qu'avant lors d'une mise a jour.
+ 'todo' => 'install',
+ 'dossier' => rtrim($dossier, '/'),
+ 'constante' => $i['constante'],
+ 'v' => $i['version'], // pas forcement la meme version qu'avant lors d'une mise a jour.
));
array_unshift($this->end, $new_action);
$this->log("Demande d'installation de $dossier");
@@ -1192,7 +1250,7 @@ class Actionneur {
* Décrémente chaque score de plugin présent dans la méta
* 'plugins_interessants' et signifiant que ces plugins
* ont été utilisés récemment.
- *
+ *
* Les plugins atteignant un score de zéro sont évacués ce la liste.
*/
function actualiser_plugin_interessants() {
@@ -1205,33 +1263,33 @@ class Actionneur {
if (!is_array($plugins_interessants)) {
$plugins_interessants = array();
}
-
+
$dossiers = array();
$dossiers_old = array();
- foreach($plugins_interessants as $p => $score) {
+ foreach ($plugins_interessants as $p => $score) {
if (--$score > 0) {
$plugins_interessants[$p] = $score;
- $dossiers[$p.'/'] = true;
+ $dossiers[$p . '/'] = true;
} else {
unset($plugins_interessants[$p]);
- $dossiers_old[$p.'/'] = true;
+ $dossiers_old[$p . '/'] = true;
}
}
// enlever les anciens
if ($dossiers_old) {
// ATTENTION, il faudra prendre en compte les _DIR_xx
- sql_updateq('spip_paquets', array('recent'=>0), sql_in('src_archive', array_keys($dossiers_old)));
+ sql_updateq('spip_paquets', array('recent' => 0), sql_in('src_archive', array_keys($dossiers_old)));
}
- $plugs = sql_allfetsel('src_archive','spip_paquets', 'actif='.sql_quote('oui'));
+ $plugs = sql_allfetsel('src_archive', 'spip_paquets', 'actif=' . sql_quote('oui'));
$plugs = array_map('array_shift', $plugs);
foreach ($plugs as $dossier) {
$dossiers[$dossier] = true;
- $plugins_interessants[ rtrim($dossier, '/') ] = 30; // score initial
+ $plugins_interessants[rtrim($dossier, '/')] = 30; // score initial
}
- $plugs = sql_updateq('spip_paquets', array('recent'=>1), sql_in('src_archive', array_keys($dossiers)));
+ $plugs = sql_updateq('spip_paquets', array('recent' => 1), sql_in('src_archive', array_keys($dossiers)));
ecrire_meta('plugins_interessants', serialize($plugins_interessants));
}
@@ -1262,7 +1320,7 @@ class Actionneur {
* @return bool
* false si erreur, true sinon
*/
- function installer_plugin($info){
+ function installer_plugin($info) {
// il faut info['dossier'] et info['constante'] pour installer
if ($plug = $info['dossier']) {
$installer_plugins = charger_fonction('installer', 'plugins');
@@ -1272,15 +1330,15 @@ class Actionneur {
if (!is_array($infos) OR $infos['install_test'][0]) {
$meta_plug_installes = @unserialize($GLOBALS['meta']['plugin_installes']);
if (!$meta_plug_installes) {
- $meta_plug_installes=array();
+ $meta_plug_installes = array();
}
$meta_plug_installes[] = $plug;
- ecrire_meta('plugin_installes',serialize($meta_plug_installes),'non');
+ ecrire_meta('plugin_installes', serialize($meta_plug_installes), 'non');
}
if (!is_array($infos)) {
// l'installation avait deja ete faite un autre jour
- return true;
+ return true;
} else {
// l'installation est neuve
list($ok, $trace) = $infos['install_test'];
@@ -1289,17 +1347,18 @@ class Actionneur {
}
// l'installation est en erreur
$this->err(_T('svp:message_action_finale_install_fail',
- array('plugin' => $info['n'], 'version'=>denormaliser_version($info['v']))) . "
" . $trace);
+ array('plugin' => $info['n'], 'version' => denormaliser_version($info['v']))) . "
" . $trace);
}
}
}
+
return false;
}
/**
* Télécharge un paquet
- *
+ *
* Supprime les fichiers obsolètes (si présents)
*
* @param int|array $id_or_row
@@ -1315,18 +1374,19 @@ class Actionneur {
function get_paquet_id($id_or_row, $dest_ancien = "") {
// on peut passer direct le row sql...
if (!is_array($id_or_row)) {
- $i = sql_fetsel('*','spip_paquets','id_paquet='.sql_quote($id_or_row));
+ $i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($id_or_row));
} else {
$i = $id_or_row;
}
unset($id_or_row);
if ($i['nom_archive'] and $i['id_depot']) {
- $this->log("Recuperer l'archive : " . $i['nom_archive'] );
+ $this->log("Recuperer l'archive : " . $i['nom_archive']);
// on récupère les informations intéressantes du dépot :
// - url des archives
// - éventuellement : type de serveur (svn, git) et url de la racine serveur (svn://..../)
- $adresses = sql_fetsel(array('url_archives', 'type', 'url_serveur'), 'spip_depots', 'id_depot='.sql_quote($i['id_depot']));
+ $adresses = sql_fetsel(array('url_archives', 'type', 'url_serveur'), 'spip_depots',
+ 'id_depot=' . sql_quote($i['id_depot']));
if ($adresses and $adresse = $adresses['url_archives']) {
// destination : auto/prefixe/version (sinon auto/nom_archive/version)
@@ -1335,7 +1395,7 @@ class Actionneur {
array('pa.id_plugin = pl.id_plugin', 'pa.id_paquet=' . sql_quote($i['id_paquet'])));
// prefixe
- $base = ($prefixe ? strtolower($prefixe) : substr($i['nom_archive'], 0, -4) ); // enlever .zip ...
+ $base = ($prefixe ? strtolower($prefixe) : substr($i['nom_archive'], 0, -4)); // enlever .zip ...
// prefixe/version
$dest_future = $base . '/v' . denormaliser_version($i['version']);
@@ -1348,10 +1408,10 @@ class Actionneur {
// l'url est différente en fonction du téléporteur
$teleporteur = $this->choisir_teleporteur($adresses['type']);
if ($teleporteur == 'http') {
- $url = $adresse . '/' . $i['nom_archive'];
+ $url = $adresse . '/' . $i['nom_archive'];
$dest = $dest_future;
} else {
- $url = $adresses['url_serveur'] . '/' . $i['src_archive'];
+ $url = $adresses['url_serveur'] . '/' . $i['src_archive'];
$dest = $dest_ancien ? $dest_ancien : $dest_future;
}
@@ -1364,17 +1424,19 @@ class Actionneur {
if ($dest != $dest_future) {
rename(_DIR_PLUGINS_AUTO . $dest, _DIR_PLUGINS_AUTO . $dest_future);
}
+
return array(
- 'dir'=> _DIR_PLUGINS_AUTO . $dest,
+ 'dir' => _DIR_PLUGINS_AUTO . $dest,
'dossier' => 'auto/' . $dest, // c'est depuis _DIR_PLUGINS ... pas bien en dur...
);
}
$this->err($ok);
$this->log("Téléporteur en erreur : " . $ok);
} else {
- $this->log("Aucune adresse pour le dépot " . $i['id_depot'] );
+ $this->log("Aucune adresse pour le dépot " . $i['id_depot']);
}
}
+
return false;
}
@@ -1385,19 +1447,22 @@ class Actionneur {
*
* @return bool
* True si on peut écrire dedans, false sinon
- **/
+ **/
function tester_repertoire_plugins_auto() {
include_spip('inc/plugin'); // pour _DIR_PLUGINS_AUTO
if (!defined('_DIR_PLUGINS_AUTO') or !_DIR_PLUGINS_AUTO) {
$this->err(_T('svp:erreur_dir_plugins_auto_indefini'));
$this->log("/!\ Pas de _DIR_PLUGINS_AUTO defini !");
+
return false;
}
if (!is_writable(_DIR_PLUGINS_AUTO)) {
- $this->err(_T('svp:erreur_dir_plugins_auto_ecriture', array('dir'=>_DIR_PLUGINS_AUTO)));
+ $this->err(_T('svp:erreur_dir_plugins_auto_ecriture', array('dir' => _DIR_PLUGINS_AUTO)));
$this->log("/!\ Ne peut pas écrire dans _DIR_PLUGINS_AUTO !");
+
return false;
}
+
return true;
}
@@ -1427,7 +1492,8 @@ class Actionneur {
$base_files = array_diff($base_files, array('.', '..'));
foreach ($base_files as $f) {
if (($f[0] != '.' and $f[0] != 'v') // commence pas par v
- OR ($f[0] != '.' and !is_dir($dir_dans_auto . '/' . $f))) { // commence par v mais pas repertoire
+ OR ($f[0] != '.' and !is_dir($dir_dans_auto . '/' . $f))
+ ) { // commence par v mais pas repertoire
return true;
}
}
@@ -1444,9 +1510,9 @@ class Actionneur {
*
* @param string $teleporteur Téléporteur VCS à tester
* @param string $defaut Téléporteur par défaut
- *
+ *
* @return string Nom du téléporteur à utiliser
- **/
+ **/
function choisir_teleporteur($teleporteur, $defaut = 'http') {
// Utiliser un teleporteur vcs si possible si demandé
if (defined('SVP_PREFERER_TELECHARGEMENT_PAR_VCS') and SVP_PREFERER_TELECHARGEMENT_PAR_VCS) {
@@ -1460,33 +1526,36 @@ class Actionneur {
}
}
}
+
return $defaut;
}
/**
* Teste si le plugin SVP (celui-ci donc) a
- * été désinstallé / désactivé dans les actions réalisées
+ * été désinstallé / désactivé dans les actions réalisées
*
* @note
* On ne peut tester sa désactivation que dans le hit où la désinstallation
* est réalisée, puisque après, s'il a été désactivé, au prochain hit
* on ne connaîtra plus ce fichier !
- *
+ *
* @return bool
* true si SVP a été désactivé, false sinon
- **/
+ **/
function tester_si_svp_desactive() {
foreach ($this->done as $d) {
if ($d['p'] == 'SVP'
- AND $d['done'] == true
- AND in_array($d['todo'], array('off', 'stop'))) {
+ AND $d['done'] == true
+ AND in_array($d['todo'], array('off', 'stop'))
+ ) {
return true;
}
}
+
return false;
}
-
+
}
@@ -1500,16 +1569,17 @@ class Actionneur {
* @param string $redirect
* URL de retour
* @return void
-**/
+ **/
function svp_actionner_traiter_actions_demandees($actions, &$retour, $redirect = null) {
- $actionneur = new Actionneur();
- $actionneur->ajouter_actions($actions);
- $actionneur->verrouiller();
- $actionneur->sauver_actions();
-
- $redirect = $redirect ? $redirect : generer_url_ecrire('admin_plugin');
- $retour['redirect'] = generer_url_action('actionner', 'redirect='.urlencode($redirect));
- set_request('_todo', '');
- $retour['message_ok'] = _T("svp:action_patienter");
+ $actionneur = new Actionneur();
+ $actionneur->ajouter_actions($actions);
+ $actionneur->verrouiller();
+ $actionneur->sauver_actions();
+
+ $redirect = $redirect ? $redirect : generer_url_ecrire('admin_plugin');
+ $retour['redirect'] = generer_url_action('actionner', 'redirect=' . urlencode($redirect));
+ set_request('_todo', '');
+ $retour['message_ok'] = _T("svp:action_patienter");
}
+
?>
diff --git a/inc/svp_decider.php b/inc/svp_decider.php
index 703106e..c54b58a 100644
--- a/inc/svp_decider.php
+++ b/inc/svp_decider.php
@@ -9,8 +9,10 @@
* @license GPL
* @package SPIP\SVP\Decideur
*/
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
+
+if (!defined("_ECRIRE_INC_VERSION")) {
+ return;
+}
include_spip('plugins/installer'); // pour spip_version_compare()
include_spip('inc/svp_rechercher'); // svp_verifier_compatibilite_spip()
@@ -21,11 +23,12 @@ include_spip('inc/svp_rechercher'); // svp_verifier_compatibilite_spip()
* de ce qui est demandé et des différentes dépendances des plugins.
*
* @package SPIP\SVP\Actionner
-**/
+ **/
class Decideur {
/**
* Plugins actifs en cours avant toute modification
+ *
* @var array
* Index 'i' : plugins triés par identifiant en base [i][32] = tableau de description
* Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description
@@ -37,6 +40,7 @@ class Decideur {
/**
* Plugins actifs à la fin des modifications effectuées
+ *
* @var array
* Index 'i' : plugins triés par identifiant en base [i][32] = tableau de description
* Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description
@@ -48,6 +52,7 @@ class Decideur {
/**
* Plugins procure par SPIP
+ *
* @var array
* Tableau ('PREFIXE' => numéro de version)
*/
@@ -56,6 +61,7 @@ class Decideur {
/**
* Toutes les actions à faire demandées
* (ce que l'on demande à l'origine)
+ *
* @var array
* Tableau ('identifiant' => tableau de description)
*/
@@ -63,7 +69,7 @@ class Decideur {
/**
* Toutes les actions à faire demandées et consécutives aux dépendances
- *
+ *
* @var array
* Tableau ('identifiant' => tableau de description)
*/
@@ -73,7 +79,7 @@ class Decideur {
* Toutes les actions à faire consécutives aux dépendances
*
* C'est à dire les actions à faire en plus de celles demandées.
- *
+ *
* @var array
* Tableau ('identifiant' => tableau de description)
*/
@@ -81,7 +87,7 @@ class Decideur {
/**
* Tous les plugins à arrêter (désactiver ou désinstaller)
- *
+ *
* @var array
* Tableau ('PREFIXE' => tableau de description)
*/
@@ -89,7 +95,7 @@ class Decideur {
/**
* Tous les plugins invalidés (suite a des dependances introuvables, mauvaise version de SPIP...)
- *
+ *
* @var array
* Tableau ('PREFIXE' => tableau de description)
*/
@@ -97,7 +103,7 @@ class Decideur {
/**
* Liste des erreurs
- *
+ *
* @var array
* Tableau ('identifiant' => liste des erreurs)
*/
@@ -105,30 +111,34 @@ class Decideur {
/**
* État de santé (absence d'erreur)
- *
+ *
* Le résultat true permettra d'effectuer toutes les actions.
* Passe à false dès qu'une erreur est présente !
- *
- * @var bool */
+ *
+ * @var bool
+ */
var $ok = true;
/**
* Loguer les différents éléments
- *
+ *
* Sa valeur sera initialisée par la configuration 'mode_log_verbeux' de SVP
- *
- * @var bool */
+ *
+ * @var bool
+ */
var $log = false;
/**
* Générer une erreur si on demande une mise à jour d'un plugin
* alors qu'on ne la connait pas.
- * @var bool */
+ *
+ * @var bool
+ */
var $erreur_sur_maj_introuvable = true;
/**
* Constructeur
- *
+ *
* Initialise la propriété $log en fonction de la configuration
*/
function __construct() {
@@ -145,7 +155,7 @@ class Decideur {
* Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description
*/
function liste_plugins_actifs() {
- return $this->infos_courtes(array('pa.actif='.sql_quote('oui'), 'pa.attente=' . sql_quote('non')));
+ return $this->infos_courtes(array('pa.actif=' . sql_quote('oui'), 'pa.attente=' . sql_quote('non')));
}
/**
@@ -170,6 +180,7 @@ class Decideur {
if (is_null($attente)) {
$attente = $this->infos_courtes('pa.attente=' . sql_quote('oui'));
}
+
return isset($attente['i'][$id]) ? $attente['i'][$id] : false;
}
@@ -183,10 +194,10 @@ class Decideur {
*/
function liste_plugins_procure() {
$procure = array();
- $get_infos = charger_fonction('get_infos','plugins');
- $infos['_DIR_RESTREINT'][''] = $get_infos('./',false,_DIR_RESTREINT);
+ $get_infos = charger_fonction('get_infos', 'plugins');
+ $infos['_DIR_RESTREINT'][''] = $get_infos('./', false, _DIR_RESTREINT);
- foreach($infos['_DIR_RESTREINT']['']['procure'] as $_procure) {
+ foreach ($infos['_DIR_RESTREINT']['']['procure'] as $_procure) {
$prefixe = strtoupper($_procure['nom']);
$procure[$prefixe] = $_procure['version'];
}
@@ -198,18 +209,18 @@ class Decideur {
* Écrit un log
*
* Écrit un log si la propriété $log l'autorise.
- *
+ *
* @param mixed $quoi
* La chose à logguer (souvent un texte)
- **/
+ **/
function log($quoi) {
if ($this->log) {
- spip_log($quoi,'decideur');
+ spip_log($quoi, 'decideur');
}
}
/**
- * Retourne le tableau de description d'un paquet (via son identifiant)
+ * Retourne le tableau de description d'un paquet (via son identifiant)
*
* @note
* Attention, retourne un tableau complexe.
@@ -219,13 +230,14 @@ class Decideur {
* @return array
* Index 'i' : plugins triés par identifiant en base [i][32] = tableau de description
* Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description
- **/
+ **/
function infos_courtes_id($id) {
// on cache ceux la
static $plug = array();
if (!isset($plug[$id])) {
$plug[$id] = $this->infos_courtes('pa.id_paquet=' . sql_quote($id));
}
+
return $plug[$id];
}
@@ -245,8 +257,8 @@ class Decideur {
* - dl = dépendances librairie
* - procure = prefixes procurés
* - maj = mise à jour
- *
- *
+ *
+ *
* On passe un where ($condition) et on crée deux tableaux, l'un des paquets
* triés par identifiant, l'autre par prefixe.
*
@@ -262,17 +274,18 @@ class Decideur {
*/
function infos_courtes($condition, $multiple = false) {
$plugs = array(
- 'i'=>array(),
- 'p'=>array()
+ 'i' => array(),
+ 'p' => array()
);
$from = array('spip_paquets AS pa', 'spip_plugins AS pl');
$orderby = $multiple ? 'pa.etatnum DESC' : '';
$where = array('pa.id_plugin = pl.id_plugin');
- if (is_array($condition))
+ if (is_array($condition)) {
$where = array_merge($where, $condition);
- else
+ } else {
$where[] = $condition;
+ }
include_spip('inc/filtres'); // extraire_multi()
$res = sql_allfetsel(array(
@@ -286,21 +299,24 @@ class Decideur {
'pa.procure',
'pa.id_depot',
'pa.maj_version AS maj',
- 'pa.actif AS a'), $from, $where, '', $orderby);
+ 'pa.actif AS a'
+ ), $from, $where, '', $orderby);
foreach ($res as $r) {
- $r['p'] = strtoupper( $r['p'] ); // on s'assure du prefixe en majuscule.
-
+ $r['p'] = strtoupper($r['p']); // on s'assure du prefixe en majuscule.
+
// savoir si un paquet est en local ou non...
$r['local'] = ($r['id_depot']) == 0 ? true : false;
unset($r['id_depot']);
-
+
$d = unserialize($r['dependances']);
// voir pour enregistrer en bdd simplement 'n' et 'u' (pas la peine d'encombrer)...
- $deps = array('necessite'=>array(array()), 'utilise'=>array(array()), 'librairie'=>array(array()));
- if (!$d) $d = $deps;
-
+ $deps = array('necessite' => array(array()), 'utilise' => array(array()), 'librairie' => array(array()));
+ if (!$d) {
+ $d = $deps;
+ }
+
unset($r['dependances']);
- if (!$r['procure'] OR !$proc = unserialize($r['procure'])){
+ if (!$r['procure'] OR !$proc = unserialize($r['procure'])) {
$proc = array();
}
$r['procure'] = $proc;
@@ -312,16 +328,16 @@ class Decideur {
$plugs['i'][$r['i']] = $r;
-
+
// pour chaque type de dependences... (necessite, utilise, librairie)
// on cree un tableau unique [$dependence] = array()
// au lieu de plusieurs tableaux par version de spip
// en ne mettant dans 0 que ce qui concerne notre spip local
- foreach($deps as $cle => $defaut) {
+ foreach ($deps as $cle => $defaut) {
if (!isset($d[$cle])) {
$d[$cle] = $defaut;
}
-
+
// gerer les dependences autres que dans 0 (communs ou local) !!!!
// il peut exister des cles info[dn]["[version_spip_min;version_spip_max]"] de dependences
if (!isset($d[$cle][0]) OR count($d[$cle]) > 1) {
@@ -337,7 +353,7 @@ class Decideur {
}
}
// passer les prefixes en majuscule
- foreach($d['necessite'][0] as $i=>$n) {
+ foreach ($d['necessite'][0] as $i => $n) {
$d['necessite'][0][$i]['nom'] = strtoupper($n['nom']);
}
$plugs['i'][$r['i']]['dn'] = $d['necessite'][0];
@@ -352,6 +368,7 @@ class Decideur {
}
}
+
return $plugs;
}
@@ -360,7 +377,7 @@ class Decideur {
* Ajoute une erreur sur un paquet
*
* Passe le flag OK à false : on ne pourra pas faire les actions demandées.
- *
+ *
* @param int $id
* Identifiant de paquet
* @param string $texte
@@ -400,23 +417,28 @@ class Decideur {
* tableau de description du paquet le plus récent sinon
*/
function chercher_plugin_recent($prefixe, $version) {
- $news = $this->infos_courtes(array('pl.prefixe=' . sql_quote($prefixe), 'pa.obsolete=' . sql_quote('non'), 'pa.id_depot > '.sql_quote(0)), true);
+ $news = $this->infos_courtes(array(
+ 'pl.prefixe=' . sql_quote($prefixe),
+ 'pa.obsolete=' . sql_quote('non'),
+ 'pa.id_depot > ' . sql_quote(0)
+ ), true);
$res = false;
if ($news and count($news['p'][$prefixe]) > 0) {
foreach ($news['p'][$prefixe] as $new) {
- if (spip_version_compare($new['v'],$version,'>')) {
- if (!$res or version_compare($new['v'],$res['v'],'>')) {
+ if (spip_version_compare($new['v'], $version, '>')) {
+ if (!$res or version_compare($new['v'], $res['v'], '>')) {
$res = $new;
}
}
}
}
+
return $res;
}
/**
* Vérifie qu'un plugin existe pour un préfixe et une version donnée
- *
+ *
* @param string $prefixe
* Préfixe du plugin
* @param string $version
@@ -433,12 +455,14 @@ class Decideur {
$locaux = $this->infos_courtes(array(
'pl.prefixe=' . sql_quote($prefixe),
'pa.obsolete=' . sql_quote('non'),
- 'pa.id_depot='.sql_quote(0)), true);
+ 'pa.id_depot=' . sql_quote(0)
+ ), true);
if ($locaux and isset($locaux['p'][$prefixe]) and count($locaux['p'][$prefixe]) > 0) {
foreach ($locaux['p'][$prefixe] as $new) {
if (plugin_version_compatible($version, $new['v'])
- and svp_verifier_compatibilite_spip($new['compatibilite_spip'])
- and ($new['v'] > $v)){
+ and svp_verifier_compatibilite_spip($new['compatibilite_spip'])
+ and ($new['v'] > $v)
+ ) {
$plugin = $new;
$v = $new['v'];
}
@@ -448,15 +472,16 @@ class Decideur {
// qu'on ait trouve ou non, on verifie si un plugin local ne procure pas le prefixe
// dans une version plus recente
$locaux_procure = $this->infos_courtes(array(
- 'pa.procure LIKE ' . sql_quote('%'.$prefixe.'%'),
+ 'pa.procure LIKE ' . sql_quote('%' . $prefixe . '%'),
'pa.obsolete=' . sql_quote('non'),
- 'pa.id_depot='.sql_quote(0)), true);
+ 'pa.id_depot=' . sql_quote(0)
+ ), true);
foreach ($locaux_procure['i'] as $new) {
if (isset($new['procure'][$prefixe])
AND plugin_version_compatible($version, $new['procure'][$prefixe])
AND svp_verifier_compatibilite_spip($new['compatibilite_spip'])
- AND spip_version_compare($new['procure'][$prefixe], $v, ">"))
- {
+ AND spip_version_compare($new['procure'][$prefixe], $v, ">")
+ ) {
$plugin = $new;
$v = $new['v'];
}
@@ -467,12 +492,14 @@ class Decideur {
$distants = $this->infos_courtes(array(
'pl.prefixe=' . sql_quote($prefixe),
'pa.obsolete=' . sql_quote('non'),
- 'pa.id_depot>'.sql_quote(0)), true);
+ 'pa.id_depot>' . sql_quote(0)
+ ), true);
if ($distants and isset($distants['p'][$prefixe]) and count($distants['p'][$prefixe]) > 0) {
foreach ($distants['p'][$prefixe] as $new) {
if (plugin_version_compatible($version, $new['v'])
- and svp_verifier_compatibilite_spip($new['compatibilite_spip'])
- and ($new['v'] > $v)){
+ and svp_verifier_compatibilite_spip($new['compatibilite_spip'])
+ and ($new['v'] > $v)
+ ) {
$plugin = $new;
$v = $new['v'];
}
@@ -489,7 +516,7 @@ class Decideur {
*
* @param array $info
* Description du paquet
- **/
+ **/
function add($info) {
$this->end['i'][$info['i']] = $info;
$this->end['p'][$info['p']] = &$this->end['i'][$info['i']];
@@ -502,7 +529,7 @@ class Decideur {
* Description du paquet
* @param bool $recur
* Passer à off les plugins qui en dépendent, de façon récursive ?
- **/
+ **/
function off($info, $recur = false) {
$this->log('- stopper ' . $info['p']);
$this->remove($info);
@@ -531,7 +558,7 @@ class Decideur {
* Prefixe du paquet
* @return bool
* Le paquet sera t'il off ?
- **/
+ **/
function sera_off($prefixe) {
return isset($this->off[$prefixe]) ? $this->off[$prefixe] : false;
}
@@ -543,13 +570,14 @@ class Decideur {
* Identifiant du paquet
* @return bool
* Le paquet sera t'il off ?
- **/
+ **/
function sera_off_id($id) {
foreach ($this->off as $info) {
if ($info['i'] == $id) {
return $info;
}
}
+
return false;
}
@@ -561,7 +589,7 @@ class Decideur {
* Préfixe du paquet
* @return bool
* Le paquet sera t'il actif ?
- **/
+ **/
function sera_actif($prefixe) {
if (isset($this->end['p'][$prefixe])) {
return $this->end['p'][$prefixe];
@@ -569,14 +597,15 @@ class Decideur {
// sinon regarder les procure
$v = "0.0.0";
$plugin = false;
- foreach($this->end['p'] as $prefixe => $end){
+ foreach ($this->end['p'] as $prefixe => $end) {
if (isset($end['procure'][$prefixe])
- AND spip_version_compare($end['procure'][$prefixe], $v, ">"))
- {
+ AND spip_version_compare($end['procure'][$prefixe], $v, ">")
+ ) {
$v = $end['procure'][$prefixe];
$plugin = $this->end['p'][$prefixe];
}
}
+
return $plugin;
}
@@ -587,7 +616,7 @@ class Decideur {
* Identifiant du paquet
* @return bool
* Le paquet sera t'il actif ?
- **/
+ **/
function sera_actif_id($id) {
return isset($this->end['i'][$id]) ? $this->end['i'][$id] : false;
}
@@ -596,7 +625,7 @@ class Decideur {
* Ajouter une action/paquet à la liste des demandées
*
* L'ajoute aussi à la liste de toutes les actions !
- *
+ *
* @param array $info
* Description du paquet concerné
* @param string $quoi
@@ -613,7 +642,7 @@ class Decideur {
* par rapport à la demande initiale
*
* L'ajoute aussi à la liste de toutes les actions !
- *
+ *
* @param array $info
* Description du paquet concerné
* @param string $quoi
@@ -628,7 +657,7 @@ class Decideur {
/**
* Annule une action (automatique) qui finalement était réellement demandée.
- *
+ *
* Par exemple, une mise à 'off' de paquet entraîne d'autres mises Ã
* 'off' des paquets qui en dépendent. Si une action sur un des paquets
* dépendants était aussi demandée, il faut annuler l'action automatique.
@@ -699,7 +728,7 @@ class Decideur {
* Prefixe du paquet
* @return bool
* Le paquet est t'il invalide ?
- **/
+ **/
function sera_invalide($p) {
return isset($this->invalides[$p]) ? $this->invalides[$p] : false;
}
@@ -711,13 +740,14 @@ class Decideur {
* Nom de la librairie
* @return bool
* La librairie est-elle présente ?
- **/
+ **/
function est_presente_lib($lib) {
static $libs = false;
if ($libs === false) {
include_spip('inc/svp_outiller');
$libs = svp_lister_librairies();
}
+
return isset($libs[$lib]) ? $libs[$lib] : false;
}
@@ -760,7 +790,7 @@ class Decideur {
if (!$this->sera_actif_id($id)) {
$i = $this->infos_courtes_id($id);
if ($i = $i['i'][$id]) {
- $this->log("--> $t : " . $i['p'] . ' en version : ' . $i['v'] );
+ $this->log("--> $t : " . $i['p'] . ' en version : ' . $i['v']);
// se mefier : on peut tenter d'activer
// un plugin de meme prefixe qu'un autre deja actif
@@ -769,25 +799,25 @@ class Decideur {
// dans ce cas, on desactive l'ancien (sans desactiver les dependences)
// et on active le nouveau.
// Si une dependance ne suit pas, une erreur se produira du coup.
- if (isset($this->end['p'][ $i['p'] ])) {
- $old = $this->end['p'][ $i['p'] ];
- $this->log("-->> off : " . $old['p'] . ' en version : ' . $old['v'] );
+ if (isset($this->end['p'][$i['p']])) {
+ $old = $this->end['p'][$i['p']];
+ $this->log("-->> off : " . $old['p'] . ' en version : ' . $old['v']);
$this->ask($old, 'off');
$this->todo($old, 'off');
// désactive l'ancien plugin, mais pas les dépendances qui en dépendent
// car normalement, ça devrait suivre...
- $this->off($old, false);
+ $this->off($old, false);
}
-
+
// pas de prefixe equivalent actif...
$this->add($i);
- $this->ask($i, $i['local'] ? 'on' : 'geton' );
-
+ $this->ask($i, $i['local'] ? 'on' : 'geton');
+
} else {
// la c'est vraiment pas normal... Erreur plugin inexistant...
// concurrence entre administrateurs ?
- $this->erreur($id, _T('svp:message_nok_plugin_inexistant',array('plugin' => $id)));
+ $this->erreur($id, _T('svp:message_nok_plugin_inexistant', array('plugin' => $id)));
}
}
break;
@@ -797,11 +827,11 @@ class Decideur {
// ajouter ce plugin dans la liste et retirer l'ancien
$i = $this->infos_courtes_id($id);
if ($i = $i['i'][$id]) {
- $this->log("--> $t : " . $i['p'] . ' en version : ' . $i['v'] );
+ $this->log("--> $t : " . $i['p'] . ' en version : ' . $i['v']);
// new : plugin a installer
if ($new = $this->chercher_plugin_recent($i['p'], $i['v'])) {
- $this->log("--> maj : " . $new['p'] . ' en version : ' . $new['v'] );
+ $this->log("--> maj : " . $new['p'] . ' en version : ' . $new['v']);
// ajouter seulement si on l'active !
// ou si le plugin est actuellement actif
if ($t == 'upon' or $this->sera_actif_id($id)) {
@@ -812,13 +842,13 @@ class Decideur {
} else {
if ($this->erreur_sur_maj_introuvable) {
// on n'a pas trouve la nouveaute !!!
- $this->erreur($id, _T('svp:message_nok_maj_introuvable',array('plugin' => $i['n'],'id'=>$id)));
+ $this->erreur($id, _T('svp:message_nok_maj_introuvable', array('plugin' => $i['n'], 'id' => $id)));
}
}
} else {
// mauvais identifiant ?
// on n'a pas trouve le plugin !!!
- $this->erreur($id, _T('svp:message_erreur_maj_inconnu',array('id'=>$id)));
+ $this->erreur($id, _T('svp:message_erreur_maj_inconnu', array('id' => $id)));
}
break;
case 'off':
@@ -826,17 +856,18 @@ class Decideur {
// retirer ce plugin
// (il l'est peut etre deja)
if ($info = $this->sera_actif_id($id)
- or $info_off = $this->sera_off_id($id)
- // un plugin en attente (desactive parce que sa dependance a disparu certainement par ftp)
- // peut etre desactive
- or $info = $this->est_attente_id($id)) {
+ or $info_off = $this->sera_off_id($id)
+ // un plugin en attente (desactive parce que sa dependance a disparu certainement par ftp)
+ // peut etre desactive
+ or $info = $this->est_attente_id($id)
+ ) {
// annuler le signalement en "proposition" (due a une mise a 'off' recursive)
// de cet arret de plugin, vu qu'on le demande reellement
if (!$info) {
$info = $info_off;
$this->annule_change($info);
}
- $this->log("--> $t : " . $info['p'] . ' en version : ' . denormaliser_version($info['v']) );
+ $this->log("--> $t : " . $info['p'] . ' en version : ' . denormaliser_version($info['v']));
$this->ask($info, $t);
$this->todo($info, $t);
// désactive tous les plugins qui en dépendent aussi.
@@ -852,16 +883,17 @@ class Decideur {
case 'get':
case 'kill':
if ($info = $this->infos_courtes_id($id)) {
- $this->log("--> $t : " . $info['i'][$id]['p'] . ' en version : ' . $info['i'][$id]['v'] );
+ $this->log("--> $t : " . $info['i'][$id]['p'] . ' en version : ' . $info['i'][$id]['v']);
$this->ask($info['i'][$id], $t);
} else {
// pas normal... plugin inconnu... concurrence entre administrateurs ?
- $this->erreur($id, _T('svp:message_erreur_plugin_introuvable',array('plugin'=>$id,'action'=>$t)));
+ $this->erreur($id, _T('svp:message_erreur_plugin_introuvable', array('plugin' => $id, 'action' => $t)));
}
break;
}
}
}
+
return $this->ok;
}
@@ -907,6 +939,7 @@ class Decideur {
if (!$this->actionner($todo)) {
$this->log("! Todo en echec !");
$this->log($this->err);
+
return false;
}
@@ -931,6 +964,7 @@ class Decideur {
$this->log("Fin !");
$this->log("Ok: " . $this->ok);
+
# $this->log($this->todo);
return $this->ok;
@@ -945,14 +979,14 @@ class Decideur {
*
* Lorsqu'une dépendance est activée, on entre en récursion
* dans cette fonction avec la description de la dépendance
- *
+ *
* @param array $info
* Description du paquet
* @param int $prof
* Profondeur de récursion
* @return bool
* false si erreur (dépendance non résolue, incompatibilité...), true sinon
- **/
+ **/
function verifier_dependances_plugin($info, $prof = 0) {
$this->log("- [$prof] verifier dependances " . $info['p']);
$id = $info['i'];
@@ -965,7 +999,8 @@ class Decideur {
// mais normalement, on ne devrait vraiment pas pouvoir tomber sur ce cas
if (!svp_verifier_compatibilite_spip($info['compatibilite_spip'])) {
$this->invalider($info);
- $this->erreur($id, _T('svp:message_incompatibilite_spip',array('plugin'=>$info['n'])));
+ $this->erreur($id, _T('svp:message_incompatibilite_spip', array('plugin' => $info['n'])));
+
return false;
}
@@ -976,14 +1011,15 @@ class Decideur {
foreach ($info['dl'] as $l) {
// $l = array('nom' => 'x', 'lien' => 'url')
$lib = $l['nom'];
- $this->log("## Necessite la librairie : " . $lib );
+ $this->log("## Necessite la librairie : " . $lib);
// on verifie sa presence OU le fait qu'on pourra la telecharger
if ($lib and !$this->est_presente_lib($lib)) {
// peut on ecrire ?
if (!is_writable(_DIR_LIB)) {
$this->invalider($info);
- $this->erreur($id, _T('svp:message_erreur_ecriture_lib', array('plugin'=>$info['n'], 'lib_url'=>$l['lien'], 'lib'=>$lib)));
+ $this->erreur($id, _T('svp:message_erreur_ecriture_lib',
+ array('plugin' => $info['n'], 'lib_url' => $l['lien'], 'lib' => $lib)));
$err = true;
}
// ajout, pour info
@@ -1016,31 +1052,28 @@ class Decideur {
if ($p == 'SPIP') {
// c'est pas la que ça se fait !
// ca ne devrait plus apparaitre comme dependence a un plugin.
- }
-
- // le core procure le paquet que l'on demande !
+ } // le core procure le paquet que l'on demande !
elseif ((array_key_exists($p, $this->procure))
- and (plugin_version_compatible($v, $this->procure[$p], 'spip'))) {
+ and (plugin_version_compatible($v, $this->procure[$p], 'spip'))
+ ) {
// rien a faire...
$this->log("-- est procure par le core ($p)");
- }
-
- // pas d'autre alternative qu'un vrai paquet a activer
+ } // pas d'autre alternative qu'un vrai paquet a activer
else {
$this->log("-- verifier : $p");
// nous sommes face a une dependance de plugin
// on regarde s'il est present et a la bonne version
// sinon on le cherche et on l'ajoute
if ($ninfo = $this->sera_actif($p)
- and !$err = $this->en_erreur($ninfo['i'])
- and plugin_version_compatible($v, $ninfo['v'])) {
+ and !$err = $this->en_erreur($ninfo['i'])
+ and plugin_version_compatible($v, $ninfo['v'])
+ ) {
// il est deja actif ou a activer, et tout est ok
- $this->log('-- dep OK pour '.$info['p'].' : '.$p);
- }
- // il faut le trouver et demander a l'activer
+ $this->log('-- dep OK pour ' . $info['p'] . ' : ' . $p);
+ } // il faut le trouver et demander a l'activer
else {
-
+
// absent ou erreur ou pas compatible
$etat = $err ? 'erreur' : ($ninfo ? 'conflit' : 'absent');
// conflit signifie qu'il existe le prefixe actif, mais pas a la version demandee
@@ -1053,8 +1086,9 @@ class Decideur {
// on choisit par defaut le meilleur etat de plugin.
// de preference dans les plugins locaux, sinon en distant.
if (!$this->sera_off($p)
- and $new = $this->chercher_plugin_compatible($p, $v)
- and $this->verifier_dependances_plugin($new, ++$prof)) {
+ and $new = $this->chercher_plugin_compatible($p, $v)
+ and $this->verifier_dependances_plugin($new, ++$prof)
+ ) {
// si le plugin existe localement et possede maj_version,
// c'est que c'est peut etre une mise a jour + activation a faire
// si le plugin
@@ -1064,9 +1098,9 @@ class Decideur {
$i = array();
if (!$new['local']) {
$i = $this->infos_courtes(array(
- 'pl.prefixe=' . sql_quote($new['p']),
- 'pa.maj_version=' . sql_quote($new['v'])
- ), true);
+ 'pl.prefixe=' . sql_quote($new['p']),
+ 'pa.maj_version=' . sql_quote($new['v'])
+ ), true);
}
if ($i and isset($i['p'][$new['p']]) and count($i['p'][$new['p']])) {
// c'est une mise a jour
@@ -1087,7 +1121,11 @@ class Decideur {
$this->log("-- !erreur : $p");
// on ne trouve pas la dependance !
$this->invalider($info);
- $this->erreur($id, $v ? _T('svp:message_dependance_plugin_version', array('plugin'=>$info['n'], 'dependance'=>$p, 'version'=>$v)) : _T('svp:message_dependance_plugin',array('plugin'=>$info['n'],'dependance'=>$p)));
+ $this->erreur($id, $v ? _T('svp:message_dependance_plugin_version', array(
+ 'plugin' => $info['n'],
+ 'dependance' => $p,
+ 'version' => $v
+ )) : _T('svp:message_dependance_plugin', array('plugin' => $info['n'], 'dependance' => $p)));
}
unset($new, $vieux);
break;
@@ -1102,24 +1140,29 @@ class Decideur {
case 'conflit':
$this->log(" conflit -> demande $v, present : " . $ninfo['v']);
if (!$this->sera_off($p)
- and $new = $this->chercher_plugin_compatible($p, $v)
- and $this->verifier_dependances_plugin($new, ++$prof)) {
+ and $new = $this->chercher_plugin_compatible($p, $v)
+ and $this->verifier_dependances_plugin($new, ++$prof)
+ ) {
// on connait le nouveau...
$cache[] = $new;
$this->remove($ninfo);
$this->add($new);
- $this->change($ninfo,'up');
+ $this->change($ninfo, 'up');
$this->log("-- update : $p");
} else {
$this->log("-- !erreur : $p");
// on ne trouve pas la dependance !
$this->invalider($info);
- $this->erreur($id, $v ? _T('svp:message_dependance_plugin_version', array('plugin'=>$info['n'], 'dependance'=>$p, 'version'=>$v)) : _T('svp:message_dependance_plugin',array('plugin'=>$info['n'],'dependance'=>$p)));
+ $this->erreur($id, $v ? _T('svp:message_dependance_plugin_version', array(
+ 'plugin' => $info['n'],
+ 'dependance' => $p,
+ 'version' => $v
+ )) : _T('svp:message_dependance_plugin', array('plugin' => $info['n'], 'dependance' => $p)));
}
break;
}
- }
+ }
}
if ($this->sera_invalide($info['p'])) {
@@ -1135,42 +1178,45 @@ class Decideur {
foreach ($cache as $i) {
$this->invalider($i);
}
+
return false;
}
}
+
return true;
}
/**
- * Retourne un tableau des différentes actions qui seront faites
+ * Retourne un tableau des différentes actions qui seront faites
*
* @param string $quoi
* Type de demande
* - ask : les actions demandées
* - changes : les actions en plus par rapport à ce qui était demandé
- * - todo : toutes les actions
+ * - todo : toutes les actions
* @return array
* Liste des actions (joliement traduites et expliquées)
- **/
+ **/
function presenter_actions($quoi) {
$res = array();
- foreach ($this->$quoi as $id=>$info) {
+ foreach ($this->$quoi as $id => $info) {
$trads = array(
- 'plugin' => $info['n'],
+ 'plugin' => $info['n'],
'version' => denormaliser_version($info['v']),
);
if (isset($info['maj'])) {
$trads['version_maj'] = denormaliser_version($info['maj']);
}
- $res[] = _T('svp:message_action_'.$info['todo'], $trads);
+ $res[] = _T('svp:message_action_' . $info['todo'], $trads);
}
+
return $res;
}
}
/**
- * Gère la partie vérifier des formulaires utilisant le Décideur
+ * Gère la partie vérifier des formulaires utilisant le Décideur
*
* @param array $a_actionner
* Tableau des actions par paquet (id_paquet => action)
@@ -1178,7 +1224,7 @@ class Decideur {
* Tableau d'erreurs de verifier (CVT)
* @return bool
* true si tout va bien, false sinon (erreur pour trouver les dépendances, ...)
-**/
+ **/
function svp_decider_verifier_actions_demandees($a_actionner, &$erreurs) {
$decideur = new Decideur;
$decideur->erreur_sur_maj_introuvable = false;
@@ -1186,19 +1232,20 @@ function svp_decider_verifier_actions_demandees($a_actionner, &$erreurs) {
if (!$decideur->ok) {
$erreurs['decideur_erreurs'] = array();
- foreach ($decideur->err as $id=>$errs) {
- foreach($errs as $err) {
+ foreach ($decideur->err as $id => $errs) {
+ foreach ($errs as $err) {
$erreurs['decideur_erreurs'][] = $err;
}
}
+
return false;
}
// On construit la liste des libellés d'actions
$actions = array();
$actions['decideur_propositions'] = $decideur->presenter_actions('changes');
- $actions['decideur_demandes'] = $decideur->presenter_actions('ask');
- $actions['decideur_actions'] = $decideur->presenter_actions('todo');
+ $actions['decideur_demandes'] = $decideur->presenter_actions('ask');
+ $actions['decideur_actions'] = $decideur->presenter_actions('todo');
set_request('_libelles_actions', $actions);
// On construit la liste des actions pour la passer au formulaire en hidden
@@ -1207,6 +1254,8 @@ function svp_decider_verifier_actions_demandees($a_actionner, &$erreurs) {
$todo[$_todo['i']] = $_todo['todo'];
}
set_request('_todo', serialize($todo));
+
return true;
}
+
?>
diff --git a/inc/svp_depoter_distant.php b/inc/svp_depoter_distant.php
index 88b285e..bf6d409 100644
--- a/inc/svp_depoter_distant.php
+++ b/inc/svp_depoter_distant.php
@@ -8,13 +8,15 @@
* régulièrement pour actualiser nos informations. Effectivement, chaque
* paquet (et plugin) décrit est inséré en base de données pour nous
* faciliter les recherches.
- *
+ *
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Depots
*/
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
+
+if (!defined("_ECRIRE_INC_VERSION")) {
+ return;
+}
include_spip('inc/plugin');
include_spip('inc/svp_phraser');
@@ -24,7 +26,7 @@ include_spip('inc/svp_phraser');
*
* Si une erreur survient (syntaxe XML incorrecte, pas de plugin dans le dépot),
* son texte est placé dans le paramètre $erreur
- *
+ *
* @uses svp_phraser_depot()
* @uses svp_actualiser_paquets()
* @uses svp_base_supprimer_paquets_locaux()
@@ -47,6 +49,7 @@ function svp_ajouter_depot($url, &$erreur = '') {
$fichier_xml = copie_locale($url, 'modif');
if (!$fichier_xml) {
$erreur = _T('svp:message_nok_xml_non_recupere', array('fichier' => $url));
+
return false;
}
@@ -56,31 +59,35 @@ function svp_ajouter_depot($url, &$erreur = '') {
$infos = svp_phraser_depot($fichier_xml);
if (!$infos) {
$erreur = _T('svp:message_nok_xml_non_conforme', array('fichier' => $url));
+
return false;
}
$titre = filtrer_entites($infos['depot']['titre']);
- $champs = array('titre' => $titre,
- 'descriptif' => filtrer_entites($infos['depot']['descriptif']),
- 'type' => $infos['depot']['type'],
- 'url_serveur' => $infos['depot']['url_serveur'],
- 'url_brouteur' => $infos['depot']['url_brouteur'],
- 'url_archives' => $infos['depot']['url_archives'],
- 'url_commits' => $infos['depot']['url_commits'],
- 'xml_paquets'=> $url,
- 'sha_paquets'=> sha1_file($fichier_xml),
- 'nbr_paquets' => 0,
- 'nbr_plugins' => 0,
- 'nbr_autres' => 0);
+ $champs = array(
+ 'titre' => $titre,
+ 'descriptif' => filtrer_entites($infos['depot']['descriptif']),
+ 'type' => $infos['depot']['type'],
+ 'url_serveur' => $infos['depot']['url_serveur'],
+ 'url_brouteur' => $infos['depot']['url_brouteur'],
+ 'url_archives' => $infos['depot']['url_archives'],
+ 'url_commits' => $infos['depot']['url_commits'],
+ 'xml_paquets' => $url,
+ 'sha_paquets' => sha1_file($fichier_xml),
+ 'nbr_paquets' => 0,
+ 'nbr_plugins' => 0,
+ 'nbr_autres' => 0
+ );
// verifier avant l'insertion que le depot n'existe pas deja
// car la recuperation pouvant etre longue on risque le probleme en cas de concurrence
- if (sql_countsel('spip_depots','xml_paquets='.sql_quote($url))){
+ if (sql_countsel('spip_depots', 'xml_paquets=' . sql_quote($url))) {
$erreur = _T('svp:message_nok_depot_deja_ajoute', array('url' => $url));
+
return false;
- }
- elseif (!$id_depot = sql_insertq('spip_depots', $champs)) {
+ } elseif (!$id_depot = sql_insertq('spip_depots', $champs)) {
$erreur = _T('svp:message_nok_sql_insert_depot', array('objet' => "$titre ($url)"));
+
return false;
}
@@ -88,24 +95,26 @@ function svp_ajouter_depot($url, &$erreur = '') {
$ok = svp_actualiser_paquets($id_depot, $infos['paquets'], $nb_paquets, $nb_plugins, $nb_autres);
if (!$ok OR ($nb_paquets == 0)) {
// Si une erreur s'est produite, on supprime le depot deja insere
- sql_delete('spip_depots','id_depot='.sql_quote($id_depot));
- if (!$ok)
+ sql_delete('spip_depots', 'id_depot=' . sql_quote($id_depot));
+ if (!$ok) {
$erreur = _T('svp:message_nok_xml_non_conforme', array('fichier' => $url));
- else
+ } else {
$erreur = _T('svp:message_nok_aucun_paquet_ajoute', array('url' => $url));
+ }
+
return false;
}
// On met à jour le nombre de paquets et de plugins du depot maintenant !
sql_updateq('spip_depots',
- array('nbr_paquets'=> $nb_paquets, 'nbr_plugins'=> $nb_plugins, 'nbr_autres'=> $nb_autres),
- 'id_depot=' . sql_quote($id_depot));
+ array('nbr_paquets' => $nb_paquets, 'nbr_plugins' => $nb_plugins, 'nbr_autres' => $nb_autres),
+ 'id_depot=' . sql_quote($id_depot));
// On vide les paquets locaux pour mettre a jour leurs donnees relatives au depot
// comme les mises a jour disponibles
include_spip('inc/svp_depoter_local');
svp_actualiser_paquets_locaux(true);
-
+
return true;
}
@@ -114,45 +123,48 @@ function svp_ajouter_depot($url, &$erreur = '') {
*
* Cette suppression entraîne des recalcul comme les versions maximales
* des plugins téléchargeables qui peuvent changer.
- *
+ *
* @uses svp_actualiser_url_plugins()
* @uses svp_nettoyer_apres_suppression()
* @uses svp_base_supprimer_paquets_locaux()
- *
+ *
* @param int $id
* Identifiant du dépot
* @return bool
* false si le dépot n'est pas trouvé, true sinon
*/
-function svp_supprimer_depot($id){
+function svp_supprimer_depot($id) {
$id = intval($id);
// Pas de depot a cet id ?
- if (!$id_depot = sql_getfetsel('id_depot', 'spip_depots', 'id_depot='. sql_quote($id)) ){
+ if (!$id_depot = sql_getfetsel('id_depot', 'spip_depots', 'id_depot=' . sql_quote($id))) {
return false;
}
// on calcule les versions max des plugins heberges par le depot
- $vmax =array();
+ $vmax = array();
- if ($resultats = sql_allfetsel('id_plugin, version', 'spip_paquets', 'id_depot='. sql_quote($id))) {
+ if ($resultats = sql_allfetsel('id_plugin, version', 'spip_paquets', 'id_depot=' . sql_quote($id))) {
foreach ($resultats as $paquet) {
$id_plugin = $paquet['id_plugin'];
if (!isset($vmax[$id_plugin])
- OR (spip_version_compare($vmax[$id_plugin], $paquet['version'], '<')))
+ OR (spip_version_compare($vmax[$id_plugin], $paquet['version'], '<'))
+ ) {
$vmax[$id_plugin] = $paquet['version'];
+ }
}
}
// On supprime les paquets heberges par le depot
- sql_delete('spip_paquets','id_depot='.sql_quote($id_depot));
+ sql_delete('spip_paquets', 'id_depot=' . sql_quote($id_depot));
// Si on est pas en mode runtime, on utilise surement l'espace public pour afficher les plugins.
// Il faut donc verifier que les urls suivent bien la mise à jour
// Donc avant de nettoyer la base des plugins du depot ayant disparus on supprime toutes les urls
// associees a ce depot : on les recreera apres le nettoyage
- if (!_SVP_MODE_RUNTIME)
+ if (!_SVP_MODE_RUNTIME) {
svp_actualiser_url_plugins($id_depot);
+ }
// Nettoyer les autres relations à ce dépot
svp_nettoyer_apres_suppression($id_depot, $vmax);
@@ -161,11 +173,12 @@ function svp_supprimer_depot($id){
// Il faut donc s'assurer que les urls suivent bien la mise à jour
// - on supprime toutes les urls plugin
// - on les regenere pour la liste des plugins mise a jour
- if (!_SVP_MODE_RUNTIME)
+ if (!_SVP_MODE_RUNTIME) {
svp_actualiser_url_plugins($id_depot);
+ }
// On supprime le depot lui-meme
- sql_delete('spip_depots','id_depot='.sql_quote($id_depot));
+ sql_delete('spip_depots', 'id_depot=' . sql_quote($id_depot));
// on supprime les paquets locaux pour reactualisation
include_spip('inc/svp_depoter_local');
@@ -176,13 +189,13 @@ function svp_supprimer_depot($id){
/**
- * Nettoyer la base de données après la suppression d'un dépot
+ * Nettoyer la base de données après la suppression d'un dépot
*
* Supprime
* - les liens des plugins avec le dépot (table spip_depots_plugins)
* - les plugins dont aucun paquet n'est encore hébergé par un dépot restant (table spip_plugins)
* Remet à zéro la version maximale des plugins ayant vu leur paquet en version maximale supprimée
- *
+ *
* @param int $id_depot
* Identifiant du dépot
* @param array $vmax
@@ -190,16 +203,16 @@ function svp_supprimer_depot($id){
* Tableau (id_plugin => version maximale)
* @return bool
* true toujours.
-**/
+ **/
function svp_nettoyer_apres_suppression($id_depot, $vmax) {
// On rapatrie la liste des plugins du depot qui servira apres qu'on ait supprime les liens
// de la table spip_depots_plugins
- $liens = sql_allfetsel('id_plugin', 'spip_depots_plugins', 'id_depot='.sql_quote($id_depot));
+ $liens = sql_allfetsel('id_plugin', 'spip_depots_plugins', 'id_depot=' . sql_quote($id_depot));
$plugins_depot = array_map('reset', $liens);
// On peut donc supprimer tous ces liens *plugins-depots* du depot
- sql_delete('spip_depots_plugins', 'id_depot='.sql_quote($id_depot));
+ sql_delete('spip_depots_plugins', 'id_depot=' . sql_quote($id_depot));
// On verifie pour chaque plugin concerne par la disparition de paquets si c'est la version
// la plus elevee qui a ete supprimee.
@@ -207,23 +220,24 @@ function svp_nettoyer_apres_suppression($id_depot, $vmax) {
// a la prochaine actualisation.
// Cette operation est necessaire car on n'impose pas que les informations du plugin soient identiques
// pour chaque paquet !!!
-
+
// On insere, en encapsulant pour sqlite...
if (sql_preferer_transaction()) {
sql_demarrer_transaction();
}
-
+
if ($resultats = sql_allfetsel('id_plugin, vmax', 'spip_plugins', sql_in('id_plugin', $plugins_depot))) {
foreach ($resultats as $plugin) {
- if (spip_version_compare($plugin['vmax'], $vmax[$plugin['id_plugin']], '='))
- sql_updateq('spip_plugins', array('vmax' => ''), 'id_plugin=' . sql_quote($plugin['id_plugin']));
+ if (spip_version_compare($plugin['vmax'], $vmax[$plugin['id_plugin']], '=')) {
+ sql_updateq('spip_plugins', array('vmax' => ''), 'id_plugin=' . sql_quote($plugin['id_plugin']));
+ }
}
}
if (sql_preferer_transaction()) {
sql_terminer_transaction();
}
-
+
// Maintenant on calcule la liste des plugins du depot qui ne sont pas heberges
// par un autre depot => donc a supprimer
// - Liste de tous les plugins encore lies a un autre depot
@@ -235,8 +249,8 @@ function svp_nettoyer_apres_suppression($id_depot, $vmax) {
$plugins_a_supprimer = array_diff($plugins_depot, $plugins_restants);
// On supprimer les plugins identifies
- sql_delete('spip_plugins', sql_in('id_plugin', $plugins_a_supprimer));
-
+ sql_delete('spip_plugins', sql_in('id_plugin', $plugins_a_supprimer));
+
return true;
}
@@ -246,7 +260,7 @@ function svp_nettoyer_apres_suppression($id_depot, $vmax) {
*
* Actualise les informations uniquement si la signature du fichier
* XML de description du dépot a changé
- *
+ *
* @uses svp_actualiser_maj_version()
* @uses svp_actualiser_paquets()
* @uses svp_phraser_depot()
@@ -255,16 +269,16 @@ function svp_nettoyer_apres_suppression($id_depot, $vmax) {
* @return bool
* false si erreur, true sinon
*/
-function svp_actualiser_depot($id){
+function svp_actualiser_depot($id) {
include_spip('inc/distant');
$id = intval($id);
-
+
// pas de depot a cet id ?
- if (!$depot = sql_fetsel('*', 'spip_depots', 'id_depot='. sql_quote($id)) ){
+ if (!$depot = sql_fetsel('*', 'spip_depots', 'id_depot=' . sql_quote($id))) {
return false;
}
-
+
$fichier_xml = _DIR_RACINE . copie_locale($depot['xml_paquets'], 'modif');
$sha = sha1_file($fichier_xml);
@@ -272,21 +286,22 @@ function svp_actualiser_depot($id){
if ($depot['sha_paquets'] == $sha) {
// Le fichier n'a pas change (meme sha1) alors on ne fait qu'actualiser la date
// de mise a jour du depot en mettant a jour *inutilement* le sha1
- spip_log('Aucune modification du fichier XML, actualisation non declenchee - id_depot = ' . $depot['id_depot'], 'svp_actions.' . _LOG_INFO);
+ spip_log('Aucune modification du fichier XML, actualisation non declenchee - id_depot = ' . $depot['id_depot'],
+ 'svp_actions.' . _LOG_INFO);
sql_replace('spip_depots', array_diff_key($depot, array('maj' => '')));
- }
- else {
+ } else {
// Le fichier a bien change il faut actualiser tout le depot
$infos = svp_phraser_depot($fichier_xml);
- if (!$infos)
+ if (!$infos) {
return false;
+ }
// On actualise les paquets dans spip_paquets en premier lieu.
// Lors de la mise a jour des paquets, les plugins aussi sont actualises
$ok = svp_actualiser_paquets($depot['id_depot'], $infos['paquets'],
- $nb_paquets, $nb_plugins, $nb_autres);
+ $nb_paquets, $nb_plugins, $nb_autres);
// apres la mise a jour des paquets d'un depot, on actualise les informations des paquets locaux
// principalement l'info "maj_version" indiquant s'il existe un paquet plus recent
@@ -299,14 +314,16 @@ function svp_actualiser_depot($id){
// d'un depot et extraites du xml
// -- le nombre de paquets et de plugins du depot ainsi que le nouveau sha1
// ce qui aura pour effet d'actualiser la date de mise a jour
- $champs = array('url_serveur' => $infos['depot']['url_serveur'],
- 'url_brouteur' => $infos['depot']['url_brouteur'],
- 'url_archives' => $infos['depot']['url_archives'],
- 'url_commits' => $infos['depot']['url_commits'],
- 'nbr_paquets' => $nb_paquets,
- 'nbr_plugins' => $nb_plugins,
- 'nbr_autres' => $nb_autres,
- 'sha_paquets' => $sha);
+ $champs = array(
+ 'url_serveur' => $infos['depot']['url_serveur'],
+ 'url_brouteur' => $infos['depot']['url_brouteur'],
+ 'url_archives' => $infos['depot']['url_archives'],
+ 'url_commits' => $infos['depot']['url_commits'],
+ 'nbr_paquets' => $nb_paquets,
+ 'nbr_plugins' => $nb_plugins,
+ 'nbr_autres' => $nb_autres,
+ 'sha_paquets' => $sha
+ );
sql_updateq('spip_depots', $champs, 'id_depot=' . sql_quote($depot['id_depot']));
}
}
@@ -320,7 +337,7 @@ function svp_actualiser_depot($id){
*
* Enlève de la base les paquets du dépots qui ne sont plus présents
* dans la description du XML. Ajoute ou met à jour les autres.
- *
+ *
* @uses svp_supprimer_plugins_orphelins()
* @uses svp_corriger_vmax_plugins()
* @uses svp_completer_plugins()
@@ -328,7 +345,7 @@ function svp_actualiser_depot($id){
* @uses svp_inserer_multi()
* @uses svp_completer_plugins_depot()
* @uses svp_actualiser_url_plugins()
- *
+ *
* @param int $id_depot
* Identifiant du dépot
* @param array $paquets
@@ -354,8 +371,9 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
$nb_autres = 0;
// Si aucun depot ou aucun paquet on renvoie une erreur
- if ((!$id_depot) OR (!is_array($paquets)))
+ if ((!$id_depot) OR (!is_array($paquets))) {
return false;
+ }
// On initialise l'url de base des logos du depot et son type afin de
// calculer l'url complete de chaque logo
@@ -373,13 +391,15 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
}
// tous les paquets du depot qui ne font pas parti des signatures
- $anciens_paquets = sql_allfetsel('id_paquet', 'spip_paquets', array('id_depot=' . sql_quote($id_depot), sql_in('signature', $signatures, 'NOT')));
+ $anciens_paquets = sql_allfetsel('id_paquet', 'spip_paquets',
+ array('id_depot=' . sql_quote($id_depot), sql_in('signature', $signatures, 'NOT')));
$anciens_paquets = array_map('array_shift', $anciens_paquets);
// pour ces vieux paquets, on les nettoie de la base
if ($anciens_paquets) {
// tous les plugins correspondants aux anciens paquets
- $anciens_plugins = sql_allfetsel('pl.id_plugin', array('spip_plugins AS pl', 'spip_paquets AS pa'), array('pl.id_plugin=pa.id_plugin', sql_in('pa.id_paquet', $anciens_paquets)));
+ $anciens_plugins = sql_allfetsel('pl.id_plugin', array('spip_plugins AS pl', 'spip_paquets AS pa'),
+ array('pl.id_plugin=pa.id_plugin', sql_in('pa.id_paquet', $anciens_paquets)));
$anciens_plugins = array_map('array_shift', $anciens_plugins);
// suppression des anciens paquets
@@ -390,17 +410,22 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
// liste des plugins qui ont encore des paquets dans ce depot
$plugins_restants = sql_allfetsel('pl.id_plugin',
array('spip_plugins AS pl', 'spip_paquets AS pa'),
- array(sql_in('pl.id_plugin', $anciens_plugins), 'pl.id_plugin=pa.id_plugin', 'pa.id_depot=' . sql_quote($id_depot)));
+ array(
+ sql_in('pl.id_plugin', $anciens_plugins),
+ 'pl.id_plugin=pa.id_plugin',
+ 'pa.id_depot=' . sql_quote($id_depot)
+ ));
$plugins_restants = array_map('array_shift', $plugins_restants);
// par opposition, on retrouve ceux qui n'en ont plus...
$plugins_supprimes = array_diff($anciens_plugins, $plugins_restants);
- sql_delete('spip_depots_plugins', array('id_depot='. sql_quote($id_depot), sql_in('id_plugin', $plugins_supprimes)));
+ sql_delete('spip_depots_plugins',
+ array('id_depot=' . sql_quote($id_depot), sql_in('id_plugin', $plugins_supprimes)));
unset($plugins_restants, $plugins_supprimes);
// supprimer les plugins orphelins
include_spip('inc/svp_depoter_local');
svp_supprimer_plugins_orphelins($anciens_plugins);
-
+
// corriger les vmax des plugins
svp_corriger_vmax_plugins($anciens_plugins);
@@ -409,7 +434,7 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
}
// on ne garde que les paquets qui ne sont pas presents dans la base
- $signatures = sql_allfetsel('signature', 'spip_paquets', 'id_depot='.sql_quote($id_depot));
+ $signatures = sql_allfetsel('signature', 'spip_paquets', 'id_depot=' . sql_quote($id_depot));
$signatures = array_map('array_shift', $signatures);
foreach ($paquets as $cle => $_infos) {
if (in_array($_infos['md5'], $signatures)) {
@@ -422,7 +447,7 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
$insert_plugins = array();
$insert_contribs = array();
$prefixes = array(); // prefixe => id_plugin
-
+
// On met a jour ou on cree chaque paquet a partir du contenu du fichier xml
// On ne fait pas cas de la compatibilite avec la version de SPIP installee
// car l'operation doit permettre de collecter tous les paquets
@@ -457,41 +482,43 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
// On construit l'url complete du logo
// Le logo est maintenant disponible a la meme adresse que le zip et porte le nom du zip.
// Son extension originale est conservee
- if ($insert_paquet['logo'])
+ if ($insert_paquet['logo']) {
$insert_paquet['logo'] = $depot['url_archives'] . '/'
- . basename($insert_paquet['nom_archive'], '.zip') . '.'
- . pathinfo($insert_paquet['logo'], PATHINFO_EXTENSION);
+ . basename($insert_paquet['nom_archive'], '.zip') . '.'
+ . pathinfo($insert_paquet['logo'], PATHINFO_EXTENSION);
+ }
// On loge l'absence de categorie ou une categorie erronee et on positionne la categorie
// par defaut "aucune"
// Provisoire tant que la DTD n'est pas en fonction
if (!$insert_plugin['categorie']) {
- spip_log("Categorie absente dans le paquet issu de <". $insert_paquet['src_archive'] .
- "> du depot <" . $insert_paquet['id_depot'] . ">\n", 'svp_paquets.' . _LOG_INFO_IMPORTANTE);
+ spip_log("Categorie absente dans le paquet issu de <" . $insert_paquet['src_archive'] .
+ "> du depot <" . $insert_paquet['id_depot'] . ">\n", 'svp_paquets.' . _LOG_INFO_IMPORTANTE);
$insert_plugin['categorie'] = 'aucune';
- }
- else {
+ } else {
$svp_categories = $GLOBALS['categories_plugin'];
if (!in_array($insert_plugin['categorie'], $svp_categories)) {
- spip_log("Categorie k" . $insert_plugin['categorie'] . "l incorrecte dans le paquet issu de <". $insert_paquet['src_archive'] .
- "> du depot <" . $insert_paquet['id_depot'] . ">\n", 'svp_paquets.' . _LOG_INFO_IMPORTANTE);
+ spip_log("Categorie k" . $insert_plugin['categorie'] . "l incorrecte dans le paquet issu de <" . $insert_paquet['src_archive'] .
+ "> du depot <" . $insert_paquet['id_depot'] . ">\n", 'svp_paquets.' . _LOG_INFO_IMPORTANTE);
$insert_plugin['categorie'] = 'aucune';
}
}
- }
- else {
+ } else {
$paquet_plugin = false;
}
// On teste l'existence du paquet dans la base avec les champs
// id_depot, nom_archive et src_archive pour être sur de l'unicité.
// - si le paquet n'existe pas, on le crée,
// - sinon (et ça ne devrait pas arriver), on ne fait qu'un update
- if (!$paquet = sql_fetsel('*', 'spip_paquets', array('id_depot='. sql_quote($insert_paquet['id_depot']),
- 'nom_archive='. sql_quote($insert_paquet['nom_archive']),
- 'src_archive='. sql_quote($insert_paquet['src_archive'])))) {
+ if (!$paquet = sql_fetsel('*', 'spip_paquets', array(
+ 'id_depot=' . sql_quote($insert_paquet['id_depot']),
+ 'nom_archive=' . sql_quote($insert_paquet['nom_archive']),
+ 'src_archive=' . sql_quote($insert_paquet['src_archive'])
+ ))
+ ) {
// Le paquet n'existe pas encore en base de donnees
// ------------------------------------------------
-
+
// On positionne la date de creation a celle du dernier commit ce qui est bien le cas
$insert_paquet['date_crea'] = $insert_paquet['date_modif'];
@@ -506,79 +533,85 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
// - le prefixe
// - la version du paquet et de la base
// - l'etat
- $where = array('t1.id_plugin=t2.id_plugin',
- 't1.version=' . sql_quote($insert_paquet['version']),
- 't1.version_base=' . sql_quote($insert_paquet['version_base']),
- 't1.etatnum=' . sql_quote($insert_paquet['etatnum']),
- 't1.id_depot>' . intval(0),
- 't2.prefixe=' . sql_quote($insert_plugin['prefixe']));
+ $where = array(
+ 't1.id_plugin=t2.id_plugin',
+ 't1.version=' . sql_quote($insert_paquet['version']),
+ 't1.version_base=' . sql_quote($insert_paquet['version_base']),
+ 't1.etatnum=' . sql_quote($insert_paquet['etatnum']),
+ 't1.id_depot>' . intval(0),
+ 't2.prefixe=' . sql_quote($insert_plugin['prefixe'])
+ );
if (!$id_paquet = sql_getfetsel('t1.id_paquet', 'spip_paquets AS t1, spip_plugins AS t2', $where)) {
// On traite d'abord le plugin du paquet pour recuperer l'id_plugin
// On rajoute le plugin dans la table spip_plugins si celui-ci n'y est pas encore ou on recupere
// l'id si il existe deja et on le met a jour si la version du paquet est plus elevee
- $plugin = sql_fetsel('id_plugin, vmax', 'spip_plugins', array('prefixe=' . sql_quote($insert_plugin['prefixe'])));
+ $plugin = sql_fetsel('id_plugin, vmax', 'spip_plugins',
+ array('prefixe=' . sql_quote($insert_plugin['prefixe'])));
if (!$plugin AND !array_key_exists($insert_plugin['prefixe'], $insert_plugins)) {
- $insert_plugins[ $insert_plugin['prefixe'] ] = array_merge($insert_plugin, array('vmax' => $insert_paquet['version']));
- }
- else {
+ $insert_plugins[$insert_plugin['prefixe']] = array_merge($insert_plugin,
+ array('vmax' => $insert_paquet['version']));
+ } else {
if ($plugin) {
$id_plugin = $plugin['id_plugin'];
$prefixes[$insert_plugin['prefixe']] = $id_plugin;
}
if (array_key_exists($insert_plugin['prefixe'], $insert_plugins)
- AND (spip_version_compare($insert_plugins[ $insert_plugin['prefixe'] ]['vmax'], $insert_paquet['version'], '<='))) {
+ AND (spip_version_compare($insert_plugins[$insert_plugin['prefixe']]['vmax'], $insert_paquet['version'],
+ '<='))
+ ) {
// attribuer au plugin le nom et le slogan du paquet le plus à jour
- $insert_plugins[ $insert_plugin['prefixe'] ]['nom'] = $insert_plugin['nom'];
- $insert_plugins[ $insert_plugin['prefixe'] ]['slogan'] = $insert_plugin['slogan'];
- $insert_plugins[ $insert_plugin['prefixe'] ]['vmax'] = $insert_paquet['version'];
+ $insert_plugins[$insert_plugin['prefixe']]['nom'] = $insert_plugin['nom'];
+ $insert_plugins[$insert_plugin['prefixe']]['slogan'] = $insert_plugin['slogan'];
+ $insert_plugins[$insert_plugin['prefixe']]['vmax'] = $insert_paquet['version'];
}
}
// On traite maintenant le paquet connaissant l'id du plugin
// temporaire qui sera supprime lors de la connaissance de l'id_paquet
- $insert_paquet['prefixe'] = $insert_plugin['prefixe'];
+ $insert_paquet['prefixe'] = $insert_plugin['prefixe'];
$insert_paquets[] = $insert_paquet;
- }
- else
+ } else {
$collision = true;
- }
- else {
+ }
+ } else {
// On est en presence d'une CONTRIBUTION NON PLUGIN
// ------------------------------------------------
$where = array(
- 'id_depot=' . sql_quote($insert_paquet['id_depot']),
- 'nom_archive=' . sql_quote($insert_paquet['nom_archive']));
+ 'id_depot=' . sql_quote($insert_paquet['id_depot']),
+ 'nom_archive=' . sql_quote($insert_paquet['nom_archive'])
+ );
if (!$id_paquet = sql_getfetsel('id_paquet', 'spip_paquets', $where)) {
// Ce n'est pas un plugin, donc id_plugin=0 et toutes les infos plugin sont nulles
$insert_paquet['id_plugin'] = 0;
$insert_contribs[] = $insert_paquet;
- } else
+ } else {
$collision = true;
+ }
}
// On loge le paquet ayant ete refuse dans un fichier a part afin de les verifier
// apres coup
if ($collision) {
- spip_log("Collision avec le paquet <". $insert_paquet['nom_archive'] .
- " / " . $insert_paquet['src_archive'] . "> du depot <" . $insert_paquet['id_depot'] . ">\n", 'svp_paquets.' . _LOG_INFO_IMPORTANTE);
+ spip_log("Collision avec le paquet <" . $insert_paquet['nom_archive'] .
+ " / " . $insert_paquet['src_archive'] . "> du depot <" . $insert_paquet['id_depot'] . ">\n",
+ 'svp_paquets.' . _LOG_INFO_IMPORTANTE);
}
- }
- else {
+ } else {
// Le paquet existe deja en base de donnees
// ----------------------------------------
// On ne devrait plus arriver ICI...
// Code obsolete ?
spip_log('!!!!!! Passage dans code obsolete (svp/svp_depoter_distant)', 'depoter');
-
+
// on effectue les traitements en attente
// pour que les updates soient corrects
svp_inserer_multi($insert_plugins, $insert_paquets, $insert_contribs, $prefixes);
-
-
+
+
// On met a jour le paquet en premier lieu qu'il soit un plugin ou une contribution
sql_updateq('spip_paquets', $insert_paquet,
- 'id_paquet=' . sql_quote($paquet['id_paquet']));
+ 'id_paquet=' . sql_quote($paquet['id_paquet']));
}
}
@@ -590,14 +623,14 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
// On rajoute le plugin comme heberge par le depot si celui-ci n'est pas encore enregistre comme tel
$ids = sql_allfetsel('p.id_plugin',
array('spip_plugins AS p', 'spip_depots_plugins AS dp'),
- array('p.id_plugin=dp.id_plugin', 'dp.id_depot='.sql_quote($id_depot)));
+ array('p.id_plugin=dp.id_plugin', 'dp.id_depot=' . sql_quote($id_depot)));
$ids = array_map('array_shift', $ids);
// inserer les liens avec le depots
$insert_dp = array();
$news_id = array_diff(array_values($prefixes), $ids);
- foreach($news_id as $id) {
- $insert_dp[] = array('id_depot'=>$id_depot, 'id_plugin'=>$id);
+ foreach ($news_id as $id) {
+ $insert_dp[] = array('id_depot' => $id_depot, 'id_plugin' => $id);
}
if ($insert_dp) {
sql_insertq_multi('spip_depots_plugins', $insert_dp);
@@ -614,14 +647,15 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
// Il faut donc s'assurer que les urls suivent bien la mise à jour
// - on supprime toutes les urls plugin
// - on les regenere pour la liste des plugins mise a jour
- if (!_SVP_MODE_RUNTIME)
+ if (!_SVP_MODE_RUNTIME) {
svp_actualiser_url_plugins($id_depot);
-
+ }
+
// Calcul des compteurs de paquets, plugins et contributions
$nb_paquets = sql_countsel('spip_paquets', 'id_depot=' . sql_quote($id_depot));
$nb_plugins = sql_countsel('spip_depots_plugins', 'id_depot=' . sql_quote($id_depot));
$nb_autres = sql_countsel('spip_paquets', array('id_depot=' . sql_quote($id_depot), 'id_plugin=0'));
-
+
return true;
}
@@ -631,7 +665,7 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
*
* Les paquets peuvent de pas avoir d'info "prefixe" (Ã transformer en id_plugin)
* lorsqu'ils ne proviennent pas de plugin (squelettes...)
- *
+ *
* @param array $insert_plugins
* Tableau de description de plugins.
* Une description est un tableau de couples (colonne sql => valeur)
@@ -648,14 +682,14 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins,
* Couples de relation (préfixe de plugin => identifiant de plugin) connues,
* pour limiter les accès SQL.
* @return void
-**/
+ **/
function svp_inserer_multi(&$insert_plugins, &$insert_paquets, &$insert_contribs, &$prefixes) {
if (count($insert_plugins)) {
sql_insertq_multi('spip_plugins', $insert_plugins);
$insert_plugins = array();
}
-
+
if (count($insert_paquets)) {
// on cherche tous les id_plugin/prefixe que l'on a à récuperer
@@ -663,22 +697,22 @@ function svp_inserer_multi(&$insert_plugins, &$insert_paquets, &$insert_contribs
$prefixes_manquants = array();
foreach ($insert_paquets as $p) {
// on ne connait que le prefixe
- if (isset($p['prefixe']) and !isset($prefixes[ $p['prefixe'] ])) {
- $prefixes_manquants[] = $p['prefixe'];
- }
+ if (isset($p['prefixe']) and !isset($prefixes[$p['prefixe']])) {
+ $prefixes_manquants[] = $p['prefixe'];
+ }
}
// recuperer les nouveaux prefixes :
$new = sql_allfetsel(array('prefixe', 'id_plugin'), 'spip_plugins', sql_in('prefixe', $prefixes_manquants));
foreach ($new as $p) {
- $prefixes[ $p['prefixe'] ] = $p['id_plugin'];
+ $prefixes[$p['prefixe']] = $p['id_plugin'];
}
// inserer les id_plugin dans les paquets a inserer
// inserer le prefixe dans le paquet (pour raccourcis de jointures)
- foreach ($insert_paquets as $c=>$p) {
+ foreach ($insert_paquets as $c => $p) {
if (isset($p['prefixe'])) {
- $insert_paquets[$c]['id_plugin'] = $prefixes[ $insert_paquets[$c]['prefixe'] ];
+ $insert_paquets[$c]['id_plugin'] = $prefixes[$insert_paquets[$c]['prefixe']];
} else {
$insert_paquets[$c]['prefixe'] = array_search($p['id_plugin'], $prefixes);
}
@@ -704,7 +738,7 @@ function svp_inserer_multi(&$insert_plugins, &$insert_paquets, &$insert_contribs
* @uses svp_completer_plugins()
* @param int $id_depot
* Identifiant du depot à actualiser
-**/
+ **/
function svp_completer_plugins_depot($id_depot) {
// On limite la revue des paquets a ceux des plugins heberges par le depot en cours d'actualisation
$ids_plugins = sql_allfetsel('id_plugin', 'spip_depots_plugins', array('id_depot=' . sql_quote($id_depot)));
@@ -714,7 +748,7 @@ function svp_completer_plugins_depot($id_depot) {
}
}
-/**
+/**
* Complète les informations des plugins, d'une liste de plugins donnés,
* en compilant certaines informations (compatibilités, dates, branches)
*
@@ -723,7 +757,7 @@ function svp_completer_plugins_depot($id_depot) {
* Liste d'identifiants de plugins
* @return bool
* false si rien à faire, true sinon
-**/
+ **/
function svp_completer_plugins($ids_plugin) {
if (!$ids_plugin) {
@@ -733,13 +767,14 @@ function svp_completer_plugins($ids_plugin) {
include_spip('inc/svp_outiller');
// -- on recupere tous les paquets associes aux plugins indiques et on compile les infos
- if ($resultats = sql_allfetsel('id_plugin, compatibilite_spip, date_crea, date_modif', 'spip_paquets',
- array(sql_in('id_plugin', $ids_plugin), 'id_depot>'.intval(0)), '', 'id_plugin')) {
+ if ($resultats = sql_allfetsel('id_plugin, compatibilite_spip, date_crea, date_modif', 'spip_paquets',
+ array(sql_in('id_plugin', $ids_plugin), 'id_depot>' . intval(0)), '', 'id_plugin')
+ ) {
$plugin_en_cours = 0;
$inserts = array();
-
- foreach($resultats as $paquet) {
+
+ foreach ($resultats as $paquet) {
// On finalise le plugin en cours et on passe au suivant
if ($plugin_en_cours != $paquet['id_plugin']) {
// On met a jour le plugin en cours
@@ -752,19 +787,25 @@ function svp_completer_plugins($ids_plugin) {
$plugin_en_cours = $paquet['id_plugin'];
$complements = array('compatibilite_spip' => '', 'branches_spip' => '', 'date_crea' => 0, 'date_modif' => 0);
}
-
+
// On compile les compléments du plugin avec le paquet courant sauf les branches
// qui sont deduites en fin de compilation de la compatibilite
- if ($paquet['date_modif'] > $complements['date_modif'])
+ if ($paquet['date_modif'] > $complements['date_modif']) {
$complements['date_modif'] = $paquet['date_modif'];
+ }
if (($complements['date_crea'] === 0)
- OR ($paquet['date_crea'] < $complements['date_crea']))
+ OR ($paquet['date_crea'] < $complements['date_crea'])
+ ) {
$complements['date_crea'] = $paquet['date_crea'];
- if ($paquet['compatibilite_spip'])
- if (!$complements['compatibilite_spip'])
+ }
+ if ($paquet['compatibilite_spip']) {
+ if (!$complements['compatibilite_spip']) {
$complements['compatibilite_spip'] = $paquet['compatibilite_spip'];
- else
- $complements['compatibilite_spip'] = fusionner_intervalles($paquet['compatibilite_spip'], $complements['compatibilite_spip']);
+ } else {
+ $complements['compatibilite_spip'] = fusionner_intervalles($paquet['compatibilite_spip'],
+ $complements['compatibilite_spip']);
+ }
+ }
}
// On finalise le dernier plugin en cours
$complements['branches_spip'] = compiler_branches_spip($complements['compatibilite_spip']);
@@ -774,11 +815,11 @@ function svp_completer_plugins($ids_plugin) {
if (sql_preferer_transaction()) {
sql_demarrer_transaction();
}
-
+
foreach ($inserts as $id_plugin => $complements) {
sql_updateq('spip_plugins', $complements, 'id_plugin=' . intval($id_plugin));
}
-
+
if (sql_preferer_transaction()) {
sql_terminer_transaction();
}
@@ -790,14 +831,14 @@ function svp_completer_plugins($ids_plugin) {
/**
- * Recrée toutes les URLs propres de plugin
+ * Recrée toutes les URLs propres de plugin
*
* Supprime toutes les urls de plugin de la table spip_urls puis les régénère.
- *
+ *
* @return int
* Nombre d'URLs de plugin régénérées
-**/
-function svp_actualiser_url_plugins () {
+ **/
+function svp_actualiser_url_plugins() {
$nb_plugins = 0;
// On supprime toutes les urls de plugin
@@ -812,13 +853,13 @@ function svp_actualiser_url_plugins () {
generer_url_entite($_id, 'plugin', '', '', true);
}
}
-
+
return $nb_plugins;
}
/**
* Éclate une description de paquet issu du XML du dépot en deux parties,
- * une pour le plugin, l'autre pour le paquet
+ * une pour le plugin, l'autre pour le paquet
*
* Sépare en deux une description de champs désignant un paquet, en extrayant :
* - la partie plugin, soit ce qui peut être propre à plusieurs paquets.
@@ -826,14 +867,14 @@ function svp_actualiser_url_plugins () {
* - la partie paquet, soit ce qui est propre à ce conteneur là . On trouve
* dedans entre autres la description, la version, la compatibilité
* à SPIP, les dépendances, etc...
- *
+ *
* @param array $champs_aplat
* Couples (clé => valeur) d'un paquet issu de l'analyse XML du dépot
* @return array
* Tableau de 2 index :
* - Index 'plugin' : couples (clé=>valeur) relatives au plugin
* - Index 'paquet' : couples (clé=>valeur) spécifiques au paquet
-**/
+ **/
function eclater_plugin_paquet($champs_aplat) {
return array(
'plugin' => array(
@@ -866,41 +907,40 @@ function eclater_plugin_paquet($champs_aplat) {
}
-
/**
* Détermine la version max de chaque plugin, c'est à dire
* la version maxi d'un des paquets qui lui est lié.
- *
+ *
* @param array $plugins Liste d'identifiant de plugins
-**/
+ **/
function svp_corriger_vmax_plugins($plugins) {
// tous les plugins encore lies a des depots (hors local)...
// la vmax est a retablir...
if ($plugins) {
$p = sql_allfetsel('DISTINCT(p.id_plugin)',
array('spip_plugins AS p', 'spip_paquets AS pa'),
- array(sql_in('p.id_plugin', $plugins), 'p.id_plugin=pa.id_plugin', 'pa.id_depot>'.intval(0)));
+ array(sql_in('p.id_plugin', $plugins), 'p.id_plugin=pa.id_plugin', 'pa.id_depot>' . intval(0)));
$p = array_map('array_shift', $p);
// pour les autres, on la fixe correctement
-
+
// On insere, en encapsulant pour sqlite...
if (sql_preferer_transaction()) {
sql_demarrer_transaction();
}
-
+
foreach ($p as $id_plugin) {
$vmax = '';
- if ($pa = sql_allfetsel('version', 'spip_paquets', array('id_plugin='.$id_plugin, 'id_depot>'.intval(0)))) {
+ if ($pa = sql_allfetsel('version', 'spip_paquets', array('id_plugin=' . $id_plugin, 'id_depot>' . intval(0)))) {
foreach ($pa as $v) {
if (spip_version_compare($v['version'], $vmax, '>')) {
$vmax = $v['version'];
}
}
}
- sql_updateq('spip_plugins', array('vmax'=>$vmax), 'id_plugin=' . intval($id_plugin));
+ sql_updateq('spip_plugins', array('vmax' => $vmax), 'id_plugin=' . intval($id_plugin));
}
-
+
if (sql_preferer_transaction()) {
sql_terminer_transaction();
}
@@ -908,5 +948,4 @@ function svp_corriger_vmax_plugins($plugins) {
}
-
?>
diff --git a/inc/svp_depoter_local.php b/inc/svp_depoter_local.php
index b742f24..28c5bb9 100644
--- a/inc/svp_depoter_local.php
+++ b/inc/svp_depoter_local.php
@@ -10,7 +10,7 @@
* Il n'y a cependant pas de ligne spécifique décrivant le dépot local
* dans la table SQL spip_depots, mais juste des valeurs id_depot=0 dans
* la table spip_paquets.
- *
+ *
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Depots
@@ -23,13 +23,13 @@
* On ne met à jour que ce qui a changé, sauf si on force le recalcule
* de toutes les informations locales avec var_mode=vider_paquets_locaux
* dans l'URL ou en mettant le paramètre $force à true.
- *
+ *
* @uses svp_descriptions_paquets_locaux()
* @uses svp_base_supprimer_paquets_locaux()
* @uses svp_base_inserer_paquets_locaux()
* @uses svp_base_modifier_paquets_locaux()
* @uses svp_base_actualiser_paquets_actifs()
- *
+ *
* @param bool $force
* - false : n'actualise que les paquets modifiés
* - true : efface et recrée la liste de tous les paquets locaux
@@ -37,7 +37,7 @@
* Si des erreurs XML sont présentes, elles se retrouvent dans ce tableau
* @return string
* Temps d'exécution
-**/
+ **/
function svp_actualiser_paquets_locaux($force = false, &$erreurs_xml = array()) {
spip_timer('paquets_locaux');
@@ -46,7 +46,8 @@ function svp_actualiser_paquets_locaux($force = false, &$erreurs_xml = array())
// un mode pour tout recalculer sans désinstaller le plugin... !
if ($force
OR _request('var_mode') == 'vider_paquets_locaux'
- OR _request('var_mode') == 'recalcul' ) {
+ OR _request('var_mode') == 'recalcul'
+ ) {
svp_base_supprimer_paquets_locaux();
svp_base_inserer_paquets_locaux($paquets);
} else {
@@ -58,7 +59,7 @@ function svp_actualiser_paquets_locaux($force = false, &$erreurs_xml = array())
#spip_log('svp_actualiser_paquets_locaux', 'SVP');
#spip_log($temps, 'SVP');
return "Éxécuté en : " . $temps;
-
+
}
@@ -75,14 +76,14 @@ function svp_actualiser_paquets_locaux($force = false, &$erreurs_xml = array())
* Descriptions des paquets (intégrant un hash), stockés par
* constante, puis par chemin.
* array[_DIR_PLUGIN*][$chemin] = description
-**/
+ **/
function svp_descriptions_paquets_locaux(&$erreurs_xml = array()) {
include_spip('inc/plugin');
liste_plugin_files(_DIR_PLUGINS);
liste_plugin_files(_DIR_PLUGINS_DIST);
$get_infos = charger_fonction('get_infos', 'plugins');
$paquets_locaux = array(
- '_DIR_PLUGINS' => $get_infos(array(), false, _DIR_PLUGINS),
+ '_DIR_PLUGINS' => $get_infos(array(), false, _DIR_PLUGINS),
'_DIR_PLUGINS_DIST' => $get_infos(array(), false, _DIR_PLUGINS_DIST),
);
if (defined('_DIR_PLUGINS_SUPPL') and _DIR_PLUGINS_SUPPL) {
@@ -91,7 +92,7 @@ function svp_descriptions_paquets_locaux(&$erreurs_xml = array()) {
}
// creer la liste des signatures
- foreach($paquets_locaux as $const_dir => $paquets) {
+ foreach ($paquets_locaux as $const_dir => $paquets) {
foreach ($paquets as $chemin => $paquet) {
// on propose le paquet uniquement s'il n'y a pas eu d'erreur de lecture XML bloquante
if (!isset($paquet['erreur'])) {
@@ -112,7 +113,7 @@ function svp_descriptions_paquets_locaux(&$erreurs_xml = array()) {
/**
* Supprime tous les paquets et plugins locaux.
-**/
+ **/
function svp_base_supprimer_paquets_locaux() {
sql_delete('spip_paquets', 'id_depot = ' . 0); //_paquets locaux en 0
sql_delete('spip_plugins', sql_in('id_plugin', sql_get_select('DISTINCT(id_plugin)', 'spip_paquets'), 'NOT'));
@@ -125,12 +126,12 @@ function svp_base_supprimer_paquets_locaux() {
*
* @uses svp_supprimer_plugins_orphelins()
* @uses svp_base_inserer_paquets_locaux()
- *
+ *
* @param array $paquets_locaux
* Descriptions des paquets (intégrant un hash), stockés par
* constante, puis par chemin.
* array[_DIR_PLUGIN*][$chemin] = description
-**/
+ **/
function svp_base_modifier_paquets_locaux($paquets_locaux) {
include_spip('inc/svp_depoter_distant');
@@ -139,32 +140,34 @@ function svp_base_modifier_paquets_locaux($paquets_locaux) {
$signatures = array();
// recuperer toutes les signatures
- foreach($paquets_locaux as $const_dir => $paquets) {
+ foreach ($paquets_locaux as $const_dir => $paquets) {
foreach ($paquets as $chemin => $paquet) {
$signatures[$paquet['signature']] = array(
'constante' => $const_dir,
- 'chemin' => $chemin,
- 'paquet' => $paquet,
+ 'chemin' => $chemin,
+ 'paquet' => $paquet,
);
}
}
// tous les paquets du depot qui ne font pas parti des signatures
- $anciens_paquets = sql_allfetsel('id_paquet', 'spip_paquets', array('id_depot=' . sql_quote(0), sql_in('signature', array_keys($signatures), 'NOT')));
+ $anciens_paquets = sql_allfetsel('id_paquet', 'spip_paquets',
+ array('id_depot=' . sql_quote(0), sql_in('signature', array_keys($signatures), 'NOT')));
$anciens_paquets = array_map('array_shift', $anciens_paquets);
// tous les plugins correspondants aux anciens paquets
- $anciens_plugins = sql_allfetsel('p.id_plugin', array('spip_plugins AS p', 'spip_paquets AS pa'), array('p.id_plugin=pa.id_plugin', sql_in('pa.id_paquet', $anciens_paquets)));
+ $anciens_plugins = sql_allfetsel('p.id_plugin', array('spip_plugins AS p', 'spip_paquets AS pa'),
+ array('p.id_plugin=pa.id_plugin', sql_in('pa.id_paquet', $anciens_paquets)));
$anciens_plugins = array_map('array_shift', $anciens_plugins);
// suppression des anciens paquets
sql_delete('spip_paquets', sql_in('id_paquet', $anciens_paquets));
-
+
// supprimer les plugins orphelins
svp_supprimer_plugins_orphelins($anciens_plugins);
// on ne garde que les paquets qui ne sont pas presents dans la base
- $signatures_base = sql_allfetsel('signature', 'spip_paquets', 'id_depot='.sql_quote(0));
+ $signatures_base = sql_allfetsel('signature', 'spip_paquets', 'id_depot=' . sql_quote(0));
$signatures_base = array_map('array_shift', $signatures_base);
$signatures = array_diff_key($signatures, array_flip($signatures_base));
@@ -187,25 +190,25 @@ function svp_base_modifier_paquets_locaux($paquets_locaux) {
* De chaque description est extrait la partie plugin (1 seul plugin
* par préfixe de plugin connu) et la partie paquet (il peut y avoir plusieurs
* paquets pour un même préfixe de plugin).
- *
+ *
* @note
* On essaie au mieux de faire des requêtes d'insertions multiples,
* mieux gérées par les moteurs SQL (particulièrement pour SQLite)
- *
+ *
* @uses plugins_preparer_sql_paquet()
* @uses svp_compiler_multis()
* @uses eclater_plugin_paquet()
* @uses svp_rechercher_maj_version()
* @uses svp_corriger_obsolete_paquets()
- *
+ *
* @param array $paquets_locaux
* Descriptions des paquets (intégrant un hash), stockés par
* constante, puis par chemin.
* array[_DIR_PLUGIN*][$chemin] = description
-**/
+ **/
function svp_base_inserer_paquets_locaux($paquets_locaux) {
include_spip('inc/svp_depoter_distant');
-
+
// On initialise les informations specifiques au paquet :
// l'id du depot et les infos de l'archive
$paquet_base = array(
@@ -223,18 +226,18 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) {
// pour chaque decouverte, on insere les paquets en base.
// on evite des requetes individuelles, tres couteuses en sqlite...
- $cle_plugins = array(); // prefixe => id
+ $cle_plugins = array(); // prefixe => id
$insert_plugins = array(); // insertion prefixe...
$insert_plugins_vmax = array(); // vmax des nouveaux plugins...
$insert_paquets = array(); // insertion de paquet...
include_spip('inc/config');
$recents = lire_config('plugins_interessants');
- $installes = lire_config('plugin_installes');
- $actifs = lire_config('plugin');
- $attentes = lire_config('plugin_attente');
+ $installes = lire_config('plugin_installes');
+ $actifs = lire_config('plugin');
+ $attentes = lire_config('plugin_attente');
- foreach($paquets_locaux as $const_dir => $paquets) {
+ foreach ($paquets_locaux as $const_dir => $paquets) {
foreach ($paquets as $chemin => $paquet) {
// Si on est en presence d'un plugin dont la dtd est "paquet" on compile en multi
// les nom, slogan et description a partir des fichiers de langue.
@@ -242,8 +245,9 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) {
// => On evite l'utilisation de _T() dans les squelettes
if ($paquet['dtd'] == 'paquet') {
$multis = svp_compiler_multis($paquet['prefix'], constant($const_dir) . '/' . $chemin);
- if (isset($multis['nom']))
+ if (isset($multis['nom'])) {
$paquet['nom'] = $multis['nom'];
+ }
$paquet['slogan'] = (isset($multis['slogan'])) ? $multis['slogan'] : '';
$paquet['description'] = (isset($multis['description'])) ? $multis['description'] : '';
}
@@ -271,7 +275,7 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) {
}
// creation du plugin...
- $prefixe = strtoupper( $le_plugin['prefixe'] );
+ $prefixe = strtoupper($le_plugin['prefixe']);
// on fait attention lorqu'on cherche ou ajoute un plugin
// le nom et slogan est TOUJOURS celui de la plus haute version
// et il faut donc possiblement mettre a jour la base...
@@ -279,7 +283,7 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) {
// + on est tolerant avec les versions identiques de plugin deja presentes
// on permet le recalculer le titre...
if (!isset($cle_plugins[$prefixe])) {
- if (!$res = sql_fetsel('id_plugin, vmax', 'spip_plugins', 'prefixe = '.sql_quote($prefixe))) {
+ if (!$res = sql_fetsel('id_plugin, vmax', 'spip_plugins', 'prefixe = ' . sql_quote($prefixe))) {
// on ne stocke pas de vmax pour les plugins locaux dans la bdd... (parait il)
if (!isset($insert_plugins[$prefixe])) {
$insert_plugins[$prefixe] = $le_plugin;
@@ -294,25 +298,27 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) {
// comme justement on ne stocke pas de vmax pour les plugins locaux...
// il est possible que ce test soit faux. pff.
if (spip_version_compare($le_paquet['version'], $res['vmax'], '>=')) {
- sql_updateq('spip_plugins', $le_plugin, 'id_plugin='.sql_quote($id_plugin));
+ sql_updateq('spip_plugins', $le_plugin, 'id_plugin=' . sql_quote($id_plugin));
}
}
}
// ajout du prefixe dans le paquet
- $le_paquet['prefixe'] = $prefixe;
- $le_paquet['constante'] = $const_dir;
+ $le_paquet['prefixe'] = $prefixe;
+ $le_paquet['constante'] = $const_dir;
$le_paquet['src_archive'] = $chemin;
- $le_paquet['recent'] = isset($recents[$chemin]) ? $recents[$chemin] : 0;
- $le_paquet['installe'] = is_array($chemin) && in_array($chemin, $installes) ? 'oui': 'non'; // est desinstallable ?
- $le_paquet['obsolete'] = 'non';
- $le_paquet['signature'] = $paquet['signature'];
+ $le_paquet['recent'] = isset($recents[$chemin]) ? $recents[$chemin] : 0;
+ $le_paquet['installe'] = is_array($chemin) && in_array($chemin,
+ $installes) ? 'oui' : 'non'; // est desinstallable ?
+ $le_paquet['obsolete'] = 'non';
+ $le_paquet['signature'] = $paquet['signature'];
// le plugin est il actuellement actif ?
$actif = "non";
if (isset($actifs[$prefixe])
and ($actifs[$prefixe]['dir_type'] == $const_dir)
- and ($actifs[$prefixe]['dir'] == $chemin)) {
+ and ($actifs[$prefixe]['dir'] == $chemin)
+ ) {
$actif = "oui";
}
$le_paquet['actif'] = $actif;
@@ -322,7 +328,8 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) {
$attente = "non";
if (isset($attentes[$prefixe])
and ($attentes[$prefixe]['dir_type'] == $const_dir)
- and ($attentes[$prefixe]['dir'] == $chemin)) {
+ and ($attentes[$prefixe]['dir'] == $chemin)
+ ) {
$attente = "oui";
$le_paquet['actif'] = "oui"; // il est presenté dans la liste des actifs (en erreur).
}
@@ -345,15 +352,15 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) {
$cle_plugins[$p['prefixe']] = $p['id_plugin'];
}
}
-
+
if ($insert_paquets) {
// sert pour le calcul d'obsolescence
$id_plugin_concernes = array();
-
+
foreach ($insert_paquets as $c => $p) {
$insert_paquets[$c]['id_plugin'] = $cle_plugins[$p['prefixe']];
- $id_plugin_concernes[ $insert_paquets[$c]['id_plugin'] ] = true;
+ $id_plugin_concernes[$insert_paquets[$c]['id_plugin']] = true;
// remettre les necessite, utilise, librairie dans la cle 0
// comme SVP
@@ -361,9 +368,9 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) {
foreach ($dep as $d => $contenu) {
if ($contenu) {
$new = array();
- foreach($contenu as $n) {
+ foreach ($contenu as $n) {
unset($n['id']);
- $new[ strtolower($n['nom']) ] = $n;
+ $new[strtolower($n['nom'])] = $n;
}
$dep[$d] = array($new);
}
@@ -375,24 +382,24 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) {
sql_insertq_multi('spip_paquets', $insert_paquets);
- svp_corriger_obsolete_paquets( array_keys($id_plugin_concernes) );
+ svp_corriger_obsolete_paquets(array_keys($id_plugin_concernes));
}
}
/**
* Fait correspondre l'état des métas des plugins actifs & installés
- * avec ceux en base de données dans spip_paquets pour le dépot local
-**/
+ * avec ceux en base de données dans spip_paquets pour le dépot local
+ **/
function svp_base_actualiser_paquets_actifs() {
- $installes = lire_config('plugin_installes');
- $actifs = lire_config('plugin');
- $attentes = lire_config('plugin_attente');
+ $installes = lire_config('plugin_installes');
+ $actifs = lire_config('plugin');
+ $attentes = lire_config('plugin_attente');
$locaux = sql_allfetsel(
array('id_paquet', 'prefixe', 'actif', 'installe', 'attente', 'constante', 'src_archive'),
'spip_paquets',
- 'id_depot='.sql_quote(0));
+ 'id_depot=' . sql_quote(0));
$changements = array();
foreach ($locaux as $l) {
@@ -401,22 +408,24 @@ function svp_base_actualiser_paquets_actifs() {
// actif ?
if (isset($actifs[$prefixe])
and ($actifs[$prefixe]['dir_type'] == $l['constante'])
- and ($actifs[$prefixe]['dir'] == $l['src_archive'])) {
+ and ($actifs[$prefixe]['dir'] == $l['src_archive'])
+ ) {
$copie['actif'] = "oui";
} else {
$copie['actif'] = "non";
}
-
+
// attente ?
if (isset($attentes[$prefixe])
and ($attentes[$prefixe]['dir_type'] == $l['constante'])
- and ($attentes[$prefixe]['dir'] == $l['src_archive'])) {
+ and ($attentes[$prefixe]['dir'] == $l['src_archive'])
+ ) {
$copie['attente'] = "oui";
$copie['actif'] = "oui"; // il est presente dans la liste des actifs (en erreur).
} else {
$copie['attente'] = "non";
}
-
+
// installe ?
if (in_array($l['src_archive'], $installes)) {
$copie['installe'] = "oui";
@@ -425,10 +434,11 @@ function svp_base_actualiser_paquets_actifs() {
}
if ($copie != $l) {
- $changements[ $l['id_paquet'] ] = array(
- 'actif' => $copie['actif'],
+ $changements[$l['id_paquet']] = array(
+ 'actif' => $copie['actif'],
'installe' => $copie['installe'],
- 'attente' => $copie['attente'] );
+ 'attente' => $copie['attente']
+ );
}
}
@@ -454,8 +464,8 @@ function svp_base_actualiser_paquets_actifs() {
* et description à partir des items de langue contenus dans le fichier
* paquet-prefixe_langue.php
*
- * @param string $prefixe Préfixe du plugin
- * @param string $dir_source Chemin d'accès du plugin
+ * @param string $prefixe Préfixe du plugin
+ * @param string $dir_source Chemin d'accès du plugin
* @return array
* Tableau clé => texte multilangue entre
et
* Les clés peuvent être 'nom', 'slogan' et 'description', mais
@@ -464,7 +474,7 @@ function svp_base_actualiser_paquets_actifs() {
*/
function svp_compiler_multis($prefixe, $dir_source) {
- $multis =array();
+ $multis = array();
// ici on cherche le fichier et les cles avec un prefixe en minuscule systematiquement...
$prefixe = strtolower($prefixe);
$module = "paquet-$prefixe";
@@ -478,28 +488,37 @@ function svp_compiler_multis($prefixe, $dir_source) {
$nom = $slogan = $description = '';
foreach ($fichiers_langue as $_fichier_langue) {
$nom_fichier = basename($_fichier_langue, '.php');
- $langue = substr($nom_fichier, strlen($module) + 1 - strlen($nom_fichier));
+ $langue = substr($nom_fichier, strlen($module)+1-strlen($nom_fichier));
// Si la langue est reconnue, on traite la liste des items de langue
if (isset($GLOBALS['codes_langues'][$langue])) {
$GLOBALS['idx_lang'] = $langue;
include($_fichier_langue);
foreach ($GLOBALS[$langue] as $_item => $_traduction) {
if ($_traduction = trim($_traduction)) {
- if ($_item == $item_nom)
+ if ($_item == $item_nom) {
$nom .= "[$langue]$_traduction";
- if ($_item == $item_slogan)
+ }
+ if ($_item == $item_slogan) {
$slogan .= "[$langue]$_traduction";
- if ($_item == $item_description)
+ }
+ if ($_item == $item_description) {
$description .= "[$langue]$_traduction";
+ }
}
}
}
}
// Finaliser la construction des balises multi
- if ($nom) $multis['nom'] = "
$nom";
- if ($slogan) $multis['slogan'] = "
$slogan";
- if ($description) $multis['description'] = "
$description";
+ if ($nom) {
+ $multis['nom'] = "
$nom";
+ }
+ if ($slogan) {
+ $multis['slogan'] = "
$slogan";
+ }
+ if ($description) {
+ $multis['description'] = "
$description";
+ }
}
return $multis;
@@ -511,18 +530,18 @@ function svp_compiler_multis($prefixe, $dir_source) {
*
* L'obsolescence indique qu'un paquet est plus ancien (de version ou état
* moins avancé) qu'un autre également présent localement.
- *
+ *
* @param array $ids_plugin
* Liste d'identifiants de plugins
* En cas d'absence, passera sur tous les paquets locaux
-**/
+ **/
function svp_corriger_obsolete_paquets($ids_plugin = array()) {
// on minimise au maximum le nombre de requetes.
// 1 pour lister les paquets
// 1 pour mettre à jour les obsoletes à oui
// 1 pour mettre à jour les obsoletes à non
- $where = array('pa.id_plugin = pl.id_plugin', 'id_depot='.sql_quote(0));
+ $where = array('pa.id_plugin = pl.id_plugin', 'id_depot=' . sql_quote(0));
if ($ids_plugin) {
$where[] = sql_in('pl.id_plugin', $ids_plugin);
}
@@ -541,7 +560,8 @@ function svp_corriger_obsolete_paquets($ids_plugin = array()) {
// L'obsolescence doit tenir compte de la compatibilité avec notre version de SPIP en cours
foreach ($paquets as $c => $p) {
- $paquets[$c]['compatible'] = plugin_version_compatible($p['compatibilite_spip'], $GLOBALS['spip_version_branche'], 'spip');
+ $paquets[$c]['compatible'] = plugin_version_compatible($p['compatibilite_spip'], $GLOBALS['spip_version_branche'],
+ 'spip');
}
foreach ($paquets as $c => $p) {
@@ -555,8 +575,12 @@ function svp_corriger_obsolete_paquets($ids_plugin = array()) {
// Si version et etat sont egaux, on ne decide pas d'obsolescence.
if (count($obsoletes[$p['prefixe']]) > 1) {
foreach ($obsoletes[$p['prefixe']] as $cle) {
- if ($cle == $c) continue;
- if (!$paquets[$c]['compatible']) continue;
+ if ($cle == $c) {
+ continue;
+ }
+ if (!$paquets[$c]['compatible']) {
+ continue;
+ }
// je suis plus petit qu'un autre
if (spip_version_compare($paquets[$c]['version'], $paquets[$cle]['version'], '<')) {
@@ -566,28 +590,26 @@ function svp_corriger_obsolete_paquets($ids_plugin = array()) {
$changements[$c] = true;
}
}
- }
-
- // je suis plus grand ou egal a un autre...
+ } // je suis plus grand ou egal a un autre...
else {
// je suis strictement plus grand qu'un autre...
if (spip_version_compare($paquets[$c]['version'], $paquets[$cle]['version'], '>')) {
// si mon etat est meilleur, rendre obsolete les autres
if ($paquets[$c]['etatnum'] >= $paquets[$cle]['etatnum']) {
- if ($paquets[$cle]['obsolete'] != 'oui') {
- $paquets[$cle]['obsolete'] = 'oui';
- $changements[$cle] = true;
- }
+ if ($paquets[$cle]['obsolete'] != 'oui') {
+ $paquets[$cle]['obsolete'] = 'oui';
+ $changements[$cle] = true;
+ }
}
}
// je suis egal a un autre
// si mon etat est strictement meilleur, rendre obsolete les autres
elseif ($paquets[$c]['etatnum'] > $paquets[$cle]['etatnum']) {
- if ($paquets[$cle]['obsolete'] != 'oui') {
- $paquets[$cle]['obsolete'] = 'oui';
- $changements[$cle] = true;
- }
+ if ($paquets[$cle]['obsolete'] != 'oui') {
+ $paquets[$cle]['obsolete'] = 'oui';
+ $changements[$cle] = true;
+ }
}
}
@@ -611,17 +633,15 @@ function svp_corriger_obsolete_paquets($ids_plugin = array()) {
}
if ($oui) {
- sql_updateq('spip_paquets', array('obsolete'=>'oui'), sql_in('id_paquet', $oui));
+ sql_updateq('spip_paquets', array('obsolete' => 'oui'), sql_in('id_paquet', $oui));
}
if ($non) {
- sql_updateq('spip_paquets', array('obsolete'=>'non'), sql_in('id_paquet', $non));
+ sql_updateq('spip_paquets', array('obsolete' => 'non'), sql_in('id_paquet', $non));
}
}
}
-
-
/**
* Supprime les plugins devenus orphelins dans cette liste.
*
@@ -629,34 +649,37 @@ function svp_corriger_obsolete_paquets($ids_plugin = array()) {
* Liste d'identifiants de plugins
* @return array
* Liste de plugins non orphelins
-**/
+ **/
function svp_supprimer_plugins_orphelins($ids_plugin) {
// tous les plugins encore lies a des depots...
if ($ids_plugin) {
- $p = sql_allfetsel('DISTINCT(p.id_plugin)', array('spip_plugins AS p', 'spip_paquets AS pa'), array(sql_in('p.id_plugin', $ids_plugin), 'p.id_plugin=pa.id_plugin'));
+ $p = sql_allfetsel('DISTINCT(p.id_plugin)', array('spip_plugins AS p', 'spip_paquets AS pa'),
+ array(sql_in('p.id_plugin', $ids_plugin), 'p.id_plugin=pa.id_plugin'));
$p = array_map('array_shift', $p);
$diff = array_diff($ids_plugin, $p);
// pour chaque plugin non encore utilise, on les vire !
sql_delete('spip_plugins', sql_in('id_plugin', $diff));
+
return $p; // les plugins encore en vie !
}
+
return array();
}
/**
* Cherche dans les dépots distants un plugin qui serait plus à jour
- * que le prefixe, version et état que l'on transmet
+ * que le prefixe, version et état que l'on transmet
*
* @param string $prefixe
- * Préfixe du plugin
+ * Préfixe du plugin
* @param string $version
- * Version du paquet à comparer
+ * Version du paquet à comparer
* @param int $etatnum
- * État du paquet numérique
+ * État du paquet numérique
* @return string
- * Version plus à jour, sinon rien
-**/
+ * Version plus à jour, sinon rien
+ **/
function svp_rechercher_maj_version($prefixe, $version, $etatnum) {
$maj_version = "";
@@ -668,13 +691,14 @@ function svp_rechercher_maj_version($prefixe, $version, $etatnum) {
'pl.id_plugin = pa.id_plugin',
'pa.id_depot>' . sql_quote(0),
'pl.prefixe=' . sql_quote($prefixe),
- 'pa.etatnum>=' . sql_quote($etatnum))))
- {
+ 'pa.etatnum>=' . sql_quote($etatnum)
+ ))
+ ) {
foreach ($res as $paquet_distant) {
// si version superieure et etat identique ou meilleur,
// c'est que c'est une mise a jour possible !
- if (spip_version_compare($paquet_distant['version'],$version,'>')) {
+ if (spip_version_compare($paquet_distant['version'], $version, '>')) {
if (!strlen($maj_version) or spip_version_compare($paquet_distant['version'], $maj_version, '>')) {
$maj_version = $paquet_distant['version'];
}
@@ -689,21 +713,19 @@ function svp_rechercher_maj_version($prefixe, $version, $etatnum) {
}
-
-
/**
* Actualise l'information 'maj_version' pour tous les paquets locaux
- *
+ *
* @uses svp_rechercher_maj_version()
-**/
+ **/
function svp_actualiser_maj_version() {
$update = array();
// tous les paquets locaux
if ($locaux = sql_allfetsel(
array('id_paquet', 'prefixe', 'version', 'maj_version', 'etatnum'),
array('spip_paquets'),
- array('id_depot=' . sql_quote(0))))
- {
+ array('id_depot=' . sql_quote(0)))
+ ) {
foreach ($locaux as $paquet) {
$new_maj_version = svp_rechercher_maj_version($paquet['prefixe'], $paquet['version'], $paquet['etatnum']);
if ($new_maj_version != $paquet['maj_version']) {
diff --git a/inc/svp_outiller.php b/inc/svp_outiller.php
index 8757fa6..efd4b33 100644
--- a/inc/svp_outiller.php
+++ b/inc/svp_outiller.php
@@ -1,29 +1,31 @@
array(_SVP_VERSION_SPIP_MIN,'1.9.2'),
- '2.0' => array('2.0.0','2.0.99'),
- '2.1' => array('2.1.0','2.1.99'),
- '3.0' => array('3.0.0','3.0.99'),
- '3.1' => array('3.1.0',_SVP_VERSION_SPIP_MAX)
+ '1.9' => array(_SVP_VERSION_SPIP_MIN, '1.9.2'),
+ '2.0' => array('2.0.0', '2.0.99'),
+ '2.1' => array('2.1.0', '2.1.99'),
+ '3.0' => array('3.0.0', '3.0.99'),
+ '3.1' => array('3.1.0', _SVP_VERSION_SPIP_MAX)
);
# define('_INFOS_BRANCHES_SPIP', serialize($infos_branches_spip));
/**
* Liste des licences de plugin
*
- * @global array $GLOBALS['licences_plugin']
+ * @global array $GLOBALS ['licences_plugin']
*/
$GLOBALS['licences_plugin'] = array(
'apache' => array(
'versions' => array('2.0', '1.1', '1.0'),
'nom' => 'Apache licence, version @version@',
- 'url' => 'http://www.apache.org/licenses/LICENSE-@version@'),
+ 'url' => 'http://www.apache.org/licenses/LICENSE-@version@'
+ ),
'art' => array(
'versions' => array('1.3'),
'nom' => 'Art libre @version@',
- 'url' => 'http://artlibre.org/licence/lal'),
+ 'url' => 'http://artlibre.org/licence/lal'
+ ),
'mit' => array(
'versions' => array(),
'nom' => 'MIT',
- 'url' => 'http://opensource.org/licenses/mit-license.php'),
+ 'url' => 'http://opensource.org/licenses/mit-license.php'
+ ),
'bsd' => array(
'versions' => array(),
'nom' => 'BSD',
- 'url' => 'http://www.freebsd.org/copyright/license.html'),
+ 'url' => 'http://www.freebsd.org/copyright/license.html'
+ ),
'agpl' => array(
'versions' => array('3'),
'nom' => 'AGPL @version@',
- 'url' => 'http://www.gnu.org/licenses/agpl.html'),
+ 'url' => 'http://www.gnu.org/licenses/agpl.html'
+ ),
'fdl' => array(
'versions' => array('1.3', '1.2', '1.1'),
'nom' => 'FDL @version@',
- 'url' => 'http://www.gnu.org/licenses/fdl-@version@.html'),
+ 'url' => 'http://www.gnu.org/licenses/fdl-@version@.html'
+ ),
'lgpl' => array(
'versions' => array('3.0', '2.1'),
'nom' => array('3.0' => 'LGPL 3', '2.1' => 'LGPL 2.1'),
- 'url' => 'http://www.gnu.org/licenses/lgpl-@version@.html'),
+ 'url' => 'http://www.gnu.org/licenses/lgpl-@version@.html'
+ ),
'gpl' => array(
'versions' => array('3', '2', '1'),
'nom' => 'GPL @version@',
- 'url' => 'http://www.gnu.org/licenses/gpl-@version@.0.html'),
+ 'url' => 'http://www.gnu.org/licenses/gpl-@version@.0.html'
+ ),
'ccby' => array(
'versions' => array('2.0', '2.5', '3.0'),
'suffixes' => array('-sa', '-nc', '-nd', '-nc-nd', '-nc-sa'),
'nom' => 'CC BY@suffixe@ @version@',
- 'url' => 'http://creativecommons.org/licenses/by@suffixe@/@version@/')
+ 'url' => 'http://creativecommons.org/licenses/by@suffixe@/@version@/'
+ )
);
# define('_LICENCES_PLUGIN', serialize($licences_plugin));
/**
- * Fusionne 2 intervalles de compatibilité
+ * Fusionne 2 intervalles de compatibilité
*
* Soit '[1.9;2.1]' et '[2.1;3.0.*]', la fonction retourne '[1.9;3.0.*]'
*
* En gros la fonction est utilisé pour calculer l'intervalle de validité
* d'un plugin ayant plusieurs paquets avec des compatibilités différentes.
* La compatibilité du plugin est le total de toutes les compatibilités.
- *
+ *
* @uses extraire_bornes()
* @uses construire_intervalle()
* @param string $intervalle_a
@@ -105,7 +117,7 @@ $GLOBALS['licences_plugin'] = array(
* Intervalle de compatibilité
* @return string
* Intervalle de compatibilité
-**/
+ **/
function fusionner_intervalles($intervalle_a, $intervalle_b) {
// On recupere les bornes de chaque intervalle
@@ -134,15 +146,17 @@ function fusionner_intervalles($intervalle_a, $intervalle_b) {
// On calcul maintenant :
// -- la borne min de l'intervalle fusionne = min(min_a, min_b)
- if (spip_version_compare($borne_a['min']['valeur'], $borne_b['min']['valeur'], '<='))
+ if (spip_version_compare($borne_a['min']['valeur'], $borne_b['min']['valeur'], '<=')) {
$bornes_fusionnees['min'] = $borne_a['min'];
- else
+ } else {
$bornes_fusionnees['min'] = $borne_b['min'];
+ }
// -- la borne max de l'intervalle fusionne = max(max_a, max_b)
- if (spip_version_compare($borne_a['max']['valeur'], $borne_b['max']['valeur'], '<='))
+ if (spip_version_compare($borne_a['max']['valeur'], $borne_b['max']['valeur'], '<=')) {
$bornes_fusionnees['max'] = $borne_b['max'];
- else
+ } else {
$bornes_fusionnees['max'] = $borne_a['max'];
+ }
return construire_intervalle($bornes_fusionnees);
}
@@ -164,26 +178,28 @@ function fusionner_intervalles($intervalle_a, $intervalle_b) {
* - min : la borne inférieure, qui contient les index 'valeur' et 'incluse'
* - max : la borne supérieure, qui contient les index 'valeur' et 'incluse'
* Le sous index 'incluse' vaut true si cette borne est incluse dans l'intervalle.
-**/
+ **/
function extraire_bornes($intervalle, $initialiser = false) {
static $borne_vide = array('valeur' => '', 'incluse' => false);
static $borne_inf_init = array('valeur' => _SVP_VERSION_SPIP_MIN, 'incluse' => true);
static $borne_sup_init = array('valeur' => _SVP_VERSION_SPIP_MAX, 'incluse' => true);
- if ($initialiser)
+ if ($initialiser) {
$bornes = array('min' => $borne_inf_init, 'max' => $borne_sup_init);
- else
+ } else {
$bornes = array('min' => $borne_vide, 'max' => $borne_vide);
+ }
if ($intervalle
- AND preg_match(',^[\[\(\]]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-\*]*)[\]\)\[]$,Uis', $intervalle, $matches)) {
+ AND preg_match(',^[\[\(\]]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-\*]*)[\]\)\[]$,Uis', $intervalle, $matches)
+ ) {
if ($matches[1]) {
$bornes['min']['valeur'] = trim($matches[1]);
$bornes['min']['incluse'] = ($intervalle{0} == "[");
}
if ($matches[2]) {
$bornes['max']['valeur'] = trim($matches[2]);
- $bornes['max']['incluse'] = (substr($intervalle,-1) == "]");
+ $bornes['max']['incluse'] = (substr($intervalle, -1) == "]");
}
}
@@ -191,7 +207,7 @@ function extraire_bornes($intervalle, $initialiser = false) {
}
/**
- * Contruit un intervalle de compatibilité
+ * Contruit un intervalle de compatibilité
*
* @param array $bornes
* L'intervalle décrit sous forme de tableau avec pour index :
@@ -204,11 +220,11 @@ function extraire_bornes($intervalle, $initialiser = false) {
* tel que ']2.1.2,3.0.1[' (paquet) ou '(2.1.2,3.0.1)' (plugin)
* @return string
* Intervalle de compatibilité tel que '[2.1;3.0]'
-**/
+ **/
function construire_intervalle($bornes, $dtd = 'paquet') {
- return ($bornes['min']['incluse'] ? '[' : ($dtd=='paquet' ? ']' : '('))
- . $bornes['min']['valeur'] . ';' . $bornes['max']['valeur']
- . ($bornes['max']['incluse'] ? ']' : ($dtd=='paquet' ? '[' : ')'));
+ return ($bornes['min']['incluse'] ? '[' : ($dtd == 'paquet' ? ']' : '('))
+ . $bornes['min']['valeur'] . ';' . $bornes['max']['valeur']
+ . ($bornes['max']['incluse'] ? ']' : ($dtd == 'paquet' ? '[' : ')'));
}
@@ -221,20 +237,21 @@ function construire_intervalle($bornes, $dtd = 'paquet') {
* Intervalle de compatibilité, tel que [2.0.0;3.0.0]
* @return string
* Branches de SPIP séparées par des virgules, tel que 2.0,2.1,3.0
-**/
+ **/
function compiler_branches_spip($intervalle) {
include_spip('plugins/installer');
global $infos_branches_spip;
$liste_branches_spip = array_keys($GLOBALS['infos_branches_spip']);
-
+
$bornes = extraire_bornes($intervalle, false);
// On traite d'abord les cas ou l'intervalle est :
// - vide
// - non vide mais avec les deux bornes vides
// Dans ces cas la compatibilite est totale, on renvoie toutes les branches
- if (!$intervalle OR (!$bornes['min']['valeur'] AND !$bornes['max']['valeur']))
+ if (!$intervalle OR (!$bornes['min']['valeur'] AND !$bornes['max']['valeur'])) {
return implode(',', $liste_branches_spip);
+ }
// On force l'initialisation des bornes et on les nettoie des suffixes d'etat
$bornes = extraire_bornes($intervalle, true);
@@ -248,8 +265,10 @@ function compiler_branches_spip($intervalle) {
$bornes['max']['incluse'] = true;
}
// On les nettoie des suffixes d'etat
- $borne_inf = strtolower(preg_replace(',([0-9])[\s-.]?(dev|alpha|a|beta|b|rc|pl|p),i','\\1',$bornes['min']['valeur']));
- $borne_sup = strtolower(preg_replace(',([0-9])[\s-.]?(dev|alpha|a|beta|b|rc|pl|p),i','\\1',$bornes['max']['valeur']));
+ $borne_inf = strtolower(preg_replace(',([0-9])[\s-.]?(dev|alpha|a|beta|b|rc|pl|p),i', '\\1',
+ $bornes['min']['valeur']));
+ $borne_sup = strtolower(preg_replace(',([0-9])[\s-.]?(dev|alpha|a|beta|b|rc|pl|p),i', '\\1',
+ $bornes['max']['valeur']));
// On determine les branches inf et sup issues du phrasage de l'intervalle
// -- on initialise la branche inf de l'intervalle que l'on va preciser ensuite
@@ -257,18 +276,19 @@ function compiler_branches_spip($intervalle) {
$branche_inf = $t[0] . '.' . $t[1];
// -- pour eviter toutes erreur fatale on verifie que la branche est bien dans la liste des possibles
// -- -> si non, on renvoie vide
- if (!in_array($branche_inf, $liste_branches_spip))
+ if (!in_array($branche_inf, $liste_branches_spip)) {
return '';
+ }
// -- on complete la borne inf de l'intervalle de x.y en x.y.z et on determine la vraie branche
if (!isset($t[2]) or !$t[2]) {
- if ($bornes['min']['incluse'])
+ if ($bornes['min']['incluse']) {
$borne_inf = $infos_branches_spip[$branche_inf][0];
- else {
+ } else {
$branche_inf = $liste_branches_spip[array_search($branche_inf, $liste_branches_spip)+1];
$borne_inf = $infos_branches_spip[$branche_inf][0];
}
}
-
+
// -- on initialise la branche sup de l'intervalle que l'on va preciser ensuite
$t = explode('.', $borne_sup);
// des gens mettent juste * (pas glop)
@@ -276,13 +296,14 @@ function compiler_branches_spip($intervalle) {
// -- pour eviter toutes erreur fatale on verifie que la branche est bien dans la liste des possibles
// -- -> si non, on renvoie vide
- if (!in_array($branche_sup, $liste_branches_spip))
+ if (!in_array($branche_sup, $liste_branches_spip)) {
return '';
+ }
// -- on complete la borne sup de l'intervalle de x.y en x.y.z et on determine la vraie branche
if (!isset($t[2]) or !$t[2]) {
- if ($bornes['max']['incluse'])
+ if ($bornes['max']['incluse']) {
$borne_sup = $infos_branches_spip[$branche_sup][1];
- else {
+ } else {
$branche_sup = $liste_branches_spip[array_search($branche_sup, $liste_branches_spip)-1];
$borne_sup = $infos_branches_spip[$branche_sup][1];
}
@@ -290,8 +311,9 @@ function compiler_branches_spip($intervalle) {
// -- on verifie que les bornes sont bien dans l'ordre :
// -> sinon on retourne la branche sup uniquement
- if (spip_version_compare($borne_inf, $borne_sup, '>='))
+ if (spip_version_compare($borne_inf, $borne_sup, '>=')) {
return $branche_sup;
+ }
// A ce stade, on a un intervalle ferme en bornes ou en branches
// Il suffit de trouver les branches qui y sont incluses, sachant que les branches inf et sup
@@ -308,24 +330,28 @@ function compiler_branches_spip($intervalle) {
/**
- * Transforme un texte écrit en entités HTML, dans le charset du site
+ * Transforme un texte écrit en entités HTML, dans le charset du site
*
* @param string $texte
* Texte avec des entités HTML
* @param string $charset
* @return string $texte
* Texte dans le charset du site
-**/
+ **/
function entite2charset($texte, $charset = null) {
- if (!strlen($texte)) return '';
- if (!$charset)
+ if (!strlen($texte)) {
+ return '';
+ }
+ if (!$charset) {
$charset = $GLOBALS['meta']['charset'];
+ }
include_spip('inc/charsets');
+
return unicode2charset(html_entity_decode(preg_replace('/&([lg]t;)/S', '&\1', $texte), ENT_NOQUOTES, $charset));
}
/**
- * Teste si 2 balises XML sont identiques
+ * Teste si 2 balises XML sont identiques
*
* @param array|string $balise1
* Balise à comparer
@@ -333,20 +359,23 @@ function entite2charset($texte, $charset = null) {
* Balise à comparer
* @return bool
* True si elles sont identiques, false sinon.
-**/
+ **/
function balise_identique($balise1, $balise2) {
if (is_array($balise1)) {
- foreach ($balise1 as $_attribut1 => $_valeur1){
- if (!array_key_exists($_attribut1, $balise2))
+ foreach ($balise1 as $_attribut1 => $_valeur1) {
+ if (!array_key_exists($_attribut1, $balise2)) {
return false;
- else
- if ($_valeur1 != $balise2[$_attribut1])
+ } else {
+ if ($_valeur1 != $balise2[$_attribut1]) {
return false;
+ }
+ }
}
+
return true;
- }
- else
+ } else {
return ($balise1 == $balise2);
+ }
}
@@ -375,30 +404,35 @@ function definir_licence($prefixe, $nom, $suffixe, $version) {
$suffixe = strtolower($suffixe);
if (((trim($prefixe) == 'creative common') AND ($nom == 'attribution'))
- OR (($prefixe == 'cc') AND ($nom == 'by')))
+ OR (($prefixe == 'cc') AND ($nom == 'by'))
+ ) {
$nom = 'ccby';
+ }
if (array_key_exists($nom, $licences_plugin)) {
if (!$licences_plugin[$nom]['versions']) {
// La licence n'est pas versionnee : on affecte donc directement le nom et l'url
$licence['nom'] = $licences_plugin[$nom]['nom'];
$licence['url'] = $licences_plugin[$nom]['url'];
- }
- else {
+ } else {
// Si la version est pas bonne on prend la plus recente
- if (!$version OR !in_array($version, $licences_plugin[$nom]['versions'], true))
+ if (!$version OR !in_array($version, $licences_plugin[$nom]['versions'], true)) {
$version = $licences_plugin[$nom]['versions'][0];
- if (is_array($licences_plugin[$nom]['nom']))
+ }
+ if (is_array($licences_plugin[$nom]['nom'])) {
$licence['nom'] = $licences_plugin[$nom]['nom'][$version];
- else
+ } else {
$licence['nom'] = str_replace('@version@', $version, $licences_plugin[$nom]['nom']);
+ }
$licence['url'] = str_replace('@version@', $version, $licences_plugin[$nom]['url']);
if ($nom == 'ccby') {
- if ($suffixe == '-sharealike')
+ if ($suffixe == '-sharealike') {
$suffixe = '-sa';
- if (!$suffixe OR !in_array($suffixe, $licences_plugin[$nom]['suffixes'], true))
+ }
+ if (!$suffixe OR !in_array($suffixe, $licences_plugin[$nom]['suffixes'], true)) {
$suffixe = '';
+ }
$licence['nom'] = str_replace('@suffixe@', strtoupper($suffixe), $licence['nom']);
$licence['url'] = str_replace('@suffixe@', $suffixe, $licence['url']);
}
@@ -409,34 +443,35 @@ function definir_licence($prefixe, $nom, $suffixe, $version) {
}
/**
- * Liste les librairies présentes
+ * Liste les librairies présentes
*
* Cherche des librairie dans tous les dossiers 'lib' présents dans chaque
* chemin déclaré (plugins, squelettes, SPIP). Un répertoire dans un dossier
* 'lib' est considéré comme une librairie, et le nom de ce répertoire est
* utilisé comme nom de la librairie.
- *
+ *
* @return array
* Tableau de couples (nom de la librairie => répertoire de la librairie)
-**/
+ **/
function svp_lister_librairies() {
$libs = array();
foreach (array_reverse(creer_chemin()) as $d) {
- if (is_dir($dir = $d.'lib/') AND $t = @opendir($dir)) {
+ if (is_dir($dir = $d . 'lib/') AND $t = @opendir($dir)) {
while (($f = readdir($t)) !== false) {
- if ($f[0] != '.' AND is_dir("$dir/$f"))
+ if ($f[0] != '.' AND is_dir("$dir/$f")) {
$libs[$f] = $dir;
+ }
}
}
}
+
return $libs;
}
-
/**
* Retourne '00x.00y.00z' Ã partir de 'x.y.z'
- *
+ *
* Retourne la chaine de la version x.y.z sous une forme normalisée
* permettant le tri naturel. On complète à gauche d'un nombre de zéro
* manquant pour aller à 3 caractères entre chaque point.
@@ -446,7 +481,7 @@ function svp_lister_librairies() {
* Numéro de version dénormalisée
* @return string
* Numéro de version normalisée
-**/
+ **/
function normaliser_version($version = '') {
$version_normalisee = '';
@@ -454,12 +489,13 @@ function normaliser_version($version = '') {
if (preg_match(',([0-9.]+)[\s-.]?(dev|alpha|a|beta|b|rc|pl|p)?,i', $version, $matches)) {
if (isset($matches[1]) and $matches[1]) {
$v = explode('.', $matches[1]);
- foreach($v as $_nombre) {
+ foreach ($v as $_nombre) {
$vn[] = str_pad($_nombre, 3, '0', STR_PAD_LEFT);
}
$version_normalisee = implode('.', $vn);
- if (isset($matches[2]) and $matches[2])
- $version_normalisee = $version_normalisee . '-' . $matches[2];
+ if (isset($matches[2]) and $matches[2]) {
+ $version_normalisee = $version_normalisee . '-' . $matches[2];
+ }
}
}
diff --git a/inc/svp_phraser.php b/inc/svp_phraser.php
index 29b826c..23f69f0 100644
--- a/inc/svp_phraser.php
+++ b/inc/svp_phraser.php
@@ -3,13 +3,15 @@
/**
* Fichier permettant de phraser les XML des fichiers paquet.xml et plugin.xml
* ainsi que des fichiers décrivant le contenu d'un dépot de paquets.
- *
+ *
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Plugins
-**/
+ **/
-if (!defined("_ECRIRE_INC_VERSION")) return;
+if (!defined("_ECRIRE_INC_VERSION")) {
+ return;
+}
include_spip('inc/xml');
include_spip('inc/config');
@@ -21,7 +23,9 @@ if (!defined('_SVP_MODE_RUNTIME')) {
* - En mode runtime (true), on ne charge que les plugins compatibles avec la version courante
* - En mode non runtime (false) on charge tous les plugins : cas du site Plugins SPIP
* Runtime est le mode par defaut
- * @var bool */
+ *
+ * @var bool
+ */
define('_SVP_MODE_RUNTIME', false);
} else {
define('_SVP_MODE_RUNTIME', (lire_config('svp/mode_runtime', 'oui') == 'oui' ? true : false));
@@ -31,9 +35,9 @@ if (!defined('_SVP_MODE_RUNTIME')) {
// Type parseur XML à appliquer pour récupérer les infos du plugin
/** @var string Phraseur à utiliser pour un XML de plugin.xml */
-define('_SVP_DTD_PLUGIN', 'plugin');
+define('_SVP_DTD_PLUGIN', 'plugin');
/** @var string Phraseur à utiliser pour un XML de paquet.xml */
-define('_SVP_DTD_PAQUET', 'paquet');
+define('_SVP_DTD_PAQUET', 'paquet');
// Regexp de recherche des balises principales de archives.xml
define('_SVP_REGEXP_BALISE_DEPOT', '#
]*>(.*)#Uims');
@@ -67,26 +71,39 @@ $GLOBALS['categories_plugin'] = array(
/** Liste des balises techniques autorisées dans la balise
*/
$GLOBALS['balises_techniques'] = array(
- 'menu', 'chemin', 'lib', 'necessite', 'onglet', 'procure', 'pipeline', 'utilise',
- 'options', 'fonctions', 'install');
+ 'menu',
+ 'chemin',
+ 'lib',
+ 'necessite',
+ 'onglet',
+ 'procure',
+ 'pipeline',
+ 'utilise',
+ 'options',
+ 'fonctions',
+ 'install'
+);
# define('_BALISES_TECHNIQUES', serialize($balises_techniques));
-
+
/** Liste des balises autorisant une traduction */
$GLOBALS['balises_multis'] = array(
- 'nom', 'slogan', 'description');
+ 'nom',
+ 'slogan',
+ 'description'
+);
# define('_BALISES_MULTIS', serialize($balises_multis));
/**
* Phrase un fichier décrivant un dépot, dont le chemin local est donné
- *
+ *
* Le fichier est au format XML et contient deux balises principales :
* - ... : informations de description du depot (facultatif)
* - ... : liste des informations sur chaque archive (obligatoire)
*
* La fonction met en cache le résultat du phrasage de chaque archive et ne
* rephrase que les archives ayant changées.
- *
+ *
* @uses svp_aplatir_balises()
* @uses svp_phraser_archives()
* @param string $fichier_xml
@@ -95,20 +112,22 @@ $GLOBALS['balises_multis'] = array(
* false si erreur,
* Tableau de 2 index sinon :
* - depot : description du dépot
- * - paquets :
+ * - paquets :
*/
function svp_phraser_depot($fichier_xml) {
// le fichier xml fournit sous forme de fichier
- lire_fichier($fichier_xml,$xml);
+ lire_fichier($fichier_xml, $xml);
// Initialisation du tableau des informations
// -- Si aucun bloc depot n'est trouve le titre et le type prennent une valeur par defaut
$infos = array(
- 'depot' => array(
- 'titre' => _T('svp:titre_nouveau_depot'),
- 'type' => 'manuel'),
- 'paquets' => array());
+ 'depot' => array(
+ 'titre' => _T('svp:titre_nouveau_depot'),
+ 'type' => 'manuel'
+ ),
+ 'paquets' => array()
+ );
// Extraction et phrasage du bloc depot si il existe
@@ -124,22 +143,26 @@ function svp_phraser_depot($fichier_xml) {
// -- Le bloc peut etre une chaine de grande taille et provoquer une erreur
// sur une recherche de regexp. On ne teste donc pas l'existence de cette balise
// -- Si aucun bloc c'est aussi une erreur
- if (!preg_match_all(_SVP_REGEXP_BALISE_ARCHIVE, $xml, $matches))
+ if (!preg_match_all(_SVP_REGEXP_BALISE_ARCHIVE, $xml, $matches)) {
return false;
+ }
// lire le cache des md5 pour ne parser que ce qui a change
$fichier_xml_md5 = $fichier_xml . ".md5.txt";
- lire_fichier($fichier_xml_md5,$cache_md5);
+ lire_fichier($fichier_xml_md5, $cache_md5);
if (!$cache_md5
- OR !$cache_md5 = unserialize($cache_md5))
+ OR !$cache_md5 = unserialize($cache_md5)
+ ) {
$cache_md5 = array();
+ }
$infos['paquets'] = svp_phraser_archives($matches[0], $cache_md5);
- ecrire_fichier($fichier_xml_md5,serialize($cache_md5));
+ ecrire_fichier($fichier_xml_md5, serialize($cache_md5));
// -- Si aucun paquet extrait c'est aussi une erreur
- if (!$infos['paquets'])
+ if (!$infos['paquets']) {
return false;
+ }
return $infos;
}
@@ -171,36 +194,38 @@ function svp_phraser_archives($archives, &$md5_cache = array()) {
$seen = array();
$paquets = array();
- $version_spip = $GLOBALS['spip_version_branche'].".".$GLOBALS['spip_version_code'];
+ $version_spip = $GLOBALS['spip_version_branche'] . "." . $GLOBALS['spip_version_code'];
// On verifie qu'il existe au moins une archive
- if (!$archives)
+ if (!$archives) {
return $paquets;
+ }
// On phrase chacune des archives
// Seul le bloc est obligatoire
- foreach ($archives as $_cle => $_archive){
+ foreach ($archives as $_cle => $_archive) {
// quand version spip ou mode runtime changent,
// il faut mettre le xml a jour pour voir les plugins compatibles ou non
- $md5 = md5($_archive.":$version_spip:"._SVP_MODE_RUNTIME);
- if (isset($md5_cache[$md5])){
- if (is_array($p=$md5_cache[$md5]))
- $paquets[$p['file']] = $p; // ce paquet est connu
+ $md5 = md5($_archive . ":$version_spip:" . _SVP_MODE_RUNTIME);
+ if (isset($md5_cache[$md5])) {
+ if (is_array($p = $md5_cache[$md5])) {
+ $paquets[$p['file']] = $p;
+ } // ce paquet est connu
$seen[] = $md5;
- }
- elseif (preg_match(_SVP_REGEXP_BALISE_ZIP, $_archive, $matches)) {
+ } elseif (preg_match(_SVP_REGEXP_BALISE_ZIP, $_archive, $matches)) {
// Extraction de la balise
$zip = svp_phraser_zip($matches[1]);
if ($zip) {
-
+
// Extraction de la balise traductions
$traductions = array();
- if (preg_match(_SVP_REGEXP_BALISE_TRADUCTIONS, $_archive, $matches))
+ if (preg_match(_SVP_REGEXP_BALISE_TRADUCTIONS, $_archive, $matches)) {
$traductions = svp_phraser_traductions($matches[1]);
+ }
+
-
// La balise peut posseder un attribut qui precise la DTD utilisee pour les plugins (plugin ou paquet)
// Sinon, c'est la DTD plugin qui est utilisee
list($tag, $attributs) = spip_xml_decompose_tag($_archive);
@@ -210,12 +235,14 @@ function svp_phraser_archives($archives, &$md5_cache = array()) {
// Extraction *des balises* plugin ou *de la balise* paquet suivant la DTD et la version SPIP
// -- DTD : si on utilise plugin.xml on extrait la balise sinon la balise
$xml = svp_phraser_plugin($dtd, $_archive);
-
+
// Si on est en mode runtime, on est seulement interesse par les plugins compatibles avec
// la version courant de SPIP. On ne stocke donc pas les autres plugins.
// Si on est pas en mode runtime on prend tout !
if (!_SVP_MODE_RUNTIME
- OR (_SVP_MODE_RUNTIME AND isset($xml['compatibilite']) AND plugin_version_compatible($xml['compatibilite'], $version_spip, 'spip'))) {
+ OR (_SVP_MODE_RUNTIME AND isset($xml['compatibilite']) AND plugin_version_compatible($xml['compatibilite'],
+ $version_spip, 'spip'))
+ ) {
$paquets[$zip['file']] = $zip;
$paquets[$zip['file']]['traductions'] = $traductions;
$paquets[$zip['file']]['dtd'] = $dtd;
@@ -223,8 +250,7 @@ function svp_phraser_archives($archives, &$md5_cache = array()) {
$paquets[$zip['file']]['md5'] = $md5;
$md5_cache[$md5] = $paquets[$zip['file']];
$seen[] = $md5;
- }
- else{
+ } else {
$md5_cache[$md5] = $zip['file'];
$seen[] = $md5;
}
@@ -233,8 +259,8 @@ function svp_phraser_archives($archives, &$md5_cache = array()) {
}
// supprimer du cache les zip qui ne sont pas dans le nouveau $archives
- $oldies = array_diff(array_keys($md5_cache),$seen);
- foreach ($oldies as $old_md5){
+ $oldies = array_diff(array_keys($md5_cache), $seen);
+ foreach ($oldies as $old_md5) {
unset($md5_cache[$old_md5]);
}
@@ -242,7 +268,6 @@ function svp_phraser_archives($archives, &$md5_cache = array()) {
}
-
/**
* Phrase le contenu du XML décrivant une archive suivant une DTD
* de plugin.xml ou de paquet.xml donnée
@@ -252,23 +277,23 @@ function svp_phraser_archives($archives, &$md5_cache = array()) {
* les traductions du nom, slogan et description
*
* @uses svp_aplatir_balises()
- *
+ *
* @global $balises_multis
* @static array $informer
- *
+ *
* @param string $dtd
* Nom du type de dtd : plugin ou paquet (pour phraser un plugin.xml ou un paquet.xml)
* @param string $contenu
* Contenu XML Ã phraser
* @return array
* Description du plugin
-**/
+ **/
function svp_phraser_plugin($dtd, $contenu) {
global $balises_multis;
static $informer = array();
-
+
$plugin = array();
-
+
// On initialise les informations du plugin avec le contenu du plugin.xml ou paquet.xml
$regexp = ($dtd == 'plugin') ? _SVP_REGEXP_BALISE_PLUGIN : _SVP_REGEXP_BALISE_PAQUET;
if ($nb_balises = preg_match_all($regexp, $contenu, $matches)) {
@@ -288,20 +313,23 @@ function svp_phraser_plugin($dtd, $contenu) {
// -- sinon on arrange la structure pour deplacer le contenu des balises dites techniques dans un sous tableau
// d'index 0 par similitude avec la structure fusionnee
$fusionner = charger_fonction('fusion_' . $dtd, 'plugins');
- if ($dtd == 'plugin')
+ if ($dtd == 'plugin') {
$plugin = $fusionner($plugins);
- else
+ } else {
$plugin = $fusionner($plugins[0]);
+ }
// Pour la DTD paquet, les traductions du nom, slogan et description sont compilees dans une balise
// du fichier archives.xml. Il faut donc completer les informations precedentes avec cette balise
if (($dtd == _SVP_DTD_PAQUET) AND (preg_match(_SVP_REGEXP_BALISE_MULTIS, $contenu, $matches))) {
$multis = array();
- if (is_array($arbre = spip_xml_parse($matches[1])))
+ if (is_array($arbre = spip_xml_parse($matches[1]))) {
$multis = svp_aplatir_balises($balises_multis, $arbre);
+ }
// Le nom peut etre traduit ou pas, il faut donc le tester
- if ($multis['nom'])
+ if ($multis['nom']) {
$plugin['nom'] = $multis['nom'];
+ }
// Slogan et description sont forcement des items de langue
$plugin['slogan'] = $multis['slogan'];
$plugin['description'] = $multis['description'];
@@ -316,9 +344,9 @@ function svp_phraser_plugin($dtd, $contenu) {
* Phrase le contenu de la balise
*
* Extrait du XML les informations du zip
- *
+ *
* @uses svp_aplatir_balises()
- *
+ *
* @param string $contenu
* Description XML de l'archive
* @return array
@@ -331,10 +359,11 @@ function svp_phraser_plugin($dtd, $contenu) {
*/
function svp_phraser_zip($contenu) {
static $balises_zip = array('file', 'size', 'date', 'source', 'last_commit');
-
+
$zip = array();
- if (is_array($arbre = spip_xml_parse($contenu)))
+ if (is_array($arbre = spip_xml_parse($contenu))) {
$zip = svp_aplatir_balises($balises_zip, $arbre);
+ }
return $zip;
}
@@ -355,15 +384,15 @@ function svp_phraser_zip($contenu) {
* l'ensemble des traducteurs pour chacune des langues présentes
*/
function svp_phraser_traductions($contenu) {
-
+
$traductions = array();
if (is_array($arbre = spip_xml_parse($contenu))) {
foreach ($arbre as $_tag => $_langues) {
// On commence par les balises et leurs attributs
list($tag, $attributs_traduction) = spip_xml_decompose_tag($_tag);
$traductions[$attributs_traduction['module']]['reference'] = $attributs_traduction['reference'];
- $traductions[$attributs_traduction['module']]['gestionnaire'] = isset($attributs_traduction['gestionnaire']) ? $attributs_traduction['gestionnaire'] : '' ;
-
+ $traductions[$attributs_traduction['module']]['gestionnaire'] = isset($attributs_traduction['gestionnaire']) ? $attributs_traduction['gestionnaire'] : '';
+
// On continue par les balises qui donnent le code en attribut
// et les balises qui donnent uniquement le nom en attribut
if (is_array($_langues[0])) {
@@ -388,11 +417,11 @@ function svp_phraser_traductions($contenu) {
/**
* Aplatit plusieurs clés d'un arbre xml dans un tableau
- *
+ *
* Effectue un trim() de la valeur trouvée dans l'arbre
*
* @uses spip_xml_aplatit()
- *
+ *
* @param array $balises
* Liste de noms de balises XML.
* Peut aussi être un tableau indiquant un renommage d'une balise
@@ -414,20 +443,23 @@ function svp_phraser_traductions($contenu) {
function svp_aplatir_balises($balises, $arbre_xml, $mode = 'vide_et_nonvide', $tableau_initial = array()) {
$tableau_aplati = array();
- if (!$balises)
+ if (!$balises) {
return $tableau_initial;
+ }
- foreach ($balises as $_cle => $_valeur){
+ foreach ($balises as $_cle => $_valeur) {
$tag = (is_string($_cle)) ? $_cle : $_valeur;
$valeur_aplatie = '';
if (isset($arbre_xml[$tag])) {
$valeur_aplatie = trim(spip_xml_aplatit($arbre_xml[$tag]));
}
if (($mode == 'vide_et_nonvide')
- OR (($mode == 'nonvide') AND $valeur_aplatie))
+ OR (($mode == 'nonvide') AND $valeur_aplatie)
+ ) {
$tableau_aplati[$_valeur] = $valeur_aplatie;
- else
+ } else {
$tableau_aplati[$_valeur] = isset($tableau_initial[$_valeur]) ? $tableau_initial[$_valeur] : '';
+ }
}
return $tableau_aplati;
diff --git a/inc/svp_rechercher.php b/inc/svp_rechercher.php
index 68a6543..094ddd7 100644
--- a/inc/svp_rechercher.php
+++ b/inc/svp_rechercher.php
@@ -6,9 +6,11 @@
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Recherche
-**/
+ **/
-if (!defined("_ECRIRE_INC_VERSION")) return;
+if (!defined("_ECRIRE_INC_VERSION")) {
+ return;
+}
include_spip('inc/plugin');
// ----------------------- Recherches de plugins ---------------------------------
@@ -25,7 +27,7 @@ include_spip('inc/plugin');
*
* @uses liste_des_champs()
* @uses recherche_en_base()
- *
+ *
* @param string $phrase
* Texte de la recherche
* @param string $categorie
@@ -46,18 +48,26 @@ include_spip('inc/plugin');
* ou seulement la plus récente (false) ?
* @param string $tri
* Ordre du tri : nom | score
- *
+ *
* @return array
* Tableau classé par pertinence de résultat
* - 'prefixe' => tableau de description du paquet (si pas de doublons demandé)
* - n => tableau de descriptions du paquet (si doublons autorisés)
-**/
-function svp_rechercher_plugins_spip($phrase, $categorie, $etat, $depot, $version_spip = '',
- $exclusions=array(), $afficher_exclusions=false, $doublon=false, $tri='nom')
-{
+ **/
+function svp_rechercher_plugins_spip(
+ $phrase,
+ $categorie,
+ $etat,
+ $depot,
+ $version_spip = '',
+ $exclusions = array(),
+ $afficher_exclusions = false,
+ $doublon = false,
+ $tri = 'nom'
+) {
include_spip('inc/rechercher');
-
+
$plugins = array();
$scores = array();
$ids_paquets = array();
@@ -68,7 +78,7 @@ function svp_rechercher_plugins_spip($phrase, $categorie, $etat, $depot, $versio
$liste = liste_des_champs();
$tables = array('plugin' => $liste['plugin']);
$options = array('jointures' => true, 'score' => true);
-
+
// On cherche dans tous les enregistrements de ces tables des correspondances les plugins qui
// correspondent a la phrase recherchee
// -- On obtient une liste d'id de plugins et d'id de paquets
@@ -97,19 +107,18 @@ function svp_rechercher_plugins_spip($phrase, $categorie, $etat, $depot, $versio
if (array_search($id_paquet, $ids_paquets) === false) {
$ids_paquets[] = $id_paquet;
$scores[$id_paquet] = intval($resultats['plugin'][$id_plugin]['score']);
- }
- else {
- $scores[$id_paquet] = intval($resultats['paquet'][$id_paquet]['score'])
- + intval($resultats['plugin'][$id_plugin]['score']);
+ } else {
+ $scores[$id_paquet] = intval($resultats['paquet'][$id_paquet]['score'])
+ +intval($resultats['plugin'][$id_plugin]['score']);
}
}
}
- }
- else {
+ } else {
if ($ids_paquets = sql_allfetsel('id_paquet', 'spip_paquets')) {
$ids_paquets = array_map('reset', $ids_paquets);
- foreach ($ids_paquets as $_id)
+ foreach ($ids_paquets as $_id) {
$scores[$_id] = 0;
+ }
}
}
@@ -119,24 +128,40 @@ function svp_rechercher_plugins_spip($phrase, $categorie, $etat, $depot, $versio
// -- Preparation de la requete
if ($ids_paquets) {
$from = array('spip_plugins AS t1', 'spip_paquets AS t2', 'spip_depots AS t3');
- $select = array('t1.nom AS nom', 't1.slogan AS slogan', 't1.prefixe AS prefixe', 't1.id_plugin AS id_plugin',
- 't2.id_paquet AS id_paquet', 't2.description AS description', 't2.compatibilite_spip AS compatibilite_spip',
- 't2.lien_doc AS lien_doc',
- 't2.auteur AS auteur', 't2.licence AS licence', 't2.etat AS etat',
- 't2.logo AS logo', 't2.version AS version', 't2.nom_archive AS nom_archive',
- 't3.url_archives AS url_archives', );
+ $select = array(
+ 't1.nom AS nom',
+ 't1.slogan AS slogan',
+ 't1.prefixe AS prefixe',
+ 't1.id_plugin AS id_plugin',
+ 't2.id_paquet AS id_paquet',
+ 't2.description AS description',
+ 't2.compatibilite_spip AS compatibilite_spip',
+ 't2.lien_doc AS lien_doc',
+ 't2.auteur AS auteur',
+ 't2.licence AS licence',
+ 't2.etat AS etat',
+ 't2.logo AS logo',
+ 't2.version AS version',
+ 't2.nom_archive AS nom_archive',
+ 't3.url_archives AS url_archives',
+ );
$where = array('t1.id_plugin=t2.id_plugin', 't2.id_depot=t3.id_depot');
- if ($ids_paquets)
+ if ($ids_paquets) {
$where[] = sql_in('t2.id_paquet', $ids_paquets);
- if (($categorie) AND ($categorie != 'toute_categorie'))
+ }
+ if (($categorie) AND ($categorie != 'toute_categorie')) {
$where[] = 't1.categorie=' . sql_quote($categorie);
- if (($etat) AND ($etat != 'tout_etat'))
+ }
+ if (($etat) AND ($etat != 'tout_etat')) {
$where[] = 't2.etat=' . sql_quote($etat);
- if (($depot) AND ($depot != 'tout_depot'))
+ }
+ if (($depot) AND ($depot != 'tout_depot')) {
$where[] = 't2.id_depot=' . sql_quote($depot);
- if ($exclusions AND !$afficher_exclusions)
+ }
+ if ($exclusions AND !$afficher_exclusions) {
$where[] = sql_in('t2.id_plugin', $exclusions, 'NOT');
-
+ }
+
if ($resultats = sql_select($select, $from, $where)) {
while ($paquets = sql_fetch($resultats)) {
$prefixe = $paquets['prefixe'];
@@ -151,43 +176,47 @@ function svp_rechercher_plugins_spip($phrase, $categorie, $etat, $depot, $versio
$paquets['slogan'] = $slogan;
$paquets['description'] = $description;
// -- on ajoute le score si on a bien saisi une phrase
- if ($phrase)
+ if ($phrase) {
$paquets['score'] = $scores[intval($paquets['id_paquet'])];
- else
+ } else {
$paquets['score'] = 0;
+ }
// -- on construit l'url de l'archive
$paquets['url_archive'] = $paquets['url_archives'] . '/' . $paquets['nom_archive'];
// -- on gere les exclusions si elle doivent etre affichees
- if ($afficher_exclusions AND in_array($paquets['id_plugin'], $exclusions))
+ if ($afficher_exclusions AND in_array($paquets['id_plugin'], $exclusions)) {
$paquets['installe'] = true;
- else
+ } else {
$paquets['installe'] = false;
+ }
// -- On traite les doublons (meme plugin, versions differentes)
- if ($doublon)
- // ajout systematique du paquet
+ if ($doublon) // ajout systematique du paquet
+ {
$plugins[] = $paquets;
- else {
+ } else {
// ajout
// - si pas encore trouve
// - ou si sa version est inferieure (on garde que la derniere version)
if (!isset($plugins[$prefixe])
- OR !$plugins[$prefixe]
- OR ($plugins[$prefixe] AND spip_version_compare($plugins[$prefixe]['version'], $version, '<'))) {
+ OR !$plugins[$prefixe]
+ OR ($plugins[$prefixe] AND spip_version_compare($plugins[$prefixe]['version'], $version, '<'))
+ ) {
$plugins[$prefixe] = $paquets;
}
}
}
}
}
-
+
// On trie le tableau par score décroissant ou nom croissant
$fonction = 'svp_trier_par_' . $tri;
- if ($doublon)
+ if ($doublon) {
usort($plugins, $fonction);
- else
+ } else {
uasort($plugins, $fonction);
+ }
}
-
+
return $plugins;
}
@@ -199,7 +228,7 @@ function svp_rechercher_plugins_spip($phrase, $categorie, $etat, $depot, $versio
* @return array
* Liste d'identifiants de plugins
*/
-function svp_lister_plugins_installes(){
+function svp_lister_plugins_installes() {
$ids = array();
@@ -233,15 +262,17 @@ function svp_lister_plugins_installes(){
* true si l'intervalle est compatible, false sinon
*/
function svp_verifier_compatibilite_spip($intervalle, $version_spip = '') {
- if (!$version_spip)
- $version_spip = $GLOBALS['spip_version_branche'].".".$GLOBALS['spip_version_code'];
- return plugin_version_compatible($intervalle, $version_spip,'spip');
+ if (!$version_spip) {
+ $version_spip = $GLOBALS['spip_version_branche'] . "." . $GLOBALS['spip_version_code'];
+ }
+
+ return plugin_version_compatible($intervalle, $version_spip, 'spip');
}
/**
* Callback de tri pour trier les résultats de plugin par score décroissant.
- *
+ *
* Cette fonction est appelée par un usort ou uasort
*
* @param array $p1
@@ -250,19 +281,21 @@ function svp_verifier_compatibilite_spip($intervalle, $version_spip = '') {
* Plugin à comparer
* @return int
*/
-function svp_trier_par_score($p1, $p2){
- if ($p1['score'] == $p2['score'])
+function svp_trier_par_score($p1, $p2) {
+ if ($p1['score'] == $p2['score']) {
$retour = 0;
- else
+ } else {
$retour = ($p1['score'] < $p2['score']) ? 1 : -1;
+ }
+
return $retour;
}
- /**
+/**
* Callback de tri pour trier les résultats de plugin par nom (alphabétique).
*
- * Si le nom est identique on classe par version decroissante
+ * Si le nom est identique on classe par version decroissante
* Cette fonction est appelée par un usort ou uasort
*
* @param array $p1
@@ -271,14 +304,15 @@ function svp_trier_par_score($p1, $p2){
* Plugin à comparer
* @return int
*/
-function svp_trier_par_nom($p1, $p2){
+function svp_trier_par_nom($p1, $p2) {
$c1 = strcasecmp($p1['nom'], $p2['nom']);
if ($c1 == 0) {
$c2 = spip_version_compare($p1['version'], $p1['version'], '<');
$retour = ($c2) ? 1 : -1;
- }
- else
+ } else {
$retour = ($c1 < 0) ? -1 : 1;
+ }
+
return $retour;
}
diff --git a/inc/where_compatible_spip.php b/inc/where_compatible_spip.php
index e08b0c7..0eb036e 100644
--- a/inc/where_compatible_spip.php
+++ b/inc/where_compatible_spip.php
@@ -6,16 +6,18 @@
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Recherche
-**/
+ **/
-if (!defined("_ECRIRE_INC_VERSION")) return;
+if (!defined("_ECRIRE_INC_VERSION")) {
+ return;
+}
/**
* Construit le WHERE d'une requête SQL de selection des plugins ou paquets
* compatibles avec une version ou une branche de spip.
- *
+ *
* Cette fonction est appelée par le critère {compatible_spip}
- *
+ *
* @used-by svp_compter()
* @used-by critere_compatible_spip_dist()
*
@@ -35,33 +37,32 @@ function inc_where_compatible_spip($version = '', $table, $op) {
$min = 'SUBSTRING_INDEX(' . $table . '.compatibilite_spip, \';\', 1)';
$max = 'SUBSTRING_INDEX(' . $table . '.compatibilite_spip, \';\', -1)';
- $where = 'CASE WHEN '.$min.' = \'\'
- OR '.$min.' = \'[\'
- THEN \'1.9.0\' <= \''.$version.'\'
- ELSE TRIM(LEADING \'[\' FROM '.$min.') <= \''.$version.'\'
+ $where = 'CASE WHEN ' . $min . ' = \'\'
+ OR ' . $min . ' = \'[\'
+ THEN \'1.9.0\' <= \'' . $version . '\'
+ ELSE TRIM(LEADING \'[\' FROM ' . $min . ') <= \'' . $version . '\'
END
AND
- CASE WHEN '.$max.' = \'\'
- OR '.$max.' = \']\'
- THEN \'99.99.99\' >= \''.$version.'\'
- WHEN '.$max.' = \')\'
- OR '.$max.' = \'[\'
- THEN \'99.99.99\' > \''.$version.'\'
- WHEN RIGHT('.$max.', 1) = \')\'
- OR RIGHT('.$max.', 1) = \'[\'
- THEN LEFT('.$max.', LENGTH('.$max.') - 1) > \''.$version.'\'
- ELSE LEFT('.$max.', LENGTH('.$max.') - 1) >= \''.$version.'\'
+ CASE WHEN ' . $max . ' = \'\'
+ OR ' . $max . ' = \']\'
+ THEN \'99.99.99\' >= \'' . $version . '\'
+ WHEN ' . $max . ' = \')\'
+ OR ' . $max . ' = \'[\'
+ THEN \'99.99.99\' > \'' . $version . '\'
+ WHEN RIGHT(' . $max . ', 1) = \')\'
+ OR RIGHT(' . $max . ', 1) = \'[\'
+ THEN LEFT(' . $max . ', LENGTH(' . $max . ') - 1) > \'' . $version . '\'
+ ELSE LEFT(' . $max . ', LENGTH(' . $max . ') - 1) >= \'' . $version . '\'
END';
- }
- // le critere s'applique a une BRANCHE (1.9, 2.0, ...)
+ } // le critere s'applique a une BRANCHE (1.9, 2.0, ...)
elseif (count(explode('.', $version)) == 2) {
- $where = 'LOCATE(\''.$version.'\', '.$table.'.branches_spip) '.$op.' 0';
- }
- // le critere est vide ou mal specifie
+ $where = 'LOCATE(\'' . $version . '\', ' . $table . '.branches_spip) ' . $op . ' 0';
+ } // le critere est vide ou mal specifie
else {
$where = '1=1';
}
return $where;
}
+
?>
diff --git a/plugins/fusion_paquet.php b/plugins/fusion_paquet.php
index f569d9d..bc0837d 100644
--- a/plugins/fusion_paquet.php
+++ b/plugins/fusion_paquet.php
@@ -7,9 +7,11 @@
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Plugins
-**/
+ **/
-if (!defined('_ECRIRE_INC_VERSION')) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+ return;
+}
include_spip('inc/plugin');
include_spip('inc/svp_outiller');
@@ -17,10 +19,10 @@ include_spip('inc/svp_outiller');
/**
* Fusion des informations de chaque balise spip d'un paquet.xml en
* considérant la compatibilité SPIP
- *
+ *
* Pour les balises paquets sans balise spip cette fonction permet de générer
* une structure identique pour les balises dites techniques
- *
+ *
* @param array $plugins
* Arbre de description du paquet.xml
* @return array
@@ -31,8 +33,9 @@ function plugins_fusion_paquet($plugins) {
global $balises_techniques;
$fusion = array();
- if (!$plugins)
+ if (!$plugins) {
return $fusion;
+ }
// On initialise les informations a retourner avec l'index 0 du tableau qui contient les donnees communes
// de la balise paquet
@@ -52,16 +55,16 @@ function plugins_fusion_paquet($plugins) {
$fusion[$_btech][0] = $balise;
}
}
- }
- else {
+ } else {
// Balise spip
// On merge les balises techniques existantes en les rangeant dans un sous tableau indexe par
// la compatibilite et ce pour chaque balise
foreach ($_paquet_spip as $_index => $_balise) {
if ($_index AND $_index != 'balise') {
$fusion[$_index][$_compatibilite] = $_balise;
- if (!isset($fusion[$_index][0]))
+ if (!isset($fusion[$_index][0])) {
$fusion[$_index][0] = array();
+ }
}
}
}
diff --git a/plugins/fusion_plugin.php b/plugins/fusion_plugin.php
index 56ffcec..bde8898 100644
--- a/plugins/fusion_plugin.php
+++ b/plugins/fusion_plugin.php
@@ -7,26 +7,28 @@
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Plugins
-**/
+ **/
-if (!defined('_ECRIRE_INC_VERSION')) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+ return;
+}
include_spip('inc/plugin');
include_spip('inc/svp_outiller');
/**
* Fusion des informations de chaque balise plugin d'un plugin.xml en
* considérant la compatibilité SPIP
- *
+ *
* Pour les balises plugins uniques cette fonction permet de générer une structure
* identique pour les balises dites techniques
- *
+ *
* On limite le traitement a deux balises plugins maximum,
* ce qui est le cas de tous les plugin.xml actuellement connus
*
* @uses _SVP_VERSION_SPIP_MIN
* @uses extraire_bornes()
* @uses fusionner_intervalles()
- *
+ *
* @param array $plugins
* Arbre des balises plugins présents dans un plugin.xml
* @return array
@@ -37,8 +39,9 @@ function plugins_fusion_plugin($plugins) {
global $balises_techniques;
$fusion = array();
- if (!$plugins)
+ if (!$plugins) {
return $fusion;
+ }
if (count($plugins) == 1) {
// Balise plugin unique : on ne traite que les balises techniques
@@ -48,20 +51,19 @@ function plugins_fusion_plugin($plugins) {
$balise = $fusion[$_btech];
unset($fusion[$_btech]);
$fusion[$_btech][0] = $balise;
- }
- else {
+ } else {
$fusion[$_btech] = array();
}
}
- }
- else {
+ } else {
// On initialise les informations a retourner avec le bloc a priori le plus recent determine par la compatibilite SPIP :
// On selectionne le bloc dont la borne min de compatibilite SPIP est la plus elevee
$cle_min_max = -1;
$borne_min_max = _SVP_VERSION_SPIP_MIN;
foreach ($plugins as $_cle => $_plugin) {
- if (!$_plugin['compatibilite'])
+ if (!$_plugin['compatibilite']) {
$borne_min = _SVP_VERSION_SPIP_MIN;
+ }
$bornes_spip = extraire_bornes($_plugin['compatibilite']);
$borne_min = ($bornes_spip['min']['valeur']) ? $bornes_spip['min']['valeur'] : _SVP_VERSION_SPIP_MIN;
if (spip_version_compare($borne_min_max, $borne_min, '<=')) {
@@ -79,11 +81,13 @@ function plugins_fusion_plugin($plugins) {
// -- categorie, logo : si la valeur du bloc selectionne est vide on essaye d'en trouver une non vide dans les autres blocs
// -- compatible : on constuit l'intervalle global de compatibilite SPIP
// -- necessite, utilise, lib : on construit le tableau par intervalle de compatibilite SPIP
- $cle_min_min = ($cle_min_max==0) ? 1 : 0;
- if (!$fusion['categorie'] AND $plugins[$cle_min_min]['categorie'])
+ $cle_min_min = ($cle_min_max == 0) ? 1 : 0;
+ if (!$fusion['categorie'] AND $plugins[$cle_min_min]['categorie']) {
$fusion['categorie'] = $plugins[$cle_min_min]['categorie'];
- if ((!isset($fusion['logo']) OR !$fusion['logo']) AND $plugins[$cle_min_min]['logo'])
+ }
+ if ((!isset($fusion['logo']) OR !$fusion['logo']) AND $plugins[$cle_min_min]['logo']) {
$fusion['logo'] = $plugins[$cle_min_min]['logo'];
+ }
$fusion['compatibilite'] = fusionner_intervalles($fusion['compatibilite'], $plugins[$cle_min_min]['compatibilite']);
// necessite, utilise, lib, chemin, pipeline, bouton, onglet : on indexe chaque liste de dependances
@@ -92,58 +96,60 @@ function plugins_fusion_plugin($plugins) {
if (!isset($fusion[$_btech]) AND !isset($plugins[$cle_min_min][$_btech])) {
// Aucun des tableaux ne contient cette balise technique : on la positionne a un array vide
$fusion[$_btech] = array();
- }
- else if (!isset($fusion[$_btech]) OR !$fusion[$_btech]) {
- if ($plugins[$cle_min_min][$_btech]) {
- // La balise technique est vide dans le tableau de fusion mais non vide dans la deuxieme balise plugin
- // On range cette balise dans le tableau fusion de sa compatibilite et on cree la cle commune vide
- $fusion[$_btech][$plugins[$cle_min_min]['compatibilite']] = $plugins[$cle_min_min][$_btech];
- $fusion[$_btech][0] = array();
- }
- }
- else if (!isset($plugins[$cle_min_min][$_btech]) OR !$plugins[$cle_min_min][$_btech]) {
- // La balise technique est non vide dans le tableau de fusion mais vide dans la deuxieme balise plugin
- // On deplace cette balise dans le tableau fusion de sa compatibilite et on cree la cle commune vide
- $balise = $fusion[$_btech];
- unset($fusion[$_btech]);
- $fusion[$_btech][$plugins[$cle_min_max]['compatibilite']] = $balise;
- $fusion[$_btech][0] = array();
- }
- else {
- // Les deux tableaux contiennent une balise technique non vide : il faut fusionner cette balise technique !
- // On parcourt le premier tableau (fusion) en verifiant une egalite avec le deuxieme tableau
- foreach ($fusion[$_btech] as $_cle0 => $_balise0) {
- $balise_commune = false;
- foreach ($plugins[$cle_min_min][$_btech] as $_cle1 => $_balise1) {
- if (balise_identique($_balise0, $_balise1)) {
- // On classe cette balise dans le bloc commun (index 0) et on la supprime dans les
- // 2 tableaux en cours de comparaison
- unset($fusion[$_btech][$_cle0]);
- $fusion[$_btech][0][] = $_balise1;
- unset($plugins[$cle_min_min][$_btech][$_cle1]);
- $balise_commune = true;
- break;
- }
- }
- if (!$balise_commune) {
- $fusion[$_btech][$plugins[$cle_min_max]['compatibilite']][] = $_balise0;
- unset($fusion[$_btech][$_cle0]);
+ } else {
+ if (!isset($fusion[$_btech]) OR !$fusion[$_btech]) {
+ if ($plugins[$cle_min_min][$_btech]) {
+ // La balise technique est vide dans le tableau de fusion mais non vide dans la deuxieme balise plugin
+ // On range cette balise dans le tableau fusion de sa compatibilite et on cree la cle commune vide
+ $fusion[$_btech][$plugins[$cle_min_min]['compatibilite']] = $plugins[$cle_min_min][$_btech];
+ $fusion[$_btech][0] = array();
}
- if (!isset($fusion[$_btech][0]))
+ } else {
+ if (!isset($plugins[$cle_min_min][$_btech]) OR !$plugins[$cle_min_min][$_btech]) {
+ // La balise technique est non vide dans le tableau de fusion mais vide dans la deuxieme balise plugin
+ // On deplace cette balise dans le tableau fusion de sa compatibilite et on cree la cle commune vide
+ $balise = $fusion[$_btech];
+ unset($fusion[$_btech]);
+ $fusion[$_btech][$plugins[$cle_min_max]['compatibilite']] = $balise;
$fusion[$_btech][0] = array();
- }
+ } else {
+ // Les deux tableaux contiennent une balise technique non vide : il faut fusionner cette balise technique !
+ // On parcourt le premier tableau (fusion) en verifiant une egalite avec le deuxieme tableau
+ foreach ($fusion[$_btech] as $_cle0 => $_balise0) {
+ $balise_commune = false;
+ foreach ($plugins[$cle_min_min][$_btech] as $_cle1 => $_balise1) {
+ if (balise_identique($_balise0, $_balise1)) {
+ // On classe cette balise dans le bloc commun (index 0) et on la supprime dans les
+ // 2 tableaux en cours de comparaison
+ unset($fusion[$_btech][$_cle0]);
+ $fusion[$_btech][0][] = $_balise1;
+ unset($plugins[$cle_min_min][$_btech][$_cle1]);
+ $balise_commune = true;
+ break;
+ }
+ }
+ if (!$balise_commune) {
+ $fusion[$_btech][$plugins[$cle_min_max]['compatibilite']][] = $_balise0;
+ unset($fusion[$_btech][$_cle0]);
+ }
+ if (!isset($fusion[$_btech][0])) {
+ $fusion[$_btech][0] = array();
+ }
+ }
- // On traite maintenant les balises restantes du deuxieme tableau
- if ($plugins[$cle_min_min][$_btech]) {
- foreach ($plugins[$cle_min_min][$_btech] as $_balise2) {
- $fusion[$_btech][$plugins[$cle_min_min]['compatibilite']][] = $_balise2;
+ // On traite maintenant les balises restantes du deuxieme tableau
+ if ($plugins[$cle_min_min][$_btech]) {
+ foreach ($plugins[$cle_min_min][$_btech] as $_balise2) {
+ $fusion[$_btech][$plugins[$cle_min_min]['compatibilite']][] = $_balise2;
+ }
+ }
}
}
}
}
}
-
+
return $fusion;
}
diff --git a/plugins/preparer_sql_paquet.php b/plugins/preparer_sql_paquet.php
index ff619a0..98ae1ae 100644
--- a/plugins/preparer_sql_paquet.php
+++ b/plugins/preparer_sql_paquet.php
@@ -7,68 +7,68 @@
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Plugins
-**/
-if (!defined('_ECRIRE_INC_VERSION')) return;
+ **/
+if (!defined('_ECRIRE_INC_VERSION')) {
+ return;
+}
/**
* Pour une description de plugin donnée (issue de la dtd de paquet.xml),
- * prépare les données à installer en bdd
+ * prépare les données à installer en bdd
*
* Les données sont parfois sérialisées, parfois compilées
* pour tenir compte des spécificités de cette DTD et du stockage en bdd.
- *
+ *
* @param array $plugin
* Description de plugin
* @return array
* Couples clés => valeurs de description du paquet
-**/
-function plugins_preparer_sql_paquet($plugin)
-{
+ **/
+function plugins_preparer_sql_paquet($plugin) {
include_spip('inc/svp_outiller');
$champs = array();
- if (!$plugin)
+ if (!$plugin) {
return $champs;
+ }
// On initialise les champs ne necessitant aucune transformation
foreach (array(
- 'categorie' => 'categorie',
- 'etat' => 'etat',
- 'version_base' => 'schema',
- 'logo' => 'logo',
- 'lien_doc' => 'documentation',
- 'lien_demo' => 'demonstration',
- 'lien_dev' => 'developpement'
- ) as $cle_champ => $cle_plugin)
- {
- $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
+ 'categorie' => 'categorie',
+ 'etat' => 'etat',
+ 'version_base' => 'schema',
+ 'logo' => 'logo',
+ 'lien_doc' => 'documentation',
+ 'lien_demo' => 'demonstration',
+ 'lien_dev' => 'developpement'
+ ) as $cle_champ => $cle_plugin) {
+ $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
? $plugin[$cle_plugin]
: '';
}
// on normalise la version 1.3.12 => 001.003.012
$champs['version'] = (isset($plugin['version']) AND $plugin['version'])
- ? normaliser_version($plugin['version'])
- : '';
+ ? normaliser_version($plugin['version'])
+ : '';
// On passe le prefixe en lettres majuscules comme ce qui est fait dans SPIP
// Ainsi les valeurs dans la table spip_plugins coincideront avec celles de la meta plugin
$champs['prefixe'] = strtoupper($plugin['prefix']);
// Indicateurs d'etat numerique (pour simplifier la recherche des maj de STP)
- static $num = array('stable'=>4, 'test'=>3, 'dev'=>2, 'experimental'=>1);
+ static $num = array('stable' => 4, 'test' => 3, 'dev' => 2, 'experimental' => 1);
$champs['etatnum'] = isset($num[$plugin['etat']]) ? $num[$plugin['etat']] : 0;
// On passe en utf-8 avec le bon charset les champs pouvant contenir des entites html
foreach (array(
- 'nom' => 'nom',
- 'description' => 'description',
- 'slogan' => 'slogan'
- ) as $cle_champ => $cle_plugin)
- {
- $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
- ? entite2charset($plugin[$cle_plugin],'utf-8')
+ 'nom' => 'nom',
+ 'description' => 'description',
+ 'slogan' => 'slogan'
+ ) as $cle_champ => $cle_plugin) {
+ $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
+ ? entite2charset($plugin[$cle_plugin], 'utf-8')
: '';
}
@@ -76,39 +76,39 @@ function plugins_preparer_sql_paquet($plugin)
// Tags : liste de mots-cles
// Traitement des auteurs, credits, licences et copyright
foreach (array(
- 'tags' => 'tags',
- 'auteur' => 'auteur',
- 'credit' => 'credit',
- 'licence' => 'licence',
- 'copyright' => 'copyright',
- ) as $cle_champ => $cle_plugin)
- {
- $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
+ 'tags' => 'tags',
+ 'auteur' => 'auteur',
+ 'credit' => 'credit',
+ 'licence' => 'licence',
+ 'copyright' => 'copyright',
+ ) as $cle_champ => $cle_plugin) {
+ $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
? serialize($plugin[$cle_plugin])
: '';
}
// Extraction de la compatibilite SPIP et construction de la liste des branches spip supportees
$champs['compatibilite_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
- ? $plugin['compatibilite']
- : '';
- $champs['branches_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
- ? compiler_branches_spip($plugin['compatibilite'])
- : '';
-
+ ? $plugin['compatibilite']
+ : '';
+ $champs['branches_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
+ ? compiler_branches_spip($plugin['compatibilite'])
+ : '';
+
// Construction du tableau des dependances necessite, lib et utilise
$dependances['necessite'] = $plugin['necessite'];
$dependances['librairie'] = $plugin['lib'];
- $dependances['utilise'] = $plugin['utilise'];
- $champs['dependances'] = serialize($dependances);
+ $dependances['utilise'] = $plugin['utilise'];
+ $champs['dependances'] = serialize($dependances);
$champs['procure'] = '';
- if (isset($plugin['procure']) AND $plugin['procure']){
+ if (isset($plugin['procure']) AND $plugin['procure']) {
$champs['procure'] = array();
- foreach($plugin['procure'] as $procure){
+ foreach ($plugin['procure'] as $procure) {
$p = strtoupper($procure['nom']);
if (!isset($champs['procure'][$p])
- OR spip_version_compare($procure['version'],$champs['procure'][$p],'>')){
+ OR spip_version_compare($procure['version'], $champs['procure'][$p], '>')
+ ) {
$champs['procure'][$p] = $procure['version'];
}
}
diff --git a/plugins/preparer_sql_plugin.php b/plugins/preparer_sql_plugin.php
index 933a8e5..9ea3079 100644
--- a/plugins/preparer_sql_plugin.php
+++ b/plugins/preparer_sql_plugin.php
@@ -7,31 +7,33 @@
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Plugins
-**/
+ **/
-if (!defined('_ECRIRE_INC_VERSION')) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+ return;
+}
/**
* Pour une description de plugin donnée (issue de la dtd de plugin.xml),
- * prépare les données à installer en bdd
+ * prépare les données à installer en bdd
*
* Les données sont parfois sérialisées, parfois transcodées, parfois compilées
* pour tenir compte des spécificités de cette DTD et du stockage en bdd.
- *
+ *
* @uses compiler_branches_spip()
* @param array $plugin
* Description de plugin
* @return array
* Couples clés => valeurs de description du paquet
-**/
-function plugins_preparer_sql_plugin($plugin)
-{
+ **/
+function plugins_preparer_sql_plugin($plugin) {
include_spip('inc/svp_outiller');
$champs = array();
- if (!$plugin)
+ if (!$plugin) {
return $champs;
-
+ }
+
// On initialise les champs ne necessitant aucune transformation
$champs['categorie'] = (isset($plugin['categorie']) and $plugin['categorie']) ? $plugin['categorie'] : '';
$champs['etat'] = (isset($plugin['etat']) and $plugin['etat']) ? $plugin['etat'] : '';
@@ -46,44 +48,47 @@ function plugins_preparer_sql_plugin($plugin)
$champs['prefixe'] = strtoupper($plugin['prefix']);
// Indicateurs d'etat numerique (pour simplifier la recherche des maj de STP)
- static $num = array('stable'=>4, 'test'=>3, 'dev'=>2, 'experimental'=>1);
+ static $num = array('stable' => 4, 'test' => 3, 'dev' => 2, 'experimental' => 1);
$champs['etatnum'] = (isset($plugin['etat']) and isset($num[$plugin['etat']])) ? $num[$plugin['etat']] : 0;
// Tags : liste de mots-cles
$champs['tags'] = (isset($plugin['tags']) and $plugin['tags']) ? serialize($plugin['tags']) : '';
-
+
// On passe en utf-8 avec le bon charset les champs pouvant contenir des entites html
- $champs['description'] = entite2charset($plugin['description'],'utf-8');
-
+ $champs['description'] = entite2charset($plugin['description'], 'utf-8');
+
// Traitement des auteurs, credits, licences et copyright
// -- on extrait les auteurs, licences et copyrights sous forme de tableaux
// -- depuis le commit 18294 du core la balise auteur est renvoyee sous forme de tableau mais
// contient toujours qu'un seul index
- $balise_auteur = entite2charset($plugin['auteur'][0],'utf-8');
+ $balise_auteur = entite2charset($plugin['auteur'][0], 'utf-8');
$auteurs = normaliser_auteur_licence($balise_auteur, 'auteur');
- $balise_licence = isset($plugin['licence'][0]) ? entite2charset($plugin['licence'][0],'utf-8') : '';
+ $balise_licence = isset($plugin['licence'][0]) ? entite2charset($plugin['licence'][0], 'utf-8') : '';
$licences = normaliser_auteur_licence($balise_licence, 'licence');
// -- on merge les tableaux recuperes dans auteur et licence
$champs['auteur'] = $champs['licence'] = $champs['copyright'] = '';
- if ($t = array_merge($auteurs['auteur'], $licences['auteur']))
+ if ($t = array_merge($auteurs['auteur'], $licences['auteur'])) {
$champs['auteur'] = serialize($t);
- if ($t = array_merge($auteurs['licence'], $licences['licence']))
+ }
+ if ($t = array_merge($auteurs['licence'], $licences['licence'])) {
$champs['licence'] = serialize($t);
- if ($t = array_merge($auteurs['copyright'], $licences['copyright']))
+ }
+ if ($t = array_merge($auteurs['copyright'], $licences['copyright'])) {
$champs['copyright'] = serialize($t);
-
+ }
+
// Extrait d'un nom et un slogan normalises
// Slogan : si vide on ne fait plus rien de special, on traitera ça a l'affichage
- $champs['slogan'] = $plugin['slogan'] ? entite2charset($plugin['slogan'],'utf-8') : '';
+ $champs['slogan'] = $plugin['slogan'] ? entite2charset($plugin['slogan'], 'utf-8') : '';
// Nom : on repere dans le nom du plugin un chiffre en fin de nom
// et on l'ampute de ce numero pour le normaliser
// et on passe tout en unicode avec le charset du site
- $champs['nom'] = trim(entite2charset($plugin['nom'],'utf-8'));
+ $champs['nom'] = trim(entite2charset($plugin['nom'], 'utf-8'));
// Extraction de la compatibilite SPIP et construction de la liste des branches spip supportees
$champs['compatibilite_spip'] = ($plugin['compatibilite']) ? $plugin['compatibilite'] : '';
$champs['branches_spip'] = ($plugin['compatibilite']) ? compiler_branches_spip($plugin['compatibilite']) : '';
-
+
// Construction du tableau des dependances necessite, lib et utilise
$dependances['necessite'] = $plugin['necessite'];
$dependances['librairie'] = $plugin['lib'];
@@ -91,12 +96,13 @@ function plugins_preparer_sql_plugin($plugin)
$champs['dependances'] = serialize($dependances);
$champs['procure'] = '';
- if (isset($plugin['procure']) AND $plugin['procure']){
+ if (isset($plugin['procure']) AND $plugin['procure']) {
$champs['procure'] = array();
- foreach($plugin['procure'] as $procure){
+ foreach ($plugin['procure'] as $procure) {
$p = strtoupper($procure['nom']);
if (!isset($champs['procure'][$p])
- OR spip_version_compare($procure['version'],$champs['procure'][$p],'>')){
+ OR spip_version_compare($procure['version'], $champs['procure'][$p], '>')
+ ) {
$champs['procure'][$p] = $procure['version'];
}
}
@@ -113,12 +119,12 @@ function plugins_preparer_sql_plugin($plugin)
/**
- * Normalise un nom issu d'un plugin.xml
+ * Normalise un nom issu d'un plugin.xml
*
* @todo Supprimer cette fonction qui ne sert nulle part ?
- *
+ *
* @uses extraire_trads()
- *
+ *
* @param string $nom
* Le nom
* @param string $langue
@@ -127,7 +133,7 @@ function plugins_preparer_sql_plugin($plugin)
* Supprimer les numéros ?
* @return string
* Le nom
-**/
+ **/
function normaliser_nom($nom, $langue = '', $supprimer_numero = true) {
include_spip('inc/texte');
@@ -139,20 +145,24 @@ function normaliser_nom($nom, $langue = '', $supprimer_numero = true) {
$nouveau_nom = '';
foreach ($noms as $_lang => $_nom) {
$_nom = trim($_nom);
- if (!$_lang)
+ if (!$_lang) {
$_lang = _LANGUE_PAR_DEFAUT;
- if ($supprimer_numero)
+ }
+ if ($supprimer_numero) {
$nbr_matches = preg_match(',(.+)(\s+[\d._]*)$,Um', $_nom, $matches);
- else
+ } else {
$nbr_matches = 0;
- if (!$langue OR $langue == $_lang OR count($noms) == 1)
- $nouveau_nom .= (($multi) ? '[' . $_lang . ']' : '') .
- (($nbr_matches > 0) ? trim($matches[1]) : $_nom);
+ }
+ if (!$langue OR $langue == $_lang OR count($noms) == 1) {
+ $nouveau_nom .= (($multi) ? '[' . $_lang . ']' : '') .
+ (($nbr_matches > 0) ? trim($matches[1]) : $_nom);
+ }
}
-
- if ($nouveau_nom)
- // On renvoie un nouveau nom multi ou pas sans la valeur de la branche
+
+ if ($nouveau_nom) // On renvoie un nouveau nom multi ou pas sans la valeur de la branche
+ {
$nouveau_nom = (($multi) ? '' : '') . $nouveau_nom . (($multi) ? '' : '');
+ }
return $nouveau_nom;
}
@@ -160,7 +170,7 @@ function normaliser_nom($nom, $langue = '', $supprimer_numero = true) {
/**
* Normalise un lien issu d'un plugin.xml
- *
+ *
* Éliminer les textes superflus dans les liens (raccourcis [XXX->http...])
* et normaliser l'esperluete pour éviter l'erreur d'entité indéfinie
*
@@ -170,23 +180,25 @@ function normaliser_nom($nom, $langue = '', $supprimer_numero = true) {
* URL normalisée
*/
function normaliser_lien($url) {
- if (!preg_match(',https?://[^]\s]+,', $url, $r))
+ if (!preg_match(',https?://[^]\s]+,', $url, $r)) {
return '';
+ }
$url = str_replace('&', '&', str_replace('&', '&', $r[0]));
+
return $url;
}
/**
* Normalise un auteur ou une licence issue d'un plugin.xml
- *
+ *
* - Élimination des multi (exclus dans la nouvelle version)
* - Transformation en attribut des balises A
* - Interprétation des balises BR et LI et de la virgule et du
* espace+tiret comme séparateurs
*
* @uses _RACCOURCI_LIEN
- *
+ *
* @param string $texte
* Texte de la balise
* @param string $balise
@@ -202,8 +214,8 @@ function normaliser_auteur_licence($texte, $balise) {
// On extrait le multi si besoin et on selectionne la traduction francaise
$t = normaliser_multi($texte);
- $res = array('auteur' => array(), 'licence' => array(),'copyright' => array());
- foreach(preg_split('@(
)||,|\s-|\n_*\s*|&| & | et @', $t[_LANGUE_PAR_DEFAUT]) as $v) {
+ $res = array('auteur' => array(), 'licence' => array(), 'copyright' => array());
+ foreach (preg_split('@(
)||,|\s-|\n_*\s*|&| & | et @', $t[_LANGUE_PAR_DEFAUT]) as $v) {
// On detecte d'abord si le bloc texte en cours contient un eventuel copyright
// -- cela generera une balise copyright et non auteur
$copy = '';
@@ -212,7 +224,7 @@ function normaliser_auteur_licence($texte, $balise) {
$v = str_replace($r[0], '', $v);
$res['copyright'][] = $copy;
}
-
+
// On detecte ensuite un lien eventuel d'un auteur
// -- soit sous la forme d'une href d'une ancre
// -- soit sous la forme d'un raccourci SPIP
@@ -222,50 +234,54 @@ function normaliser_auteur_licence($texte, $balise) {
if (preg_match('@]*href=(\W)(.*?)\1[^>]*>(.*?)@', $v, $r)) {
$href = $r[2];
$v = str_replace($r[0], $r[3], $v);
- }
- elseif (preg_match(_RACCOURCI_LIEN,$v, $r)) {
+ } elseif (preg_match(_RACCOURCI_LIEN, $v, $r)) {
if (preg_match('/([^\w\d._-]*)(([\w\d._-]+)@([\w\d.-]+))/', $r[4], $m)) {
$mail = $r[4];
- }
- else {
+ } else {
$href = $r[4];
}
$v = ($r[1]) ? $r[1] : str_replace($r[0], '', $v);
- } else
+ } else {
$href = '';
-
+ }
+
// On detecte ensuite un mail eventuel
if (!$mail AND preg_match('/([^\w\d._-]*)(([\w\d._-]+)@([\w\d.-]+))/', $v, $r)) {
$mail = $r[2];
$v = str_replace($r[2], '', $v);
if (!$v) {
// On considere alors que la premiere partie du mail peut faire office de nom d'auteur
- if (preg_match('/(([\w\d_-]+)[.]([\w\d_-]+))@/', $r[2], $s))
+ if (preg_match('/(([\w\d_-]+)[.]([\w\d_-]+))@/', $r[2], $s)) {
$v = ucfirst($s[2]) . ' ' . ucfirst($s[3]);
- else
+ } else {
$v = ucfirst($r[3]);
+ }
}
}
-
+
// On detecte aussi si le bloc texte en cours contient une eventuelle licence
// -- cela generera une balise licence et non auteur
// cette heuristique n'est pas deterministe car la phrase de licence n'est pas connue
$licence = array();
- if (preg_match('/\b((gnu|free|creative\s+common|cc)*[\/|\s|-]*(apache|lgpl|agpl|gpl|fdl|mit|bsd|art\s+|attribution|by)(\s+licence|\-sharealike|-nc-nd|-nc-sa|-sa|-nc|-nd)*\s*v*(\d*[\.\d+]*))\b/i', $v, $r)) {
+ if (preg_match('/\b((gnu|free|creative\s+common|cc)*[\/|\s|-]*(apache|lgpl|agpl|gpl|fdl|mit|bsd|art\s+|attribution|by)(\s+licence|\-sharealike|-nc-nd|-nc-sa|-sa|-nc|-nd)*\s*v*(\d*[\.\d+]*))\b/i',
+ $v, $r)) {
if ($licence = definir_licence($r[2], $r[3], $r[4], $r[5])) {
$res['licence'][] = $licence;
}
}
-
+
// On finalise la balise auteur ou licence si on a pas trouve de licence prioritaire
- if ($href)
+ if ($href) {
$href = !preg_match(',https?://,', $href, $matches) ? "http://" . $href : $href;
+ }
$v = trim(textebrut($v));
- if ((strlen($v) > 2) AND !$licence)
- if ($balise == 'auteur')
+ if ((strlen($v) > 2) AND !$licence) {
+ if ($balise == 'auteur') {
$res['auteur'][] = array('nom' => $v, 'url' => $href, 'mail' => $mail);
- else
+ } else {
$res['licence'][] = array('nom' => $v, 'url' => $href);
+ }
+ }
}
return $res;
@@ -284,16 +300,18 @@ function normaliser_auteur_licence($texte, $balise) {
function normaliser_multi($texte) {
include_spip('inc/filtres');
- if (!preg_match_all(_EXTRAIRE_MULTI, $texte, $regs, PREG_SET_ORDER))
+ if (!preg_match_all(_EXTRAIRE_MULTI, $texte, $regs, PREG_SET_ORDER)) {
return array(_LANGUE_PAR_DEFAUT => $texte);
+ }
$trads = array();
foreach ($regs as $reg) {
foreach (extraire_trads($reg[1]) as $k => $v) {
// Si le code de langue n'est pas précisé dans le multi c'est donc la langue par défaut
$lang = ($k) ? $k : _LANGUE_PAR_DEFAUT;
- $trads[$lang]= str_replace($reg[0], $v, isset($trads[$k]) ? $trads[$k] : $texte);
+ $trads[$lang] = str_replace($reg[0], $v, isset($trads[$k]) ? $trads[$k] : $texte);
}
}
+
return $trads;
}
diff --git a/prive/squelettes/inclure/voir_en_ligne_fonctions.php b/prive/squelettes/inclure/voir_en_ligne_fonctions.php
index 4b3ebb5..f85ee32 100644
--- a/prive/squelettes/inclure/voir_en_ligne_fonctions.php
+++ b/prive/squelettes/inclure/voir_en_ligne_fonctions.php
@@ -1,4 +1,5 @@
\ No newline at end of file
diff --git a/prive/squelettes/navigation/svp_admin_plugin_fonctions.php b/prive/squelettes/navigation/svp_admin_plugin_fonctions.php
index 5e45b22..a137834 100644
--- a/prive/squelettes/navigation/svp_admin_plugin_fonctions.php
+++ b/prive/squelettes/navigation/svp_admin_plugin_fonctions.php
@@ -4,8 +4,10 @@
* Charger les fonctions d'outillage pour la page d'administration des plugins
*
* @package SPIP\SVP\Fonctions
-**/
-if (!defined('_ECRIRE_INC_VERSION')) return;
+ **/
+if (!defined('_ECRIRE_INC_VERSION')) {
+ return;
+}
include_spip('inc/svp_outiller');
diff --git a/svp_administrations.php b/svp_administrations.php
index 8091b79..758a19b 100644
--- a/svp_administrations.php
+++ b/svp_administrations.php
@@ -6,7 +6,7 @@
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Installation
-**/
+ **/
include_spip('base/create');
@@ -14,34 +14,34 @@ include_spip('base/create');
* Installation et mises à jour du plugin
*
* Crée les tables SQL du plugin (spip_depots, spip_plugins, spip_depots_plugins, spip_paquets)
- *
+ *
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @param string $version_cible
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
* @return void
-**/
-function svp_upgrade($nom_meta_base_version, $version_cible){
+ **/
+function svp_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
- $install = array('maj_tables', array('spip_depots','spip_plugins','spip_depots_plugins','spip_paquets'));
+ $install = array('maj_tables', array('spip_depots', 'spip_plugins', 'spip_depots_plugins', 'spip_paquets'));
$maj['create'][] = $install;
- $maj['0.2'][] = array('maj_tables', 'spip_paquets');
- $maj['0.3'][] = array('maj_tables', 'spip_paquets'); // prefixe et attente
- $maj['0.3'][] = array('svp_synchroniser_prefixe');
+ $maj['0.2'][] = array('maj_tables', 'spip_paquets');
+ $maj['0.3'][] = array('maj_tables', 'spip_paquets'); // prefixe et attente
+ $maj['0.3'][] = array('svp_synchroniser_prefixe');
include_spip('inc/svp_depoter_local');
// on force le recalcul des infos des paquets locaux.
- $maj['0.3.1'][] = array('svp_actualiser_paquets_locaux', true);
+ $maj['0.3.1'][] = array('svp_actualiser_paquets_locaux', true);
// autant mettre tout a jour pour avoir une base propre apres renommage extensions=> plugins_dist
$maj['0.4.0'][] = array('svp_vider_tables', $nom_meta_base_version);
$maj['0.4.0'][] = $install;
// on force le recalcul des infos des paquets locaux.
- $maj['0.4.1'][] = array('svp_actualiser_paquets_locaux', true);
+ $maj['0.4.1'][] = array('svp_actualiser_paquets_locaux', true);
// on force le recalcul des infos des paquets locaux.
- $maj['0.5.0'][] = array('maj_tables', 'spip_paquets');
- $maj['0.5.1'][] = array('svp_actualiser_paquets_locaux', true);
+ $maj['0.5.0'][] = array('maj_tables', 'spip_paquets');
+ $maj['0.5.1'][] = array('svp_actualiser_paquets_locaux', true);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
@@ -51,11 +51,11 @@ function svp_upgrade($nom_meta_base_version, $version_cible){
* Désinstallation du plugin
*
* Supprime les tables SQL du plugin (spip_depots, spip_plugins, spip_depots_plugins, spip_paquets)
- *
+ *
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @return void
-**/
+ **/
function svp_vider_tables($nom_meta_base_version) {
sql_drop_table("spip_depots");
sql_drop_table("spip_plugins");
@@ -85,7 +85,7 @@ function svp_synchroniser_prefixe() {
if (sql_preferer_transaction()) {
sql_demarrer_transaction();
}
-
+
foreach ($paquets as $paquet) {
sql_updateq('spip_paquets',
array('prefixe' => $paquet['prefixe']),
@@ -97,4 +97,5 @@ function svp_synchroniser_prefixe() {
}
}
}
+
?>
diff --git a/svp_fonctions.php b/svp_fonctions.php
index e245918..48fcf5b 100644
--- a/svp_fonctions.php
+++ b/svp_fonctions.php
@@ -6,13 +6,16 @@
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Fonctions
-**/
+ **/
-function svp_importer_charset($texte){
- if ($GLOBALS['meta']['charset']=='utf-8')
+function svp_importer_charset($texte) {
+ if ($GLOBALS['meta']['charset'] == 'utf-8') {
return $texte;
- return importer_charset($texte,'utf-8');
+ }
+
+ return importer_charset($texte, 'utf-8');
}
+
/**
* Retourne un texte expliquant l'intervalle de compatibilité avec un plugin ou SPIP
*
@@ -24,25 +27,30 @@ function svp_importer_charset($texte){
* Nom du plugin pour qui est cette intervalle
* @return string
* Texte expliquant l'intervalle
-**/
-function svp_afficher_intervalle($intervalle, $logiciel){
- if (!strlen($intervalle)) return '';
- if (!preg_match(',^[\[\(\]]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-\*]*)[\]\)\[]$,Uis',$intervalle,$regs)) return false;
+ **/
+function svp_afficher_intervalle($intervalle, $logiciel) {
+ if (!strlen($intervalle)) {
+ return '';
+ }
+ if (!preg_match(',^[\[\(\]]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-\*]*)[\]\)\[]$,Uis', $intervalle, $regs)) {
+ return false;
+ }
$mineure = $regs[1];
$majeure = preg_replace(',\.99$,', '.*', $regs[2]);
- $mineure_inc = $intervalle{0}=="[";
- $majeure_inc = substr($intervalle,-1)=="]";
- if (strlen($mineure)){
- if (!strlen($majeure))
+ $mineure_inc = $intervalle{0} == "[";
+ $majeure_inc = substr($intervalle, -1) == "]";
+ if (strlen($mineure)) {
+ if (!strlen($majeure)) {
$version = $logiciel . ($mineure_inc ? ' ≥ ' : ' > ') . $mineure;
- else
- $version = $mineure . ($mineure_inc ? ' ≤ ' : ' < ') . $logiciel . ($majeure_inc ? ' ≤ ' : ' < ') . $majeure;
- }
- else {
- if (!strlen($majeure))
+ } else {
+ $version = $mineure . ($mineure_inc ? ' ≤ ' : ' < ') . $logiciel . ($majeure_inc ? ' ≤ ' : ' < ') . $majeure;
+ }
+ } else {
+ if (!strlen($majeure)) {
$version = $logiciel;
- else
- $version = $logiciel . ($majeure_inc ? ' ≤ ' : ' < ') . $majeure;
+ } else {
+ $version = $logiciel . ($majeure_inc ? ' ≤ ' : ' < ') . $majeure;
+ }
}
return $version;
@@ -58,9 +66,10 @@ function svp_afficher_intervalle($intervalle, $logiciel){
* Le type d'état (stable, test, ...)
* @return string
* Traduction de l'état dans la langue en cours
-**/
+ **/
function svp_afficher_etat($etat) {
include_spip('plugins/afficher_plugin');
+
return plugin_etat_en_clair($etat);
}
@@ -80,15 +89,15 @@ function svp_afficher_etat($etat) {
* @param string $sep
* Séparateur entre les noms de dépendances
* @param string $lien
- * Type de lien affecté au plugin référencé dans la base locale. Prend les valeurs :
+ * Type de lien affecté au plugin référencé dans la base locale. Prend les valeurs :
*
- * - local : le lien pointe vers la page publique du plugin sur le site lui-même. Il faut
+ * - local : le lien pointe vers la page publique du plugin sur le site lui-même. Il faut
* donc que le site propose des pages publiques pour les plugins sinon une 404 sera affichée;
- * - pluginspip : le lien pointe vers la page du plugin sur le site de référence Plugins SPIP;
- * - non : aucun lien n'est affiché.
+ * - pluginspip : le lien pointe vers la page du plugin sur le site de référence Plugins SPIP;
+ * - non : aucun lien n'est affiché.
* @return string
* Texte informant des dépendances
-**/
+ **/
function svp_afficher_dependances($balise_serialisee, $dependance = 'necessite', $sep = '
', $lien = 'local') {
$texte = '';
@@ -97,24 +106,27 @@ function svp_afficher_dependances($balise_serialisee, $dependance = 'necessite',
if (is_array($dependances)) {
ksort($dependances);
- foreach($dependances as $_compatibilite => $_dependance) {
+ foreach ($dependances as $_compatibilite => $_dependance) {
$compatibilite = ($_compatibilite !== 0)
- ? _T('svp:info_compatibilite_dependance', array('compatibilite' => svp_afficher_intervalle($_compatibilite, 'SPIP')))
- : '';
- if ($compatibilite)
+ ? _T('svp:info_compatibilite_dependance',
+ array('compatibilite' => svp_afficher_intervalle($_compatibilite, 'SPIP')))
+ : '';
+ if ($compatibilite) {
$texte .= ($texte ? str_repeat($sep, 2) : '') . $compatibilite;
+ }
foreach ($_dependance as $_plugin) {
- if ($texte)
+ if ($texte) {
$texte .= $sep;
- if (($dependance == 'necessite' ) OR ($dependance == 'utilise')) {
+ }
+ if (($dependance == 'necessite') OR ($dependance == 'utilise')) {
if ($plugin = sql_fetsel('id_plugin, nom', 'spip_plugins', 'prefixe=' . sql_quote($_plugin['nom']))) {
$nom = extraire_multi($plugin['nom']);
- if ($lien == 'non')
+ if ($lien == 'non') {
$logiciel = $nom;
- else {
+ } else {
$url = ($lien == 'local')
- ? generer_url_entite($plugin['id_plugin'], 'plugin')
- : "http://plugins.spip.net/{$_plugin['nom']}.html";
+ ? generer_url_entite($plugin['id_plugin'], 'plugin')
+ : "http://plugins.spip.net/{$_plugin['nom']}.html";
$bulle = _T('svp:bulle_aller_plugin');
$logiciel = '' . $nom . '';
}
@@ -128,10 +140,10 @@ function svp_afficher_dependances($balise_serialisee, $dependance = 'necessite',
$intervalle = svp_afficher_intervalle($_plugin['compatibilite'], $logiciel);
}
$texte .= ($intervalle) ? $intervalle : $logiciel;
+ } else // On demande l'affichage des librairies
+ {
+ $texte .= '' . $_plugin['nom'] . '';
}
- else
- // On demande l'affichage des librairies
- $texte .= '' . $_plugin['nom'] . '';
}
}
}
@@ -147,12 +159,13 @@ function svp_afficher_dependances($balise_serialisee, $dependance = 'necessite',
* en base dans la table spip_paquets
* @return bool
* Le plugin possède t'il des dépendances ?
-**/
+ **/
function svp_dependances_existe($balise_serialisee) {
$dependances = unserialize($balise_serialisee);
- foreach($dependances as $_dependance) {
- if ($_dependance)
+ foreach ($dependances as $_dependance) {
+ if ($_dependance) {
return true;
+ }
}
return false;
@@ -172,22 +185,23 @@ function svp_dependances_existe($balise_serialisee) {
* Séparateur entre les différents crédits
* @return string
* Texte informant des crédits
-**/
+ **/
function svp_afficher_credits($balise_serialisee, $sep = ', ') {
$texte = '';
$credits = unserialize($balise_serialisee);
if (is_array($credits)) {
foreach ($credits as $_credit) {
- if ($texte)
+ if ($texte) {
$texte .= $sep;
+ }
// Si le credit en cours n'est pas un array c'est donc un copyright
$texte .=
(!is_array($_credit))
- ? PtoBR(propre($_credit)) // propre pour les [lien->url] des auteurs de plugin.xml ...
- : ($_credit['url'] ? '' : '') .
- $_credit['nom'] .
- ($_credit['url'] ? '' : '');
+ ? PtoBR(propre($_credit)) // propre pour les [lien->url] des auteurs de plugin.xml ...
+ : ($_credit['url'] ? '' : '') .
+ $_credit['nom'] .
+ ($_credit['url'] ? '' : '');
}
}
@@ -206,21 +220,23 @@ function svp_afficher_credits($balise_serialisee, $sep = ', ') {
* Séparateur entre les différentes langues
* @return string
* Texte informant des langues et traducteurs
-**/
-function svp_afficher_langues($langues, $sep = ', '){
+ **/
+function svp_afficher_langues($langues, $sep = ', ') {
$texte = '';
if ($langues) {
foreach ($langues as $_code => $_traducteurs) {
- if ($texte)
+ if ($texte) {
$texte .= $sep;
+ }
$traducteurs_langue = array();
foreach ($_traducteurs as $_traducteur) {
- if (is_array($_traducteur))
+ if (is_array($_traducteur)) {
$traducteurs_langue[] =
($_traducteur['lien'] ? '' : '') .
$_traducteur['nom'] .
($_traducteur['lien'] ? '' : '');
+ }
}
$texte .= $_code . (count($traducteurs_langue) > 0 ? ' (' . implode(', ', $traducteurs_langue) . ')' : '');
}
@@ -241,26 +257,26 @@ function svp_afficher_langues($langues, $sep = ', '){
* Identifiant du dépot
* @return string
* Code HTML présentant les statistiques du dépot
-**/
-function svp_afficher_statistiques_globales($id_depot = 0){
+ **/
+function svp_afficher_statistiques_globales($id_depot = 0) {
$info = '';
$total = svp_compter('depot', $id_depot);
if (!$id_depot) {
// Si on filtre pas sur un depot alors on affiche le nombre de depots
$info = '
- ' . ucfirst(trim(_T('svp:info_depots_disponibles', array('total_depots'=>'')))) . '
+ ' . ucfirst(trim(_T('svp:info_depots_disponibles', array('total_depots' => '')))) . '
' . $total['depot'] . '
';
}
// Compteur des plugins filtre ou pas par depot
$info .= '
- ' . ucfirst(trim(_T('svp:info_plugins_heberges', array('total_plugins'=>'')))) . '
+ ' . ucfirst(trim(_T('svp:info_plugins_heberges', array('total_plugins' => '')))) . '
' . $total['plugin'] . '
';
// Compteur des paquets filtre ou pas par depot
$info .= '
- ' . ucfirst(trim(_T('svp:info_paquets_disponibles', array('total_paquets'=>'')))) . '
+ ' . ucfirst(trim(_T('svp:info_paquets_disponibles', array('total_paquets' => '')))) . '
' . $total['paquet'] . '
';
@@ -287,10 +303,11 @@ function svp_afficher_statistiques_globales($id_depot = 0){
* Numéro de branche de SPIP. (3.0, 2.1, ...)
* @return string
* Texte indiquant un nombre total de paquets
-**/
-function svp_compter_telechargements($id_depot = 0, $categorie = '', $compatible_spip = ''){
+ **/
+function svp_compter_telechargements($id_depot = 0, $categorie = '', $compatible_spip = '') {
$total = svp_compter('paquet', $id_depot, $categorie, $compatible_spip);
- $info = _T('svp:info_paquets_disponibles', array('total_paquets'=>$total['paquet']));
+ $info = _T('svp:info_paquets_disponibles', array('total_paquets' => $total['paquet']));
+
return $info;
}
@@ -315,25 +332,24 @@ function svp_compter_telechargements($id_depot = 0, $categorie = '', $compatible
* certains jeux de squelettes.
* @return string
* Texte indiquant certains totaux tel que nombre de plugins, nombre de paquets...
-**/
-function svp_compter_depots($id_depot, $contrib = 'plugin'){
+ **/
+function svp_compter_depots($id_depot, $contrib = 'plugin') {
$info = '';
$total = svp_compter('depot', $id_depot);
if (!$id_depot) {
- $info = _T('svp:info_depots_disponibles', array('total_depots'=>$total['depot'])) . ', ' .
- _T('svp:info_plugins_heberges', array('total_plugins'=>$total['plugin'])) . ', ' .
- _T('svp:info_paquets_disponibles', array('total_paquets'=>$total['paquet']));
- }
- else {
+ $info = _T('svp:info_depots_disponibles', array('total_depots' => $total['depot'])) . ', ' .
+ _T('svp:info_plugins_heberges', array('total_plugins' => $total['plugin'])) . ', ' .
+ _T('svp:info_paquets_disponibles', array('total_paquets' => $total['paquet']));
+ } else {
if ($contrib == 'plugin') {
- $info = _T('svp:info_plugins_heberges', array('total_plugins'=>$total['plugin'])) . ', ' .
- _T('svp:info_paquets_disponibles', array('total_paquets'=>$total['paquet']-$total['autre']));
- }
- else {
- $info = _T('svp:info_contributions_hebergees', array('total_autres'=>$total['autre']));
+ $info = _T('svp:info_plugins_heberges', array('total_plugins' => $total['plugin'])) . ', ' .
+ _T('svp:info_paquets_disponibles', array('total_paquets' => $total['paquet']-$total['autre']));
+ } else {
+ $info = _T('svp:info_contributions_hebergees', array('total_autres' => $total['autre']));
}
}
+
return $info;
}
@@ -357,10 +373,11 @@ function svp_compter_depots($id_depot, $contrib = 'plugin'){
* Numéro de branche de SPIP. (3.0, 2.1, ...)
* @return string
* Texte indiquant un nombre total de paquets
-**/
+ **/
function svp_compter_plugins($id_depot = 0, $categorie = '', $compatible_spip = '') {
$total = svp_compter('plugin', $id_depot, $categorie, $compatible_spip);
- $info = _T('svp:info_plugins_disponibles', array('total_plugins'=>$total['plugin']));
+ $info = _T('svp:info_plugins_disponibles', array('total_plugins' => $total['plugin']));
+
return $info;
}
@@ -393,48 +410,49 @@ function svp_compter_plugins($id_depot = 0, $categorie = '', $compatible_spip =
* Numéro de branche de SPIP. (3.0, 2.1, ...)
* @return array
* Couples (entite => nombre).
-**/
-function svp_compter($entite, $id_depot = 0, $categorie = '', $compatible_spip = ''){
+ **/
+function svp_compter($entite, $id_depot = 0, $categorie = '', $compatible_spip = '') {
$compteurs = array();
$group_by = array();
$where = array();
- if ($id_depot)
+ if ($id_depot) {
$where[] = "t1.id_depot=" . sql_quote($id_depot);
- else
+ } else {
$where[] = "t1.id_depot>0";
+ }
if ($entite == 'plugin') {
$from = 'spip_plugins AS t2, spip_depots_plugins AS t1';
$where[] = "t1.id_plugin=t2.id_plugin";
- if ($categorie)
+ if ($categorie) {
$where[] = "t2.categorie=" . sql_quote($categorie);
+ }
if ($compatible_spip) {
$creer_where = charger_fonction('where_compatible_spip', 'inc');
- $where[] = $creer_where($compatible_spip, 't2', '>');
+ $where[] = $creer_where($compatible_spip, 't2', '>');
}
$compteurs['plugin'] = sql_count(sql_select('t2.id_plugin', $from, $where));
- }
- elseif ($entite == 'paquet') {
+ } elseif ($entite == 'paquet') {
if ($categorie) {
- $ids = sql_allfetsel('id_plugin', 'spip_plugins', 'categorie='.sql_quote($categorie));
+ $ids = sql_allfetsel('id_plugin', 'spip_plugins', 'categorie=' . sql_quote($categorie));
$ids = array_map('reset', $ids);
$where[] = sql_in('t1.id_plugin', $ids);
}
if ($compatible_spip) {
$creer_where = charger_fonction('where_compatible_spip', 'inc');
- $where[] = $creer_where($compatible_spip, 't1', '>');
+ $where[] = $creer_where($compatible_spip, 't1', '>');
}
$compteurs['paquet'] = sql_countsel('spip_paquets AS t1', $where);
- }
- elseif ($entite == 'depot') {
- $champs = array('COUNT(t1.id_depot) AS depot',
- 'SUM(t1.nbr_plugins) AS plugin',
- 'SUM(t1.nbr_paquets) AS paquet',
- 'SUM(t1.nbr_autres) AS autre');
+ } elseif ($entite == 'depot') {
+ $champs = array(
+ 'COUNT(t1.id_depot) AS depot',
+ 'SUM(t1.nbr_plugins) AS plugin',
+ 'SUM(t1.nbr_paquets) AS paquet',
+ 'SUM(t1.nbr_autres) AS autre'
+ );
$compteurs = sql_fetsel($champs, 'spip_depots AS t1', $where);
- }
- elseif ($entite == 'categorie') {
+ } elseif ($entite == 'categorie') {
$from = array('spip_plugins AS t2');
$where_depot = $where[0];
$where = array();
@@ -445,12 +463,13 @@ function svp_compter($entite, $id_depot = 0, $categorie = '', $compatible_spip =
}
if ($compatible_spip) {
$creer_where = charger_fonction('where_compatible_spip', 'inc');
- $where[] = $creer_where($compatible_spip, 't2', '>');
+ $where[] = $creer_where($compatible_spip, 't2', '>');
}
- if ($categorie)
+ if ($categorie) {
$where[] = "t2.categorie=" . sql_quote($categorie);
- else
+ } else {
$group_by = array('t2.categorie');
+ }
$compteurs['categorie'] = sql_countsel($from, $where, $group_by);
}
@@ -479,17 +498,18 @@ function svp_compter($entite, $id_depot = 0, $categorie = '', $compatible_spip =
* Pile au niveau de la balise
* @return Champ
* Pile complétée par le code à générer
-**/
+ **/
function balise_SVP_CATEGORIES($p) {
// tri, peut être 'ordre_cle' ou 'ordre_alpha'
- if (!$tri = interprete_argument_balise(1,$p)) {
+ if (!$tri = interprete_argument_balise(1, $p)) {
$tri = "'ordre_cle'";
}
// catégorie (pour n'en prendre qu'une au lieu de toutes)
- if (!$categorie = interprete_argument_balise(2,$p)) {
+ if (!$categorie = interprete_argument_balise(2, $p)) {
$categorie = "''";
}
- $p->code = 'calcul_svp_categories(' . $tri . ',' . $categorie . ')';
+ $p->code = 'calcul_svp_categories(' . $tri . ',' . $categorie . ')';
+
return $p;
}
@@ -498,14 +518,14 @@ function balise_SVP_CATEGORIES($p) {
* en index, associé à sa traduction en valeur.
*
* @uses svp_traduire_categorie()
- *
+ *
* @param string $tri
* Type de tri (ordre_cle ou ordre_alpha)
* @param string $categorie
* Restreindre le tableau de retour à cette catégorie si elle existe
* @return array
* Couples (type de catégorie => Texte de la catégorie)
-**/
+ **/
function calcul_svp_categories($tri = 'ordre_cle', $categorie = '') {
$retour = array();
@@ -513,16 +533,17 @@ function calcul_svp_categories($tri = 'ordre_cle', $categorie = '') {
$svp_categories = $GLOBALS['categories_plugin'];
if (is_array($svp_categories)) {
- if (($categorie) AND in_array($categorie, $svp_categories))
+ if (($categorie) AND in_array($categorie, $svp_categories)) {
$retour[$categorie] = _T('svp:categorie_' . strtolower($categorie));
- else {
+ } else {
if ($tri == 'ordre_alpha') {
sort($svp_categories);
// On positionne l'absence de categorie en fin du tableau
$svp_categories[] = array_shift($svp_categories);
}
- foreach ($svp_categories as $_alias)
+ foreach ($svp_categories as $_alias) {
$retour[$_alias] = svp_traduire_categorie($_alias);
+ }
}
}
@@ -549,13 +570,14 @@ function calcul_svp_categories($tri = 'ordre_cle', $categorie = '') {
* Pile au niveau de la balise
* @return Champ
* Pile complétée par le code à générer
-**/
+ **/
function balise_SVP_BRANCHES_SPIP($p) {
// nom d'une branche en premier argument
- if (!$branche = interprete_argument_balise(1,$p)) {
+ if (!$branche = interprete_argument_balise(1, $p)) {
$branche = "''";
}
- $p->code = 'calcul_svp_branches_spip('.$branche.')';
+ $p->code = 'calcul_svp_branches_spip(' . $branche . ')';
+
return $p;
}
@@ -568,7 +590,7 @@ function balise_SVP_BRANCHES_SPIP($p) {
* @return array
* Liste des branches array('1.9', '2.0', '2.1', ....)
* ou liste mini et maxi d'une branche array('3.0.0', '3.0.99')
-**/
+ **/
function calcul_svp_branches_spip($branche) {
$retour = array();
@@ -576,10 +598,10 @@ function calcul_svp_branches_spip($branche) {
$svp_branches = $GLOBALS['infos_branches_spip'];
if (is_array($svp_branches)) {
- if (($branche) AND in_array($branche, $svp_branches))
- // On renvoie les bornes inf et sup de la branche specifiee
+ if (($branche) AND in_array($branche, $svp_branches)) // On renvoie les bornes inf et sup de la branche specifiee
+ {
$retour = $svp_branches[$branche];
- else {
+ } else {
// On renvoie uniquement les numeros de branches
$retour = array_keys($svp_branches);
}
@@ -595,12 +617,13 @@ function calcul_svp_branches_spip($branche) {
* Type de catégorie (auteur, communication, date...)
* @return string
* Titre complet et traduit de la catégorie
-**/
+ **/
function svp_traduire_categorie($alias) {
$traduction = '';
if ($alias) {
$traduction = _T('svp:categorie_' . strtolower($alias));
}
+
return $traduction;
}
@@ -611,13 +634,14 @@ function svp_traduire_categorie($alias) {
* Type de dépot (svn, git, manuel)
* @return string
* Titre complet et traduit du type de dépot
-**/
+ **/
function svp_traduire_type_depot($type) {
$traduction = '';
if ($type) {
$traduction = _T('svp:info_type_depot_' . $type);
}
+
return $traduction;
}
@@ -631,37 +655,34 @@ function svp_traduire_type_depot($type) {
* Tous les autres types d'url renvoient une chaine vide
* @return string
* URL calculée en fonction de l'URL d'entrée
-**/
+ **/
function svp_calculer_url_demo($url_demo, $url_absolue = false) {
$url_calculee = '';
- $url_demo = trim($url_demo);
- if (strlen($url_demo) > 0) {
- $url_elements = @parse_url($url_demo);
- if (isset($url_elements['scheme']) AND $url_elements['scheme']) {
- // Cas 1 : http://xxxx. C'est donc une url absolue que l'on conserve telle qu'elle.
- $url_calculee = $url_demo;
- }
- else {
- if (!$url_absolue) {
- if (isset($url_elements['query']) AND $url_elements['query']) {
- // Cas 2 : ?exec=xxx ou ?page=yyy. C'est donc une url relative que l'on transforme
- // en url absolue privée ou publique en fonction de la query.
- $egal = strpos($url_elements['query'], '=');
- $page = substr($url_elements['query'], $egal+1, strlen($url_elements['query']) - $egal - 1);
- if (strpos($url_elements['query'], 'exec=') !== false) {
- $url_calculee = generer_url_ecrire($page);
- }
- else {
- $url_calculee = generer_url_public($page);
- }
- }
- elseif (isset($url_elements['path']) AND $url_elements['path']) {
- // Cas 3 : xxx/yyy. C'est donc une url relative que l'on transforme
- $url_calculee = generer_url_public($url_demo);
- }
- }
- }
+ $url_demo = trim($url_demo);
+ if (strlen($url_demo) > 0) {
+ $url_elements = @parse_url($url_demo);
+ if (isset($url_elements['scheme']) AND $url_elements['scheme']) {
+ // Cas 1 : http://xxxx. C'est donc une url absolue que l'on conserve telle qu'elle.
+ $url_calculee = $url_demo;
+ } else {
+ if (!$url_absolue) {
+ if (isset($url_elements['query']) AND $url_elements['query']) {
+ // Cas 2 : ?exec=xxx ou ?page=yyy. C'est donc une url relative que l'on transforme
+ // en url absolue privée ou publique en fonction de la query.
+ $egal = strpos($url_elements['query'], '=');
+ $page = substr($url_elements['query'], $egal+1, strlen($url_elements['query'])-$egal-1);
+ if (strpos($url_elements['query'], 'exec=') !== false) {
+ $url_calculee = generer_url_ecrire($page);
+ } else {
+ $url_calculee = generer_url_public($page);
+ }
+ } elseif (isset($url_elements['path']) AND $url_elements['path']) {
+ // Cas 3 : xxx/yyy. C'est donc une url relative que l'on transforme
+ $url_calculee = generer_url_public($url_demo);
+ }
+ }
+ }
}
return $url_calculee;
@@ -684,9 +705,9 @@ function svp_calculer_url_demo($url_demo, $url_absolue = false) {
* {compatible_spip #ENV{vers}} ou {compatible_spip #ENV{vers, 1.9.2}}
* {compatible_spip #GET{vers}} ou {compatible_spip #GET{vers, 2.1}}
*
- * @param string $idb Identifiant de la boucle
- * @param array $boucles AST du squelette
- * @param Critere $crit Paramètres du critère dans cette boucle
+ * @param string $idb Identifiant de la boucle
+ * @param array $boucles AST du squelette
+ * @param Critere $crit Paramètres du critère dans cette boucle
* @return void
*/
function critere_compatible_spip_dist($idb, &$boucles, $crit) {
@@ -706,7 +727,7 @@ function critere_compatible_spip_dist($idb, &$boucles, $crit) {
if (isset($crit->param[0][0])) {
$version = calculer_liste(array($crit->param[0][0]), array(), $boucles, $boucle->id_parent);
$boucle->hash .= '
- $where = $creer_where('.$version.', \''.$table.'\', \''.$op.'\');
+ $where = $creer_where(' . $version . ', \'' . $table . '\', \'' . $op . '\');
';
}
// pas de version/branche explicite dans l'appel du critere
@@ -714,7 +735,7 @@ function critere_compatible_spip_dist($idb, &$boucles, $crit) {
else {
$boucle->hash .= '
$version = isset($Pile[0][\'compatible_spip\']) ? $Pile[0][\'compatible_spip\'] : \'\';
- $where = $creer_where($version, \''.$table.'\', \''.$op.'\');
+ $where = $creer_where($version, \'' . $table . '\', \'' . $op . '\');
';
}
@@ -743,15 +764,22 @@ function critere_compatible_spip_dist($idb, &$boucles, $crit) {
* Tableau classé par pertinence de résultat
* - 'prefixe' => tableau de description du paquet (si pas de doublons demandé)
* - n => tableau de descriptions du paquet (si doublons autorisés)
-**/
-function filtre_construire_recherche_plugins($phrase = '', $categorie = '', $etat = '', $depot = '', $afficher_exclusions = true, $afficher_doublons = false) {
+ **/
+function filtre_construire_recherche_plugins(
+ $phrase = '',
+ $categorie = '',
+ $etat = '',
+ $depot = '',
+ $afficher_exclusions = true,
+ $afficher_doublons = false
+) {
// On traite les paramètres d'affichage
$afficher_exclusions = ($afficher_exclusions == 'oui') ? true : false;
$afficher_doublons = ($afficher_doublons == 'oui') ? true : false;
$tri = ($phrase) ? 'score' : 'nom';
- $version_spip = $GLOBALS['spip_version_branche'].".".$GLOBALS['spip_version_code'];
+ $version_spip = $GLOBALS['spip_version_branche'] . "." . $GLOBALS['spip_version_code'];
// On recupere la liste des paquets:
// - sans doublons, ie on ne garde que la version la plus recente
@@ -774,9 +802,10 @@ function filtre_construire_recherche_plugins($phrase = '', $categorie = '', $eta
*
* @return int
* Nombre d'heures (sinon 0)
-**/
+ **/
function filtre_svp_periode_actualisation_depots() {
include_spip('genie/svp_taches_generales_cron');
+
return _SVP_CRON_ACTUALISATION_DEPOTS ? _SVP_PERIODE_ACTUALISATION_DEPOTS : 0;
}
@@ -792,21 +821,22 @@ function filtre_svp_periode_actualisation_depots() {
* Numéro de version normalisée
* @return string
* Numéro de version dénormalisée
-**/
+ **/
function denormaliser_version($version_normalisee = '') {
$version = '';
if ($version_normalisee) {
$v = explode('.', $version_normalisee);
- foreach($v as $_nombre) {
+ foreach ($v as $_nombre) {
$n = ltrim($_nombre, '0');
// On traite les cas du type 001.002.000-dev qui doivent etre transformes en 1.2.0-dev.
// Etant donne que la denormalisation est toujours effectuee sur une version normalisee on sait
// que le suffixe commence toujours pas '-'
- $vn[] = ((strlen($n)>0) AND substr($n, 0, 1)!='-' ) ? $n : "0$n";
+ $vn[] = ((strlen($n) > 0) AND substr($n, 0, 1) != '-') ? $n : "0$n";
}
$version = implode('.', $vn);
}
+
return $version;
}
@@ -826,6 +856,8 @@ function test_plugins_auto() {
include_spip('inc/plugin'); // pour _DIR_PLUGINS_AUTO
$test = (defined('_DIR_PLUGINS_AUTO') and _DIR_PLUGINS_AUTO and is_writable(_DIR_PLUGINS_AUTO));
}
+
return $test;
}
+
?>
diff --git a/svp_ieconfig.php b/svp_ieconfig.php
index 5ce6f2e..a9419ec 100644
--- a/svp_ieconfig.php
+++ b/svp_ieconfig.php
@@ -2,13 +2,15 @@
/**
* Déclarations des configurations qui peuvent être sauvegardées
- *
+ *
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Pipelines
-**/
+ **/
-if (!defined("_ECRIRE_INC_VERSION")) return;
+if (!defined("_ECRIRE_INC_VERSION")) {
+ return;
+}
/**
* Ajoute les metas sauvegardables de SVP pour le plugin IEConfig
@@ -17,10 +19,10 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
*
* @param array $table
* Déclaration des sauvegardes
- * @return array
+ * @return array
* Déclaration des sauvegardes complétées
-**/
-function svp_ieconfig_metas($table){
+ **/
+function svp_ieconfig_metas($table) {
$table['svp']['titre'] = _T('svp:titre_page_configurer');
$table['svp']['icone'] = 'svp-16.png';
$table['svp']['metas_serialize'] = 'svp';
diff --git a/svp_pipelines.php b/svp_pipelines.php
index 2f28a3b..511d73a 100644
--- a/svp_pipelines.php
+++ b/svp_pipelines.php
@@ -1,29 +1,30 @@
type_requete == 'depots'
) {
$id_table = $boucle->id_table;
- $m_id_depot = $id_table .'.id_depot';
+ $m_id_depot = $id_table . '.id_depot';
// Restreindre aux depots distants
if (
#!isset($boucle->modificateur['criteres']['id_depot']) &&
- !isset($boucle->modificateur['tout'])) {
- $boucle->where[] = array("'>'", "'$m_id_depot'", "'\"0\"'");
+ !isset($boucle->modificateur['tout'])
+ ) {
+ $boucle->where[] = array("'>'", "'$m_id_depot'", "'\"0\"'");
}
- }
- // PLUGINS
+ } // PLUGINS
elseif ($boucle->type_requete == 'plugins') {
$id_table = $boucle->id_table;
/*
@@ -118,16 +123,18 @@ function svp_pre_boucle($boucle) {
}
*/
if (
- # !$id_depot &&
- !isset($boucle->modificateur['tout'])) {
- // Restreindre aux plugins distant (id_depot > 0)
- $boucle->from["depots_plugins"] = "spip_depots_plugins";
- $boucle->where[] = array("'='", "'depots_plugins.id_plugin'", "'$id_table.id_plugin'");
- $boucle->where[] = array("'>'", "'depots_plugins.id_depot'", "'\"0\"'");
+ # !$id_depot &&
+ !isset($boucle->modificateur['tout'])
+ ) {
+ // Restreindre aux plugins distant (id_depot > 0)
+ $boucle->from["depots_plugins"] = "spip_depots_plugins";
+ $boucle->where[] = array("'='", "'depots_plugins.id_plugin'", "'$id_table.id_plugin'");
+ $boucle->where[] = array("'>'", "'depots_plugins.id_depot'", "'\"0\"'");
}
}
return $boucle;
}
+
?>
diff --git a/teleporter/git.php b/teleporter/git.php
index d0b4a5d..1319a7a 100644
--- a/teleporter/git.php
+++ b/teleporter/git.php
@@ -1,17 +1,19 @@
'assoc'));
- if (!$infos){
- spip_log("Suppression de $dest qui n'est pas au format GIT","teleport");
+ $branche = (isset($options['branche']) ? $options['branche'] : 'master');
+ if (is_dir($dest)) {
+ $infos = teleporter_git_read($dest, array('format' => 'assoc'));
+ if (!$infos) {
+ spip_log("Suppression de $dest qui n'est pas au format GIT", "teleport");
$old = teleporter_nettoyer_vieille_version($dest);
- }
- elseif ($infos['source']!==$source) {
- spip_log("Suppression de $dest qui n'est pas sur le bon repository GIT","teleport");
+ } elseif ($infos['source'] !== $source) {
+ spip_log("Suppression de $dest qui n'est pas sur le bon repository GIT", "teleport");
$old = teleporter_nettoyer_vieille_version($dest);
- }
- elseif (!isset($options['revision'])
- OR $options['revision']!=$infos['revision']){
- $command = _GIT_COMMAND." checkout ".escapeshellarg($branche);
- teleporter_git_exec($dest,$command);
- $command = _GIT_COMMAND." pull --all";
- teleporter_git_exec($dest,$command);
-
- if (isset($options['revision'])){
- $command = _GIT_COMMAND." checkout ".escapeshellarg($options['revision']);
- teleporter_git_exec($dest,$command);
+ } elseif (!isset($options['revision'])
+ OR $options['revision'] != $infos['revision']
+ ) {
+ $command = _GIT_COMMAND . " checkout " . escapeshellarg($branche);
+ teleporter_git_exec($dest, $command);
+ $command = _GIT_COMMAND . " pull --all";
+ teleporter_git_exec($dest, $command);
+
+ if (isset($options['revision'])) {
+ $command = _GIT_COMMAND . " checkout " . escapeshellarg($options['revision']);
+ teleporter_git_exec($dest, $command);
+ } else {
+ $command = _GIT_COMMAND . " checkout " . escapeshellarg($branche);
+ teleporter_git_exec($dest, $command);
}
- else {
- $command = _GIT_COMMAND." checkout ".escapeshellarg($branche);
- teleporter_git_exec($dest,$command);
- }
- }
- else {
- spip_log("$dest deja sur GIT $source Revision ".$options['revision'],"teleport");
+ } else {
+ spip_log("$dest deja sur GIT $source Revision " . $options['revision'], "teleport");
}
}
- if (!is_dir($dest)){
- $command = _GIT_COMMAND." clone ";
- $command .= escapeshellarg($source)." ".escapeshellarg($dest);
- teleporter_git_exec($dest,$command);
- if (isset($options['revision'])){
- $command = _GIT_COMMAND." checkout ".escapeshellarg($options['revision']);
- teleporter_git_exec($dest,$command);
+ if (!is_dir($dest)) {
+ $command = _GIT_COMMAND . " clone ";
+ $command .= escapeshellarg($source) . " " . escapeshellarg($dest);
+ teleporter_git_exec($dest, $command);
+ if (isset($options['revision'])) {
+ $command = _GIT_COMMAND . " checkout " . escapeshellarg($options['revision']);
+ teleporter_git_exec($dest, $command);
}
}
// verifier que tout a bien marche
$infos = teleporter_git_read($dest);
- if (!$infos) return false;
+ if (!$infos) {
+ return false;
+ }
return true;
}
@@ -82,7 +83,7 @@ function teleporter_git_dist($methode, $source, $dest, $options = array()){
* Lire l'état GIT du repository
*
* Retourne les informations GIT d'un répertoire donné
- *
+ *
* @param string $dest
* Chemin du répertoire à tester
* @param array $options
@@ -97,41 +98,45 @@ function teleporter_git_dist($methode, $source, $dest, $options = array()){
*/
function teleporter_git_read($dest, $options = array()) {
- if (!is_dir("$dest/.git"))
+ if (!is_dir("$dest/.git")) {
return "";
+ }
$curdir = getcwd();
chdir($dest);
- exec(_GIT_COMMAND." remote -v",$output);
- $output = implode("\n",$output);
+ exec(_GIT_COMMAND . " remote -v", $output);
+ $output = implode("\n", $output);
$source = "";
- if (preg_match(",(\w+://.*)\s+\(fetch\)$,Uims",$output,$m))
+ if (preg_match(",(\w+://.*)\s+\(fetch\)$,Uims", $output, $m)) {
$source = $m[1];
- elseif (preg_match(",([^@\s]+@[^:\s]+:.*)\s+\(fetch\)$,Uims",$output,$m))
+ } elseif (preg_match(",([^@\s]+@[^:\s]+:.*)\s+\(fetch\)$,Uims", $output, $m)) {
$source = $m[1];
+ }
- if (!$source){
+ if (!$source) {
chdir($curdir);
+
return "";
}
$source = $m[1];
- exec(_GIT_COMMAND." log -1",$output);
- $hash = explode(" ",reset($output));
+ exec(_GIT_COMMAND . " log -1", $output);
+ $hash = explode(" ", reset($output));
$hash = end($hash);
// [TODO] lire la branche ?
chdir($curdir);
- if (preg_match(",[^0-9a-f],i",$hash))
+ if (preg_match(",[^0-9a-f],i", $hash)) {
return false;
+ }
return array(
'source' => $source,
- 'revision' => substr($hash,0,7),
+ 'revision' => substr($hash, 0, 7),
'dest' => $dest
);
}
@@ -147,7 +152,7 @@ function teleporter_git_read($dest, $options = array()) {
* @return void
*/
function teleporter_git_exec($dest, $command) {
- spip_log("{$dest}:{$command}","teleport");
+ spip_log("{$dest}:{$command}", "teleport");
$curdir = getcwd();
chdir($dest);
exec($command);
@@ -160,11 +165,12 @@ function teleporter_git_exec($dest, $command) {
*
* @return bool
* true si on peut utiliser la commande svn
-**/
+ **/
function teleporter_git_tester() {
static $erreurs = null;
if (is_null($erreurs)) {
- exec(_GIT_COMMAND." --version", $output, $erreurs);
+ exec(_GIT_COMMAND . " --version", $output, $erreurs);
}
+
return !$erreurs;
}
diff --git a/teleporter/http.php b/teleporter/http.php
index 16bb08b..8d72ed2 100644
--- a/teleporter/http.php
+++ b/teleporter/http.php
@@ -1,18 +1,18 @@
$extension));
+ list($fichier, $extension) = $res;
+ if (!$deballe = charger_fonction("http_deballe_" . preg_replace(",\W,", "_", $extension), "teleporter", true)) {
+ return _T('svp:erreur_teleporter_format_archive_non_supporte', array('extension' => $extension));
+ }
$old = teleporter_nettoyer_vieille_version($dest);
- if (!$target = $deballe($fichier, $dest, $tmp)){
+ if (!$target = $deballe($fichier, $dest, $tmp)) {
// retablir l'ancien sinon
- if ($old)
- rename($old,$dest);
- return _T('svp:erreur_teleporter_echec_deballage_archive',array('fichier' => $fichier));
+ if ($old) {
+ rename($old, $dest);
+ }
+
+ return _T('svp:erreur_teleporter_echec_deballage_archive', array('fichier' => $fichier));
}
return true;
@@ -59,7 +63,7 @@ function teleporter_http_dist($methode, $source, $dest, $options = array()){
* Récupérer la source et détecter son extension
*
* @uses teleporter_http_extension()
- *
+ *
* @param string $source
* URL de la source HTTP
* @param string $dest_tmp
@@ -68,11 +72,12 @@ function teleporter_http_dist($methode, $source, $dest, $options = array()){
* - Texte d'erreur si une erreur survient,
* - Liste sinon (répertoire de destination temporaire, extension du fichier source)
*/
-function teleporter_http_recuperer_source($source, $dest_tmp){
+function teleporter_http_recuperer_source($source, $dest_tmp) {
# securite : ici on repart toujours d'une source neuve
- if (file_exists($dest_tmp))
+ if (file_exists($dest_tmp)) {
spip_unlink($dest_tmp);
+ }
$extension = "";
@@ -83,66 +88,77 @@ function teleporter_http_recuperer_source($source, $dest_tmp){
include_spip('inc/distant');
$head = recuperer_page($source, false, true, 0);
- if (preg_match(",^Content-Type:\s*?(.*)$,Uims",$head,$m)
- AND include_spip('base/typedoc')){
+ if (preg_match(",^Content-Type:\s*?(.*)$,Uims", $head, $m)
+ AND include_spip('base/typedoc')
+ ) {
$mime = $m[1];
// passer du mime a l'extension !
- if ($e = array_search($mime,$GLOBALS['tables_mime']))
+ if ($e = array_search($mime, $GLOBALS['tables_mime'])) {
$extension = $e;
+ }
}
if (!$extension
- // cas des extensions incertaines car mime-type ambigu
- OR in_array($extension,array('bin','gz'))){
- if (preg_match(",^Content-Disposition:\s*attachment;\s*filename=(.*)['\"]?$,Uims",$head,$m)
- AND $e=teleporter_http_extension($m[1])){
+ // cas des extensions incertaines car mime-type ambigu
+ OR in_array($extension, array('bin', 'gz'))
+ ) {
+ if (preg_match(",^Content-Disposition:\s*attachment;\s*filename=(.*)['\"]?$,Uims", $head, $m)
+ AND $e = teleporter_http_extension($m[1])
+ ) {
$extension = $e;
}
// au cas ou, si le content-type n'est pas la
// mais que l'extension est explicite
- else{
+ else {
$extension = teleporter_http_extension($source);
}
}
# format de fichier inconnu
if (!$extension) {
- spip_log("Type de fichier inconnu pour la source $source","teleport"._LOG_ERREUR);
- return _T('svp:erreur_teleporter_type_fichier_inconnu',array('source' => $source));
+ spip_log("Type de fichier inconnu pour la source $source", "teleport" . _LOG_ERREUR);
+
+ return _T('svp:erreur_teleporter_type_fichier_inconnu', array('source' => $source));
}
- $dest_tmp = preg_replace(";\.[\w]{2,3}$;i","",$dest_tmp).".$extension";
+ $dest_tmp = preg_replace(";\.[\w]{2,3}$;i", "", $dest_tmp) . ".$extension";
- if (!defined('_SVP_PAQUET_MAX_SIZE')) define('_SVP_PAQUET_MAX_SIZE', 67108864); // 64Mo
+ if (!defined('_SVP_PAQUET_MAX_SIZE')) {
+ define('_SVP_PAQUET_MAX_SIZE', 67108864);
+ } // 64Mo
include_spip('inc/distant');
- $dest_tmp = copie_locale($source,'force',$dest_tmp,_SVP_PAQUET_MAX_SIZE);
+ $dest_tmp = copie_locale($source, 'force', $dest_tmp, _SVP_PAQUET_MAX_SIZE);
if (!$dest_tmp
- OR !file_exists($dest_tmp = _DIR_RACINE . $dest_tmp)) {
- spip_log("Chargement impossible de la source $source","teleport"._LOG_ERREUR);
- return _T('svp:erreur_teleporter_chargement_source_impossible',array('source' => $source));
+ OR !file_exists($dest_tmp = _DIR_RACINE . $dest_tmp)
+ ) {
+ spip_log("Chargement impossible de la source $source", "teleport" . _LOG_ERREUR);
+
+ return _T('svp:erreur_teleporter_chargement_source_impossible', array('source' => $source));
}
- return array($dest_tmp,$extension);
+ return array($dest_tmp, $extension);
}
/**
- * Retrouve l'extension d'un fichier
+ * Retrouve l'extension d'un fichier
*
* @note
* Retourne tgz pour un fichier .tar.gz
- *
+ *
* @param string $file
* Chemin du fichier
* @return string
* Extension du fichier, sinon vide
-**/
-function teleporter_http_extension($file){
+ **/
+function teleporter_http_extension($file) {
$e = pathinfo($file, PATHINFO_EXTENSION);
// cas particuliers : redresser .tar.gz
- if ($e=='gz'
- AND preg_match(',tar\.gz,i',$file))
+ if ($e == 'gz'
+ AND preg_match(',tar\.gz,i', $file)
+ ) {
$e = 'tgz';
+ }
return $e;
}
@@ -154,37 +170,43 @@ function teleporter_http_extension($file){
* Liste de chemin de fichiers
* @return string
* Chemin commun entre tous les fichiers
-**/
-function http_deballe_recherche_racine($list){
+ **/
+function http_deballe_recherche_racine($list) {
// on cherche la plus longue racine commune a tous les fichiers
// pour l'enlever au deballage
$max_n = 999999;
$paths = array();
- foreach($list as $n) {
+ foreach ($list as $n) {
$p = array();
- foreach(explode('/', $n['filename']) as $n => $x) {
- if ($n>$max_n)
+ foreach (explode('/', $n['filename']) as $n => $x) {
+ if ($n > $max_n) {
continue;
- $sofar = join('/',$p);
- if (!isset($paths[$n])) $paths[$n] = array();
- if (!isset($paths[$n][$sofar])) $paths[$n][$sofar] = 0;
+ }
+ $sofar = join('/', $p);
+ if (!isset($paths[$n])) {
+ $paths[$n] = array();
+ }
+ if (!isset($paths[$n][$sofar])) {
+ $paths[$n][$sofar] = 0;
+ }
$paths[$n][$sofar]++;
$p[] = $x;
}
- $max_n = min($n,$max_n);
+ $max_n = min($n, $max_n);
}
$total = $paths[0][''];
$i = 0;
while (isset($paths[$i])
- AND count($paths[$i]) <= 1
- AND array_values($paths[$i]) == array($total))
+ AND count($paths[$i]) <= 1
+ AND array_values($paths[$i]) == array($total)) {
$i++;
+ }
$racine = '';
- if ($i){
+ if ($i) {
$racine = array_keys($paths[$i-1]);
- $racine = array_pop($racine).'/';
+ $racine = array_pop($racine) . '/';
}
return $racine;
diff --git a/teleporter/http_deballe_tgz.php b/teleporter/http_deballe_tgz.php
index 9578713..1d802fd 100644
--- a/teleporter/http_deballe_tgz.php
+++ b/teleporter/http_deballe_tgz.php
@@ -1,6 +1,6 @@
'',
- 'rename' => array(),
- 'edit' => array(),
- 'root_extract' => false, # extraire a la racine de dest ?
- 'tmp' => sous_repertoire(_DIR_CACHE, 'chargeur')
- )
- as $opt=>$def) {
+ foreach (array(
+ 'remove' => '',
+ 'rename' => array(),
+ 'edit' => array(),
+ 'root_extract' => false, # extraire a la racine de dest ?
+ 'tmp' => sous_repertoire(_DIR_CACHE, 'chargeur')
+ )
+ as $opt => $def) {
isset($quoi[$opt]) || ($quoi[$opt] = $def);
}
- if (!@file_exists($fichier = $quoi['fichier']))
+ if (!@file_exists($fichier = $quoi['fichier'])) {
return 0;
+ }
include_spip('inc/pcltar');
$racine = '';
- if ($list = PclTarList($fichier)){
+ if ($list = PclTarList($fichier)) {
$racine = http_deballe_recherche_racine($list);
$quoi['remove'] = $racine;
- }
- else {
- spip_log('charger_decompresser erreur lecture liste tar ' . PclErrorString() .' pour paquet: ' . $quoi['archive'],"teleport"._LOG_ERREUR);
+ } else {
+ spip_log('charger_decompresser erreur lecture liste tar ' . PclErrorString() . ' pour paquet: ' . $quoi['archive'],
+ "teleport" . _LOG_ERREUR);
+
return PclErrorString();
}
// si pas de racine commune, reprendre le nom du fichier zip
// en lui enlevant la racine h+md5 qui le prefixe eventuellement
// cf action/charger_plugin L74
- if (!strlen($nom = basename($racine)))
- $nom = preg_replace(",^h[0-9a-f]{8}-,i","",basename($fichier, '.zip'));
+ if (!strlen($nom = basename($racine))) {
+ $nom = preg_replace(",^h[0-9a-f]{8}-,i", "", basename($fichier, '.zip'));
+ }
$dir_export = $quoi['root_extract']
? $quoi['dest']
: $quoi['dest'] . $nom;
- $dir_export = rtrim($dir_export,'/').'/';
+ $dir_export = rtrim($dir_export, '/') . '/';
- $tmpname = $quoi['tmp'].$nom.'/';
+ $tmpname = $quoi['tmp'] . $nom . '/';
// choisir la cible selon si on veut vraiment extraire ou pas
$target = $quoi['extract'] ? $dir_export : $tmpname;
// ici, il faut vider le rep cible si il existe deja, non ?
- if (is_dir($target))
+ if (is_dir($target)) {
supprimer_repertoire($target);
+ }
- $ok = PclTarExtract($fichier,$target,$quoi['remove']);
+ $ok = PclTarExtract($fichier, $target, $quoi['remove']);
if ($ok == 0) {
- spip_log('charger_decompresser erreur tar ' . PclErrorString() .' pour paquet: ' . $quoi['archive'],"teleport"._LOG_ERREUR);
+ spip_log('charger_decompresser erreur tar ' . PclErrorString() . ' pour paquet: ' . $quoi['archive'],
+ "teleport" . _LOG_ERREUR);
+
return PclErrorString();
}
- spip_log('charger_decompresser OK pour paquet: ' . $quoi['archive'],"teleport");
+ spip_log('charger_decompresser OK pour paquet: ' . $quoi['archive'], "teleport");
$size = $compressed_size = 0;
- $removex = ',^'.preg_quote($quoi['remove'], ',').',';
+ $removex = ',^' . preg_quote($quoi['remove'], ',') . ',';
foreach ($list as $a => $f) {
$size += $f['size'];
$compressed_size += $f['compressed_size'];
- $list[$a] = preg_replace($removex,'',$f['filename']);
+ $list[$a] = preg_replace($removex, '', $f['filename']);
}
// Indiquer par un fichier install.log
// a la racine que c'est chargeur qui a installe ce plugin
- ecrire_fichier($target.'install.log',
+ ecrire_fichier($target . 'install.log',
"installation: charger_plugin\n"
- ."date: ".gmdate('Y-m-d\TH:i:s\Z', time())."\n"
- ."source: ".$quoi['archive']."\n"
+ . "date: " . gmdate('Y-m-d\TH:i:s\Z', time()) . "\n"
+ . "source: " . $quoi['archive'] . "\n"
);
diff --git a/teleporter/http_deballe_zip.php b/teleporter/http_deballe_zip.php
index cec9c4e..2abaeda 100644
--- a/teleporter/http_deballe_zip.php
+++ b/teleporter/http_deballe_zip.php
@@ -1,19 +1,19 @@
$archive, // normalement l'url source mais on l'a pas ici
@@ -36,18 +36,21 @@ function teleporter_http_deballe_zip_dist($archive, $dest, $tmp){
);
// le fichier .zip est la et bien forme
if (is_array($status)
- AND is_dir($status['target'])) {
+ AND is_dir($status['target'])
+ ) {
return $status['target'];
- }
- // fichier absent
- else if ($status == -1) {
- spip_log("dezip de $archive impossible : fichier absent","teleport"._LOG_ERREUR);
- return false;
- }
- // fichier la mais pas bien dezippe
+ } // fichier absent
else {
- spip_log("probleme lors du dezip de $archive","teleport"._LOG_ERREUR);
- return false;
+ if ($status == -1) {
+ spip_log("dezip de $archive impossible : fichier absent", "teleport" . _LOG_ERREUR);
+
+ return false;
+ } // fichier la mais pas bien dezippe
+ else {
+ spip_log("probleme lors du dezip de $archive", "teleport" . _LOG_ERREUR);
+
+ return false;
+ }
}
}
@@ -56,7 +59,7 @@ function teleporter_http_deballe_zip_dist($archive, $dest, $tmp){
* Charger un zip à partir d'un tableau d'options descriptives
*
* @uses http_deballe_recherche_racine()
- *
+ *
* @param array $quoi
* Tableau d'options
* @return array|bool|int|string
@@ -68,22 +71,25 @@ function teleporter_http_deballe_zip_dist($archive, $dest, $tmp){
* - tmpname : répertoire temporaire où les fichiers sont décompressés
* - target : cible sur laquelle décompresser les fichiers...
*/
-function teleporter_http_charger_zip($quoi = array()){
- if (!$quoi)
+function teleporter_http_charger_zip($quoi = array()) {
+ if (!$quoi) {
return false;
+ }
- foreach (array( 'remove' => 'spip',
- 'rename' => array(),
- 'edit' => array(),
- 'root_extract' => false, # extraire a la racine de dest ?
- 'tmp' => sous_repertoire(_DIR_CACHE, 'chargeur')
- )
- as $opt=>$def) {
+ foreach (array(
+ 'remove' => 'spip',
+ 'rename' => array(),
+ 'edit' => array(),
+ 'root_extract' => false, # extraire a la racine de dest ?
+ 'tmp' => sous_repertoire(_DIR_CACHE, 'chargeur')
+ )
+ as $opt => $def) {
isset($quoi[$opt]) || ($quoi[$opt] = $def);
}
- if (!@file_exists($fichier = $quoi['fichier']))
+ if (!@file_exists($fichier = $quoi['fichier'])) {
return 0;
+ }
include_spip('inc/pclzip');
$zip = new PclZip($fichier);
@@ -95,54 +101,58 @@ function teleporter_http_charger_zip($quoi = array()){
// si pas de racine commune, reprendre le nom du fichier zip
// en lui enlevant la racine h+md5 qui le prefixe eventuellement
// cf action/charger_plugin L74
- if (!strlen($nom = basename($racine)))
- $nom = preg_replace(",^h[0-9a-f]{8}-,i","",basename($fichier, '.zip'));
+ if (!strlen($nom = basename($racine))) {
+ $nom = preg_replace(",^h[0-9a-f]{8}-,i", "", basename($fichier, '.zip'));
+ }
$dir_export = $quoi['root_extract']
? $quoi['dest']
: $quoi['dest'] . $nom;
- $dir_export = rtrim($dir_export,'/').'/';
+ $dir_export = rtrim($dir_export, '/') . '/';
- $tmpname = $quoi['tmp'].$nom.'/';
+ $tmpname = $quoi['tmp'] . $nom . '/';
// choisir la cible selon si on veut vraiment extraire ou pas
$target = $quoi['extract'] ? $dir_export : $tmpname;
// ici, il faut vider le rep cible si il existe deja, non ?
- if (is_dir($target))
+ if (is_dir($target)) {
supprimer_repertoire($target);
+ }
// et enfin on extrait
$ok = $zip->extract(
PCLZIP_OPT_PATH,
- $target
+ $target
,
PCLZIP_OPT_SET_CHMOD, _SPIP_CHMOD,
PCLZIP_OPT_REPLACE_NEWER,
PCLZIP_OPT_REMOVE_PATH, $quoi['remove']
);
if ($zip->error_code < 0) {
- spip_log('charger_decompresser erreur zip ' . $zip->error_code .' pour paquet: ' . $quoi['archive'],"teleport"._LOG_ERREUR);
+ spip_log('charger_decompresser erreur zip ' . $zip->error_code . ' pour paquet: ' . $quoi['archive'],
+ "teleport" . _LOG_ERREUR);
+
return //$zip->error_code
$zip->errorName(true);
}
- spip_log('charger_decompresser OK pour paquet: ' . $quoi['archive'],"teleport");
+ spip_log('charger_decompresser OK pour paquet: ' . $quoi['archive'], "teleport");
$size = $compressed_size = 0;
- $removex = ',^'.preg_quote($quoi['remove'], ',').',';
+ $removex = ',^' . preg_quote($quoi['remove'], ',') . ',';
foreach ($list as $a => $f) {
$size += $f['size'];
$compressed_size += $f['compressed_size'];
- $list[$a] = preg_replace($removex,'',$f['filename']);
+ $list[$a] = preg_replace($removex, '', $f['filename']);
}
// Indiquer par un fichier install.log
// a la racine que c'est chargeur qui a installe ce plugin
- ecrire_fichier($target.'install.log',
+ ecrire_fichier($target . 'install.log',
"installation: charger_plugin\n"
- ."date: ".gmdate('Y-m-d\TH:i:s\Z', time())."\n"
- ."source: ".$quoi['archive']."\n"
+ . "date: " . gmdate('Y-m-d\TH:i:s\Z', time()) . "\n"
+ . "source: " . $quoi['archive'] . "\n"
);
diff --git a/teleporter/svn.php b/teleporter/svn.php
index 9543218..9dbeadd 100644
--- a/teleporter/svn.php
+++ b/teleporter/svn.php
@@ -1,6 +1,6 @@