From 6f3847d2b65416e5febf1a81a6a34e1ec7cc3676 Mon Sep 17 00:00:00 2001 From: JamesRezo Date: Wed, 8 Sep 2021 16:54:22 +0200 Subject: [PATCH] qa-tools (#4836) Co-authored-by: JamesRezo Reviewed-on: https://git.spip.net/spip/svp/pulls/4836 Co-authored-by: JamesRezo Co-committed-by: JamesRezo (cherry picked from commit 1f38ee2ae7a583f81505c45a4fe51f151e135a1e) --- .gitignore | 7 + action/actionner.php | 15 +- action/actualiser_depot.php | 5 +- action/editer_depot.php | 18 +- action/supprimer_depot.php | 3 +- action/teleporter.php | 19 +- base/svp_declarer.php | 209 +-- composer.json | 7 + exec/admin_plugin.php | 25 +- formulaires/admin_plugin.php | 35 +- formulaires/ajouter_depot.php | 18 +- formulaires/charger_plugin.php | 22 +- formulaires/charger_plugin_archive.php | 20 +- formulaires/editer_depot.php | 6 +- formulaires/inc-admin_plugin_fonctions.php | 5 +- genie/svp_actualiser_depots.php | 4 +- genie/svp_taches_generales_cron.php | 3 +- inc/svp_actionner.php | 304 ++-- inc/svp_decider.php | 188 +-- inc/svp_depoter_distant.php | 242 +-- inc/svp_depoter_local.php | 218 +-- inc/svp_outiller.php | 111 +- inc/svp_phraser.php | 76 +- inc/svp_plugin.php | 20 +- inc/svp_rechercher.php | 38 +- inc/where_compatible_spip.php | 6 +- phpcs.xml.dist | 15 + phpstan-baseline.neon | 1352 +++++++++++++++++ phpstan.neon.dist | 12 + plugins/fusion_paquet.php | 4 +- plugins/fusion_plugin.php | 13 +- plugins/preparer_sql_paquet.php | 51 +- plugins/preparer_sql_plugin.php | 36 +- .../inclure/voir_en_ligne_fonctions.php | 1 + .../navigation/svp_admin_plugin_fonctions.php | 1 + svp_administrations.php | 61 +- svp_fonctions.php | 46 +- svp_ieconfig.php | 2 +- svp_pipelines.php | 37 +- teleporter/git.php | 58 +- teleporter/http.php | 42 +- teleporter/http_deballe_tgz.php | 58 +- teleporter/http_deballe_zip.php | 58 +- teleporter/svn.php | 53 +- 44 files changed, 2527 insertions(+), 997 deletions(-) create mode 100644 .gitignore create mode 100644 composer.json create mode 100644 phpcs.xml.dist create mode 100644 phpstan-baseline.neon create mode 100644 phpstan.neon.dist diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f6fb500 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +/vendor/ +/composer.phar +/composer.lock +/phpcs.xml +/phpstan.neon +/.php_cs.cache +/.php_cs.txt diff --git a/action/actionner.php b/action/actionner.php index d0c4f41..ed334a2 100644 --- a/action/actionner.php +++ b/action/actionner.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Actions */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -75,7 +75,8 @@ function action_actionner_dist() { foreach ($actionneur->done as $done) { if ($done['todo'] == 'on') { - if ($voir = session_get('svp_admin_plugin_voir') + if ( + $voir = session_get('svp_admin_plugin_voir') and $voir == 'inactif' ) { session_set('svp_admin_plugin_voir', 'actif'); @@ -102,7 +103,7 @@ function action_actionner_dist() { * @param string $texte Texte de l'action réalisée * @param string $progres */ -function svp_redirige_boucle($url, $texte, $progres){ +function svp_redirige_boucle($url, $texte, $progres) { include_spip('inc/minipres'); //@apache_setenv('no-gzip', 1); // provoque page blanche chez certains hebergeurs donc ne pas utiliser @@ -111,11 +112,11 @@ function svp_redirige_boucle($url, $texte, $progres){ @ini_set('implicit_flush', 1); @ob_implicit_flush(1); - $pres = ''; - $pres .=" + $pres = ''; + $pres .= "
$texte
-
" . round($progres*100) . "%
-
+
" . round($progres * 100) . "%
+
"; $styles = " diff --git a/action/actualiser_depot.php b/action/actualiser_depot.php index 340907d..5dbf6d1 100644 --- a/action/actualiser_depot.php +++ b/action/actualiser_depot.php @@ -1,4 +1,5 @@ _request('titre'), 'descriptif' => _request('descriptif'), 'type' => _request('type') - ), - 'id_depot=' . sql_quote($id_depot))) { + ], + 'id_depot=' . sql_quote($id_depot) + ) + ) { ; } // Enregistre l'envoi dans la BD @@ -65,11 +69,11 @@ function action_editer_depot_dist() { // par souci de coherence avec les autres editions d'objet et pour usage futur $err = depots_set($id_depot); if (!$err) { - spip_log("ACTION MODIFIER DEPOT (manuel) : id_depot = " . $id_depot, 'svp_actions.' . _LOG_INFO); + spip_log('ACTION MODIFIER DEPOT (manuel) : id_depot = ' . $id_depot, 'svp_actions.' . _LOG_INFO); } } - return array($id_depot, $err); + return [$id_depot, $err]; } diff --git a/action/supprimer_depot.php b/action/supprimer_depot.php index 4ecca9f..5e105e1 100644 --- a/action/supprimer_depot.php +++ b/action/supprimer_depot.php @@ -1,4 +1,5 @@ $methode)); + return _T('svp:erreur_teleporter_methode_inconue', ['methode' => $methode]); } if (!$dest = teleporter_verifier_destination($d = $dest)) { - spip_log("Rerpertoire $d non accessible pour teleporter $source vers $d", "teleport" . _LOG_ERREUR); + spip_log("Rerpertoire $d non accessible pour teleporter $source vers $d", 'teleport' . _LOG_ERREUR); - return _T('svp:erreur_teleporter_destination_erreur', array('dir' => $d)); + return _T('svp:erreur_teleporter_destination_erreur', ['dir' => $d]); #$texte = "

"._T('plugin_erreur_droit1',array('dest'=>$dest))."

" # . "

"._T('plugin_erreur_droit2').aider('install0')."

"; } @@ -64,10 +65,10 @@ function action_teleporter_composant_dist($methode, $source, $dest, $options = a * Chemin du répertoire sinon */ function teleporter_verifier_destination($dest) { - $dest = rtrim($dest, "/"); + $dest = rtrim($dest, '/'); $final = basename($dest); $base = dirname($dest); - $create = array(); + $create = []; // on cree tout le chemin jusqu'a dest non inclus while (!is_dir($base)) { $create[] = basename($base); @@ -104,7 +105,7 @@ function teleporter_verifier_destination($dest) { * Chaîne vide sinon **/ function teleporter_nettoyer_vieille_version($dest) { - $old = ""; + $old = ''; if (is_dir($dest)) { $dir = dirname($dest); $base = basename($dest); diff --git a/base/svp_declarer.php b/base/svp_declarer.php index 1b21fab..c33236c 100644 --- a/base/svp_declarer.php +++ b/base/svp_declarer.php @@ -1,4 +1,5 @@ 'depots', 'type' => 'depot', - 'field' => array( - "id_depot" => "bigint(21) NOT NULL", - "titre" => "text DEFAULT '' NOT NULL", - "descriptif" => "text DEFAULT '' NOT NULL", - "type" => "varchar(10) DEFAULT '' NOT NULL", - "url_serveur" => "varchar(255) DEFAULT '' NOT NULL", + 'field' => [ + 'id_depot' => 'bigint(21) NOT NULL', + 'titre' => "text DEFAULT '' NOT NULL", + 'descriptif' => "text DEFAULT '' NOT NULL", + 'type' => "varchar(10) DEFAULT '' NOT NULL", + 'url_serveur' => "varchar(255) DEFAULT '' NOT NULL", // url du serveur svn ou git - "url_brouteur" => "varchar(255) DEFAULT '' NOT NULL", + 'url_brouteur' => "varchar(255) DEFAULT '' NOT NULL", // url de l'interface de gestion du repository (trac, redmine...) - "url_archives" => "varchar(255) DEFAULT '' NOT NULL", + 'url_archives' => "varchar(255) DEFAULT '' NOT NULL", // url de base des zips - "url_commits" => "varchar(255) DEFAULT '' NOT NULL", + 'url_commits' => "varchar(255) DEFAULT '' NOT NULL", // url du flux rss des commits du serveur svn ou git - "xml_paquets" => "varchar(255) DEFAULT '' NOT NULL", + 'xml_paquets' => "varchar(255) DEFAULT '' NOT NULL", // chemin complet du fichier xml du depot - "sha_paquets" => "varchar(40) DEFAULT '' NOT NULL", - "nbr_paquets" => "integer DEFAULT 0 NOT NULL", - "nbr_plugins" => "integer DEFAULT 0 NOT NULL", - "nbr_autres" => "integer DEFAULT 0 NOT NULL", + 'sha_paquets' => "varchar(40) DEFAULT '' NOT NULL", + 'nbr_paquets' => 'integer DEFAULT 0 NOT NULL', + 'nbr_plugins' => 'integer DEFAULT 0 NOT NULL', + 'nbr_autres' => 'integer DEFAULT 0 NOT NULL', // autres contributions, non plugin - "maj" => "timestamp" - ), - 'key' => array( - "PRIMARY KEY" => "id_depot" - ), - 'tables_jointures' => array('id_plugin' => 'depots_plugins'), + 'maj' => 'timestamp' + ], + 'key' => [ + 'PRIMARY KEY' => 'id_depot' + ], + 'tables_jointures' => ['id_plugin' => 'depots_plugins'], 'principale' => 'oui', // Titre, date et gestion du statut @@ -64,7 +65,7 @@ function svp_declarer_tables_objets_sql($tables) { 'url_voir' => 'depot', 'url_edit' => 'depot_edit', 'editable' => lire_config('svp/depot_editable', 'non'), - 'champs_editables' => array('titre', 'descriptif'), + 'champs_editables' => ['titre', 'descriptif'], 'icone_objet' => 'depot', // Textes standard @@ -79,29 +80,29 @@ function svp_declarer_tables_objets_sql($tables) { 'info_1_objet' => 'svp:info_1_depot', 'info_nb_objets' => 'svp:info_nb_depots', 'texte_logo_objet' => 'svp:titre_logo_depot', - ); + ]; // Table des plugins - $tables['spip_plugins'] = array( + $tables['spip_plugins'] = [ // Base de donnees 'table_objet' => 'plugins', 'type' => 'plugin', - 'field' => array( - "id_plugin" => "bigint(21) NOT NULL", - "prefixe" => "varchar(48) DEFAULT '' NOT NULL", - "nom" => "text DEFAULT '' NOT NULL", - "slogan" => "text DEFAULT '' NOT NULL", - "vmax" => "varchar(24) DEFAULT '' NOT NULL", // version la plus elevee des paquets du plugin - "date_crea" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // la plus ancienne des paquets du plugin - "date_modif" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // la plus recente des paquets du plugin - "compatibilite_spip" => "varchar(24) DEFAULT '' NOT NULL", // union des intervalles des paquets du plugin - "branches_spip" => "varchar(255) DEFAULT '' NOT NULL" - ), // union des branches spip supportees par les paquets du plugin - 'key' => array( - "PRIMARY KEY" => "id_plugin", - "KEY prefixe" => "prefixe" - ), - 'tables_jointures' => array('id_depot' => 'depots_plugins'), + 'field' => [ + 'id_plugin' => 'bigint(21) NOT NULL', + 'prefixe' => "varchar(48) DEFAULT '' NOT NULL", + 'nom' => "text DEFAULT '' NOT NULL", + 'slogan' => "text DEFAULT '' NOT NULL", + 'vmax' => "varchar(24) DEFAULT '' NOT NULL", // version la plus elevee des paquets du plugin + 'date_crea' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // la plus ancienne des paquets du plugin + 'date_modif' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // la plus recente des paquets du plugin + 'compatibilite_spip' => "varchar(24) DEFAULT '' NOT NULL", // union des intervalles des paquets du plugin + 'branches_spip' => "varchar(255) DEFAULT '' NOT NULL" + ], // union des branches spip supportees par les paquets du plugin + 'key' => [ + 'PRIMARY KEY' => 'id_plugin', + 'KEY prefixe' => 'prefixe' + ], + 'tables_jointures' => ['id_depot' => 'depots_plugins'], 'principale' => 'oui', // Titre, date et gestion du statut @@ -111,9 +112,9 @@ function svp_declarer_tables_objets_sql($tables) { 'page' => 'plugin', 'url_voir' => 'plugin', 'editable' => 'non', - 'champs_editables' => array(), - 'rechercher_champs' => array('prefixe' => 8, 'nom' => 8, 'slogan' => 4), - 'rechercher_jointures' => array('paquet' => array('auteur' => 8, 'description' => 2)), + 'champs_editables' => [], + 'rechercher_champs' => ['prefixe' => 8, 'nom' => 8, 'slogan' => 4], + 'rechercher_jointures' => ['paquet' => ['auteur' => 8, 'description' => 2]], 'icone_objet' => 'plugin', // Textes standard @@ -128,79 +129,79 @@ function svp_declarer_tables_objets_sql($tables) { 'info_1_objet' => 'svp:info_1_plugin', 'info_nb_objets' => 'svp:info_nb_plugins', 'texte_logo_objet' => 'svp:titre_logo_plugin', - ); + ]; - $tables['spip_paquets'] = array( + $tables['spip_paquets'] = [ // Base de donnees 'table_objet' => 'paquets', 'type' => 'paquet', - 'field' => array( - "id_paquet" => "bigint(21) NOT NULL", - "id_plugin" => "bigint(21) NOT NULL", - "prefixe" => "varchar(48) DEFAULT '' NOT NULL", - "logo" => "varchar(255) DEFAULT '' NOT NULL", + 'field' => [ + 'id_paquet' => 'bigint(21) NOT NULL', + 'id_plugin' => 'bigint(21) NOT NULL', + 'prefixe' => "varchar(48) DEFAULT '' NOT NULL", + 'logo' => "varchar(255) DEFAULT '' NOT NULL", // chemin du logo depuis la racine du plugin - "version" => "varchar(24) DEFAULT '' NOT NULL", - "version_base" => "varchar(24) DEFAULT '' NOT NULL", - "compatibilite_spip" => "varchar(24) DEFAULT '' NOT NULL", - "branches_spip" => "varchar(255) DEFAULT '' NOT NULL", + 'version' => "varchar(24) DEFAULT '' NOT NULL", + 'version_base' => "varchar(24) DEFAULT '' NOT NULL", + 'compatibilite_spip' => "varchar(24) DEFAULT '' NOT NULL", + 'branches_spip' => "varchar(255) DEFAULT '' NOT NULL", // branches spip supportees (cf meta) - "description" => "text DEFAULT '' NOT NULL", - "auteur" => "text DEFAULT '' NOT NULL", - "credit" => "text DEFAULT '' NOT NULL", - "licence" => "text DEFAULT '' NOT NULL", - "copyright" => "text DEFAULT '' NOT NULL", - "lien_doc" => "text DEFAULT '' NOT NULL", + 'description' => "text DEFAULT '' NOT NULL", + 'auteur' => "text DEFAULT '' NOT NULL", + 'credit' => "text DEFAULT '' NOT NULL", + 'licence' => "text DEFAULT '' NOT NULL", + 'copyright' => "text DEFAULT '' NOT NULL", + 'lien_doc' => "text DEFAULT '' NOT NULL", // lien vers la documentation - "lien_demo" => "text DEFAULT '' NOT NULL", + 'lien_demo' => "text DEFAULT '' NOT NULL", // lien vers le site de demo - "lien_dev" => "text DEFAULT '' NOT NULL", + 'lien_dev' => "text DEFAULT '' NOT NULL", // lien vers le site de dev - "etat" => "varchar(16) DEFAULT '' NOT NULL", - "etatnum" => "int(1) DEFAULT 0 NOT NULL", + 'etat' => "varchar(16) DEFAULT '' NOT NULL", + 'etatnum' => 'int(1) DEFAULT 0 NOT NULL', // 0 aucune indication - 1 exp - 2 dev - 3 test - 4 stable - "dependances" => "text DEFAULT '' NOT NULL", - "procure" => "text DEFAULT '' NOT NULL", - "date_crea" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", - "date_modif" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", - "id_depot" => "bigint(21) DEFAULT 0 NOT NULL", + 'dependances' => "text DEFAULT '' NOT NULL", + 'procure' => "text DEFAULT '' NOT NULL", + 'date_crea' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", + 'date_modif' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", + 'id_depot' => 'bigint(21) DEFAULT 0 NOT NULL', // 0 pour un paquet local - "nom_archive" => "VARCHAR(255) DEFAULT '' NOT NULL", + 'nom_archive' => "VARCHAR(255) DEFAULT '' NOT NULL", // nom du zip du paquet, depuis l'adresse de la zone - "nbo_archive" => "integer DEFAULT 0 NOT NULL", + 'nbo_archive' => 'integer DEFAULT 0 NOT NULL', // taille de l'archive en octets - "maj_archive" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", + 'maj_archive' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // date de mise a jour de l'archive - "src_archive" => "VARCHAR(255) DEFAULT '' NOT NULL", + 'src_archive' => "VARCHAR(255) DEFAULT '' NOT NULL", // source de l'archive sur le depot - "traductions" => "text DEFAULT '' NOT NULL", + 'traductions' => "text DEFAULT '' NOT NULL", // tableau serialise par module des langues traduites et de leurs traducteurs - "actif" => "varchar(3) DEFAULT 'non' NOT NULL", + 'actif' => "varchar(3) DEFAULT 'non' NOT NULL", // est actif ? oui / non - "installe" => "varchar(3) DEFAULT 'non' NOT NULL", + 'installe' => "varchar(3) DEFAULT 'non' NOT NULL", // est desinstallable ? oui / non - "recent" => "int(2) DEFAULT 0 NOT NULL", + 'recent' => 'int(2) DEFAULT 0 NOT NULL', // a ete utilise recemment ? > 0 : oui - "maj_version" => "VARCHAR(255) DEFAULT '' NOT NULL", + 'maj_version' => "VARCHAR(255) DEFAULT '' NOT NULL", // version superieure existante (mise a jour possible) - "superieur" => "varchar(3) DEFAULT 'non' NOT NULL", + 'superieur' => "varchar(3) DEFAULT 'non' NOT NULL", // superieur : version plus recente disponible (distant) d'un plugin (actif?) existant - "obsolete" => "varchar(3) DEFAULT 'non' NOT NULL", + 'obsolete' => "varchar(3) DEFAULT 'non' NOT NULL", // obsolete : version plus ancienne (locale) disponible d'un plugin local existant - "attente" => "varchar(3) DEFAULT 'non' NOT NULL", + 'attente' => "varchar(3) DEFAULT 'non' NOT NULL", // attente : plugin semi actif (il etait actif, mais il lui manque maintenant une dependance : il reste coche actif jusqu'a resolution ou desactivation manuelle) - "constante" => "VARCHAR(30) DEFAULT '' NOT NULL", + 'constante' => "VARCHAR(30) DEFAULT '' NOT NULL", // nom de la constante _DIR_(PLUGINS|EXTENSIONS|PLUGINS_SUPP) - "signature" => "VARCHAR(32) DEFAULT '' NOT NULL" - ), // hash MD5 d'un paquet - 'key' => array( - "PRIMARY KEY" => "id_paquet", - "KEY id_plugin" => "id_plugin" - ), - 'join' => array( - "id_paquet" => "id_paquet", - "id_plugin" => "id_plugin" - ), + 'signature' => "VARCHAR(32) DEFAULT '' NOT NULL" + ], // hash MD5 d'un paquet + 'key' => [ + 'PRIMARY KEY' => 'id_paquet', + 'KEY id_plugin' => 'id_plugin' + ], + 'join' => [ + 'id_paquet' => 'id_paquet', + 'id_plugin' => 'id_plugin' + ], 'principale' => 'oui', // Titre, date et gestion du statut @@ -210,9 +211,9 @@ function svp_declarer_tables_objets_sql($tables) { 'page' => 'paquet', 'url_voir' => '', 'editable' => 'non', - 'champs_editables' => array(), - 'rechercher_champs' => array(), - 'rechercher_jointures' => array(), + 'champs_editables' => [], + 'rechercher_champs' => [], + 'rechercher_jointures' => [], 'icone_objet' => 'paquet', // Textes standard @@ -227,7 +228,7 @@ function svp_declarer_tables_objets_sql($tables) { 'info_1_objet' => 'svp:info_1_paquet', 'info_nb_objets' => 'svp:info_nb_paquets', 'texte_logo_objet' => '', - ); + ]; return $tables; } @@ -246,17 +247,17 @@ function svp_declarer_tables_objets_sql($tables) { */ function svp_declarer_tables_auxiliaires($tables_auxiliaires) { // Tables de liens entre plugins et depots : spip_depots_plugins - $spip_depots_plugins = array( - "id_depot" => "bigint(21) NOT NULL", - "id_plugin" => "bigint(21) NOT NULL" - ); + $spip_depots_plugins = [ + 'id_depot' => 'bigint(21) NOT NULL', + 'id_plugin' => 'bigint(21) NOT NULL' + ]; - $spip_depots_plugins_key = array( - "PRIMARY KEY" => "id_depot, id_plugin" - ); + $spip_depots_plugins_key = [ + 'PRIMARY KEY' => 'id_depot, id_plugin' + ]; $tables_auxiliaires['spip_depots_plugins'] = - array('field' => &$spip_depots_plugins, 'key' => &$spip_depots_plugins_key); + ['field' => &$spip_depots_plugins, 'key' => &$spip_depots_plugins_key]; return $tables_auxiliaires; } diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..889d1e4 --- /dev/null +++ b/composer.json @@ -0,0 +1,7 @@ +{ + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1", + "spip/coding-standards": "^1.2", + "phpstan/phpstan": "^0.12.98" + } +} diff --git a/exec/admin_plugin.php b/exec/admin_plugin.php index 0a173c1..2f80a73 100644 --- a/exec/admin_plugin.php +++ b/exec/admin_plugin.php @@ -96,15 +96,16 @@ function exec_admin_plugin_dist() { $erreur_activation = plugin_donne_erreurs(); $commencer_page = charger_fonction('commencer_page', 'inc'); - echo $commencer_page(_T('icone_admin_plugin'), "configuration", "plugin"); + echo $commencer_page(_T('icone_admin_plugin'), 'configuration', 'plugin'); echo debut_gauche(); - echo pipeline('affiche_gauche', - array( - 'args' => array('exec' => 'admin_plugin'), + echo pipeline( + 'affiche_gauche', + [ + 'args' => ['exec' => 'admin_plugin'], 'data' => recuperer_fond('prive/squelettes/navigation/svp_admin_plugin') - ) + ] ); echo debut_droite(); @@ -115,7 +116,7 @@ function exec_admin_plugin_dist() { if (defined('_DEV_VERSION_SPIP_COMPAT')) { include_spip('inc/filtres_alertes'); echo message_alerte( - _T('svp:alerte_compatibilite_version_autorisee', array('version' => _DEV_VERSION_SPIP_COMPAT)), + _T('svp:alerte_compatibilite_version_autorisee', ['version' => _DEV_VERSION_SPIP_COMPAT]), _T('svp:alerte_compatibilite') ); } @@ -138,13 +139,14 @@ function exec_admin_plugin_dist() { $args = $_REQUEST; - echo recuperer_fond('prive/squelettes/contenu/svp_admin_plugin', $args, array('ajax' => true)); + echo recuperer_fond('prive/squelettes/contenu/svp_admin_plugin', $args, ['ajax' => true]); - echo pipeline('affiche_milieu', - array( - 'args' => array('exec' => 'admin_plugin'), + echo pipeline( + 'affiche_milieu', + [ + 'args' => ['exec' => 'admin_plugin'], 'data' => '' - ) + ] ); echo fin_gauche(), fin_page(); @@ -186,5 +188,4 @@ function svp_presenter_actions_realisees() { } return $pres; - } diff --git a/formulaires/admin_plugin.php b/formulaires/admin_plugin.php index 62e9eb9..87c3db7 100644 --- a/formulaires/admin_plugin.php +++ b/formulaires/admin_plugin.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Formulaires */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -32,7 +32,7 @@ if (!defined("_ECRIRE_INC_VERSION")) { * Environnement du formulaire **/ function formulaires_admin_plugin_charger_dist($voir = '', $verrouille = '', $id_paquet = '', $redirect = '') { - $valeurs = array(); + $valeurs = []; if (!autoriser('configurer', '_plugins')) { return false; @@ -41,7 +41,7 @@ function formulaires_admin_plugin_charger_dist($voir = '', $verrouille = '', $id // actualiser la liste des paquets locaux systematiquement include_spip('inc/svp_depoter_local'); // sans forcer tout le recalcul en base, mais en récupérant les erreurs XML - $valeurs['_erreurs_xml'] = array(); + $valeurs['_erreurs_xml'] = []; svp_actualiser_paquets_locaux(false, $valeurs['_erreurs_xml']); $valeurs['actif'] = ''; @@ -49,17 +49,17 @@ function formulaires_admin_plugin_charger_dist($voir = '', $verrouille = '', $id $valeurs['actif'] = 'oui'; } elseif ($voir === 'inactif') { $valeurs['actif'] = 'non'; - } + } - $valeurs['constante'] = array(); + $valeurs['constante'] = []; if ($verrouille === 'oui') { - $valeurs['constante'] = array('_DIR_PLUGINS_DIST'); + $valeurs['constante'] = ['_DIR_PLUGINS_DIST']; } elseif ( $verrouille === 'non' // sans précision de verrouillage, sur 'actif' c’est juste les plugins non verrouillés. or (!$verrouille && in_array($voir, ['', 'actif', 'inactif'])) ) { - $valeurs['constante'] = array('_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL'); + $valeurs['constante'] = ['_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL']; } elseif (!$verrouille) { // historique pour chaine de langues... $verrouille = 'tous'; @@ -67,7 +67,7 @@ function formulaires_admin_plugin_charger_dist($voir = '', $verrouille = '', $id $valeurs['verrouille'] = $verrouille; $valeurs['id_paquet'] = $id_paquet; - $valeurs['actions'] = array(); + $valeurs['actions'] = []; $valeurs['ids_paquet'] = _request('ids_paquet'); $valeurs['afficher_incompatibles'] = _request('afficher_incompatibles'); $valeurs['_todo'] = _request('_todo'); @@ -110,18 +110,18 @@ function formulaires_admin_plugin_charger_dist($voir = '', $verrouille = '', $id **/ function formulaires_admin_plugin_verifier_dist($voir = 'actif', $verrouille = 'non', $id_paquet = '', $redirect = '') { - $erreurs = array(); + $erreurs = []; if (_request('annuler_actions')) { // Requete : Annulation des actions d'installation en cours // -- On vide la liste d'actions en cours set_request('_todo', ''); // -- vider les paquets coches s'il y en a - set_request('ids_paquet', array()); + set_request('ids_paquet', []); } elseif (_request('valider_actions')) { - // ... + // ... } else { - $a_actionner = array(); + $a_actionner = []; // actions globales... if ($action_globale = _request('action_globale') and _request('appliquer')) { @@ -148,17 +148,16 @@ function formulaires_admin_plugin_verifier_dist($voir = 'actif', $verrouille = ' if (!$a_actionner) { $erreurs['message_erreur'] = _T('svp:message_erreur_aucun_plugin_selectionne'); } else { - // On fait appel au decideur pour determiner la liste exacte des commandes apres // verification des dependances include_spip('inc/svp_decider'); svp_decider_verifier_actions_demandees($a_actionner, $erreurs); - $todo = _request('_todo') ? unserialize(_request('_todo')) : array(); - $actions = _request('_decideur_actions') ? unserialize(_request('_decideur_actions')) : array(); + $todo = _request('_todo') ? unserialize(_request('_todo')) : []; + $actions = _request('_decideur_actions') ? unserialize(_request('_decideur_actions')) : []; // si c'est une action simple (hors suppression) sans rien a faire de plus que demande, on y go direct if (in_array('stop', $todo) or in_array('kill', $todo)) { if (in_array('stop', $todo)) { - $notices = array(); + $notices = []; $notices['decideur_warning'] = _T('svp:confirmer_desinstaller'); set_request('_notices', $notices); } @@ -204,13 +203,13 @@ function formulaires_admin_plugin_verifier_dist($voir = 'actif', $verrouille = ' **/ function formulaires_admin_plugin_traiter_dist($voir = 'actif', $verrouille = 'non', $id_paquet = '', $redirect = '') { - $retour = array(); + $retour = []; if (_request('valider_actions')) { refuser_traiter_formulaire_ajax(); // Ajout de la liste des actions à l'actionneur // c'est lui qui va effectuer rellement les actions - // lors de l'appel de action/actionner + // lors de l'appel de action/actionner $actions = unserialize(_request('_todo')); include_spip('inc/svp_actionner'); svp_actionner_traiter_actions_demandees($actions, $retour, $redirect); diff --git a/formulaires/ajouter_depot.php b/formulaires/ajouter_depot.php index 8e5836d..aff1d69 100644 --- a/formulaires/ajouter_depot.php +++ b/formulaires/ajouter_depot.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Formulaires */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -25,9 +25,9 @@ function formulaires_ajouter_depot_charger_dist() { } // On ne renvoie pas les valeurs saisies mais on fait un raz systematique - return array( + return [ 'nb_depots' => (int)sql_countsel('spip_depots'), - ); + ]; } /** @@ -42,7 +42,7 @@ function formulaires_ajouter_depot_charger_dist() { **/ function formulaires_ajouter_depot_verifier_dist() { - $erreurs = array(); + $erreurs = []; $xml = trim(_request('xml_paquets')); if (!$xml) { @@ -50,10 +50,10 @@ function formulaires_ajouter_depot_verifier_dist() { $erreurs['xml_paquets'] = _T('svp:message_nok_champ_obligatoire'); } elseif (!svp_verifier_adresse_depot($xml)) { // L'url n'est pas correcte, le fichier xml n'a pas ete trouve - $erreurs['xml_paquets'] = _T('svp:message_nok_url_depot_incorrecte', array('url' => $xml)); + $erreurs['xml_paquets'] = _T('svp:message_nok_url_depot_incorrecte', ['url' => $xml]); } elseif (sql_countsel('spip_depots', 'xml_paquets=' . sql_quote($xml))) { // L'url est deja ajoutee - $erreurs['xml_paquets'] = _T('svp:message_nok_depot_deja_ajoute', array('url' => $xml)); + $erreurs['xml_paquets'] = _T('svp:message_nok_depot_deja_ajoute', ['url' => $xml]); } return $erreurs; @@ -73,7 +73,7 @@ function formulaires_ajouter_depot_verifier_dist() { function formulaires_ajouter_depot_traiter_dist() { include_spip('inc/svp_depoter_distant'); - $retour = array(); + $retour = []; $xml = trim(_request('xml_paquets')); // On ajoute le depot et ses plugins dans la base @@ -86,8 +86,8 @@ function formulaires_ajouter_depot_traiter_dist() { if (!$ok) { $retour['message_erreur'] = $erreur; } else { - $retour['message_ok'] = _T('svp:message_ok_depot_ajoute', array('url' => $xml)); - spip_log("ACTION AJOUTER DEPOT (manuel) : url = " . $xml, 'svp_actions.' . _LOG_INFO); + $retour['message_ok'] = _T('svp:message_ok_depot_ajoute', ['url' => $xml]); + spip_log('ACTION AJOUTER DEPOT (manuel) : url = ' . $xml, 'svp_actions.' . _LOG_INFO); } $retour['editable'] = true; diff --git a/formulaires/charger_plugin.php b/formulaires/charger_plugin.php index 10f4a15..5e7844b 100644 --- a/formulaires/charger_plugin.php +++ b/formulaires/charger_plugin.php @@ -9,7 +9,7 @@ * @package SPIP\SVP\Formulaires */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -28,7 +28,7 @@ function formulaires_charger_plugin_charger_dist() { return false; } - return array( + return [ 'phrase' => _request('phrase'), 'etat' => _request('etat'), 'depot' => _request('depot'), @@ -39,7 +39,7 @@ function formulaires_charger_plugin_charger_dist() { '_libelles_actions' => _request('_libelles_actions'), // on présente les actions réalisées ici au retour, lorsqu'il n'y avait eu que des Téléchargement demandés (sans activation) '_actions_realisees' => (_request('todo') or _AJAX) ? '' : svp_presenter_actions_realisees() - ); + ]; } /** @@ -62,20 +62,17 @@ function formulaires_charger_plugin_charger_dist() { **/ function formulaires_charger_plugin_verifier_dist() { - $erreurs = array(); - $a_installer = array(); + $erreurs = []; + $a_installer = []; if (_request('annuler_actions')) { // Requete : Annulation des actions d'installation en cours // -- On vide la liste d'actions en cours set_request('_todo', ''); - } elseif (_request('valider_actions')) { - - } elseif (_request('rechercher')) { // annuler les selections si nouvelle recherche - set_request('ids_paquet', array()); + set_request('ids_paquet', []); } else { // Requete : Installation d'un ou de plusieurs plugins // -- On construit le tableau des ids de paquets conformement a l'interface du decideur @@ -122,20 +119,19 @@ function formulaires_charger_plugin_verifier_dist() { **/ function formulaires_charger_plugin_traiter_dist() { - $retour = array(); + $retour = []; if (_request('rechercher') or _request('annuler_actions')) { - } elseif (_request('valider_actions')) { #refuser_traiter_formulaire_ajax(); // Ajout de la liste des actions à l'actionneur // c'est lui qui va effectuer rellement les actions - // lors de l'appel de action/actionner + // lors de l'appel de action/actionner $actions = unserialize(_request('_todo')); include_spip('inc/svp_actionner'); // si toutes les actions sont des téléchargements (pas d'activation), on reste sur cette page $redirect = null; - if (!array_diff($actions, array('get'))) { + if (!array_diff($actions, ['get'])) { $redirect = self(); } svp_actionner_traiter_actions_demandees($actions, $retour, $redirect); diff --git a/formulaires/charger_plugin_archive.php b/formulaires/charger_plugin_archive.php index 590ad86..074b2bf 100644 --- a/formulaires/charger_plugin_archive.php +++ b/formulaires/charger_plugin_archive.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Formulaires */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -24,10 +24,10 @@ function formulaires_charger_plugin_archive_charger_dist() { return false; } - return array( + return [ 'archive' => '', 'destination' => '' - ); + ]; } /** @@ -41,7 +41,7 @@ function formulaires_charger_plugin_archive_charger_dist() { **/ function formulaires_charger_plugin_archive_verifier_dist() { include_spip('inc/plugin'); // _DIR_PLUGINS_AUTO - $erreurs = array(); + $erreurs = []; if (!$archive = _request('archive')) { $erreurs['archive'] = _T('info_obligatoire'); } else { @@ -63,10 +63,10 @@ function formulaires_charger_plugin_archive_verifier_dist() { $base = dirname($dir); $nom = basename($dir); $backup = "$base/.$nom.bck"; - $erreurs['confirmer'] = _T("svp:confirmer_telecharger_dans", array( + $erreurs['confirmer'] = _T('svp:confirmer_telecharger_dans', [ 'dir' => joli_repertoire($dir), 'dir_backup' => joli_repertoire($backup) - )); + ]); } } } @@ -83,7 +83,7 @@ function formulaires_charger_plugin_archive_verifier_dist() { * Retours du traitement **/ function formulaires_charger_plugin_archive_traiter_dist() { - $retour = array(); + $retour = []; $archive = _request('archive'); $dest = _request('destination'); @@ -94,8 +94,10 @@ function formulaires_charger_plugin_archive_traiter_dist() { if ($ok !== true) { $retour['message_erreur'] = $ok; } else { - $retour['message_ok'] = _T('svp:message_telechargement_archive_effectue', - array('dir' => joli_repertoire(_DIR_PLUGINS_AUTO . $dest))); + $retour['message_ok'] = _T( + 'svp:message_telechargement_archive_effectue', + ['dir' => joli_repertoire(_DIR_PLUGINS_AUTO . $dest)] + ); } $retour['editable'] = true; diff --git a/formulaires/editer_depot.php b/formulaires/editer_depot.php index 004c6d9..3a3ab78 100644 --- a/formulaires/editer_depot.php +++ b/formulaires/editer_depot.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Formulaires */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -41,7 +41,7 @@ function formulaires_editer_depot_charger_dist($id_depot, $redirect) { * Tableau des erreurs **/ function formulaires_editer_depot_verifier_dist($id_depot, $redirect) { - $erreurs = formulaires_editer_objet_verifier('depot', $id_depot, array('titre')); + $erreurs = formulaires_editer_objet_verifier('depot', $id_depot, ['titre']); return $erreurs; } @@ -73,7 +73,7 @@ function depots_edit_config($row) { global $spip_ecran, $spip_lang; $config = $GLOBALS['meta']; - $config['lignes'] = ($spip_ecran == "large") ? 8 : 5; + $config['lignes'] = ($spip_ecran == 'large') ? 8 : 5; $config['langue'] = $spip_lang; return $config; diff --git a/formulaires/inc-admin_plugin_fonctions.php b/formulaires/inc-admin_plugin_fonctions.php index 4434ddd..e025be0 100644 --- a/formulaires/inc-admin_plugin_fonctions.php +++ b/formulaires/inc-admin_plugin_fonctions.php @@ -8,11 +8,11 @@ * @package SPIP\SVP\Formulaires */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } -include_spip("inc/plugin"); +include_spip('inc/plugin'); /** * Crée une valeur d'action pour l'attribut 'name' d'une saisie de formulaire @@ -28,4 +28,3 @@ include_spip("inc/plugin"); function filtre_svp_nom_action($id_paquet, $action) { return "actions[$action][$id_paquet]"; } - diff --git a/genie/svp_actualiser_depots.php b/genie/svp_actualiser_depots.php index f27c59b..d074ea8 100644 --- a/genie/svp_actualiser_depots.php +++ b/genie/svp_actualiser_depots.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Genie */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -31,7 +31,7 @@ function genie_svp_actualiser_depots_dist($last) { if ($resultats = sql_allfetsel('id_depot', 'spip_depots')) { foreach ($resultats as $depot) { svp_actualiser_depot($depot['id_depot']); - spip_log("ACTION ACTUALISER DEPOT (automatique) : id_depot = " . $depot['id_depot'], 'svp_actions.' . _LOG_INFO); + spip_log('ACTION ACTUALISER DEPOT (automatique) : id_depot = ' . $depot['id_depot'], 'svp_actions.' . _LOG_INFO); } } diff --git a/genie/svp_taches_generales_cron.php b/genie/svp_taches_generales_cron.php index 11eb332..a15ac58 100644 --- a/genie/svp_taches_generales_cron.php +++ b/genie/svp_taches_generales_cron.php @@ -7,7 +7,8 @@ * @license GPL * @package SPIP\SVP\Genie */ -if (!defined("_ECRIRE_INC_VERSION")) { + +if (!defined('_ECRIRE_INC_VERSION')) { return; } diff --git a/inc/svp_actionner.php b/inc/svp_actionner.php index 8ffaa8f..c801d2c 100644 --- a/inc/svp_actionner.php +++ b/inc/svp_actionner.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Actionneur */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -43,7 +43,7 @@ class Actionneur { * @var array * Tableau identifiant du paquet => type d'action */ - public $start = array(); + public $start = []; /** * Actions en cours d'analyse @@ -60,12 +60,12 @@ class Actionneur { * Index 'on' : les paquets à activer (ordre des dépendances) * Index 'neutre' : autres actions dont l'ordre a peu d'importance. */ - public $middle = array( - 'off' => array(), - 'lib' => array(), - 'on' => array(), - 'neutre' => array(), - ); + public $middle = [ + 'off' => [], + 'lib' => [], + 'on' => [], + 'neutre' => [], + ]; // actions à la fin (apres analyse, et dans l'ordre) @@ -76,7 +76,7 @@ class Actionneur { * * @var array */ - public $end = array(); + public $end = []; /** * Liste des actions faites @@ -84,7 +84,7 @@ class Actionneur { * * @var array */ - public $done = array(); // faites + public $done = []; // faites /** * Actions en cours @@ -92,14 +92,14 @@ class Actionneur { * * @var array */ - public $work = array(); + public $work = []; /** * Liste des erreurs * * @var array Liste des erreurs */ - public $err = array(); + public $err = []; /** * Verrou. @@ -108,7 +108,7 @@ class Actionneur { * @var array * Index 'id_auteur' : Identifiant de l'auteur ayant déclenché des actions * Indix 'time' : timestamp de l'heure de déclenchement de l'action */ - public $lock = array('id_auteur' => 0, 'time' => ''); + public $lock = ['id_auteur' => 0, 'time' => '']; /** * SVP (ce plugin) est-il à désactiver dans une des actions ? @@ -171,15 +171,15 @@ class Actionneur { * Remet à zéro les tableaux d'actions */ public function clear() { - $this->middle = array( - 'off' => array(), - 'lib' => array(), - 'on' => array(), - 'neutre' => array(), - ); - $this->end = array(); - $this->done = array(); - $this->work = array(); + $this->middle = [ + 'off' => [], + 'lib' => [], + 'on' => [], + 'neutre' => [], + ]; + $this->end = []; + $this->done = []; + $this->work = []; } /** @@ -212,13 +212,13 @@ class Actionneur { public function add_lib($nom, $source) { if (!$this->decideur->est_presente_lib($nom)) { if (is_writable(_DIR_LIB)) { - $this->middle['lib'][$nom] = array( + $this->middle['lib'][$nom] = [ 'todo' => 'getlib', 'n' => $nom, 'p' => $nom, 'v' => $source, 's' => $source, - ); + ]; } else { // erreur : impossible d'ecrire dans _DIR_LIB ! // TODO : message et retour d'erreur a gerer... @@ -250,13 +250,13 @@ class Actionneur { * - puis les actions neutres */ public function ordonner_actions() { - $this->log("Ordonner les actions à réaliser"); + $this->log('Ordonner les actions à réaliser'); // nettoyer le terrain $this->clear(); // récupérer les descriptions de chaque paquet - $this->log("> Récupérer les descriptions des paquets concernés"); - $infos = array(); + $this->log('> Récupérer les descriptions des paquets concernés'); + $infos = []; foreach ($this->start as $id => $action) { // seulement les identifiants de paquets (pas les librairies) if (is_int($id)) { @@ -265,14 +265,14 @@ class Actionneur { } } - // Calculer les dépendances (nécessite) profondes pour chaque paquet, + // Calculer les dépendances (nécessite) profondes pour chaque paquet, // si les plugins en questions sont parmis ceux actionnés // (ie A dépend de B qui dépend de C => a dépend de B et C). $infos = $this->calculer_necessites_complets($infos); foreach ($this->start as $id => $action) { // infos du paquet. Ne s'applique pas sur librairie ($id = md5) - $i = is_int($id) ? $infos[$id] : array(); + $i = is_int($id) ? $infos[$id] : []; switch ($action) { case 'getlib': @@ -314,7 +314,7 @@ class Actionneur { // on le met comme derniere action... // sinon on ne pourrait pas faire les suivantes ! if ($this->svp_off) { - $this->log("SVP a desactiver a la fin."); + $this->log('SVP a desactiver a la fin.'); foreach ($this->end as $c => $info) { if ($info['p'] == 'SVP') { unset($this->end[$c]); @@ -324,7 +324,7 @@ class Actionneur { } } - $this->log("------------"); + $this->log('------------'); #$this->log("Fin du tri :"); #$this->log($this->end); } @@ -334,21 +334,21 @@ class Actionneur { * Complète les infos des paquets actionnés pour qu'ils contiennent * en plus de leurs 'necessite' directs, tous les nécessite des * plugins dont ils dépendent, si ceux ci sont aussi actionnés. - * - * Ie: si A indique dépendre de B, et B de C, la clé + * + * Ie: si A indique dépendre de B, et B de C, la clé * 'dp' (dépendances prefixes). indiquera les préfixes - * des plugins B et C - * + * des plugins B et C + * * On ne s'occupe pas des versions de compatibilité ici * * @param array $infos (identifiant => description courte du plugin) * @return array $infos **/ public function calculer_necessites_complets($infos) { - $this->log("> Calculer les dépendances nécessités sur paquets concernés"); + $this->log('> Calculer les dépendances nécessités sur paquets concernés'); // prefixe => array(prefixes) - $necessites = array(); + $necessites = []; // 1) déjà les préfixes directement nécessités foreach ($infos as $i => $info) { @@ -356,8 +356,8 @@ class Actionneur { $necessites[$info['p']] = array_column($info['dn'], 'nom'); } // préparer la clé dp (dépendances préfixes) et 'dmp' (dépendent de moi) vide - $infos[$i]['dp'] = array(); - $infos[$i]['dmp'] = array(); + $infos[$i]['dp'] = []; + $infos[$i]['dmp'] = []; } if ($nb = count($necessites)) { @@ -374,7 +374,7 @@ class Actionneur { // 4) calculer une clé 'dmp' : liste des paquets actionnés qui dépendent de moi foreach ($infos as $i => $info) { - $dmp = array(); + $dmp = []; foreach ($necessites as $prefixe => $liste) { if (in_array($info['p'], $liste)) { $dmp[] = $prefixe; @@ -391,8 +391,8 @@ class Actionneur { /** * Fonction récursive pour calculer la liste de tous les préfixes - * de plugins nécessités par un autre. - * + * de plugins nécessités par un autre. + * * Avec une liste fermée connue d'avance des possibilités de plugins * (ceux qui seront actionnés) * @@ -423,7 +423,7 @@ class Actionneur { } if ($changement and $profondeur > 10) { - $this->log("! Problème de calcul de dépendances complètes : récursion probable. On stoppe."); + $this->log('! Problème de calcul de dépendances complètes : récursion probable. On stoppe.'); } return $necessites; @@ -456,7 +456,7 @@ class Actionneur { $this->log("ON: $p $action"); // si dependance, il faut le mettre avant ! - $in = $out = $prov = $deps = $deps_all = array(); + $in = $out = $prov = $deps = $deps_all = []; // raz des cles pour avoir les memes que $out (utile reellement ?) $this->middle['on'] = array_values($this->middle['on']); // ajout des dependances @@ -495,20 +495,17 @@ class Actionneur { if (!$in) { - // pas de dependance, on le met en premier ! $this->log("- placer $p tout en haut"); array_unshift($this->middle['on'], $info); - } else { - // intersection = dependance presente aussi // on place notre action juste apres la derniere dependance if ($diff = array_intersect($in, $out)) { - $key = array(); + $key = []; foreach ($diff as $d) { $k = array_search($d, $out); - $k = explode(":", $k); + $k = explode(':', $k); $key[] = intval(reset($k)); } $key = max($key); @@ -516,7 +513,7 @@ class Actionneur { if ($key == count($this->middle['on'])) { $this->middle['on'][] = $info; } else { - array_splice($this->middle['on'], $key + 1, 0, array($info)); + array_splice($this->middle['on'], $key + 1, 0, [$info]); } // intersection = plugin dependant de celui-ci @@ -526,7 +523,7 @@ class Actionneur { if ($diff = array_intersect($prov, $deps_all)) { foreach ($diff as $d) { $k = array_search($d, $out); - $k = explode(":", $k); + $k = explode(':', $k); $key[] = intval(reset($k)); } $key = min($key); @@ -534,7 +531,7 @@ class Actionneur { if ($key == 0) { array_unshift($this->middle['on'], $info); } else { - array_splice($this->middle['on'], $key, 0, array($info)); + array_splice($this->middle['on'], $key, 0, [$info]); } break; } @@ -599,7 +596,7 @@ class Actionneur { } // si dependance, il faut le mettre avant ! - $in = $out = array(); + $in = $out = []; // raz des cles pour avoir les memes que $out (utile reellement ?) $this->middle['off'] = array_values($this->middle['off']); // in : si un plugin en dépend, il faudra désactiver celui là avant. @@ -620,17 +617,17 @@ class Actionneur { // intersection = dependance presente aussi // on place notre action juste avant la premiere dependance if ($diff = array_intersect($in, $out)) { - $key = array(); + $key = []; foreach ($diff as $d) { $key[] = array_search($d, $out); } $key = min($key); $this->log("- placer $p avant " . $this->middle['off'][$key]['p']); - array_splice($this->middle['off'], $key, 0, array($info)); + array_splice($this->middle['off'], $key, 0, [$info]); // inversement des plugins dépendants de ce plugin sont présents… // on le met juste après le dernier } elseif ($diff = array_intersect($info['dmp'], $out)) { - $key = array(); + $key = []; foreach ($diff as $d) { $key[] = array_search($d, $out); } @@ -639,14 +636,14 @@ class Actionneur { if ($key == count($this->middle['off'])) { $this->middle['off'][] = $info; } else { - array_splice($this->middle['off'], $key + 1, 0, array($info)); + array_splice($this->middle['off'], $key + 1, 0, [$info]); } } else { // aucune des dependances n'est a desactiver // (du moins à ce tour ci), // on le met en premier ! $this->log("- placer $p tout en haut"); - array_unshift($this->middle['off'], $info); + array_unshift($this->middle['off'], $info); } } unset($diff, $in, $out); @@ -666,10 +663,10 @@ class Actionneur { $oks = &$ok; $ok_texte = $ok ? 'ok' : 'fail'; $cle_t = 'svp:message_action_finale_' . $i['todo'] . '_' . $ok_texte; - $trads = array( + $trads = [ 'plugin' => $i['n'], 'version' => denormaliser_version($i['v']), - ); + ]; if (isset($i['maj'])) { $trads['version_maj'] = denormaliser_version($i['maj']); } @@ -694,31 +691,31 @@ class Actionneur { * Bilan des actions au format HTML **/ public function presenter_actions($fin = false) { - $affiche = ""; + $affiche = ''; include_spip('inc/filtres_alertes'); if (count($this->err)) { - $erreurs = "
    "; + $erreurs = '
      '; foreach ($this->err as $i) { $erreurs .= "\t
    • " . $i . "
    • \n"; } - $erreurs .= "
    "; + $erreurs .= '
'; $affiche .= message_alerte_ouvrir(_T('svp:actions_en_erreur'), 'error') . $erreurs . message_alerte_fermer(); } if (count($this->done)) { $oks = true; - $done = "
    "; + $done = '
      '; foreach ($this->done as $i) { $ok = ($i['done'] ? true : false); $oks = &$ok; $ok_texte = $ok ? 'ok' : 'fail'; $cle_t = 'svp:message_action_finale_' . $i['todo'] . '_' . $ok_texte; - $trads = array( + $trads = [ 'plugin' => $i['n'], 'version' => denormaliser_version($i['v']), - ); + ]; if (isset($i['maj'])) { $trads['version_maj'] = denormaliser_version($i['maj']); } @@ -729,32 +726,32 @@ class Actionneur { // si le plugin a ete active dans le meme lot, on remplace le message 'active' par le message 'installe' if ($i['todo'] == 'install' and $ok_texte == 'ok') { $cle_t = 'svp:message_action_finale_' . 'on' . '_' . $ok_texte; - $texte_on = _T($cle_t, array( + $texte_on = _T($cle_t, [ 'plugin' => $i['n'], 'version' => denormaliser_version($i['v']), 'version_maj' => denormaliser_version($i['maj']) - )); + ]); if (strpos($done, $texte_on) !== false) { $done = str_replace($texte_on, $texte, $done); - $texte = ""; + $texte = ''; } } if ($texte) { $done .= "\t
    • $texte
    • \n"; } } - $done .= "
    "; + $done .= '
'; $affiche .= message_alerte_ouvrir(_T('svp:actions_realises'), ($oks ? 'success' : 'notice')) . $done . message_alerte_fermer(); } if (count($this->end)) { - $todo = "
    "; + $todo = '
      '; foreach ($this->end as $i) { - $todo .= "\t
    • " . _T('svp:message_action_' . $i['todo'], array( + $todo .= "\t
    • " . _T('svp:message_action_' . $i['todo'], [ 'plugin' => $i['n'], 'version' => denormaliser_version($i['v']), 'version_maj' => denormaliser_version($i['maj']) - )) . "
    • \n"; + ]) . "\n"; } $todo .= "
    \n"; $titre = ($fin ? _T('svp:actions_non_traitees') : _T('svp:actions_a_faire')); @@ -772,12 +769,15 @@ class Actionneur { } $date = date('Y-m-d H:i:s', $time); $todo .= "
    \n"; - $todo .= "

    " . _T('svp:erreur_actions_non_traitees', array( + $todo .= "

    " . _T('svp:erreur_actions_non_traitees', [ 'auteur' => sql_getfetsel('nom', 'spip_auteurs', 'id_auteur=' . sql_quote($this->lock['id_auteur'])), 'date' => affdate_heure($date) - )) . "

    \n"; - $todo .= "" . _T('svp:nettoyer_actions') . "\n"; + ]) . "

    \n"; + $todo .= "" . _T('svp:nettoyer_actions') . "\n"; } $affiche .= message_alerte_ouvrir($titre, 'notice') . $todo . message_alerte_fermer(); } @@ -837,20 +837,20 @@ class Actionneur { * @see Actionneur::sauver_actions() **/ public function verrouiller() { - $this->lock = array( + $this->lock = [ 'id_auteur' => $GLOBALS['visiteur_session']['id_auteur'] ?? 0, 'time' => time(), - ); + ]; } /** * Enlève le verrou **/ public function deverrouiller() { - $this->lock = array( + $this->lock = [ 'id_auteur' => 0, 'time' => '', - ); + ]; } /** @@ -865,13 +865,13 @@ class Actionneur { * @see Actionneur::get_actions() **/ public function sauver_actions() { - $contenu = serialize(array( + $contenu = serialize([ 'todo' => $this->end, 'done' => $this->done, 'work' => $this->work, 'err' => $this->err, 'lock' => $this->lock, - )); + ]); ecrire_fichier(_DIR_TMP . 'stp_actions.txt', $contenu); } @@ -904,10 +904,10 @@ class Actionneur { * Remet tout à zéro pour pouvoir repartir d'un bon pied. **/ public function nettoyer_actions() { - $this->end = array(); - $this->done = array(); - $this->work = array(); - $this->err = array(); + $this->end = []; + $this->done = []; + $this->work = []; + $this->err = []; $this->deverrouiller(); $this->sauver_actions(); } @@ -986,7 +986,7 @@ class Actionneur { $this->log("Faire $todo avec $do[n]"); $do['done'] = $this->$todo($do); $this->done[] = $do; - $this->work = array(); + $this->work = []; $this->sauver_actions(); } } @@ -1011,7 +1011,7 @@ class Actionneur { return true; } - $this->log("GetOn : Erreur de chargement du paquet " . $info['n']); + $this->log('GetOn : Erreur de chargement du paquet ' . $info['n']); return false; } @@ -1035,7 +1035,7 @@ class Actionneur { // 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'], ['_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL'])) { $dossier = rtrim($i['src_archive'], '/'); $this->activer_plugin_dossier($dossier, $i, $i['constante']); @@ -1070,17 +1070,21 @@ class Actionneur { // 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( + if ( + $maj = sql_fetsel( + 'pa.*', + ['spip_paquets AS pa', 'spip_plugins AS pl'], + [ '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') + ], + '', + 'pa.etatnum DESC', + '0,1' + ) ) { - // si dans auto, on autorise à mettre à jour depuis auto pour les VCS $dir_actuel_dans_auto = ''; if (substr($i['src_archive'], 0, 5) == 'auto/') { @@ -1148,11 +1152,11 @@ class Actionneur { public function do_off($info) { $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'], ['_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([rtrim($dossier, '/')], false, 'enleve'); + sql_updateq('spip_paquets', ['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() @@ -1175,7 +1179,7 @@ class Actionneur { public function do_stop($info) { $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'], ['_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL'])) { include_spip('inc/plugin'); $dossier = rtrim($i['src_archive'], '/'); @@ -1187,13 +1191,13 @@ class Actionneur { $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'])); + ecrire_plugin_actifs([$dossier], false, 'enleve'); + sql_updateq('spip_paquets', ['actif' => 'non', 'installe' => 'non'], 'id_paquet=' . sql_quote($info['i'])); return true; } else { // echec - $this->log("Échec de la désinstallation de " . $i['src_archive']); + $this->log('Échec de la désinstallation de ' . $i['src_archive']); } } $this->actualiser_plugin_interessants(); @@ -1216,10 +1220,10 @@ class Actionneur { // cette option est encore plus delicate que les autres... $i = sql_fetsel('*', 'spip_paquets', 'id_paquet=' . sql_quote($info['i'])); - if (in_array($i['constante'], array('_DIR_PLUGINS', '_DIR_PLUGINS_SUPPL')) + if ( + in_array($i['constante'], ['_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'])); @@ -1230,15 +1234,16 @@ class Actionneur { // ainsi que le plugin s'il n'est plus utilise $utilise = sql_allfetsel( 'pl.id_plugin', - array('spip_paquets AS pa', 'spip_plugins AS pl'), - array('pa.id_plugin = pl.id_plugin', 'pa.id_plugin=' . sql_quote($id_plugin))); + ['spip_paquets AS pa', 'spip_plugins AS pl'], + ['pa.id_plugin = pl.id_plugin', 'pa.id_plugin=' . sql_quote($id_plugin)] + ); if (!$utilise) { sql_delete('spip_plugins', 'id_plugin=' . sql_quote($id_plugin)); } else { // on met a jour d'eventuels obsoletes qui ne le sont plus maintenant // ie si on supprime une version superieure à une autre qui existe en local... include_spip('inc/svp_depoter_local'); - svp_corriger_obsolete_paquets(array($id_plugin)); + svp_corriger_obsolete_paquets([$id_plugin]); } // on tente un nettoyage jusqu'a la racine de auto/ @@ -1288,24 +1293,24 @@ class Actionneur { public function do_getlib($info) { if (!defined('_DIR_LIB') or !_DIR_LIB) { $this->err(_T('svp:erreur_dir_dib_indefini')); - $this->log("/!\ Pas de _DIR_LIB defini !"); + $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->log("/!\ Ne peut pas écrire dans _DIR_LIB !"); + $this->err(_T('svp:erreur_dir_dib_ecriture', ['dir' => _DIR_LIB])); + $this->log('/!\ Ne peut pas écrire dans _DIR_LIB !'); return false; } if (!autoriser('plugins_ajouter')) { $this->err(_T('svp:erreur_auth_plugins_ajouter_lib')); - $this->log("/!\ Pas autorisé à ajouter des libs !"); + $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'); @@ -1316,7 +1321,7 @@ class Actionneur { } $this->err($ok); - $this->log("Téléporteur en erreur : " . $ok); + $this->log('Téléporteur en erreur : ' . $ok); return false; } @@ -1391,19 +1396,19 @@ class Actionneur { } include_spip('inc/plugin'); - ecrire_plugin_actifs(array($dossier), false, 'ajoute'); + ecrire_plugin_actifs([$dossier], false, 'ajoute'); $installe = $i['version_base'] ? 'oui' : 'non'; if ($installe == 'oui') { if (!$i['constante']) { $i['constante'] = '_DIR_PLUGINS'; } // installer le plugin au prochain tour - $new_action = array_merge($this->work, array( + $new_action = array_merge($this->work, [ '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"); #$this->installer_plugin($dossier); @@ -1431,11 +1436,11 @@ class Actionneur { // jusqu'a ce qu'il tombe dans l'oubli. $plugins_interessants = @unserialize($GLOBALS['meta']['plugins_interessants']); if (!is_array($plugins_interessants)) { - $plugins_interessants = array(); + $plugins_interessants = []; } - $dossiers = array(); - $dossiers_old = array(); + $dossiers = []; + $dossiers_old = []; foreach ($plugins_interessants as $p => $score) { if (--$score > 0) { $plugins_interessants[$p] = $score; @@ -1449,7 +1454,7 @@ class Actionneur { // 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', ['recent' => 0], sql_in('src_archive', array_keys($dossiers_old))); } $plugs = sql_allfetsel('src_archive', 'spip_paquets', 'actif=' . sql_quote('oui')); @@ -1459,7 +1464,7 @@ class Actionneur { $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', ['recent' => 1], sql_in('src_archive', array_keys($dossiers))); ecrire_meta('plugins_interessants', serialize($plugins_interessants)); } @@ -1476,7 +1481,7 @@ class Actionneur { public function ajouter_plugin_interessants_meta($dir) { $plugins_interessants = @unserialize($GLOBALS['meta']['plugins_interessants']); if (!is_array($plugins_interessants)) { - $plugins_interessants = array(); + $plugins_interessants = []; } $plugins_interessants[$dir] = 30; ecrire_meta('plugins_interessants', serialize($plugins_interessants)); @@ -1500,7 +1505,7 @@ 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 = []; } $meta_plug_installes[] = $plug; ecrire_meta('plugin_installes', serialize($meta_plug_installes), 'non'); @@ -1516,8 +1521,10 @@ class Actionneur { return true; } // l'installation est en erreur - $this->err(_T('svp:message_action_finale_install_fail', - array('plugin' => $info['n'], 'version' => denormaliser_version($info['v']))) . "
    " . $trace); + $this->err(_T( + 'svp:message_action_finale_install_fail', + ['plugin' => $info['n'], 'version' => denormaliser_version($info['v'])] + ) . '
    ' . $trace); } } } @@ -1541,7 +1548,7 @@ class Actionneur { * - dir : Chemin du paquet téléchargé depuis la racine * - dossier : Chemin du paquet téléchargé, depuis _DIR_PLUGINS */ - public function get_paquet_id($id_or_row, $dest_ancien = "") { + public 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)); @@ -1555,14 +1562,18 @@ class Actionneur { // 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( + ['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) - $prefixe = sql_getfetsel('pl.prefixe', - array('spip_paquets AS pa', 'spip_plugins AS pl'), - array('pa.id_plugin = pl.id_plugin', 'pa.id_paquet=' . sql_quote($i['id_paquet']))); + $prefixe = sql_getfetsel( + 'pl.prefixe', + ['spip_paquets AS pa', 'spip_plugins AS pl'], + ['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 ... @@ -1595,15 +1606,15 @@ class Actionneur { rename(_DIR_PLUGINS_AUTO . $dest, _DIR_PLUGINS_AUTO . $dest_future); } - return array( + return [ '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); + $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']); } } @@ -1622,13 +1633,13 @@ class Actionneur { 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 !"); + $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->log("/!\ Ne peut pas écrire dans _DIR_PLUGINS_AUTO !"); + $this->err(_T('svp:erreur_dir_plugins_auto_ecriture', ['dir' => _DIR_PLUGINS_AUTO])); + $this->log('/!\ Ne peut pas écrire dans _DIR_PLUGINS_AUTO !'); return false; } @@ -1659,9 +1670,10 @@ class Actionneur { if (is_dir($dir_dans_auto)) { $base_files = scandir($dir_dans_auto); if (is_array($base_files)) { - $base_files = array_diff($base_files, array('.', '..')); + $base_files = array_diff($base_files, ['.', '..']); foreach ($base_files as $f) { - if (($f[0] != '.' and $f[0] != 'v') // commence pas par v + 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 return true; @@ -1723,9 +1735,10 @@ class Actionneur { **/ public function tester_si_svp_desactive() { foreach ($this->done as $d) { - if ($d['p'] == 'SVP' + if ( + $d['p'] == 'SVP' and $d['done'] == true - and in_array($d['todo'], array('off', 'stop')) + and in_array($d['todo'], ['off', 'stop']) ) { return true; } @@ -1733,7 +1746,6 @@ class Actionneur { return false; } - } @@ -1757,5 +1769,5 @@ function svp_actionner_traiter_actions_demandees($actions, &$retour, $redirect = $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"); + $retour['message_ok'] = _T('svp:action_patienter'); } diff --git a/inc/svp_decider.php b/inc/svp_decider.php index b6487cc..12e26d7 100644 --- a/inc/svp_decider.php +++ b/inc/svp_decider.php @@ -10,7 +10,7 @@ * @package SPIP\SVP\Decideur */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -33,10 +33,10 @@ class Decideur { * 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 */ - public $start = array( - 'i' => array(), - 'p' => array(), - ); + public $start = [ + 'i' => [], + 'p' => [], + ]; /** * Plugins actifs à la fin des modifications effectuées @@ -45,10 +45,10 @@ class Decideur { * 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 */ - public $end = array( - 'i' => array(), - 'p' => array(), - ); + public $end = [ + 'i' => [], + 'p' => [], + ]; /** * Plugins procure par SPIP @@ -56,7 +56,7 @@ class Decideur { * @var array * Tableau ('PREFIXE' => numéro de version) */ - public $procure = array(); + public $procure = []; /** * Toutes les actions à faire demandées @@ -65,7 +65,7 @@ class Decideur { * @var array * Tableau ('identifiant' => tableau de description) */ - public $ask = array(); + public $ask = []; /** * Toutes les actions à faire demandées et consécutives aux dépendances @@ -73,7 +73,7 @@ class Decideur { * @var array * Tableau ('identifiant' => tableau de description) */ - public $todo = array(); + public $todo = []; /** * Toutes les actions à faire consécutives aux dépendances @@ -83,7 +83,7 @@ class Decideur { * @var array * Tableau ('identifiant' => tableau de description) */ - public $changes = array(); + public $changes = []; /** * Tous les plugins à arrêter (désactiver ou désinstaller) @@ -91,7 +91,7 @@ class Decideur { * @var array * Tableau ('PREFIXE' => tableau de description) */ - public $off = array(); + public $off = []; /** * Tous les plugins invalidés (suite a des dependances introuvables, mauvaise version de SPIP...) @@ -99,7 +99,7 @@ class Decideur { * @var array * Tableau ('PREFIXE' => tableau de description) */ - public $invalides = array(); + public $invalides = []; /** * Liste des erreurs @@ -107,7 +107,7 @@ class Decideur { * @var array * Tableau ('identifiant' => liste des erreurs) */ - public $err = array(); + public $err = []; /** * État de santé (absence d'erreur) @@ -155,7 +155,7 @@ class Decideur { * Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description */ public function liste_plugins_actifs() { - return $this->infos_courtes(array('pa.actif=' . sql_quote('oui'), 'pa.attente=' . sql_quote('non'))); + return $this->infos_courtes(['pa.actif=' . sql_quote('oui'), 'pa.attente=' . sql_quote('non')]); } /** @@ -193,7 +193,7 @@ class Decideur { * Tableau ('PREFIXE' => version) */ public function liste_plugins_procure() { - $procure = array(); + $procure = []; $get_infos = charger_fonction('get_infos', 'plugins'); $infos['_DIR_RESTREINT'][''] = $get_infos('./', false, _DIR_RESTREINT); @@ -233,7 +233,7 @@ class Decideur { **/ public function infos_courtes_id($id) { // on cache ceux la - static $plug = array(); + static $plug = []; if (!isset($plug[$id])) { $plug[$id] = $this->infos_courtes('pa.id_paquet=' . sql_quote($id)); } @@ -273,14 +273,14 @@ class Decideur { * ou, avec $multiple=true : [p][MOTS][] = tableau de description */ public function infos_courtes($condition, $multiple = false) { - $plugs = array( - 'i' => array(), - 'p' => array() - ); + $plugs = [ + 'i' => [], + 'p' => [] + ]; - $from = array('spip_paquets AS pa', 'spip_plugins AS pl'); + $from = ['spip_paquets AS pa', 'spip_plugins AS pl']; $orderby = $multiple ? 'pa.etatnum DESC' : ''; - $where = array('pa.id_plugin = pl.id_plugin'); + $where = ['pa.id_plugin = pl.id_plugin']; if (is_array($condition)) { $where = array_merge($where, $condition); } else { @@ -288,7 +288,7 @@ class Decideur { } include_spip('inc/filtres'); // extraire_multi() - $res = sql_allfetsel(array( + $res = sql_allfetsel([ 'pa.id_paquet AS i', 'pl.nom AS n', 'pl.prefixe AS p', @@ -300,7 +300,7 @@ class Decideur { 'pa.id_depot', 'pa.maj_version AS maj', 'pa.actif AS a' - ), $from, $where, '', $orderby); + ], $from, $where, '', $orderby); foreach ($res as $r) { $r['p'] = strtoupper($r['p']); // on s'assure du prefixe en majuscule. @@ -310,14 +310,14 @@ class Decideur { $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())); + $deps = ['necessite' => [[]], 'utilise' => [[]], 'librairie' => [[]]]; if (!$d) { $d = $deps; } unset($r['dependances']); if (!$r['procure'] or !$proc = unserialize($r['procure'])) { - $proc = array(); + $proc = []; } $r['procure'] = $proc; @@ -341,8 +341,8 @@ class Decideur { // 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) { - $dep = array(); - $dep[0] = isset($d[$cle][0]) ? $d[$cle][0] : array(); + $dep = []; + $dep[0] = isset($d[$cle][0]) ? $d[$cle][0] : []; unset($d[$cle][0]); foreach ($d[$cle] as $version => $dependences) { if (svp_verifier_compatibilite_spip($version)) { @@ -366,7 +366,6 @@ class Decideur { } else { $plugs['p'][$r['p']] = &$plugs['i'][$r['i']]; // alias } - } return $plugs; @@ -386,7 +385,7 @@ class Decideur { public function erreur($id, $texte = '') { $this->log("erreur: $id -> $texte"); if (!isset($this->err[$id]) or !is_array($this->err[$id])) { - $this->err[$id] = array(); + $this->err[$id] = []; } $this->err[$id][] = $texte; $this->ok = false; @@ -417,11 +416,11 @@ class Decideur { * tableau de description du paquet le plus récent sinon */ public function chercher_plugin_recent($prefixe, $version) { - $news = $this->infos_courtes(array( + $news = $this->infos_courtes([ 'pl.prefixe=' . sql_quote($prefixe), 'pa.obsolete=' . sql_quote('non'), 'pa.id_depot > ' . sql_quote(0) - ), true); + ], true); $res = false; if ($news and count($news['p'][$prefixe]) > 0) { foreach ($news['p'][$prefixe] as $new) { @@ -448,18 +447,19 @@ class Decideur { * tableau de description du paquet le plus récent sinon */ public function chercher_plugin_compatible($prefixe, $version) { - $plugin = array(); + $plugin = []; $v = '000.000.000'; // on choisit en priorite dans les paquets locaux ! - $locaux = $this->infos_courtes(array( + $locaux = $this->infos_courtes([ 'pl.prefixe=' . sql_quote($prefixe), 'pa.obsolete=' . sql_quote('non'), 'pa.id_depot=' . sql_quote(0) - ), true); + ], 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']) + if ( + plugin_version_compatible($version, $new['v']) and svp_verifier_compatibilite_spip($new['compatibilite_spip']) and ($new['v'] > $v) ) { @@ -471,16 +471,17 @@ 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( + $locaux_procure = $this->infos_courtes([ 'pa.procure LIKE ' . sql_quote('%' . $prefixe . '%'), 'pa.obsolete=' . sql_quote('non'), 'pa.id_depot=' . sql_quote(0) - ), true); + ], true); foreach ($locaux_procure['i'] as $new) { - if (isset($new['procure'][$prefixe]) + 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']; @@ -489,14 +490,15 @@ class Decideur { // sinon dans les paquets distants (mais on ne sait pas encore y trouver les procure) if (!$plugin) { - $distants = $this->infos_courtes(array( + $distants = $this->infos_courtes([ 'pl.prefixe=' . sql_quote($prefixe), 'pa.obsolete=' . sql_quote('non'), 'pa.id_depot>' . sql_quote(0) - ), true); + ], 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']) + if ( + plugin_version_compatible($version, $new['v']) and svp_verifier_compatibilite_spip($new['compatibilite_spip']) and ($new['v'] > $v) ) { @@ -537,7 +539,7 @@ class Decideur { // si recursif, on stoppe aussi les plugins dependants if ($recur) { - $prefixes = array_merge(array($info['p']), array_keys($info['procure'])); + $prefixes = array_merge([$info['p']], array_keys($info['procure'])); foreach ($this->end['i'] as $id => $plug) { if (is_array($plug['dn']) and $plug['dn']) { foreach ($plug['dn'] as $n) { @@ -595,11 +597,12 @@ class Decideur { return $this->end['p'][$prefixe]; } // sinon regarder les procure - $v = "0.0.0"; + $v = '0.0.0'; $plugin = false; foreach ($this->end['p'] as $endp => $end) { - if (isset($end['procure'][$prefixe]) - and spip_version_compare($end['procure'][$prefixe], $v, ">") + if ( + isset($end['procure'][$prefixe]) + and spip_version_compare($end['procure'][$prefixe], $v, '>') ) { $v = $end['procure'][$prefixe]; $plugin = $this->end['p'][$endp]; @@ -703,7 +706,6 @@ class Decideur { if ($i) { unset($this->end['i'][$i['i']]); } - } @@ -801,23 +803,21 @@ class Decideur { // 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']); + $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); - } // pas de prefixe equivalent actif... $this->add($i); $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', ['plugin' => $id])); } } break; @@ -831,7 +831,7 @@ class Decideur { // 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)) { @@ -842,20 +842,21 @@ 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', ['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', ['id' => $id])); } break; case 'off': case 'stop': // retirer ce plugin // (il l'est peut etre deja) - if ($info = $this->sera_actif_id($id) + 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 @@ -872,7 +873,6 @@ class Decideur { $this->todo($info, $t); // désactive tous les plugins qui en dépendent aussi. $this->off($info, true); - } else { // pas normal... plugin deja inactif... // concurrence entre administrateurs ? @@ -887,7 +887,7 @@ class Decideur { $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', ['plugin' => $id, 'action' => $t])); } break; } @@ -937,7 +937,7 @@ class Decideur { // ajouter les actions if (!$this->actionner($todo)) { - $this->log("! Todo en echec !"); + $this->log('! Todo en echec !'); $this->log($this->err); return false; @@ -962,8 +962,8 @@ class Decideur { $this->log("--------> try_again: $try_again, supersticieux: $supersticieux"); } while ($try_again > 0 and $supersticieux < 100); # and !count($this->err) - $this->log("Fin !"); - $this->log("Ok: " . $this->ok); + $this->log('Fin !'); + $this->log('Ok: ' . $this->ok); # $this->log($this->todo); @@ -991,7 +991,7 @@ class Decideur { $this->log("- [$prof] verifier dependances " . $info['p']); $id = $info['i']; $err = false; // variable receptionnant parfois des erreurs - $cache = array(); // cache des actions realisees dans ce tour + $cache = []; // cache des actions realisees dans ce tour // 1 // tester la version de SPIP de notre paquet @@ -999,7 +999,7 @@ 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', ['plugin' => $info['n']])); return false; } @@ -1011,26 +1011,28 @@ 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', + ['plugin' => $info['n'], 'lib_url' => $l['lien'], 'lib' => $lib] + )); $err = true; } // ajout, pour info // de la librairie dans la todo list else { - $this->change(array( + $this->change([ 'i' => md5(serialize($l)), 'p' => $lib, 'n' => $lib, 'v' => $l['lien'], - ), 'getlib'); + ], 'getlib'); $this->log("- La librairie $lib sera a télécharger"); } } @@ -1045,14 +1047,13 @@ class Decideur { // et les activer au besoin if (is_array($info['dn']) and count($info['dn'])) { foreach ($info['dn'] as $n) { - $p = $n['nom']; $v = isset($n['compatibilite']) ? $n['compatibilite'] : ''; 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 ! elseif ( array_key_exists($p, $this->procure) @@ -1060,14 +1061,14 @@ class Decideur { ) { // rien a faire... $this->log("-- est procure par le core ($p)"); - } // 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) + if ( + $ninfo = $this->sera_actif($p) and !$err = $this->en_erreur($ninfo['i']) and plugin_version_compatible($v, $ninfo['v']) ) { @@ -1075,11 +1076,10 @@ class Decideur { $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 - $this->log("Dependance " . $p . " a resoudre ! ($etat)"); + $this->log('Dependance ' . $p . " a resoudre ! ($etat)"); switch ($etat) { // commencons par le plus simple : @@ -1087,7 +1087,8 @@ class Decideur { case 'absent': // on choisit par defaut le meilleur etat de plugin. // de preference dans les plugins locaux, sinon en distant. - if (!$this->sera_off($p) + if ( + !$this->sera_off($p) and $new = $this->chercher_plugin_compatible($p, $v) and $this->verifier_dependances_plugin($new, ++$prof) ) { @@ -1097,12 +1098,12 @@ class Decideur { // nouveau est local => non // nouveau est distant => oui peut etre $cache[] = $new; - $i = array(); + $i = []; if (!$new['local']) { - $i = $this->infos_courtes(array( + $i = $this->infos_courtes([ 'pl.prefixe=' . sql_quote($new['p']), 'pa.maj_version=' . sql_quote($new['v']) - ), true); + ], true); } if ($i and isset($i['p'][$new['p']]) and count($i['p'][$new['p']])) { // c'est une mise a jour @@ -1137,7 +1138,8 @@ class Decideur { // soit pas :) case 'conflit': $this->log(" conflit -> demande $v, present : " . $ninfo['v']); - if (!$this->sera_off($p) + if ( + !$this->sera_off($p) and $new = $this->chercher_plugin_compatible($p, $v) and $this->verifier_dependances_plugin($new, ++$prof) ) { @@ -1155,17 +1157,15 @@ class Decideur { } break; } - } } - } unset($n, $v, $p, $ninfo, $present, $conflit, $erreur, $err); // si le plugin est devenu invalide... // on invalide toutes les actions qu'on vient de faire ! if ($this->sera_invalide($info['p'])) { - $this->log("> Purge du cache"); + $this->log('> Purge du cache'); foreach ($cache as $i) { $this->invalider($i); } @@ -1197,10 +1197,10 @@ class Decideur { $info_dependance = $dependance; } - $err = _T('svp:message_dependance_' . $type, array( + $err = _T('svp:message_dependance_' . $type, [ 'plugin' => $info['n'], 'dependance' => $info_dependance, - )); + ]); return $err; } @@ -1217,12 +1217,12 @@ class Decideur { * Liste des actions (joliement traduites et expliquées) **/ public function presenter_actions($quoi) { - $res = array(); + $res = []; foreach ($this->$quoi as $id => $info) { - $trads = array( + $trads = [ 'plugin' => $info['n'], 'version' => denormaliser_version($info['v']), - ); + ]; if (isset($info['maj'])) { $trads['version_maj'] = denormaliser_version($info['maj']); } @@ -1245,12 +1245,12 @@ class Decideur { * 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 = new Decideur(); $decideur->erreur_sur_maj_introuvable = false; $decideur->verifier_dependances($a_actionner); if (!$decideur->ok) { - $erreurs['decideur_erreurs'] = array(); + $erreurs['decideur_erreurs'] = []; foreach ($decideur->err as $id => $errs) { foreach ($errs as $err) { $erreurs['decideur_erreurs'][] = $err; @@ -1261,14 +1261,14 @@ function svp_decider_verifier_actions_demandees($a_actionner, &$erreurs) { } // On construit la liste des libellés d'actions - $actions = array(); + $actions = []; $actions['decideur_propositions'] = $decideur->presenter_actions('changes'); $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 - $todo = array(); + $todo = []; foreach ($decideur->todo as $_todo) { $todo[$_todo['i']] = $_todo['todo']; } diff --git a/inc/svp_depoter_distant.php b/inc/svp_depoter_distant.php index b78ff15..7c1f628 100644 --- a/inc/svp_depoter_distant.php +++ b/inc/svp_depoter_distant.php @@ -14,7 +14,7 @@ * @package SPIP\SVP\Depots */ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/plugin'); @@ -48,7 +48,7 @@ function svp_ajouter_depot($url, &$erreur = '') { // on recupère le XML $fichier_xml = copie_locale($url, 'modif'); if (!$fichier_xml) { - $erreur = _T('svp:message_nok_xml_non_recupere', array('fichier' => $url)); + $erreur = _T('svp:message_nok_xml_non_recupere', ['fichier' => $url]); return false; } @@ -58,13 +58,13 @@ function svp_ajouter_depot($url, &$erreur = '') { // Lire les donnees d'un depot de paquets $infos = svp_phraser_depot($fichier_xml); if (!$infos) { - $erreur = _T('svp:message_nok_xml_non_conforme', array('fichier' => $url)); + $erreur = _T('svp:message_nok_xml_non_conforme', ['fichier' => $url]); return false; } $titre = filtrer_entites($infos['depot']['titre']); - $champs = array( + $champs = [ 'titre' => $titre, 'descriptif' => filtrer_entites($infos['depot']['descriptif']), 'type' => $infos['depot']['type'], @@ -77,16 +77,16 @@ function svp_ajouter_depot($url, &$erreur = '') { '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))) { - $erreur = _T('svp:message_nok_depot_deja_ajoute', array('url' => $url)); + $erreur = _T('svp:message_nok_depot_deja_ajoute', ['url' => $url]); return false; } elseif (!$id_depot = sql_insertq('spip_depots', $champs)) { - $erreur = _T('svp:message_nok_sql_insert_depot', array('objet' => "$titre ($url)")); + $erreur = _T('svp:message_nok_sql_insert_depot', ['objet' => "$titre ($url)"]); return false; } @@ -97,18 +97,20 @@ function svp_ajouter_depot($url, &$erreur = '') { // Si une erreur s'est produite, on supprime le depot deja insere sql_delete('spip_depots', 'id_depot=' . sql_quote($id_depot)); if (!$ok) { - $erreur = _T('svp:message_nok_xml_non_conforme', array('fichier' => $url)); + $erreur = _T('svp:message_nok_xml_non_conforme', ['fichier' => $url]); } else { - $erreur = _T('svp:message_nok_aucun_paquet_ajoute', array('url' => $url)); + $erreur = _T('svp:message_nok_aucun_paquet_ajoute', ['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)); + sql_updateq( + 'spip_depots', + ['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 @@ -142,12 +144,13 @@ function svp_supprimer_depot($id) { } // on calcule les versions max des plugins heberges par le depot - $vmax = array(); + $vmax = []; 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]) + if ( + !isset($vmax[$id_plugin]) or (spip_version_compare($vmax[$id_plugin], $paquet['version'], '<')) ) { $vmax[$id_plugin] = $paquet['version']; @@ -206,7 +209,7 @@ function svp_supprimer_depot($id) { **/ 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 + // 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)); $plugins_depot = array_column($liens, 'id_plugin'); @@ -217,7 +220,7 @@ function svp_nettoyer_apres_suppression($id_depot, $vmax) { // On verifie pour chaque plugin concerne par la disparition de paquets si c'est la version // la plus elevee qui a ete supprimee. // Si oui, on positionne le vmax a 0, ce qui permettra de remettre a jour le plugin systematiquement - // a la prochaine actualisation. + // a la prochaine actualisation. // Cette operation est necessaire car on n'impose pas que les informations du plugin soient identiques // pour chaque paquet !!! @@ -229,7 +232,7 @@ function svp_nettoyer_apres_suppression($id_depot, $vmax) { 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'])); + sql_updateq('spip_plugins', ['vmax' => ''], 'id_plugin=' . sql_quote($plugin['id_plugin'])); } } } @@ -238,14 +241,14 @@ function svp_nettoyer_apres_suppression($id_depot, $vmax) { sql_terminer_transaction(); } - // Maintenant on calcule la liste des plugins du depot qui ne sont pas heberges + // 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 // tous les plugins correspondants aux anciens paquets $plugins_restants = sql_allfetsel('DISTINCT(id_plugin)', 'spip_paquets', sql_in('id_plugin', $plugins_depot)); $plugins_restants = array_column($plugins_restants, 'id_plugin'); - // - L'intersection des deux tableaux renvoie les plugins a supprimer + // - L'intersection des deux tableaux renvoie les plugins a supprimer $plugins_a_supprimer = array_diff($plugins_depot, $plugins_restants); // On supprimer les plugins identifies @@ -284,13 +287,14 @@ function svp_actualiser_depot($id) { $sha = sha1_file($fichier_xml); if ($depot['sha_paquets'] == $sha) { - // Le fichier n'a pas change (meme sha1) alors on ne fait qu'actualiser la date + // 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); - sql_updateq('spip_depots', array('sha_paquets' => $sha), 'id_depot=' . $id); + spip_log( + 'Aucune modification du fichier XML, actualisation non declenchee - id_depot = ' . $depot['id_depot'], + 'svp_actions.' . _LOG_INFO + ); + sql_updateq('spip_depots', ['sha_paquets' => $sha], 'id_depot=' . $id); } else { - // Le fichier a bien change il faut actualiser tout le depot $infos = svp_phraser_depot($fichier_xml); @@ -300,8 +304,13 @@ function svp_actualiser_depot($id) { // 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); + $ok = svp_actualiser_paquets( + $depot['id_depot'], + $infos['paquets'], + $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 @@ -314,7 +323,7 @@ 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( + $champs = [ 'url_serveur' => $infos['depot']['url_serveur'], 'url_brouteur' => $infos['depot']['url_brouteur'], 'url_archives' => $infos['depot']['url_archives'], @@ -323,7 +332,7 @@ function svp_actualiser_depot($id) { 'nbr_plugins' => $nb_plugins, 'nbr_autres' => $nb_autres, 'sha_paquets' => $sha - ); + ]; sql_updateq('spip_depots', $champs, 'id_depot=' . sql_quote($depot['id_depot'])); } } @@ -377,7 +386,7 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, // On initialise l'url de base des logos du depot et son type afin de // calculer l'url complete de chaque logo - $select = array('url_archives', 'type'); + $select = ['url_archives', 'type']; $depot = sql_fetsel($select, 'spip_depots', 'id_depot=' . sql_quote($id_depot)); @@ -385,21 +394,27 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, // qui ont ete evacues, c'est a dire ceux dont les signatures // ne correspondent pas aux nouveaux... // et on retablit les vmax des plugins restants... - $signatures = array(); + $signatures = []; foreach ($paquets as $_paquet) { $signatures[] = $_paquet['md5']; } // 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', + ['id_depot=' . sql_quote($id_depot), sql_in('signature', $signatures, 'NOT')] + ); $anciens_paquets = array_column($anciens_paquets, 'id_paquet'); // 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', + ['spip_plugins AS pl', 'spip_paquets AS pa'], + ['pl.id_plugin=pa.id_plugin', sql_in('pa.id_paquet', $anciens_paquets)] + ); $anciens_plugins = array_column($anciens_plugins, 'id_plugin'); // suppression des anciens paquets @@ -408,18 +423,22 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, // on enlève la liaison lorsqu'il n'y a plus aucun paquet lie a un des plugins qui ont vu un paquet enlevé // 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( + $plugins_restants = sql_allfetsel( + 'pl.id_plugin', + ['spip_plugins AS pl', 'spip_paquets AS pa'], + [ sql_in('pl.id_plugin', $anciens_plugins), 'pl.id_plugin=pa.id_plugin', 'pa.id_depot=' . sql_quote($id_depot) - )); + ] + ); $plugins_restants = array_column($plugins_restants, 'id_plugin'); // 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', + ['id_depot=' . sql_quote($id_depot), sql_in('id_plugin', $plugins_supprimes)] + ); unset($plugins_restants, $plugins_supprimes); // supprimer les plugins orphelins @@ -443,17 +462,16 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, } // tableaux d'actions - $insert_paquets = array(); - $insert_plugins = array(); - $insert_contribs = array(); - $prefixes = array(); // prefixe => id_plugin + $insert_paquets = []; + $insert_plugins = []; + $insert_contribs = []; + $prefixes = []; // 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 foreach ($paquets as $_archive => $_infos) { - - $insert_paquet = array(); + $insert_paquet = []; // On initialise les informations specifiques au paquet : // l'id du depot et les infos de l'archive $insert_paquet['id_depot'] = $id_depot; @@ -489,7 +507,7 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, // Le logo est maintenant disponible a la meme adresse que le zip et porte le nom du zip. // Son extension originale est conservee $insert_paquet['logo'] = $depot['url_archives'] . '/' - . preg_replace(",\.zip$,i", "", $insert_paquet['nom_archive']) . '.' + . preg_replace(',\.zip$,i', '', $insert_paquet['nom_archive']) . '.' . pathinfo($insert_paquet['logo'], PATHINFO_EXTENSION); } } else { @@ -499,11 +517,12 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, // 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( + if ( + !$paquet = sql_fetsel('*', 'spip_paquets', [ '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 // ------------------------------------------------ @@ -522,32 +541,41 @@ 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( + $where = [ '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', + ['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'])); + $insert_plugins[$insert_plugin['prefixe']] = array_merge( + $insert_plugin, + ['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'], - '<=')) + if ( + array_key_exists($insert_plugin['prefixe'], $insert_plugins) + 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']; @@ -566,10 +594,10 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, } else { // On est en presence d'une CONTRIBUTION NON PLUGIN // ------------------------------------------------ - $where = array( + $where = [ '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; @@ -581,9 +609,11 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, // 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 { // Le paquet existe deja en base de donnees @@ -599,9 +629,11 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, // 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'])); - + sql_updateq( + 'spip_paquets', + $insert_paquet, + 'id_paquet=' . sql_quote($paquet['id_paquet']) + ); } } @@ -610,16 +642,18 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, svp_inserer_multi($insert_plugins, $insert_paquets, $insert_contribs, $prefixes); // 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))); + $ids = sql_allfetsel( + 'p.id_plugin', + ['spip_plugins AS p', 'spip_depots_plugins AS dp'], + ['p.id_plugin=dp.id_plugin', 'dp.id_depot=' . sql_quote($id_depot)] + ); $ids = array_column($ids, 'id_plugin'); // inserer les liens avec le depots - $insert_dp = array(); + $insert_dp = []; $news_id = array_diff(array_values($prefixes), $ids); foreach ($news_id as $id) { - $insert_dp[] = array('id_depot' => $id_depot, 'id_plugin' => $id); + $insert_dp[] = ['id_depot' => $id_depot, 'id_plugin' => $id]; } if ($insert_dp) { sql_insertq_multi('spip_depots_plugins', $insert_dp); @@ -643,7 +677,7 @@ function svp_actualiser_paquets($id_depot, $paquets, &$nb_paquets, &$nb_plugins, // 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')); + $nb_autres = sql_countsel('spip_paquets', ['id_depot=' . sql_quote($id_depot), 'id_plugin=0']); return true; } @@ -676,14 +710,13 @@ function svp_inserer_multi(&$insert_plugins, &$insert_paquets, &$insert_contribs if (count($insert_plugins)) { sql_insertq_multi('spip_plugins', $insert_plugins); - $insert_plugins = array(); + $insert_plugins = []; } if (count($insert_paquets)) { - // on cherche tous les id_plugin/prefixe que l'on a à récuperer // en une seule requete - $prefixes_manquants = array(); + $prefixes_manquants = []; foreach ($insert_paquets as $p) { // on ne connait que le prefixe if (isset($p['prefixe']) and !isset($prefixes[$p['prefixe']])) { @@ -692,7 +725,7 @@ function svp_inserer_multi(&$insert_plugins, &$insert_paquets, &$insert_contribs } // recuperer les nouveaux prefixes : - $new = sql_allfetsel(array('prefixe', 'id_plugin'), 'spip_plugins', sql_in('prefixe', $prefixes_manquants)); + $new = sql_allfetsel(['prefixe', 'id_plugin'], 'spip_plugins', sql_in('prefixe', $prefixes_manquants)); foreach ($new as $p) { $prefixes[$p['prefixe']] = $p['id_plugin']; } @@ -709,14 +742,14 @@ function svp_inserer_multi(&$insert_plugins, &$insert_paquets, &$insert_contribs // on insere tout ! sql_insertq_multi('spip_paquets', $insert_paquets); - $insert_paquets = array(); + $insert_paquets = []; } // les contribs n'ont pas le même nombre de champs dans les insertions // et n'ont pas de plugin rattachés. if (count($insert_contribs)) { sql_insertq_multi('spip_paquets', $insert_contribs); - $insert_contribs = array(); + $insert_contribs = []; } } @@ -730,7 +763,7 @@ function svp_inserer_multi(&$insert_plugins, &$insert_paquets, &$insert_contribs **/ 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))); + $ids_plugins = sql_allfetsel('id_plugin', 'spip_depots_plugins', ['id_depot=' . sql_quote($id_depot)]); $ids_plugins = array_column($ids_plugins, 'id_plugin'); if ($ids_plugins) { svp_completer_plugins($ids_plugins); @@ -756,12 +789,17 @@ 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', + [sql_in('id_plugin', $ids_plugin), 'id_depot>' . intval(0)], + '', + 'id_plugin' + ) ) { - $plugin_en_cours = 0; - $inserts = $complements = array(); + $inserts = $complements = []; foreach ($resultats as $paquet) { // On finalise le plugin en cours et on passe au suivant @@ -775,14 +813,15 @@ function svp_completer_plugins($ids_plugin) { } // On passe au plugin suivant $plugin_en_cours = $paquet['id_plugin']; - $complements = array('compatibilite_spip' => '', 'branches_spip' => '', 'date_crea' => 0, 'date_modif' => 0); + $complements = ['compatibilite_spip' => '', 'branches_spip' => '', 'date_crea' => 0, 'date_modif' => 0]; } // On compile les compléments du plugin avec le paquet courant if ($paquet['date_modif'] > $complements['date_modif']) { $complements['date_modif'] = $paquet['date_modif']; } - if (($complements['date_crea'] === 0) + if ( + ($complements['date_crea'] === 0) or ($paquet['date_crea'] < $complements['date_crea']) ) { $complements['date_crea'] = $paquet['date_crea']; @@ -791,8 +830,10 @@ function svp_completer_plugins($ids_plugin) { if (!$complements['compatibilite_spip']) { $complements['compatibilite_spip'] = $paquet['compatibilite_spip']; } else { - $complements['compatibilite_spip'] = fusionner_intervalles($paquet['compatibilite_spip'], - $complements['compatibilite_spip']); + $complements['compatibilite_spip'] = fusionner_intervalles( + $paquet['compatibilite_spip'], + $complements['compatibilite_spip'] + ); } } if ($branches_paquet = compiler_branches_spip($paquet['compatibilite_spip'])) { @@ -816,7 +857,6 @@ function svp_completer_plugins($ids_plugin) { if (sql_preferer_transaction()) { sql_terminer_transaction(); } - } return true; @@ -835,7 +875,7 @@ function svp_actualiser_url_plugins() { $nb_plugins = 0; // On supprime toutes les urls de plugin - sql_delete('spip_urls', array('type=\'plugin\'')); + sql_delete('spip_urls', ['type=\'plugin\'']); // On recupere les ids des plugins et on regenere les urls if ($ids_plugin = sql_allfetsel('id_plugin', 'spip_plugins')) { @@ -869,13 +909,13 @@ function svp_actualiser_url_plugins() { * - Index 'paquet' : couples (clé=>valeur) spécifiques au paquet **/ function eclater_plugin_paquet($champs_aplat) { - return array( - 'plugin' => array( + return [ + 'plugin' => [ 'prefixe' => $champs_aplat['prefixe'], 'nom' => $champs_aplat['nom'], 'slogan' => $champs_aplat['slogan'] - ), - 'paquet' => array( + ], + 'paquet' => [ 'logo' => $champs_aplat['logo'], 'description' => $champs_aplat['description'], 'auteur' => $champs_aplat['auteur'], @@ -893,8 +933,8 @@ function eclater_plugin_paquet($champs_aplat) { 'lien_dev' => $champs_aplat['lien_dev'], 'dependances' => $champs_aplat['dependances'], 'procure' => $champs_aplat['procure'] - ) - ); + ] + ]; } @@ -908,9 +948,11 @@ 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))); + $p = sql_allfetsel( + 'DISTINCT(p.id_plugin)', + ['spip_plugins AS p', 'spip_paquets AS pa'], + [sql_in('p.id_plugin', $plugins), 'p.id_plugin=pa.id_plugin', 'pa.id_depot>' . intval(0)] + ); $p = array_column($p, 'id_plugin'); // pour les autres, on la fixe correctement @@ -922,14 +964,14 @@ function svp_corriger_vmax_plugins($plugins) { 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', ['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', ['vmax' => $vmax], 'id_plugin=' . intval($id_plugin)); } if (sql_preferer_transaction()) { diff --git a/inc/svp_depoter_local.php b/inc/svp_depoter_local.php index af49166..fac6280 100644 --- a/inc/svp_depoter_local.php +++ b/inc/svp_depoter_local.php @@ -38,13 +38,14 @@ * @return string * Temps d'exécution **/ -function svp_actualiser_paquets_locaux($force = false, &$erreurs_xml = array()) { +function svp_actualiser_paquets_locaux($force = false, &$erreurs_xml = []) { spip_timer('paquets_locaux'); $paquets = svp_descriptions_paquets_locaux($erreurs_xml); // un mode pour tout recalculer sans désinstaller le plugin... ! - if ($force + if ( + $force or _request('var_mode') == 'vider_paquets_locaux' or _request('var_mode') == 'recalcul' ) { @@ -58,8 +59,7 @@ function svp_actualiser_paquets_locaux($force = false, &$erreurs_xml = array()) $temps = spip_timer('paquets_locaux'); #spip_log('svp_actualiser_paquets_locaux', 'SVP'); #spip_log($temps, 'SVP'); - return "Éxécuté en : " . $temps; - + return 'Éxécuté en : ' . $temps; } @@ -77,24 +77,24 @@ function svp_actualiser_paquets_locaux($force = false, &$erreurs_xml = array()) * constante, puis par chemin. * array[_DIR_PLUGIN*][$chemin] = description **/ -function svp_descriptions_paquets_locaux(&$erreurs_xml = array()) { +function svp_descriptions_paquets_locaux(&$erreurs_xml = []) { 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_DIST' => $get_infos(array(), false, _DIR_PLUGINS_DIST), - ); + $paquets_locaux = [ + '_DIR_PLUGINS' => $get_infos([], false, _DIR_PLUGINS), + '_DIR_PLUGINS_DIST' => $get_infos([], false, _DIR_PLUGINS_DIST), + ]; if (defined('_DIR_PLUGINS_SUPPL') and _DIR_PLUGINS_SUPPL) { liste_plugin_files(_DIR_PLUGINS_SUPPL); - $paquets_locaux['_DIR_PLUGINS_SUPPL'] = $get_infos(array(), false, _DIR_PLUGINS_SUPPL); + $paquets_locaux['_DIR_PLUGINS_SUPPL'] = $get_infos([], false, _DIR_PLUGINS_SUPPL); } // creer la liste des signatures 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 + // on propose le paquet uniquement s'il n'y a pas eu d'erreur de lecture XML bloquante if (!isset($paquet['erreur'])) { $paquets_locaux[$const_dir][$chemin]['signature'] = md5($const_dir . $chemin . serialize($paquet)); } else { @@ -140,27 +140,33 @@ function svp_base_modifier_paquets_locaux($paquets_locaux) { // On ne va modifier QUE les paquets locaux qui ont change // Et cela en comparant les md5 des informations fournies. - $signatures = array(); + $signatures = []; - // recuperer toutes les signatures + // recuperer toutes les signatures foreach ($paquets_locaux as $const_dir => $paquets) { foreach ($paquets as $chemin => $paquet) { - $signatures[$paquet['signature']] = array( + $signatures[$paquet['signature']] = [ 'constante' => $const_dir, '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', + ['id_depot=' . sql_quote(0), sql_in('signature', array_keys($signatures), 'NOT')] + ); $anciens_paquets = array_column($anciens_paquets, 'id_paquet'); // 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', + ['spip_plugins AS p', 'spip_paquets AS pa'], + ['p.id_plugin=pa.id_plugin', sql_in('pa.id_paquet', $anciens_paquets)] + ); $anciens_plugins = array_column($anciens_plugins, 'id_plugin'); // suppression des anciens paquets @@ -175,10 +181,10 @@ function svp_base_modifier_paquets_locaux($paquets_locaux) { $signatures = array_diff_key($signatures, array_flip($signatures_base)); // on recree la liste des paquets locaux a inserer - $paquets_locaux = array(); + $paquets_locaux = []; foreach ($signatures as $s => $infos) { if (!isset($paquets_locaux[$infos['constante']])) { - $paquets_locaux[$infos['constante']] = array(); + $paquets_locaux[$infos['constante']] = []; } $paquets_locaux[$infos['constante']][$infos['chemin']] = $infos['paquet']; } @@ -214,7 +220,7 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) { // On initialise les informations specifiques au paquet : // l'id du depot et les infos de l'archive - $paquet_base = array( + $paquet_base = [ 'id_depot' => 0, 'nom_archive' => '', 'nbo_archive' => '', @@ -223,16 +229,16 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) { 'date_modif' => '', 'maj_version' => '', 'signature' => '', - ); + ]; $preparer_sql_paquet = charger_fonction('preparer_sql_paquet', 'plugins'); // pour chaque decouverte, on insere les paquets en base. // on evite des requetes individuelles, tres couteuses en sqlite... - $cle_plugins = array(); // prefixe => id - $insert_plugins = array(); // insertion prefixe... - $insert_plugins_vmax = array(); // vmax des nouveaux plugins... - $insert_paquets = array(); // insertion de paquet... + $cle_plugins = []; // prefixe => id + $insert_plugins = []; // insertion prefixe... + $insert_plugins_vmax = []; // vmax des nouveaux plugins... + $insert_paquets = []; // insertion de paquet... include_spip('inc/config'); $recents = lire_config('plugins_interessants'); @@ -256,7 +262,7 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) { } // On met les neccesite, utilise, procure, dans la clé 0 - // pour être homogène avec le résultat d'une extraction de paquet xml + // pour être homogène avec le résultat d'une extraction de paquet xml // dans une source d'archives. cf svp_phraser_plugin() $paquet = svp_adapter_structure_dependances($paquet); @@ -265,7 +271,6 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) { #$le_paquet['traductions'] = serialize($paquet['traductions']); if ($champs = $preparer_sql_paquet($paquet)) { - // Eclater les champs recuperes en deux sous tableaux, un par table (plugin, paquet) $champs = eclater_plugin_paquet($champs); @@ -280,7 +285,7 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) { // 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... - // + // // + on est tolerant avec les versions identiques de plugin deja presentes // on permet le recalculer le titre... if (!isset($cle_plugins[$prefixe])) { @@ -309,30 +314,34 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) { $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['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]) + $actif = 'non'; + if ( + isset($actifs[$prefixe]) and ($actifs[$prefixe]['dir_type'] == $const_dir) and ($actifs[$prefixe]['dir'] == $chemin) ) { - $actif = "oui"; + $actif = 'oui'; } $le_paquet['actif'] = $actif; // le plugin etait il actif mais temporairement desactive // parce qu'une dependence a disparue ? - $attente = "non"; - if (isset($attentes[$prefixe]) + $attente = 'non'; + if ( + isset($attentes[$prefixe]) and ($attentes[$prefixe]['dir_type'] == $const_dir) and ($attentes[$prefixe]['dir'] == $chemin) ) { - $attente = "oui"; - $le_paquet['actif'] = "oui"; // il est presenté dans la liste des actifs (en erreur). + $attente = 'oui'; + $le_paquet['actif'] = 'oui'; // il est presenté dans la liste des actifs (en erreur). } $le_paquet['attente'] = $attente; @@ -348,16 +357,15 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) { if ($insert_plugins) { sql_insertq_multi('spip_plugins', $insert_plugins); - $pls = sql_allfetsel(array('id_plugin', 'prefixe'), 'spip_plugins', sql_in('prefixe', array_keys($insert_plugins))); + $pls = sql_allfetsel(['id_plugin', 'prefixe'], 'spip_plugins', sql_in('prefixe', array_keys($insert_plugins))); foreach ($pls as $p) { $cle_plugins[$p['prefixe']] = $p['id_plugin']; } } if ($insert_paquets) { - // sert pour le calcul d'obsolescence - $id_plugin_concernes = array(); + $id_plugin_concernes = []; foreach ($insert_paquets as $c => $p) { $insert_paquets[$c]['id_plugin'] = $cle_plugins[$p['prefixe']]; @@ -374,17 +382,17 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) { /** * Adapte la structure des dépendances d'un paquet xml lu par SPIP * à une structure attendue par SVP. - * + * * C'est à dire, met les necessite, utilises, lib, procure dans une sous clé 0 - * + * * @note - * Cette clé 0 indique la description principale du paquet.xml - * mais d'autres clés semblent pouvoir exister + * Cette clé 0 indique la description principale du paquet.xml + * mais d'autres clés semblent pouvoir exister * si la balise `` est présente dedans - * + * * @see svp_phraser_plugin() côté SVP * @see plugins_fusion_paquet() côté SVP - * + * * @see plugins_get_infos_dist() côté SPIP (extractions de tous les paquets d'un dossier) * * @param array $paquet Description d'un paquet @@ -392,9 +400,9 @@ function svp_base_inserer_paquets_locaux($paquets_locaux) { **/ function svp_adapter_structure_dependances($paquet) { // mettre les necessite, utilise, librairie dans la cle 0 - foreach (array('necessite', 'utilise', 'lib', 'procure') as $dep) { + foreach (['necessite', 'utilise', 'lib', 'procure'] as $dep) { if (!empty($paquet[$dep])) { - $paquet[$dep] = array($paquet[$dep]); + $paquet[$dep] = [$paquet[$dep]]; } } return $paquet; @@ -410,48 +418,51 @@ function svp_base_actualiser_paquets_actifs() { $attentes = lire_config('plugin_attente'); $locaux = sql_allfetsel( - array('id_paquet', 'prefixe', 'actif', 'installe', 'attente', 'constante', 'src_archive'), + ['id_paquet', 'prefixe', 'actif', 'installe', 'attente', 'constante', 'src_archive'], 'spip_paquets', - 'id_depot=' . sql_quote(0)); - $changements = array(); + 'id_depot=' . sql_quote(0) + ); + $changements = []; foreach ($locaux as $l) { $copie = $l; $prefixe = strtoupper($l['prefixe']); // actif ? - if (isset($actifs[$prefixe]) + if ( + isset($actifs[$prefixe]) and ($actifs[$prefixe]['dir_type'] == $l['constante']) and ($actifs[$prefixe]['dir'] == $l['src_archive']) ) { - $copie['actif'] = "oui"; + $copie['actif'] = 'oui'; } else { - $copie['actif'] = "non"; + $copie['actif'] = 'non'; } // attente ? - if (isset($attentes[$prefixe]) + if ( + isset($attentes[$prefixe]) and ($attentes[$prefixe]['dir_type'] == $l['constante']) and ($attentes[$prefixe]['dir'] == $l['src_archive']) ) { - $copie['attente'] = "oui"; - $copie['actif'] = "oui"; // il est presente dans la liste des actifs (en erreur). + $copie['attente'] = 'oui'; + $copie['actif'] = 'oui'; // il est presente dans la liste des actifs (en erreur). } else { - $copie['attente'] = "non"; + $copie['attente'] = 'non'; } // installe ? if (in_array($l['src_archive'], $installes)) { - $copie['installe'] = "oui"; + $copie['installe'] = 'oui'; } else { - $copie['installe'] = "non"; + $copie['installe'] = 'non'; } if ($copie != $l) { - $changements[$l['id_paquet']] = array( + $changements[$l['id_paquet']] = [ 'actif' => $copie['actif'], 'installe' => $copie['installe'], 'attente' => $copie['attente'] - ); + ]; } } @@ -469,7 +480,6 @@ function svp_base_actualiser_paquets_actifs() { sql_terminer_transaction(); } } - } /** @@ -487,13 +497,13 @@ function svp_base_actualiser_paquets_actifs() { */ function svp_compiler_multis($prefixe, $dir_source) { - $multis = array(); + $multis = []; // ici on cherche le fichier et les cles avec un prefixe en minuscule systematiquement... $prefixe = strtolower($prefixe); $module = "paquet-$prefixe"; - $item_nom = $prefixe . "_nom"; - $item_slogan = $prefixe . "_slogan"; - $item_description = $prefixe . "_description"; + $item_nom = $prefixe . '_nom'; + $item_slogan = $prefixe . '_slogan'; + $item_description = $prefixe . '_description'; // On cherche tous les fichiers de langue destines a la traduction du paquet.xml if ($fichiers_langue = glob($dir_source . "/lang/{$module}_*.php")) { @@ -548,13 +558,13 @@ function svp_compiler_multis($prefixe, $dir_source) { * Liste d'identifiants de plugins * En cas d'absence, passera sur tous les paquets locaux **/ -function svp_corriger_obsolete_paquets($ids_plugin = array()) { +function svp_corriger_obsolete_paquets($ids_plugin = []) { // 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 = ['pa.id_plugin = pl.id_plugin', 'id_depot=' . sql_quote(0)]; if ($ids_plugin) { $where[] = sql_in('pl.id_plugin', $ids_plugin); } @@ -563,27 +573,30 @@ function svp_corriger_obsolete_paquets($ids_plugin = array()) { // certains sont peut etre devenus obsoletes // parmis tous les plugins locaux presents // concernes par les memes prefixes que les plugins ajoutes. - $obsoletes = array(); - $changements = array(); + $obsoletes = []; + $changements = []; $paquets = sql_allfetsel( - array('pa.id_paquet', 'pl.prefixe', 'pa.version', 'pa.etatnum', 'pa.obsolete', 'pa.compatibilite_spip'), - array('spip_paquets AS pa', 'spip_plugins AS pl'), - $where); + ['pa.id_paquet', 'pl.prefixe', 'pa.version', 'pa.etatnum', 'pa.obsolete', 'pa.compatibilite_spip'], + ['spip_paquets AS pa', 'spip_plugins AS pl'], + $where + ); // 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) { - $obsoletes[$p['prefixe']][] = $c; // si 2 paquet locaux ont le meme prefixe, // mais pas la meme version, - // sont compatibles avec notre SPIP, + // sont compatibles avec notre SPIP, // l'un est obsolete : la version la plus ancienne // Si version et etat sont egaux, on ne decide pas d'obsolescence. if (count($obsoletes[$p['prefixe']]) > 1) { @@ -625,7 +638,6 @@ function svp_corriger_obsolete_paquets($ids_plugin = array()) { } } } - } } else { if ($paquets[$c]['obsolete'] != 'non') { @@ -636,7 +648,7 @@ function svp_corriger_obsolete_paquets($ids_plugin = array()) { } if (count($changements)) { - $oui = $non = array(); + $oui = $non = []; foreach ($changements as $c => $null) { if ($paquets[$c]['obsolete'] == 'oui') { $oui[] = $paquets[$c]['id_paquet']; @@ -646,10 +658,10 @@ 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', ['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', ['obsolete' => 'non'], sql_in('id_paquet', $non)); } } } @@ -666,8 +678,11 @@ function svp_corriger_obsolete_paquets($ids_plugin = array()) { 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)', + ['spip_plugins AS p', 'spip_paquets AS pa'], + [sql_in('p.id_plugin', $ids_plugin), 'p.id_plugin=pa.id_plugin'] + ); $p = array_column($p, 'id_plugin'); $diff = array_diff($ids_plugin, $p); // pour chaque plugin non encore utilise, on les vire ! @@ -676,7 +691,7 @@ function svp_supprimer_plugins_orphelins($ids_plugin) { return $p; // les plugins encore en vie ! } - return array(); + return []; } @@ -695,19 +710,20 @@ function svp_supprimer_plugins_orphelins($ids_plugin) { **/ function svp_rechercher_maj_version($prefixe, $version, $etatnum) { - $maj_version = ""; + $maj_version = ''; - if ($res = sql_allfetsel( - array('pl.id_plugin', 'pa.version'), - array('spip_plugins AS pl', 'spip_paquets AS pa'), - array( + if ( + $res = sql_allfetsel( + ['pl.id_plugin', 'pa.version'], + ['spip_plugins AS pl', 'spip_paquets AS pa'], + [ 'pl.id_plugin = pa.id_plugin', 'pa.id_depot>' . sql_quote(0), 'pl.prefixe=' . sql_quote($prefixe), '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 ! @@ -732,17 +748,19 @@ function svp_rechercher_maj_version($prefixe, $version, $etatnum) { * @uses svp_rechercher_maj_version() **/ function svp_actualiser_maj_version() { - $update = array(); + $update = []; // 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))) + if ( + $locaux = sql_allfetsel( + ['id_paquet', 'prefixe', 'version', 'maj_version', 'etatnum'], + ['spip_paquets'], + ['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']) { - $update[$paquet['id_paquet']] = array('maj_version' => $new_maj_version); + $update[$paquet['id_paquet']] = ['maj_version' => $new_maj_version]; } } } diff --git a/inc/svp_outiller.php b/inc/svp_outiller.php index d0a102f..929dc29 100644 --- a/inc/svp_outiller.php +++ b/inc/svp_outiller.php @@ -36,16 +36,16 @@ if (!defined('_SVP_VERSION_SPIP_MAX')) { * * @global array $GLOBALS ['infos_branches_spip'] */ -$GLOBALS['infos_branches_spip'] = array( - '1.9' => array(_SVP_VERSION_SPIP_MIN, '1.9.2'), - '2.0' => array('2.0.0', '2.0.26'), - '2.1' => array('2.1.0', '2.1.30'), - '3.0' => array('3.0.0', '3.0.28'), - '3.1' => array('3.1.0', '3.1.999'), - '3.2' => array('3.2.0', '3.2.999'), - '3.3' => array('3.3.0-dev', '3.3.0-dev'), - '4.0' => array('4.0.0-alpha', _SVP_VERSION_SPIP_MAX), -); +$GLOBALS['infos_branches_spip'] = [ + '1.9' => [_SVP_VERSION_SPIP_MIN, '1.9.2'], + '2.0' => ['2.0.0', '2.0.26'], + '2.1' => ['2.1.0', '2.1.30'], + '3.0' => ['3.0.0', '3.0.28'], + '3.1' => ['3.1.0', '3.1.999'], + '3.2' => ['3.2.0', '3.2.999'], + '3.3' => ['3.3.0-dev', '3.3.0-dev'], + '4.0' => ['4.0.0-alpha', _SVP_VERSION_SPIP_MAX], +]; # define('_INFOS_BRANCHES_SPIP', serialize($infos_branches_spip)); /** @@ -53,54 +53,54 @@ $GLOBALS['infos_branches_spip'] = array( * * @global array $GLOBALS ['licences_plugin'] */ -$GLOBALS['licences_plugin'] = array( - 'apache' => array( - 'versions' => array('2.0', '1.1', '1.0'), +$GLOBALS['licences_plugin'] = [ + 'apache' => [ + 'versions' => ['2.0', '1.1', '1.0'], 'nom' => 'Apache licence, version @version@', 'url' => 'http://www.apache.org/licenses/LICENSE-@version@' - ), - 'art' => array( - 'versions' => array('1.3'), + ], + 'art' => [ + 'versions' => ['1.3'], 'nom' => 'Art libre @version@', 'url' => 'http://artlibre.org/licence/lal' - ), - 'mit' => array( - 'versions' => array(), + ], + 'mit' => [ + 'versions' => [], 'nom' => 'MIT', 'url' => 'http://opensource.org/licenses/mit-license.php' - ), - 'bsd' => array( - 'versions' => array(), + ], + 'bsd' => [ + 'versions' => [], 'nom' => 'BSD', 'url' => 'http://www.freebsd.org/copyright/license.html' - ), - 'agpl' => array( - 'versions' => array('3'), + ], + 'agpl' => [ + 'versions' => ['3'], 'nom' => 'AGPL @version@', 'url' => 'http://www.gnu.org/licenses/agpl.html' - ), - 'fdl' => array( - 'versions' => array('1.3', '1.2', '1.1'), + ], + 'fdl' => [ + 'versions' => ['1.3', '1.2', '1.1'], 'nom' => 'FDL @version@', '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'), + ], + 'lgpl' => [ + 'versions' => ['3.0', '2.1'], + 'nom' => ['3.0' => 'LGPL 3', '2.1' => 'LGPL 2.1'], 'url' => 'http://www.gnu.org/licenses/lgpl-@version@.html' - ), - 'gpl' => array( - 'versions' => array('3', '2', '1'), + ], + 'gpl' => [ + 'versions' => ['3', '2', '1'], 'nom' => 'GPL @version@', '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'), + ], + 'ccby' => [ + 'versions' => ['2.0', '2.5', '3.0'], + 'suffixes' => ['-sa', '-nc', '-nd', '-nc-nd', '-nc-sa'], 'nom' => 'CC BY@suffixe@ @version@', 'url' => 'http://creativecommons.org/licenses/by@suffixe@/@version@/' - ) -); + ] +]; # define('_LICENCES_PLUGIN', serialize($licences_plugin)); /** @@ -183,14 +183,14 @@ function fusionner_intervalles($intervalle_a, $intervalle_b) { * 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); + static $borne_vide = ['valeur' => '', 'incluse' => false]; + static $borne_inf_init = ['valeur' => _SVP_VERSION_SPIP_MIN, 'incluse' => true]; + static $borne_sup_init = ['valeur' => _SVP_VERSION_SPIP_MAX, 'incluse' => true]; if ($initialiser) { - $bornes = array('min' => $borne_inf_init, 'max' => $borne_sup_init); + $bornes = ['min' => $borne_inf_init, 'max' => $borne_sup_init]; } else { - $bornes = array('min' => $borne_vide, 'max' => $borne_vide); + $bornes = ['min' => $borne_vide, 'max' => $borne_vide]; } if ($intervalle) { @@ -202,8 +202,8 @@ function extraire_bornes($intervalle, $initialiser = false) { $bornes['max']['valeur'] = trim($matches[2]); } } - $bornes['min']['incluse'] = (substr($intervalle, 0, 1) === "["); - $bornes['max']['incluse'] = (substr($intervalle, -1) === "]"); + $bornes['min']['incluse'] = (substr($intervalle, 0, 1) === '['); + $bornes['max']['incluse'] = (substr($intervalle, -1) === ']'); } return $bornes; @@ -323,16 +323,16 @@ function compiler_branches_spip($intervalle) { } $index_sup = array_search($branche_sup, $liste_branches_spip); - // -- on verifie que les bornes sont bien dans l'ordre : + // -- 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, '>=')) { 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 + // Il suffit de trouver les branches qui y sont incluses, sachant que les branches inf et sup // le sont a coup sur maintenant - $liste = array(); + $liste = []; for ($i = $index_inf; $i <= $index_sup; $i++) { $liste[] = $liste_branches_spip[$i]; } @@ -409,13 +409,14 @@ function balise_identique($balise1, $balise2) { */ function definir_licence($prefixe, $nom, $suffixe, $version) { global $licences_plugin; - $licence = array(); + $licence = []; $prefixe = strtolower($prefixe); $nom = strtolower($nom); $suffixe = strtolower($suffixe); - if (((trim($prefixe) == 'creative common') and ($nom == 'attribution')) + if ( + ((trim($prefixe) == 'creative common') and ($nom == 'attribution')) or (($prefixe == 'cc') and ($nom == 'by')) ) { $nom = 'ccby'; @@ -466,7 +467,7 @@ function definir_licence($prefixe, $nom, $suffixe, $version) { * Tableau de couples (nom de la librairie => répertoire de la librairie) **/ function svp_lister_librairies() { - $libs = array(); + $libs = []; foreach (array_reverse(creer_chemin()) as $d) { if (is_dir($dir = $d . 'lib/') and $t = opendir($dir)) { while (($f = readdir($t)) !== false) { @@ -501,7 +502,7 @@ 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]); - $vn = array(); + $vn = []; foreach ($v as $_nombre) { $vn[] = str_pad($_nombre, 3, '0', STR_PAD_LEFT); } diff --git a/inc/svp_phraser.php b/inc/svp_phraser.php index 39ebe23..3399182 100644 --- a/inc/svp_phraser.php +++ b/inc/svp_phraser.php @@ -9,7 +9,7 @@ * @package SPIP\SVP\Plugins **/ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -51,7 +51,7 @@ define('_SVP_REGEXP_BALISE_MULTIS', '#]*>(.*)#Uims'); /** Liste des balises techniques autorisées dans la balise */ -$GLOBALS['balises_techniques'] = array( +$GLOBALS['balises_techniques'] = [ 'menu', 'chemin', 'lib', @@ -63,15 +63,15 @@ $GLOBALS['balises_techniques'] = array( 'options', 'fonctions', 'install' -); +]; # define('_BALISES_TECHNIQUES', serialize($balises_techniques)); /** Liste des balises autorisant une traduction */ -$GLOBALS['balises_multis'] = array( +$GLOBALS['balises_multis'] = [ 'nom', 'slogan', 'description' -); +]; # define('_BALISES_MULTIS', serialize($balises_multis)); @@ -102,18 +102,18 @@ function svp_phraser_depot($fichier_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( + $infos = [ + 'depot' => [ 'titre' => _T('svp:titre_nouveau_depot'), 'type' => 'manuel' - ), - 'paquets' => array() - ); + ], + 'paquets' => [] + ]; // Extraction et phrasage du bloc depot si il existe // -- Si le bloc n'est pas renseigne on ne considere pas cela comme une erreur - $balises_depot = array('titre', 'descriptif', 'type', 'url_serveur', 'url_brouteur', 'url_archives', 'url_commits'); + $balises_depot = ['titre', 'descriptif', 'type', 'url_serveur', 'url_brouteur', 'url_archives', 'url_commits']; if (preg_match(_SVP_REGEXP_BALISE_DEPOT, $xml, $matches)) { if (is_array($arbre_depot = spip_xml_parse($matches[1]))) { $infos['depot'] = svp_aplatir_balises($balises_depot, $arbre_depot, 'nonvide', $infos['depot']); @@ -121,7 +121,7 @@ function svp_phraser_depot($fichier_xml) { } // Extraction et phrasage du bloc des archives si il existe - // -- Le bloc peut etre une chaine de grande taille et provoquer une erreur + // -- 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)) { @@ -129,12 +129,13 @@ function svp_phraser_depot($fichier_xml) { } // lire le cache des md5 pour ne parser que ce qui a change - $fichier_xml_md5 = $fichier_xml . ".md5.txt"; + $fichier_xml_md5 = $fichier_xml . '.md5.txt'; lire_fichier($fichier_xml_md5, $cache_md5); - if (!$cache_md5 + if ( + !$cache_md5 or !$cache_md5 = unserialize($cache_md5) ) { - $cache_md5 = array(); + $cache_md5 = []; } $infos['paquets'] = svp_phraser_archives($matches[0], $cache_md5); @@ -170,12 +171,12 @@ function svp_phraser_depot($fichier_xml) { * Tableau décrivant chaque archive, avec en index l'url de l'archive. * Tableau (url => Tableau de description de l'archive) */ -function svp_phraser_archives($archives, &$md5_cache = array()) { +function svp_phraser_archives($archives, &$md5_cache = []) { include_spip('inc/plugin'); - $seen = array(); + $seen = []; - $paquets = array(); - $version_spip = $GLOBALS['spip_version_branche'] . "." . $GLOBALS['spip_version_code']; + $paquets = []; + $version_spip = $GLOBALS['spip_version_branche'] . '.' . $GLOBALS['spip_version_code']; // On verifie qu'il existe au moins une archive if (!$archives) { @@ -194,14 +195,12 @@ function svp_phraser_archives($archives, &$md5_cache = array()) { } // ce paquet est connu $seen[] = $md5; } 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(); + $traductions = []; if (preg_match(_SVP_REGEXP_BALISE_TRADUCTIONS, $_archive, $matches)) { $traductions = svp_phraser_traductions($matches[1]); } @@ -220,9 +219,13 @@ function svp_phraser_archives($archives, &$md5_cache = array()) { // 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')) + if ( + !_SVP_MODE_RUNTIME + 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; @@ -271,14 +274,14 @@ function svp_phraser_archives($archives, &$md5_cache = array()) { **/ function svp_phraser_plugin($dtd, $contenu) { global $balises_multis; - static $informer = array(); + static $informer = []; - $plugin = array(); + $plugin = []; // 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)) { - $plugins = array(); + $plugins = []; // Pour chacune des occurences de la balise on extrait les infos foreach ($matches[0] as $_balise_plugin) { // Extraction des informations du plugin suivant le standard SPIP @@ -309,7 +312,7 @@ function svp_phraser_plugin($dtd, $contenu) { // 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(); + $multis = []; if (is_array($arbre = spip_xml_parse($matches[1]))) { $multis = svp_aplatir_balises($balises_multis, $arbre); } @@ -346,9 +349,9 @@ function svp_phraser_plugin($dtd, $contenu) { * - Index 'logo' : nom du logo */ function svp_phraser_zip($contenu) { - static $balises_zip = array('file', 'size', 'date', 'source', 'last_commit', 'logo'); + static $balises_zip = ['file', 'size', 'date', 'source', 'last_commit', 'logo']; - $zip = array(); + $zip = []; if (is_array($arbre = spip_xml_parse($contenu))) { $zip = svp_aplatir_balises($balises_zip, $arbre); } @@ -373,7 +376,7 @@ function svp_phraser_zip($contenu) { */ function svp_phraser_traductions($contenu) { - $traductions = array(); + $traductions = []; if (is_array($arbre = spip_xml_parse($contenu))) { foreach ($arbre as $_tag => $_langues) { // On commence par les balises et leurs attributs @@ -386,7 +389,7 @@ function svp_phraser_traductions($contenu) { if (is_array($_langues[0])) { foreach ($_langues[0] as $_tag_trad => $_traducteurs) { list($tag, $attributs_langue) = spip_xml_decompose_tag($_tag_trad); - $traducteurs = array(); + $traducteurs = []; if (is_array($_traducteurs[0])) { foreach ($_traducteurs[0] as $_tag_lang => $_vide) { list($tag, $attributs_traducteur) = spip_xml_decompose_tag($_tag_lang); @@ -428,8 +431,8 @@ function svp_phraser_traductions($contenu) { * Tableau initial pouvant contenir des valeurs par défaut à affecter * à chaque balise avec 'x' => 'valeur' */ -function svp_aplatir_balises($balises, $arbre_xml, $mode = 'vide_et_nonvide', $tableau_initial = array()) { - $tableau_aplati = array(); +function svp_aplatir_balises($balises, $arbre_xml, $mode = 'vide_et_nonvide', $tableau_initial = []) { + $tableau_aplati = []; if (!$balises) { return $tableau_initial; @@ -441,7 +444,8 @@ function svp_aplatir_balises($balises, $arbre_xml, $mode = 'vide_et_nonvide', $t if (isset($arbre_xml[$tag])) { $valeur_aplatie = trim(spip_xml_aplatit($arbre_xml[$tag])); } - if (($mode == 'vide_et_nonvide') + if ( + ($mode == 'vide_et_nonvide') or (($mode == 'nonvide') and $valeur_aplatie) ) { $tableau_aplati[$_valeur] = $valeur_aplatie; diff --git a/inc/svp_plugin.php b/inc/svp_plugin.php index 483eb3d..1ba7e20 100644 --- a/inc/svp_plugin.php +++ b/inc/svp_plugin.php @@ -1,9 +1,11 @@ 0', 'spip_depots_plugins.id_plugin=spip_plugins.id_plugin' - ); + ]; // Condition sur le préfixe ou l'id. $where[] = $id_plugin ? 'spip_plugins.id_plugin=' . $id_plugin @@ -61,13 +63,13 @@ function plugin_lire($plugin, $informations = array()) { } $descriptions_plugin[$index] = $description; } elseif ($index) { - $descriptions_plugin[$index] = array(); + $descriptions_plugin[$index] = []; } } // Si il y a eu une erreur lors du fetsel et que l'index est indéterminé (première lecture par id) // on renvoie une description vide. - $description = $index ? $descriptions_plugin[$index] : array(); + $description = $index ? $descriptions_plugin[$index] : []; // On ne retourne que les champs demandés if ($description and $informations) { diff --git a/inc/svp_rechercher.php b/inc/svp_rechercher.php index d6ef3bc..d8ec21a 100644 --- a/inc/svp_rechercher.php +++ b/inc/svp_rechercher.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Recherche **/ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/plugin'); @@ -57,7 +57,7 @@ function svp_rechercher_plugins_spip( $etat, $depot, $version_spip = '', - $exclusions = array(), + $exclusions = [], $afficher_exclusions = false, $doublon = false, $tri = 'nom' @@ -65,16 +65,16 @@ function svp_rechercher_plugins_spip( include_spip('inc/rechercher'); - $plugins = array(); - $scores = array(); - $ids_paquets = array(); + $plugins = []; + $scores = []; + $ids_paquets = []; // On prepare l'utilisation de la recherche en base SPIP en la limitant aux tables spip_plugins // et spip_paquets si elle n'est pas vide if ($phrase) { $liste = liste_des_champs(); - $tables = array('plugin' => $liste['plugin']); - $options = array('jointures' => true, 'score' => true); + $tables = ['plugin' => $liste['plugin']]; + $options = ['jointures' => true, 'score' => true]; // On cherche dans tous les enregistrements de ces tables des correspondances les plugins qui // correspondent a la phrase recherchee @@ -83,7 +83,7 @@ function svp_rechercher_plugins_spip( // -- On prepare le tableau des scores avec les paquets trouves par la recherche if ($resultats) { // -- On convertit les id de plugins en id de paquets - $ids = array(); + $ids = []; if (isset($resultats['plugin']) and $resultats['plugin']) { $ids_plugin = array_keys($resultats['plugin']); $where[] = sql_in('id_plugin', $ids_plugin); @@ -123,8 +123,8 @@ function svp_rechercher_plugins_spip( // si on a bien trouve des resultats precedemment ou si aucune phrase n'a ete saisie // -- Preparation de la requete if ($ids_paquets) { - $from = array('spip_plugins AS t1', 'spip_paquets AS t2', 'spip_depots AS t3'); - $select = array( + $from = ['spip_plugins AS t1', 'spip_paquets AS t2', 'spip_depots AS t3']; + $select = [ 't1.nom AS nom', 't1.slogan AS slogan', 't1.prefixe AS prefixe', @@ -140,8 +140,8 @@ function svp_rechercher_plugins_spip( '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'); + ]; + $where = ['t1.id_plugin=t2.id_plugin', 't2.id_depot=t3.id_depot']; if ($ids_paquets) { $where[] = sql_in('t2.id_paquet', $ids_paquets); } @@ -183,14 +183,14 @@ function svp_rechercher_plugins_spip( $paquets['installe'] = false; } // -- On traite les doublons (meme plugin, versions differentes) - if ($doublon) // ajout systematique du paquet - { - $plugins[] = $paquets; + if ($doublon) { // ajout systematique du paquet + $plugins[] = $paquets; } else { - // ajout - // - si pas encore trouve + // ajout + // - si pas encore trouve // - ou si sa version est inferieure (on garde que la derniere version) - if (!isset($plugins[$prefixe]) + if ( + !isset($plugins[$prefixe]) or !$plugins[$prefixe] or ($plugins[$prefixe] and spip_version_compare($plugins[$prefixe]['version'], $version, '<')) ) { @@ -254,7 +254,7 @@ function svp_lister_plugins_installes() { */ function svp_verifier_compatibilite_spip($intervalle, $version_spip = '') { if (!$version_spip) { - $version_spip = $GLOBALS['spip_version_branche'] . "." . $GLOBALS['spip_version_code']; + $version_spip = $GLOBALS['spip_version_branche'] . '.' . $GLOBALS['spip_version_code']; } return plugin_version_compatible($intervalle, $version_spip, 'spip'); diff --git a/inc/where_compatible_spip.php b/inc/where_compatible_spip.php index 8065497..ff7c1e1 100644 --- a/inc/where_compatible_spip.php +++ b/inc/where_compatible_spip.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Recherche **/ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -73,12 +73,12 @@ function inc_where_compatible_spip($version, $table, $op) { $where_liste .= ($where_liste ? ' AND ' : '') . 'LOCATE(\'' . $_branche . '\', ' . $table . '.branches_spip) ' . $op . ' 0'; } } - + // Si non vide, on renvoie le where calculé. if ($where_liste) { $where = $where_liste; } } - + return $where; } diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 0000000..d75d301 --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,15 @@ + + + . + vendor/* + lang/* + lib/* + + + + + + + + + diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..42f5d32 --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,1352 @@ +parameters: + ignoreErrors: + - + message: "#^Function _T not found\\.$#" + count: 2 + path: action/actionner.php + + - + message: "#^Function _request not found\\.$#" + count: 4 + path: action/actionner.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: action/actionner.php + + - + message: "#^Function generer_action_auteur not found\\.$#" + count: 1 + path: action/actionner.php + + - + message: "#^Function generer_url_ecrire not found\\.$#" + count: 1 + path: action/actionner.php + + - + message: "#^Function include_spip not found\\.$#" + count: 8 + path: action/actionner.php + + - + message: "#^Function lire_config not found\\.$#" + count: 1 + path: action/actionner.php + + - + message: "#^Function minipres not found\\.$#" + count: 3 + path: action/actionner.php + + - + message: "#^Function redirige_par_entete not found\\.$#" + count: 1 + path: action/actionner.php + + - + message: "#^Function session_get not found\\.$#" + count: 1 + path: action/actionner.php + + - + message: "#^Function session_set not found\\.$#" + count: 1 + path: action/actionner.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: action/actualiser_depot.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: action/actualiser_depot.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: action/actualiser_depot.php + + - + message: "#^Function minipres not found\\.$#" + count: 1 + path: action/actualiser_depot.php + + - + message: "#^Function spip_log not found\\.$#" + count: 2 + path: action/actualiser_depot.php + + - + message: "#^Function sql_allfetsel not found\\.$#" + count: 1 + path: action/actualiser_depot.php + + - + message: "#^Function _request not found\\.$#" + count: 3 + path: action/editer_depot.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: action/editer_depot.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: action/editer_depot.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: action/editer_depot.php + + - + message: "#^Function minipres not found\\.$#" + count: 1 + path: action/editer_depot.php + + - + message: "#^Function redirige_url_ecrire not found\\.$#" + count: 1 + path: action/editer_depot.php + + - + message: "#^Function spip_log not found\\.$#" + count: 1 + path: action/editer_depot.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 1 + path: action/editer_depot.php + + - + message: "#^Function sql_updateq not found\\.$#" + count: 1 + path: action/editer_depot.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: action/supprimer_depot.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: action/supprimer_depot.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: action/supprimer_depot.php + + - + message: "#^Function minipres not found\\.$#" + count: 1 + path: action/supprimer_depot.php + + - + message: "#^Function spip_log not found\\.$#" + count: 1 + path: action/supprimer_depot.php + + - + message: "#^Function _T not found\\.$#" + count: 2 + path: action/teleporter.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: action/teleporter.php + + - + message: "#^Function sous_repertoire not found\\.$#" + count: 2 + path: action/teleporter.php + + - + message: "#^Function spip_log not found\\.$#" + count: 2 + path: action/teleporter.php + + - + message: "#^Function supprimer_repertoire not found\\.$#" + count: 1 + path: action/teleporter.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: base/svp_declarer.php + + - + message: "#^Function lire_config not found\\.$#" + count: 1 + path: base/svp_declarer.php + + - + message: "#^Function _T not found\\.$#" + count: 5 + path: exec/admin_plugin.php + + - + message: "#^Function _request not found\\.$#" + count: 4 + path: exec/admin_plugin.php + + - + message: "#^Function actualise_plugins_actifs not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function debut_droite not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function debut_gauche not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function fin_gauche not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function fin_page not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function gros_titre not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function include_spip not found\\.$#" + count: 9 + path: exec/admin_plugin.php + + - + message: "#^Function message_alerte not found\\.$#" + count: 2 + path: exec/admin_plugin.php + + - + message: "#^Function minipres not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function parametre_url not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function pipeline not found\\.$#" + count: 2 + path: exec/admin_plugin.php + + - + message: "#^Function plugin_donne_erreurs not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function plugin_installes_meta not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function recuperer_fond not found\\.$#" + count: 2 + path: exec/admin_plugin.php + + - + message: "#^Function redirige_formulaire not found\\.$#" + count: 2 + path: exec/admin_plugin.php + + - + message: "#^Function self not found\\.$#" + count: 2 + path: exec/admin_plugin.php + + - + message: "#^Function spip_attend_invalidation_opcode_cache not found\\.$#" + count: 1 + path: exec/admin_plugin.php + + - + message: "#^Function _T not found\\.$#" + count: 3 + path: formulaires/admin_plugin.php + + - + message: "#^Function _request not found\\.$#" + count: 17 + path: formulaires/admin_plugin.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: formulaires/admin_plugin.php + + - + message: "#^Function include_spip not found\\.$#" + count: 3 + path: formulaires/admin_plugin.php + + - + message: "#^Function refuser_traiter_formulaire_ajax not found\\.$#" + count: 1 + path: formulaires/admin_plugin.php + + - + message: "#^Function set_request not found\\.$#" + count: 4 + path: formulaires/admin_plugin.php + + - + message: "#^Function _T not found\\.$#" + count: 4 + path: formulaires/ajouter_depot.php + + - + message: "#^Function _request not found\\.$#" + count: 2 + path: formulaires/ajouter_depot.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: formulaires/ajouter_depot.php + + - + message: "#^Function copie_locale not found\\.$#" + count: 1 + path: formulaires/ajouter_depot.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: formulaires/ajouter_depot.php + + - + message: "#^Function spip_log not found\\.$#" + count: 1 + path: formulaires/ajouter_depot.php + + - + message: "#^Function sql_countsel not found\\.$#" + count: 2 + path: formulaires/ajouter_depot.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 1 + path: formulaires/ajouter_depot.php + + - + message: "#^Function _T not found\\.$#" + count: 1 + path: formulaires/charger_plugin.php + + - + message: "#^Function _request not found\\.$#" + count: 21 + path: formulaires/charger_plugin.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: formulaires/charger_plugin.php + + - + message: "#^Function include_spip not found\\.$#" + count: 3 + path: formulaires/charger_plugin.php + + - + message: "#^Function self not found\\.$#" + count: 1 + path: formulaires/charger_plugin.php + + - + message: "#^Function set_request not found\\.$#" + count: 2 + path: formulaires/charger_plugin.php + + - + message: "#^Function _T not found\\.$#" + count: 4 + path: formulaires/charger_plugin_archive.php + + - + message: "#^Function _request not found\\.$#" + count: 5 + path: formulaires/charger_plugin_archive.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: formulaires/charger_plugin_archive.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: formulaires/charger_plugin_archive.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: formulaires/charger_plugin_archive.php + + - + message: "#^Function joli_repertoire not found\\.$#" + count: 3 + path: formulaires/charger_plugin_archive.php + + - + message: "#^Function set_request not found\\.$#" + count: 1 + path: formulaires/charger_plugin_archive.php + + - + message: "#^Function formulaires_editer_objet_charger not found\\.$#" + count: 1 + path: formulaires/editer_depot.php + + - + message: "#^Function formulaires_editer_objet_traiter not found\\.$#" + count: 1 + path: formulaires/editer_depot.php + + - + message: "#^Function formulaires_editer_objet_verifier not found\\.$#" + count: 1 + path: formulaires/editer_depot.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: formulaires/editer_depot.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: formulaires/inc-admin_plugin_fonctions.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: genie/svp_actualiser_depots.php + + - + message: "#^Function spip_log not found\\.$#" + count: 1 + path: genie/svp_actualiser_depots.php + + - + message: "#^Function sql_allfetsel not found\\.$#" + count: 1 + path: genie/svp_actualiser_depots.php + + - + message: "#^Function _T not found\\.$#" + count: 17 + path: inc/svp_actionner.php + + - + message: "#^Function affdate_heure not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 4 + path: inc/svp_actionner.php + + - + message: "#^Function ecrire_fichier not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function ecrire_meta not found\\.$#" + count: 3 + path: inc/svp_actionner.php + + - + message: "#^Function ecrire_plugin_actifs not found\\.$#" + count: 3 + path: inc/svp_actionner.php + + - + message: "#^Function generer_url_action not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function generer_url_ecrire not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function include_spip not found\\.$#" + count: 16 + path: inc/svp_actionner.php + + - + message: "#^Function lire_config not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function lire_fichier not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function lire_metas not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function message_alerte_fermer not found\\.$#" + count: 3 + path: inc/svp_actionner.php + + - + message: "#^Function message_alerte_ouvrir not found\\.$#" + count: 3 + path: inc/svp_actionner.php + + - + message: "#^Function parametre_url not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function self not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function set_request not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function spip_log not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Function sql_allfetsel not found\\.$#" + count: 2 + path: inc/svp_actionner.php + + - + message: "#^Function sql_delete not found\\.$#" + count: 3 + path: inc/svp_actionner.php + + - + message: "#^Function sql_fetsel not found\\.$#" + count: 11 + path: inc/svp_actionner.php + + - + message: "#^Function sql_getfetsel not found\\.$#" + count: 3 + path: inc/svp_actionner.php + + - + message: "#^Function sql_in not found\\.$#" + count: 2 + path: inc/svp_actionner.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 23 + path: inc/svp_actionner.php + + - + message: "#^Function sql_updateq not found\\.$#" + count: 4 + path: inc/svp_actionner.php + + - + message: "#^Function supprimer_repertoire not found\\.$#" + count: 4 + path: inc/svp_actionner.php + + - + message: "#^Function wrap not found\\.$#" + count: 1 + path: inc/svp_actionner.php + + - + message: "#^Undefined variable\\: \\$contenu$#" + count: 2 + path: inc/svp_actionner.php + + - + message: "#^Call to function unset\\(\\) contains undefined variable \\$conflit\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Call to function unset\\(\\) contains undefined variable \\$erreur\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Call to function unset\\(\\) contains undefined variable \\$id\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Call to function unset\\(\\) contains undefined variable \\$present\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Cannot unset offset 'id_depot' on array\\('p' \\=\\> string, 'local' \\=\\> bool\\)\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Function _T not found\\.$#" + count: 9 + path: inc/svp_decider.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Function extraire_multi not found\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Function include_spip not found\\.$#" + count: 5 + path: inc/svp_decider.php + + - + message: "#^Function lire_config not found\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Function plugin_version_compatible not found\\.$#" + count: 5 + path: inc/svp_decider.php + + - + message: "#^Function set_request not found\\.$#" + count: 2 + path: inc/svp_decider.php + + - + message: "#^Function spip_log not found\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Function spip_version_compare not found\\.$#" + count: 3 + path: inc/svp_decider.php + + - + message: "#^Function sql_allfetsel not found\\.$#" + count: 1 + path: inc/svp_decider.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 18 + path: inc/svp_decider.php + + - + message: "#^Function _T not found\\.$#" + count: 6 + path: inc/svp_depoter_distant.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: inc/svp_depoter_distant.php + + - + message: "#^Function copie_locale not found\\.$#" + count: 2 + path: inc/svp_depoter_distant.php + + - + message: "#^Function filtrer_entites not found\\.$#" + count: 2 + path: inc/svp_depoter_distant.php + + - + message: "#^Function generer_url_entite not found\\.$#" + count: 1 + path: inc/svp_depoter_distant.php + + - + message: "#^Function include_spip not found\\.$#" + count: 9 + path: inc/svp_depoter_distant.php + + - + message: "#^Function spip_log not found\\.$#" + count: 3 + path: inc/svp_depoter_distant.php + + - + message: "#^Function spip_version_compare not found\\.$#" + count: 4 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_allfetsel not found\\.$#" + count: 15 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_countsel not found\\.$#" + count: 4 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_delete not found\\.$#" + count: 8 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_demarrer_transaction not found\\.$#" + count: 3 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_fetsel not found\\.$#" + count: 4 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_getfetsel not found\\.$#" + count: 3 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_in not found\\.$#" + count: 11 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_insertq not found\\.$#" + count: 1 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_insertq_multi not found\\.$#" + count: 4 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_preferer_transaction not found\\.$#" + count: 6 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 33 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_terminer_transaction not found\\.$#" + count: 3 + path: inc/svp_depoter_distant.php + + - + message: "#^Function sql_updateq not found\\.$#" + count: 7 + path: inc/svp_depoter_distant.php + + - + message: "#^Function _request not found\\.$#" + count: 2 + path: inc/svp_depoter_local.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 2 + path: inc/svp_depoter_local.php + + - + message: "#^Function include_spip not found\\.$#" + count: 5 + path: inc/svp_depoter_local.php + + - + message: "#^Function lire_config not found\\.$#" + count: 7 + path: inc/svp_depoter_local.php + + - + message: "#^Function liste_plugin_files not found\\.$#" + count: 3 + path: inc/svp_depoter_local.php + + - + message: "#^Function plugin_version_compatible not found\\.$#" + count: 1 + path: inc/svp_depoter_local.php + + - + message: "#^Function spip_log not found\\.$#" + count: 2 + path: inc/svp_depoter_local.php + + - + message: "#^Function spip_timer not found\\.$#" + count: 2 + path: inc/svp_depoter_local.php + + - + message: "#^Function spip_version_compare not found\\.$#" + count: 6 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_allfetsel not found\\.$#" + count: 10 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_delete not found\\.$#" + count: 4 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_demarrer_transaction not found\\.$#" + count: 2 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_fetsel not found\\.$#" + count: 1 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_in not found\\.$#" + count: 10 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_insertq_multi not found\\.$#" + count: 2 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_preferer_transaction not found\\.$#" + count: 4 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 10 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_terminer_transaction not found\\.$#" + count: 2 + path: inc/svp_depoter_local.php + + - + message: "#^Function sql_updateq not found\\.$#" + count: 5 + path: inc/svp_depoter_local.php + + - + message: "#^Function creer_chemin not found\\.$#" + count: 1 + path: inc/svp_outiller.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: inc/svp_outiller.php + + - + message: "#^Function spip_version_compare not found\\.$#" + count: 5 + path: inc/svp_outiller.php + + - + message: "#^Function unicode2charset not found\\.$#" + count: 1 + path: inc/svp_outiller.php + + - + message: "#^Function _T not found\\.$#" + count: 1 + path: inc/svp_phraser.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 2 + path: inc/svp_phraser.php + + - + message: "#^Function ecrire_fichier not found\\.$#" + count: 1 + path: inc/svp_phraser.php + + - + message: "#^Function include_spip not found\\.$#" + count: 3 + path: inc/svp_phraser.php + + - + message: "#^Function lire_config not found\\.$#" + count: 1 + path: inc/svp_phraser.php + + - + message: "#^Function lire_fichier not found\\.$#" + count: 2 + path: inc/svp_phraser.php + + - + message: "#^Function plugin_version_compatible not found\\.$#" + count: 1 + path: inc/svp_phraser.php + + - + message: "#^Function spip_xml_aplatit not found\\.$#" + count: 1 + path: inc/svp_phraser.php + + - + message: "#^Function spip_xml_decompose_tag not found\\.$#" + count: 4 + path: inc/svp_phraser.php + + - + message: "#^Function spip_xml_parse not found\\.$#" + count: 4 + path: inc/svp_phraser.php + + - + message: "#^Undefined variable\\: \\$cache_md5$#" + count: 2 + path: inc/svp_phraser.php + + - + message: "#^Undefined variable\\: \\$xml$#" + count: 3 + path: inc/svp_phraser.php + + - + message: "#^Function sql_fetsel not found\\.$#" + count: 1 + path: inc/svp_plugin.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 1 + path: inc/svp_plugin.php + + - + message: "#^Function extraire_multi not found\\.$#" + count: 3 + path: inc/svp_rechercher.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: inc/svp_rechercher.php + + - + message: "#^Function liste_des_champs not found\\.$#" + count: 1 + path: inc/svp_rechercher.php + + - + message: "#^Function liste_plugin_actifs not found\\.$#" + count: 1 + path: inc/svp_rechercher.php + + - + message: "#^Function plugin_version_compatible not found\\.$#" + count: 1 + path: inc/svp_rechercher.php + + - + message: "#^Function recherche_en_base not found\\.$#" + count: 1 + path: inc/svp_rechercher.php + + - + message: "#^Function spip_version_compare not found\\.$#" + count: 2 + path: inc/svp_rechercher.php + + - + message: "#^Function sql_allfetsel not found\\.$#" + count: 3 + path: inc/svp_rechercher.php + + - + message: "#^Function sql_fetch not found\\.$#" + count: 1 + path: inc/svp_rechercher.php + + - + message: "#^Function sql_in not found\\.$#" + count: 4 + path: inc/svp_rechercher.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 2 + path: inc/svp_rechercher.php + + - + message: "#^Function sql_select not found\\.$#" + count: 1 + path: inc/svp_rechercher.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: plugins/fusion_paquet.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: plugins/fusion_plugin.php + + - + message: "#^Function spip_version_compare not found\\.$#" + count: 1 + path: plugins/fusion_plugin.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: plugins/preparer_sql_paquet.php + + - + message: "#^Function spip_version_compare not found\\.$#" + count: 1 + path: plugins/preparer_sql_paquet.php + + - + message: "#^Function extraire_trads not found\\.$#" + count: 2 + path: plugins/preparer_sql_plugin.php + + - + message: "#^Function include_spip not found\\.$#" + count: 6 + path: plugins/preparer_sql_plugin.php + + - + message: "#^Function spip_version_compare not found\\.$#" + count: 1 + path: plugins/preparer_sql_plugin.php + + - + message: "#^Function textebrut not found\\.$#" + count: 1 + path: plugins/preparer_sql_plugin.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: prive/squelettes/navigation/svp_admin_plugin_fonctions.php + + - + message: "#^Function effacer_meta not found\\.$#" + count: 1 + path: svp_administrations.php + + - + message: "#^Function include_spip not found\\.$#" + count: 3 + path: svp_administrations.php + + - + message: "#^Function maj_plugin not found\\.$#" + count: 1 + path: svp_administrations.php + + - + message: "#^Function spip_log not found\\.$#" + count: 1 + path: svp_administrations.php + + - + message: "#^Function sql_allfetsel not found\\.$#" + count: 1 + path: svp_administrations.php + + - + message: "#^Function sql_demarrer_transaction not found\\.$#" + count: 1 + path: svp_administrations.php + + - + message: "#^Function sql_drop_table not found\\.$#" + count: 4 + path: svp_administrations.php + + - + message: "#^Function sql_preferer_transaction not found\\.$#" + count: 2 + path: svp_administrations.php + + - + message: "#^Function sql_terminer_transaction not found\\.$#" + count: 1 + path: svp_administrations.php + + - + message: "#^Function sql_updateq not found\\.$#" + count: 1 + path: svp_administrations.php + + - + message: "#^Function PtoBR not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function _T not found\\.$#" + count: 7 + path: svp_fonctions.php + + - + message: "#^Function calculer_liste not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function extraire_multi not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function generer_url_ecrire not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function generer_url_entite not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function generer_url_public not found\\.$#" + count: 2 + path: svp_fonctions.php + + - + message: "#^Function importer_charset not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function include_spip not found\\.$#" + count: 5 + path: svp_fonctions.php + + - + message: "#^Function pipeline not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function plugin_etat_en_clair not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function propre not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function sql_fetsel not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 1 + path: svp_fonctions.php + + - + message: "#^Function _T not found\\.$#" + count: 1 + path: svp_ieconfig.php + + - + message: "#^Function autoriser not found\\.$#" + count: 3 + path: svp_pipelines.php + + - + message: "#^Function direction_css not found\\.$#" + count: 1 + path: svp_pipelines.php + + - + message: "#^Function find_in_path not found\\.$#" + count: 1 + path: svp_pipelines.php + + - + message: "#^Function lire_config not found\\.$#" + count: 1 + path: svp_pipelines.php + + - + message: "#^Function test_espace_prive not found\\.$#" + count: 1 + path: svp_pipelines.php + + - + message: "#^Function spip_log not found\\.$#" + count: 5 + path: teleporter/git.php + + - + message: "#^Function _T not found\\.$#" + count: 4 + path: teleporter/http.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: teleporter/http.php + + - + message: "#^Function copie_locale not found\\.$#" + count: 1 + path: teleporter/http.php + + - + message: "#^Function include_spip not found\\.$#" + count: 3 + path: teleporter/http.php + + - + message: "#^Function recuperer_url not found\\.$#" + count: 1 + path: teleporter/http.php + + - + message: "#^Function spip_log not found\\.$#" + count: 2 + path: teleporter/http.php + + - + message: "#^Function spip_unlink not found\\.$#" + count: 1 + path: teleporter/http.php + + - + message: "#^Function ecrire_fichier not found\\.$#" + count: 1 + path: teleporter/http_deballe_tgz.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: teleporter/http_deballe_tgz.php + + - + message: "#^Function sous_repertoire not found\\.$#" + count: 2 + path: teleporter/http_deballe_tgz.php + + - + message: "#^Function spip_log not found\\.$#" + count: 5 + path: teleporter/http_deballe_tgz.php + + - + message: "#^Function supprimer_repertoire not found\\.$#" + count: 1 + path: teleporter/http_deballe_tgz.php + + - + message: "#^Instantiated class Spip\\\\Archives\\\\SpipArchives not found\\.$#" + count: 1 + path: teleporter/http_deballe_tgz.php + + - + message: "#^Function ecrire_fichier not found\\.$#" + count: 1 + path: teleporter/http_deballe_zip.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: teleporter/http_deballe_zip.php + + - + message: "#^Function sous_repertoire not found\\.$#" + count: 2 + path: teleporter/http_deballe_zip.php + + - + message: "#^Function spip_log not found\\.$#" + count: 5 + path: teleporter/http_deballe_zip.php + + - + message: "#^Function supprimer_repertoire not found\\.$#" + count: 1 + path: teleporter/http_deballe_zip.php + + - + message: "#^Instantiated class Spip\\\\Archives\\\\SpipArchives not found\\.$#" + count: 1 + path: teleporter/http_deballe_zip.php + + - + message: "#^Function spip_log not found\\.$#" + count: 5 + path: teleporter/svn.php + diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000..9cd9a27 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,12 @@ +includes: + - phpstan-baseline.neon + +parameters: + paths: + - . + excludePaths: + analyseAndScan: + - vendor + - lang + - lib + level: 0 diff --git a/plugins/fusion_paquet.php b/plugins/fusion_paquet.php index 15f616c..25b3cde 100644 --- a/plugins/fusion_paquet.php +++ b/plugins/fusion_paquet.php @@ -32,7 +32,7 @@ include_spip('inc/svp_outiller'); function plugins_fusion_paquet($plugins) { global $balises_techniques; - $fusion = array(); + $fusion = []; // mefions nous des $plugins['erreur'] (mauvais xml du paquet.xml) if (!$plugins or empty($plugins[0])) { return $fusion; @@ -64,7 +64,7 @@ function plugins_fusion_paquet($plugins) { if ($_index and $_index != 'balise') { $fusion[$_index][$_compatibilite] = $_balise; if (!isset($fusion[$_index][0])) { - $fusion[$_index][0] = array(); + $fusion[$_index][0] = []; } } } diff --git a/plugins/fusion_plugin.php b/plugins/fusion_plugin.php index 3388a55..a2da15f 100644 --- a/plugins/fusion_plugin.php +++ b/plugins/fusion_plugin.php @@ -38,7 +38,7 @@ include_spip('inc/svp_outiller'); function plugins_fusion_plugin($plugins) { global $balises_techniques; - $fusion = array(); + $fusion = []; if (!$plugins) { return $fusion; } @@ -52,7 +52,7 @@ function plugins_fusion_plugin($plugins) { unset($fusion[$_btech]); $fusion[$_btech][0] = $balise; } else { - $fusion[$_btech] = array(); + $fusion[$_btech] = []; } } } else { @@ -95,14 +95,14 @@ function plugins_fusion_plugin($plugins) { foreach ($balises_techniques as $_btech) { 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(); + $fusion[$_btech] = []; } 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(); + $fusion[$_btech][0] = []; } } else { if (!isset($plugins[$cle_min_min][$_btech]) or !$plugins[$cle_min_min][$_btech]) { @@ -111,7 +111,7 @@ function plugins_fusion_plugin($plugins) { $balise = $fusion[$_btech]; unset($fusion[$_btech]); $fusion[$_btech][$plugins[$cle_min_max]['compatibilite']] = $balise; - $fusion[$_btech][0] = array(); + $fusion[$_btech][0] = []; } 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 @@ -133,7 +133,7 @@ function plugins_fusion_plugin($plugins) { unset($fusion[$_btech][$_cle0]); } if (!isset($fusion[$_btech][0])) { - $fusion[$_btech][0] = array(); + $fusion[$_btech][0] = []; } } @@ -147,7 +147,6 @@ function plugins_fusion_plugin($plugins) { } } } - } return $fusion; diff --git a/plugins/preparer_sql_paquet.php b/plugins/preparer_sql_paquet.php index b6157b7..6ebbfca 100644 --- a/plugins/preparer_sql_paquet.php +++ b/plugins/preparer_sql_paquet.php @@ -8,6 +8,7 @@ * @license GPL * @package SPIP\SVP\Plugins **/ + if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -27,21 +28,23 @@ if (!defined('_ECRIRE_INC_VERSION')) { function plugins_preparer_sql_paquet($plugin) { include_spip('inc/svp_outiller'); - $champs = array(); + $champs = []; // Se méfier des plugins en erreur if (!$plugin or !empty($plugin[1]['erreur'])) { return $champs; } // On initialise les champs ne necessitant aucune transformation - foreach (array( - 'etat' => 'etat', - 'version_base' => 'schema', - 'logo' => 'logo', - 'lien_doc' => 'documentation', - 'lien_demo' => 'demonstration', - 'lien_dev' => 'developpement' - ) as $cle_champ => $cle_plugin) { + foreach ( + [ + '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] : ''; @@ -57,16 +60,18 @@ function plugins_preparer_sql_paquet($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 = ['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) { + foreach ( + [ + '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') : ''; @@ -75,12 +80,14 @@ function plugins_preparer_sql_paquet($plugin) { // Cles necessitant d'etre serialisees // Tags : liste de mots-cles // Traitement des auteurs, credits, licences et copyright - foreach (array( - 'auteur' => 'auteur', - 'credit' => 'credit', - 'licence' => 'licence', - 'copyright' => 'copyright', - ) as $cle_champ => $cle_plugin) { + foreach ( + [ + '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]) : ''; @@ -103,7 +110,7 @@ function plugins_preparer_sql_paquet($plugin) { // Calculer le champ 'procure' (tableau sérialisé prefixe => version) $champs['procure'] = ''; if (!empty($plugin['procure'][0])) { - $champs['procure'] = array(); + $champs['procure'] = []; foreach ($plugin['procure'][0] as $procure) { $p = strtoupper($procure['nom']); if ( diff --git a/plugins/preparer_sql_plugin.php b/plugins/preparer_sql_plugin.php index 2924034..7d3d846 100644 --- a/plugins/preparer_sql_plugin.php +++ b/plugins/preparer_sql_plugin.php @@ -29,7 +29,7 @@ if (!defined('_ECRIRE_INC_VERSION')) { function plugins_preparer_sql_plugin($plugin) { include_spip('inc/svp_outiller'); - $champs = array(); + $champs = []; if (!$plugin) { return $champs; } @@ -47,7 +47,7 @@ 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 = ['stable' => 4, 'test' => 3, 'dev' => 2, 'experimental' => 1]; $champs['etatnum'] = (isset($plugin['etat']) and isset($num[$plugin['etat']])) ? $num[$plugin['etat']] : 0; // On passe en utf-8 avec le bon charset les champs pouvant contenir des entites html @@ -94,7 +94,7 @@ function plugins_preparer_sql_plugin($plugin) { // Calculer le champ 'procure' (tableau sérialisé prefixe => version) $champs['procure'] = ''; if (!empty($plugin['procure'][0])) { - $champs['procure'] = array(); + $champs['procure'] = []; foreach ($plugin['procure'][0] as $procure) { $p = strtoupper($procure['nom']); if ( @@ -137,7 +137,7 @@ function normaliser_nom($nom, $langue = '', $supprimer_numero = true) { // On extrait les traductions de l'eventuel multi // Si le nom n'est pas un multi alors le tableau renvoye est de la forme '' => 'nom' - $noms = extraire_trads(str_replace(array('', ''), array(), $nom, $nbr_replace)); + $noms = extraire_trads(str_replace(['', ''], [], $nom, $nbr_replace)); $multi = ($nbr_replace > 0 and !$langue) ? true : false; $nouveau_nom = ''; @@ -157,9 +157,8 @@ function normaliser_nom($nom, $langue = '', $supprimer_numero = true) { } } - if ($nouveau_nom) // On renvoie un nouveau nom multi ou pas sans la valeur de la branche - { - $nouveau_nom = (($multi) ? '' : '') . $nouveau_nom . (($multi) ? '' : ''); + 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; @@ -212,7 +211,7 @@ 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()); + $res = ['auteur' => [], 'licence' => [], 'copyright' => []]; 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 @@ -260,9 +259,14 @@ function normaliser_auteur_licence($texte, $balise) { // 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)) { + $licence = []; + 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; } @@ -270,14 +274,14 @@ function normaliser_auteur_licence($texte, $balise) { // On finalise la balise auteur ou licence si on a pas trouve de licence prioritaire if ($href) { - $href = !preg_match(',https?://,', $href, $matches) ? "http://" . $href : $href; + $href = !preg_match(',https?://,', $href, $matches) ? 'http://' . $href : $href; } $v = trim(textebrut($v)); if ((strlen($v) > 2) and !$licence) { if ($balise == 'auteur') { - $res['auteur'][] = array('nom' => $v, 'url' => $href, 'mail' => $mail); + $res['auteur'][] = ['nom' => $v, 'url' => $href, 'mail' => $mail]; } else { - $res['licence'][] = array('nom' => $v, 'url' => $href); + $res['licence'][] = ['nom' => $v, 'url' => $href]; } } } @@ -299,9 +303,9 @@ function normaliser_multi($texte) { include_spip('inc/filtres'); if (!preg_match_all(_EXTRAIRE_MULTI, $texte, $regs, PREG_SET_ORDER)) { - return array(_LANGUE_PAR_DEFAUT => $texte); + return [_LANGUE_PAR_DEFAUT => $texte]; } - $trads = array(); + $trads = []; 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 diff --git a/prive/squelettes/inclure/voir_en_ligne_fonctions.php b/prive/squelettes/inclure/voir_en_ligne_fonctions.php index a631c2e..4eeb774 100644 --- a/prive/squelettes/inclure/voir_en_ligne_fonctions.php +++ b/prive/squelettes/inclure/voir_en_ligne_fonctions.php @@ -1,4 +1,5 @@ plugins_dist - $maj['0.4.0'][] = array('svp_vider_tables', $nom_meta_base_version); + $maj['0.4.0'][] = ['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'][] = ['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'][] = ['maj_tables', 'spip_paquets']; + $maj['0.5.1'][] = ['svp_actualiser_paquets_locaux', true]; // suppression des colonnes tags et categorie car c'est le plugin SVP Typologie différent qui s'en occupe totalement. - $maj['0.6.0'] = array( - array('maj_tables',array('spip_plugins')), - array('sql_alter','TABLE spip_plugins DROP COLUMN categorie'), - array('sql_alter','TABLE spip_plugins DROP COLUMN tags'), - ); + $maj['0.6.0'] = [ + ['maj_tables',['spip_plugins']], + ['sql_alter','TABLE spip_plugins DROP COLUMN categorie'], + ['sql_alter','TABLE spip_plugins DROP COLUMN tags'], + ]; - $maj['0.6.1'] = array( - array('sql_alter', "TABLE spip_plugins CHANGE prefixe prefixe VARCHAR(48) DEFAULT '' NOT NULL"), - array('sql_alter', "TABLE spip_paquets CHANGE prefixe prefixe VARCHAR(48) DEFAULT '' NOT NULL"), - ); + $maj['0.6.1'] = [ + ['sql_alter', "TABLE spip_plugins CHANGE prefixe prefixe VARCHAR(48) DEFAULT '' NOT NULL"], + ['sql_alter', "TABLE spip_paquets CHANGE prefixe prefixe VARCHAR(48) DEFAULT '' NOT NULL"], + ]; include_spip('base/upgrade'); maj_plugin($nom_meta_base_version, $version_cible, $maj); @@ -68,10 +68,10 @@ function svp_upgrade($nom_meta_base_version, $version_cible) { * @return void **/ function svp_vider_tables($nom_meta_base_version) { - sql_drop_table("spip_depots"); - sql_drop_table("spip_plugins"); - sql_drop_table("spip_depots_plugins"); - sql_drop_table("spip_paquets"); + sql_drop_table('spip_depots'); + sql_drop_table('spip_plugins'); + sql_drop_table('spip_depots_plugins'); + sql_drop_table('spip_paquets'); effacer_meta($nom_meta_base_version); spip_log('DESINSTALLATION BDD', 'svp_actions.' . _LOG_INFO); @@ -87,9 +87,10 @@ function svp_vider_tables($nom_meta_base_version) { */ function svp_synchroniser_prefixe() { $paquets = sql_allfetsel( - array('pa.id_paquet', 'pl.prefixe'), - array('spip_paquets AS pa', 'spip_plugins AS pl'), - 'pl.id_plugin=pa.id_plugin'); + ['pa.id_paquet', 'pl.prefixe'], + ['spip_paquets AS pa', 'spip_plugins AS pl'], + 'pl.id_plugin=pa.id_plugin' + ); if ($paquets) { // On insere, en encapsulant pour sqlite... @@ -98,9 +99,11 @@ function svp_synchroniser_prefixe() { } foreach ($paquets as $paquet) { - sql_updateq('spip_paquets', - array('prefixe' => $paquet['prefixe']), - 'id_paquet=' . intval($paquet['id_paquet'])); + sql_updateq( + 'spip_paquets', + ['prefixe' => $paquet['prefixe']], + 'id_paquet=' . intval($paquet['id_paquet']) + ); } if (sql_preferer_transaction()) { diff --git a/svp_fonctions.php b/svp_fonctions.php index 2f16fb8..45f9d4a 100644 --- a/svp_fonctions.php +++ b/svp_fonctions.php @@ -41,33 +41,33 @@ function svp_afficher_intervalle($intervalle, $logiciel) { $mineure = $regs[1]; $majeure = preg_replace(',\.999$,', '.*', $regs[2]); - $mineure_inc = $intervalle[0] == "["; - $majeure_inc = substr($intervalle, -1) == "]"; + $mineure_inc = $intervalle[0] == '['; + $majeure_inc = substr($intervalle, -1) == ']'; if (strlen($mineure)) { if (!strlen($majeure)) { - $version = _T('svp:info_logiciel_version', array( + $version = _T('svp:info_logiciel_version', [ 'logiciel' => $logiciel, 'signe' => ($mineure_inc ? '≥' : '>'), 'version' => $mineure - )); + ]); } else { - $version = _T('svp:info_logiciel_version_intervalle', array( + $version = _T('svp:info_logiciel_version_intervalle', [ 'logiciel' => $logiciel, 'signe_min' => ($mineure_inc ? '≥' : '>'), 'version_min' => $mineure, 'signe_max' => ($majeure_inc ? '≤' : '<'), 'version_max' => $majeure, - )); + ]); } } else { if (!strlen($majeure)) { $version = $logiciel; } else { - $version = _T('svp:info_logiciel_version', array( + $version = _T('svp:info_logiciel_version', [ 'logiciel' => $logiciel, 'signe' => ($majeure_inc ? '≤' : '<'), 'version' => $majeure, - )); + ]); } } @@ -126,8 +126,10 @@ function svp_afficher_dependances($balise_serialisee, $dependance = 'necessite', foreach ($dependances as $_compatibilite => $_dependance) { $compatibilite = ($_compatibilite !== 0) - ? _T('svp:info_compatibilite_dependance', - array('compatibilite' => svp_afficher_intervalle($_compatibilite, 'SPIP'))) + ? _T( + 'svp:info_compatibilite_dependance', + ['compatibilite' => svp_afficher_intervalle($_compatibilite, 'SPIP')] + ) : ''; if ($compatibilite) { $texte .= ($texte ? str_repeat($sep, 2) : '') . $compatibilite; @@ -227,7 +229,7 @@ function svp_afficher_langues($langues, $sep = ', ') { if ($texte) { $texte .= $sep; } - $traducteurs_langue = array(); + $traducteurs_langue = []; foreach ($_traducteurs as $_traducteur) { if (is_array($_traducteur)) { $traducteurs_langue[] = @@ -358,7 +360,7 @@ function critere_compatible_spip_dist($idb, &$boucles, $crit) { // (ex 3.2,3.1) foreach ($crit->param as $_param) { if (isset($_param[0])) { - $version = calculer_liste(array($_param[0]), array(), $boucles, $boucle->id_parent); + $version = calculer_liste([$_param[0]], [], $boucles, $boucle->id_parent); $boucle->hash .= ' $where' . $i . ' = $creer_where(' . $version . ', \'' . $table . '\', \'' . $op . '\'); '; @@ -412,7 +414,7 @@ function filtre_construire_recherche_plugins( $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 @@ -422,11 +424,17 @@ function filtre_construire_recherche_plugins( // tries par nom ou score include_spip('inc/svp_rechercher'); $plugins = svp_rechercher_plugins_spip( - $phrase, $etat, $depot, $version_spip, - svp_lister_plugins_installes(), $afficher_exclusions, $afficher_doublons, $tri); + $phrase, + $etat, + $depot, + $version_spip, + svp_lister_plugins_installes(), + $afficher_exclusions, + $afficher_doublons, + $tri + ); return $plugins; - } /** @@ -516,7 +524,7 @@ function test_plugins_auto() { */ function filtre_svp_diff_xyz($version1, $version2) { $diff = ''; - $versions = array($version1, $version2); + $versions = [$version1, $version2]; // Compléter les numéros si nécessaire : 1.0 → 1.0.0 foreach ($versions as $k => $version) { @@ -546,11 +554,11 @@ function filtre_svp_diff_xyz($version1, $version2) { * @param int $id_paquet * @return bool */ -function filtre_svp_affichage_filtrer_paquets_dist(int $id_paquet) : bool { +function filtre_svp_affichage_filtrer_paquets_dist(int $id_paquet): bool { $affiche = pipeline('svp_afficher_paquet', [ 'args' => ['id_paquet' => $id_paquet], 'data' => true ]); return ($affiche ? true : false); -} \ No newline at end of file +} diff --git a/svp_ieconfig.php b/svp_ieconfig.php index 33f864c..ac17a9f 100644 --- a/svp_ieconfig.php +++ b/svp_ieconfig.php @@ -8,7 +8,7 @@ * @package SPIP\SVP\Pipelines **/ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } diff --git a/svp_pipelines.php b/svp_pipelines.php index a385efb..193239b 100644 --- a/svp_pipelines.php +++ b/svp_pipelines.php @@ -1,4 +1,5 @@ modificateur['criteres']['id_depot']) && - !isset($boucle->modificateur['tout']) + #!isset($boucle->modificateur['criteres']['id_depot']) && + !isset($boucle->modificateur['tout']) ) { - $boucle->where[] = array("'>'", "'$m_id_depot'", "'\"0\"'"); + $boucle->where[] = ["'>'", "'$m_id_depot'", "'\"0\"'"]; } } // PLUGINS elseif ($boucle->type_requete == 'plugins') { @@ -119,17 +121,16 @@ function svp_pre_boucle($boucle) { */ if ( # !$id_depot && - !isset($boucle->modificateur['tout']) + !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\"'"); + $boucle->from['depots_plugins'] = 'spip_depots_plugins'; + $boucle->where[] = ["'='", "'depots_plugins.id_plugin'", "'$id_table.id_plugin'"]; + $boucle->where[] = ["'>'", "'depots_plugins.id_depot'", "'\"0\"'"]; } } return $boucle; - } /** @@ -140,11 +141,13 @@ function svp_pre_boucle($boucle) { * @return array */ function svp_exclure_id_conditionnel($flux) { - if (!in_array( - $flux['args']['table'], - array('spip_depots', 'spip_plugins', 'spip_paquets') - )) { - $flux['data'] = array_merge($flux['data'], array('id_depot', 'id_paquet', 'id_plugin')); + if ( + !in_array( + $flux['args']['table'], + ['spip_depots', 'spip_plugins', 'spip_paquets'] + ) + ) { + $flux['data'] = array_merge($flux['data'], ['id_depot', 'id_paquet', 'id_plugin']); } return $flux; } @@ -175,7 +178,7 @@ function svp_jquery_plugins($flux) { function svp_header_prive_css($flux) { $css = find_in_path('lib/bootstrap/css/dropdown.css'); - $flux .= '' . "\n"; + $flux .= '' . "\n"; return $flux; -} \ No newline at end of file +} diff --git a/teleporter/git.php b/teleporter/git.php index 9f92482..e0bf193 100644 --- a/teleporter/git.php +++ b/teleporter/git.php @@ -1,4 +1,5 @@ 'assoc')); + $infos = teleporter_git_read($dest, ['format' => 'assoc']); if (!$infos) { - spip_log("Suppression de $dest qui n'est pas au format GIT", "teleport"); + 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"); + 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']) + } elseif ( + !isset($options['revision']) or $options['revision'] != $infos['revision'] ) { - $command = _GIT_COMMAND . " checkout " . escapeshellarg($branche); + $command = _GIT_COMMAND . ' checkout ' . escapeshellarg($branche); teleporter_git_exec($dest, $command); - $command = _GIT_COMMAND . " pull --all"; + $command = _GIT_COMMAND . ' pull --all'; teleporter_git_exec($dest, $command); if (isset($options['revision'])) { - $command = _GIT_COMMAND . " checkout " . escapeshellarg($options['revision']); + $command = _GIT_COMMAND . ' checkout ' . escapeshellarg($options['revision']); teleporter_git_exec($dest, $command); } else { - $command = _GIT_COMMAND . " checkout " . escapeshellarg($branche); + $command = _GIT_COMMAND . ' checkout ' . escapeshellarg($branche); teleporter_git_exec($dest, $command); } } else { - spip_log("$dest deja sur GIT $source Revision " . $options['revision'], "teleport"); + spip_log("$dest deja sur GIT $source Revision " . $options['revision'], 'teleport'); } } @@ -67,15 +69,15 @@ function teleporter_git_dist($methode, $source, $dest, $options = array()) { if (!is_dir($dir)) { @mkdir($dir, _SPIP_CHMOD, true); if (!is_dir($dir)) { - spip_log("$dir impossible a créer pour clone $source.", "teleport"); + spip_log("$dir impossible a créer pour clone $source.", 'teleport'); return false; } } - $command = _GIT_COMMAND . " clone "; - $command .= escapeshellarg($source) . " " . escapeshellarg($into); + $command = _GIT_COMMAND . ' clone '; + $command .= escapeshellarg($source) . ' ' . escapeshellarg($into); teleporter_git_exec($dir, $command); if (isset($options['revision'])) { - $command = _GIT_COMMAND . " checkout " . escapeshellarg($options['revision']); + $command = _GIT_COMMAND . ' checkout ' . escapeshellarg($options['revision']); teleporter_git_exec($dest, $command); } } @@ -106,49 +108,49 @@ function teleporter_git_dist($methode, $source, $dest, $options = array()) { * -- revision : Révision du dépot * -- dest : Répertoire du dépot. */ -function teleporter_git_read($dest, $options = array()) { +function teleporter_git_read($dest, $options = []) { if (!is_dir("$dest/.git")) { - return ""; + return ''; } $curdir = getcwd(); chdir($dest); - exec(_GIT_COMMAND . " remote -v", $output); + exec(_GIT_COMMAND . ' remote -v', $output); $output = implode("\n", $output); - $source = ""; - if (preg_match(",(\w+://.*)\s+\(fetch\)$,Uims", $output, $m)) { + $source = ''; + 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) { chdir($curdir); - return ""; + 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( + return [ 'source' => $source, 'revision' => substr($hash, 0, 7), 'dest' => $dest - ); + ]; } @@ -162,7 +164,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); @@ -179,7 +181,7 @@ function teleporter_git_exec($dest, $command) { 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 58499ab..d4b0217 100644 --- a/teleporter/http.php +++ b/teleporter/http.php @@ -1,4 +1,5 @@ $extension)); + if (!$deballe = charger_fonction('http_deballe_' . preg_replace(',\W,', '_', $extension), 'teleporter', true)) { + return _T('svp:erreur_teleporter_format_archive_non_supporte', ['extension' => $extension]); } $old = teleporter_nettoyer_vieille_version($dest); @@ -53,7 +54,7 @@ function teleporter_http_dist($methode, $source, $dest, $options = array()) { rename($old, $dest); } - return _T('svp:erreur_teleporter_echec_deballage_archive', array('fichier' => $fichier)); + return _T('svp:erreur_teleporter_echec_deballage_archive', ['fichier' => $fichier]); } return true; @@ -79,7 +80,7 @@ function teleporter_http_recuperer_source($source, $dest_tmp) { spip_unlink($dest_tmp); } - $extension = ""; + $extension = ''; # si on ne dispose pas encore du fichier # verifier que le zip en est bien un (sans se fier a son extension) @@ -95,7 +96,8 @@ function teleporter_http_recuperer_source($source, $dest_tmp) { $res = recuperer_url($source, $options); $head = $res['headers']; - if (preg_match(",^Content-Type:\s*?(.*)$,Uims", $head, $m) + if ( + preg_match(',^Content-Type:\s*?(.*)$,Uims', $head, $m) and include_spip('base/typedoc') ) { $mime = $m[1]; @@ -105,11 +107,13 @@ function teleporter_http_recuperer_source($source, $dest_tmp) { } } - if (!$extension + if ( + !$extension // cas des extensions incertaines car mime-type ambigu - or in_array($extension, array('bin', 'gz')) + or in_array($extension, ['bin', 'gz']) ) { - if (preg_match(",^Content-Disposition:\s*attachment;\s*filename=(.*)['\"]?$,Uims", $head, $m) + if ( + preg_match(",^Content-Disposition:\s*attachment;\s*filename=(.*)['\"]?$,Uims", $head, $m) and $e = teleporter_http_extension($m[1]) ) { $extension = $e; @@ -123,27 +127,28 @@ function teleporter_http_recuperer_source($source, $dest_tmp) { # format de fichier inconnu if (!$extension) { - spip_log("Type de fichier inconnu pour la source $source", "teleport" . _LOG_ERREUR); + spip_log("Type de fichier inconnu pour la source $source", 'teleport' . _LOG_ERREUR); - return _T('svp:erreur_teleporter_type_fichier_inconnu', array('source' => $source)); + return _T('svp:erreur_teleporter_type_fichier_inconnu', ['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 include_spip('inc/distant'); $dest_tmp = copie_locale($source, 'force', $dest_tmp, _SVP_PAQUET_MAX_SIZE); - if (!$dest_tmp + if ( + !$dest_tmp or !file_exists($dest_tmp = _DIR_RACINE . $dest_tmp) ) { - spip_log("Chargement impossible de la source $source", "teleport" . _LOG_ERREUR); + spip_log("Chargement impossible de la source $source", 'teleport' . _LOG_ERREUR); - return _T('svp:erreur_teleporter_chargement_source_impossible', array('source' => $source)); + return _T('svp:erreur_teleporter_chargement_source_impossible', ['source' => $source]); } - return array($dest_tmp, $extension); + return [$dest_tmp, $extension]; } /** @@ -161,7 +166,8 @@ function teleporter_http_extension($file) { $e = pathinfo($file, PATHINFO_EXTENSION); // cas particuliers : redresser .tar.gz - if ($e == 'gz' + if ( + $e == 'gz' and preg_match(',tar\.gz,i', $file) ) { $e = 'tgz'; diff --git a/teleporter/http_deballe_tgz.php b/teleporter/http_deballe_tgz.php index 68f356d..a385b37 100644 --- a/teleporter/http_deballe_tgz.php +++ b/teleporter/http_deballe_tgz.php @@ -1,4 +1,5 @@ $archive, // normalement l'url source mais on l'a pas ici 'fichier' => $archive, 'dest' => $dest, 'tmp' => $tmp, 'extract' => true, 'root_extract' => true, # extraire a la racine de dest - ) + ] ); // le fichier .zip est la et bien forme - if (is_array($status) + if ( + is_array($status) 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); + 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); + spip_log("probleme lors du dezip de $archive", 'teleport' . _LOG_ERREUR); return false; } @@ -71,19 +73,20 @@ function teleporter_http_deballe_tgz_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_tgz($quoi = array()) { +function teleporter_http_charger_tgz($quoi = []) { if (!$quoi) { return false; } - 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) { + foreach ( + [ + 'remove' => '', + 'rename' => [], + 'edit' => [], + 'root_extract' => false, # extraire a la racine de dest ? + 'tmp' => sous_repertoire(_DIR_CACHE, 'chargeur') + ] as $opt => $def + ) { isset($quoi[$opt]) || ($quoi[$opt] = $def); } @@ -95,8 +98,10 @@ function teleporter_http_charger_tgz($quoi = array()) { $zip = new Spip\Archives\SpipArchives($fichier); if (!$infos = $zip->informer()) { - spip_log('charger_decompresser erreur tar ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'], - "teleport" . _LOG_ERREUR); + spip_log( + 'charger_decompresser erreur tar ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'], + 'teleport' . _LOG_ERREUR + ); return $zip->message(); } @@ -108,7 +113,7 @@ function teleporter_http_charger_tgz($quoi = array()) { // 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, '.tgz')); + $nom = preg_replace(',^h[0-9a-f]{8}-,i', '', basename($fichier, '.tgz')); } $dir_export = $quoi['root_extract'] @@ -129,13 +134,15 @@ function teleporter_http_charger_tgz($quoi = array()) { $target = sous_repertoire(dirname($target), basename($target)); if (!$zip->deballer($target)) { - spip_log('charger_decompresser erreur tar ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'], - "teleport" . _LOG_ERREUR); + spip_log( + 'charger_decompresser erreur tar ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'], + 'teleport' . _LOG_ERREUR + ); return $zip->message(); } - spip_log('charger_decompresser OK pour paquet: ' . $quoi['archive'], "teleport"); + spip_log('charger_decompresser OK pour paquet: ' . $quoi['archive'], 'teleport'); $size = 0; $list = []; @@ -150,19 +157,20 @@ function teleporter_http_charger_tgz($quoi = array()) { // 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" ); - return array( + return [ 'files' => $list, 'size' => $size, 'compressed_size' => 0, 'dirname' => $dir_export, 'tmpname' => $tmpname, 'target' => $target, - ); + ]; } diff --git a/teleporter/http_deballe_zip.php b/teleporter/http_deballe_zip.php index b1113e6..ef2d1f8 100644 --- a/teleporter/http_deballe_zip.php +++ b/teleporter/http_deballe_zip.php @@ -1,4 +1,5 @@ $archive, // normalement l'url source mais on l'a pas ici 'fichier' => $archive, 'dest' => $dest, 'tmp' => $tmp, 'extract' => true, 'root_extract' => true, # extraire a la racine de dest - ) + ] ); // le fichier .zip est la et bien forme - if (is_array($status) + if ( + is_array($status) 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); + 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); + spip_log("probleme lors du dezip de $archive", 'teleport' . _LOG_ERREUR); return false; } @@ -71,19 +73,20 @@ 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()) { +function teleporter_http_charger_zip($quoi = []) { 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 ( + [ + 'remove' => 'spip', + 'rename' => [], + 'edit' => [], + 'root_extract' => false, # extraire a la racine de dest ? + 'tmp' => sous_repertoire(_DIR_CACHE, 'chargeur') + ] as $opt => $def + ) { isset($quoi[$opt]) || ($quoi[$opt] = $def); } @@ -95,8 +98,10 @@ function teleporter_http_charger_zip($quoi = array()) { $zip = new Spip\Archives\SpipArchives($fichier); if (!$infos = $zip->informer()) { - spip_log('charger_decompresser erreur zip ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'], - "teleport" . _LOG_ERREUR); + spip_log( + 'charger_decompresser erreur zip ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'], + 'teleport' . _LOG_ERREUR + ); return $zip->message(); } @@ -108,7 +113,7 @@ function teleporter_http_charger_zip($quoi = array()) { // 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')); + $nom = preg_replace(',^h[0-9a-f]{8}-,i', '', basename($fichier, '.zip')); } $dir_export = $quoi['root_extract'] @@ -129,13 +134,15 @@ function teleporter_http_charger_zip($quoi = array()) { $target = sous_repertoire(dirname($target), basename($target)); if (!$zip->deballer($target)) { - spip_log('charger_decompresser erreur zip ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'], - "teleport" . _LOG_ERREUR); + spip_log( + 'charger_decompresser erreur zip ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'], + 'teleport' . _LOG_ERREUR + ); return $zip->message(); } - spip_log('charger_decompresser OK pour paquet: ' . $quoi['archive'], "teleport"); + spip_log('charger_decompresser OK pour paquet: ' . $quoi['archive'], 'teleport'); $size = 0; $list = []; @@ -150,19 +157,20 @@ function teleporter_http_charger_zip($quoi = array()) { // 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" ); - return array( + return [ 'files' => $list, 'size' => $size, 'compressed_size' => 0, 'dirname' => $dir_export, 'tmpname' => $tmpname, 'target' => $target, - ); + ]; } diff --git a/teleporter/svn.php b/teleporter/svn.php index 89ee902..2074c17 100644 --- a/teleporter/svn.php +++ b/teleporter/svn.php @@ -1,4 +1,5 @@ $source, 'revision' => $revision, 'dest' => $dest - ); + ]; } @@ -142,7 +143,7 @@ function teleporter_svn_read($dest, $options = array()) { function teleporter_svn_tester() { static $erreurs = null; if (is_null($erreurs)) { - exec(_SVN_COMMAND . " --version", $output, $erreurs); + exec(_SVN_COMMAND . ' --version', $output, $erreurs); } return !$erreurs;