qa-tools #4836

Merged
JamesRezo merged 2 commits from qa-tools into master 1 year ago
  1. 7
      .gitignore
  2. 15
      action/actionner.php
  3. 5
      action/actualiser_depot.php
  4. 18
      action/editer_depot.php
  5. 3
      action/supprimer_depot.php
  6. 19
      action/teleporter.php
  7. 209
      base/svp_declarer.php
  8. 7
      composer.json
  9. 25
      exec/admin_plugin.php
  10. 35
      formulaires/admin_plugin.php
  11. 18
      formulaires/ajouter_depot.php
  12. 22
      formulaires/charger_plugin.php
  13. 20
      formulaires/charger_plugin_archive.php
  14. 6
      formulaires/editer_depot.php
  15. 5
      formulaires/inc-admin_plugin_fonctions.php
  16. 4
      genie/svp_actualiser_depots.php
  17. 3
      genie/svp_taches_generales_cron.php
  18. 304
      inc/svp_actionner.php
  19. 188
      inc/svp_decider.php
  20. 242
      inc/svp_depoter_distant.php
  21. 218
      inc/svp_depoter_local.php
  22. 111
      inc/svp_outiller.php
  23. 76
      inc/svp_phraser.php
  24. 20
      inc/svp_plugin.php
  25. 38
      inc/svp_rechercher.php
  26. 6
      inc/where_compatible_spip.php
  27. 15
      phpcs.xml.dist
  28. 1352
      phpstan-baseline.neon
  29. 12
      phpstan.neon.dist
  30. 4
      plugins/fusion_paquet.php
  31. 13
      plugins/fusion_plugin.php
  32. 51
      plugins/preparer_sql_paquet.php
  33. 36
      plugins/preparer_sql_plugin.php
  34. 1
      prive/squelettes/inclure/voir_en_ligne_fonctions.php
  35. 1
      prive/squelettes/navigation/svp_admin_plugin_fonctions.php
  36. 61
      svp_administrations.php
  37. 46
      svp_fonctions.php
  38. 2
      svp_ieconfig.php
  39. 37
      svp_pipelines.php
  40. 58
      teleporter/git.php
  41. 42
      teleporter/http.php
  42. 58
      teleporter/http_deballe_tgz.php
  43. 58
      teleporter/http_deballe_zip.php
  44. 53
      teleporter/svn.php

7
.gitignore vendored

@ -0,0 +1,7 @@
/vendor/
/composer.phar
/composer.lock
/phpcs.xml
/phpstan.neon
/.php_cs.cache
/.php_cs.txt

15
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 = '<meta http-equiv="refresh" content="0;'.$url.'">';
$pres .="
$pres = '<meta http-equiv="refresh" content="0;' . $url . '">';
$pres .= "
<div class='derniere_action'>$texte</div>
<div class='progression'>" . round($progres*100) . "%</div>
<div class='bar'><div style='width:".round($progres*100)."%'></div></div>
<div class='progression'>" . round($progres * 100) . "%</div>
<div class='bar'><div style='width:" . round($progres * 100) . "%'></div></div>
";
$styles = "

5
action/actualiser_depot.php

@ -1,4 +1,5 @@
<?php
/**
* Gestion de l'action actualiser_depot
*
@ -36,13 +37,13 @@ function action_actualiser_depot_dist() {
svp_actualiser_depot($_id_depot);
}
// On consigne l'action
spip_log("ACTION ACTUALISER TOUS LES DEPOTS (manuel)", 'svp_actions.' . _LOG_INFO);
spip_log('ACTION ACTUALISER TOUS LES DEPOTS (manuel)', 'svp_actions.' . _LOG_INFO);
}
} else {
if ($id_depot = intval($arg)) {
svp_actualiser_depot($id_depot);
// On consigne l'action
spip_log("ACTION ACTUALISER DEPOT (manuel) : id_depot = " . $id_depot, 'svp_actions.' . _LOG_INFO);
spip_log('ACTION ACTUALISER DEPOT (manuel) : id_depot = ' . $id_depot, 'svp_actions.' . _LOG_INFO);
}
}
}

18
action/editer_depot.php

@ -17,7 +17,7 @@
* @license GPL
* @package SPIP\SVP\Actions
*/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -51,13 +51,17 @@ function action_editer_depot_dist() {
}
// On met a jour le depot avec les saisies
if (sql_updateq('spip_depots',
array(
if (
sql_updateq(
'spip_depots',
[
'titre' => _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];
}

3
action/supprimer_depot.php

@ -1,4 +1,5 @@
<?php
/**
* Gestion de l'action supprimer_depot
*
@ -30,6 +31,6 @@ function action_supprimer_depot_dist() {
if ($id_depot = intval($arg)) {
include_spip('inc/svp_depoter_distant');
svp_supprimer_depot($id_depot);
spip_log("ACTION SUPPRIMER DEPOT (manuel) : id_depot = " . $id_depot, 'svp_actions.' . _LOG_INFO);
spip_log('ACTION SUPPRIMER DEPOT (manuel) : id_depot = ' . $id_depot, 'svp_actions.' . _LOG_INFO);
}
}

19
action/teleporter.php

@ -1,4 +1,5 @@
<?php
/**
* Gestion de l'action teleporter
*
@ -24,7 +25,7 @@
* String : texte d'une erreur
* true si l'opération est correctement réalisée
*/
function action_teleporter_composant_dist($methode, $source, $dest, $options = array()) {
function action_teleporter_composant_dist($methode, $source, $dest, $options = []) {
# Si definie a '', le chargeur est interdit ; mais on n'aurait de toutes
# facons jamais pu venir ici avec toutes les securisations faites :^)
@ -34,16 +35,16 @@ function action_teleporter_composant_dist($methode, $source, $dest, $options = a
}
// verifier que la methode est connue
if (!$teleporter = charger_fonction($methode, "teleporter", true)) {
spip_log("Methode $methode inconnue pour teleporter $source vers $dest", "teleport" . _LOG_ERREUR);
if (!$teleporter = charger_fonction($methode, 'teleporter', true)) {
spip_log("Methode $methode inconnue pour teleporter $source vers $dest", 'teleport' . _LOG_ERREUR);
return _T('svp:erreur_teleporter_methode_inconue', array('methode' => $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 = "<p>"._T('plugin_erreur_droit1',array('dest'=>$dest))."</p>"
# . "<p>"._T('plugin_erreur_droit2').aider('install0')."</p>";
}
@ -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);

209
base/svp_declarer.php

@ -1,4 +1,5 @@
<?php
/**
* Déclarations relatives à la base de données
*
@ -24,36 +25,36 @@ function svp_declarer_tables_objets_sql($tables) {
include_spip('inc/config');
// Table des depots
$tables['spip_depots'] = array(
$tables['spip_depots'] = [
// Base de donnees
'table_objet' => '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;
}

7
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"
}
}

25
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;
}

35
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);

18
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;

22
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);

20
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;

6
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;

5
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]";
}

4
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);
}
}

3
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;
}

304
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');