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/afficher_diff/champ.php b/afficher_diff/champ.php index 2f2f819..aa4c311 100644 --- a/afficher_diff/champ.php +++ b/afficher_diff/champ.php @@ -35,7 +35,7 @@ function afficher_diff_champ_dist($champ, $old, $new, $format = 'diff') { return $f($champ, $old, $new, $format); } - $diff = new Diff(new DiffTexte); + $diff = new Diff(new DiffTexte()); $n = preparer_diff($new); $o = preparer_diff($old); diff --git a/afficher_diff/id_rubrique.php b/afficher_diff/id_rubrique.php index 383c965..0f0c4cc 100644 --- a/afficher_diff/id_rubrique.php +++ b/afficher_diff/id_rubrique.php @@ -35,10 +35,10 @@ function afficher_diff_id_rubrique_dist($champ, $old, $new, $format = 'diff') { } else { $out = _T( 'revisions:version_deplace_rubrique', - array( + [ 'from' => generer_info_entite($old, 'rubrique', 'titre'), 'to' => generer_info_entite($new, 'rubrique', 'titre') - ) + ] ); } diff --git a/afficher_diff/jointure.php b/afficher_diff/jointure.php index a99b04a..fd88f32 100644 --- a/afficher_diff/jointure.php +++ b/afficher_diff/jointure.php @@ -33,7 +33,7 @@ function afficher_diff_jointure_dist($champ, $old, $new, $format = 'diff') { $old = explode(',', $old); $new = explode(',', $new); - $liste = array(); + $liste = []; // les communs $intersection = array_intersect($new, $old); diff --git a/base/revisions.php b/base/revisions.php index 4140a20..b063169 100644 --- a/base/revisions.php +++ b/base/revisions.php @@ -65,7 +65,7 @@ function revisions_declarer_tables_objets_sql($tables) { */ function revisions_declarer_tables_auxiliaires($tables_auxiliaires) { - $spip_versions = array( + $spip_versions = [ 'id_version' => 'bigint(21) DEFAULT 0 NOT NULL', 'id_objet' => 'bigint(21) DEFAULT 0 NOT NULL', 'objet' => "VARCHAR (25) DEFAULT '' NOT NULL", @@ -74,22 +74,22 @@ function revisions_declarer_tables_auxiliaires($tables_auxiliaires) { 'titre_version' => "text DEFAULT '' NOT NULL", 'permanent' => "char(3) DEFAULT '' NOT NULL", 'champs' => "text DEFAULT '' NOT NULL" - ); + ]; - $spip_versions_key = array( + $spip_versions_key = [ 'PRIMARY KEY' => 'id_version, id_objet, objet', 'KEY id_version' => 'id_version', 'KEY id_objet' => 'id_objet', 'KEY objet' => 'objet' - ); - $spip_versions_join = array( + ]; + $spip_versions_join = [ 'id_version' => 'id_version', 'id_objet' => 'id_objet', 'objet' => 'objet', 'id_auteur' => 'id_auteur', - ); + ]; - $spip_versions_fragments = array( + $spip_versions_fragments = [ 'id_fragment' => "int unsigned DEFAULT '0' NOT NULL", 'version_min' => "int unsigned DEFAULT '0' NOT NULL", 'version_max' => "int unsigned DEFAULT '0' NOT NULL", @@ -97,23 +97,23 @@ function revisions_declarer_tables_auxiliaires($tables_auxiliaires) { 'objet' => "VARCHAR (25) DEFAULT '' NOT NULL", 'compress' => 'tinyint NOT NULL', 'fragment' => 'longblob' # ici c'est VRAIMENT un blob (on y stocke du gzip) - ); + ]; - $spip_versions_fragments_key = array( + $spip_versions_fragments_key = [ 'PRIMARY KEY' => 'id_objet, objet, id_fragment, version_min' - ); + ]; - $tables_auxiliaires['spip_versions'] = array( + $tables_auxiliaires['spip_versions'] = [ 'field' => &$spip_versions, 'key' => &$spip_versions_key, 'join' => &$spip_versions_join - ); + ]; - $tables_auxiliaires['spip_versions_fragments'] = array( + $tables_auxiliaires['spip_versions_fragments'] = [ 'field' => &$spip_versions_fragments, 'key' => &$spip_versions_fragments_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/formulaires/configurer_revisions_objets.php b/formulaires/configurer_revisions_objets.php index 3bca029..3ff64b7 100644 --- a/formulaires/configurer_revisions_objets.php +++ b/formulaires/configurer_revisions_objets.php @@ -16,11 +16,11 @@ if (!defined('_ECRIRE_INC_VERSION')) { function formulaires_configurer_revisions_objets_charger_dist() { if (!$objets = unserialize($GLOBALS['meta']['objets_versions'])) { - $objets = array(); + $objets = []; } - $valeurs = array( + $valeurs = [ 'objets_versions' => $objets, - ); + ]; return $valeurs; } @@ -31,11 +31,12 @@ function formulaires_configurer_revisions_objets_traiter_dist() { $tables = serialize(_request('objets_versions')); ecrire_meta('objets_versions', $tables); - return array('message_ok' => _T('config_info_enregistree')); + return ['message_ok' => _T('config_info_enregistree')]; } function test_objet_versionable($desc) { - if (!$desc['editable'] + if ( + !$desc['editable'] or !isset($desc['champs_versionnes']) or !count($desc['champs_versionnes']) ) { diff --git a/formulaires/reviser.php b/formulaires/reviser.php index d39207e..55e99c9 100644 --- a/formulaires/reviser.php +++ b/formulaires/reviser.php @@ -34,11 +34,11 @@ function check_version_diff($objet, $id_objet, $id_version, $id_diff, $last_vers // si pas de diff possible, on renvoi 0,0 if (!$last_version) { - return array(0, 0); + return [0, 0]; } if ($last_version == 1) { - return array(1, 0); + return [1, 0]; } $id_version = max($id_version, 2); @@ -66,12 +66,12 @@ function check_version_diff($objet, $id_objet, $id_version, $id_diff, $last_vers $id_diff = $id_version - 1; } - return array($id_version, $id_diff); + return [$id_version, $id_diff]; } function formulaires_reviser_charger_dist($objet, $id_objet, $id_version, $id_diff) { if (!$objets = unserialize($GLOBALS['meta']['objets_versions'])) { - $objets = array(); + $objets = []; } if (!in_array(table_objet_sql($objet), $objets)) { @@ -84,19 +84,19 @@ function formulaires_reviser_charger_dist($objet, $id_objet, $id_version, $id_di return false; } - $valeurs = array( + $valeurs = [ '_last_version' => $last_version, '_objet' => $objet, '_id_objet' => $id_objet, 'id_version' => $id_version, 'id_diff' => $id_diff, - ); + ]; return $valeurs; } function formulaires_reviser_verifier_dist($objet, $id_objet, $id_version, $id_diff) { - $erreurs = array(); + $erreurs = []; list($id_version, $id_diff) = check_version_diff($objet, $id_objet, _request('id_version'), _request('id_diff')); set_request('id_version', $id_version); set_request('id_diff', $id_diff); @@ -105,7 +105,7 @@ function formulaires_reviser_verifier_dist($objet, $id_objet, $id_version, $id_d } function formulaires_reviser_traiter_dist($objet, $id_objet, $id_version, $id_diff) { - $res = array('message_ok' => '', 'editable' => true); + $res = ['message_ok' => '', 'editable' => true]; $id_version = _request('id_version'); $id_diff = _request('id_diff'); diff --git a/genie/optimiser_revisions.php b/genie/optimiser_revisions.php index 60147f5..b31f34f 100644 --- a/genie/optimiser_revisions.php +++ b/genie/optimiser_revisions.php @@ -1,4 +1,5 @@ 0) { + if ($c > 0) { spip_log("CNIL: masquer IP de $c versions anciennes", 'revisions'); - sql_update('spip_versions', array('id_auteur' => 'MD5(id_auteur)'), $critere_cnil); + sql_update('spip_versions', ['id_auteur' => 'MD5(id_auteur)'], $critere_cnil); return $c; } } diff --git a/inc/diff.php b/inc/diff.php index 3786768..a4390d4 100644 --- a/inc/diff.php +++ b/inc/diff.php @@ -16,7 +16,7 @@ * @package SPIP\Revisions\Diff **/ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -37,10 +37,10 @@ if (!defined("_ECRIRE_INC_VERSION")) { function lcs_opt($s) { $n = count($s); if (!$n) { - return array(); + return []; } - $paths = array(); - $paths_ymin = array(); + $paths = []; + $paths_ymin = []; $max_len = 0; // Insertion des points @@ -60,7 +60,7 @@ function lcs_opt($s) { } if ($len == 0) { $paths_ymin[1] = $y; - $paths[1] = array($y => $c); + $paths[1] = [$y => $c]; } if ($len + 1 > $max_len) { $max_len = $len + 1; @@ -84,12 +84,12 @@ function lcs($s, $t) { $n = count($s); $p = count($t); if (!$n || !$p) { - return array(0 => array(), 1 => array()); + return [0 => [], 1 => []]; } - $paths = array(); - $paths_ymin = array(); + $paths = []; + $paths_ymin = []; $max_len = 0; - $s_pos = $t_pos = array(); + $s_pos = $t_pos = []; // Insertion des points foreach ($t as $y => $c) { @@ -122,18 +122,18 @@ function lcs($s, $t) { } } if (isset($paths[$max_len]) and $paths[$max_len]) { - $path = explode(" ", $paths[$max_len]); - $u = $v = array(); + $path = explode(' ', $paths[$max_len]); + $u = $v = []; foreach ($path as $p) { - list($x, $y) = explode(",", $p); + list($x, $y) = explode(',', $p); $u[$x] = $y; $v[$y] = $x; } - return array($u, $v); + return [$u, $v]; } - return array(0 => array(), 1 => array()); + return [0 => [], 1 => []]; } /** @@ -261,12 +261,12 @@ class DiffTexte { * Constructeur **/ public function __construct() { - $this->r = ""; + $this->r = ''; } // https://code.spip.net/@_diff public function _diff($p, $p_old) { - $diff = new Diff(new DiffPara); + $diff = new Diff(new DiffPara()); return $diff->comparer($p, $p_old); } @@ -290,20 +290,20 @@ class DiffTexte { // https://code.spip.net/@ajouter public function ajouter($p) { $p = trim($p); - $this->r .= "\n\n\n" . $p . ""; + $this->r .= "\n\n\n' . $p . ''; } // https://code.spip.net/@supprimer public function supprimer($p_old) { $p_old = trim($p_old); - $this->r .= "\n\n\n" . $p_old . ""; + $this->r .= "\n\n\n' . $p_old . ''; } // https://code.spip.net/@deplacer public function deplacer($p, $p_old) { - $this->r .= "\n\n\n"; + $this->r .= "\n\n\n'; $this->r .= trim($this->_diff($p, $p_old)); - $this->r .= ""; + $this->r .= ''; } // https://code.spip.net/@comparer @@ -327,12 +327,12 @@ class DiffPara { /** Constructeur */ public function __construct() { - $this->r = ""; + $this->r = ''; } // https://code.spip.net/@_diff public function _diff($p, $p_old) { - $diff = new Diff(new DiffPhrase); + $diff = new Diff(new DiffPhrase()); return $diff->comparer($p, $p_old); } @@ -344,7 +344,7 @@ class DiffPara { // https://code.spip.net/@segmenter public function segmenter($texte) { - $paras = array(); + $paras = []; $texte = trim($texte); while (preg_match('/[\.!\?\]]+\s*/u', $texte, $regs)) { $p = strpos($texte, $regs[0]) + strlen($regs[0]); @@ -360,18 +360,20 @@ class DiffPara { // https://code.spip.net/@ajouter public function ajouter($p) { - $this->r .= "" . $p . ""; + $this->r .= '' . $p . ''; } // https://code.spip.net/@supprimer public function supprimer($p_old) { - $this->r .= "" . $p_old . ""; + $this->r .= '' . $p_old . ''; } // https://code.spip.net/@deplacer public function deplacer($p, $p_old) { - $this->r .= "" . $this->_diff($p, - $p_old) . ""; + $this->r .= '' . $this->_diff( + $p, + $p_old + ) . ''; } // https://code.spip.net/@comparer @@ -395,7 +397,7 @@ class DiffPhrase { /** Constructeur */ public function __construct() { - $this->r = ""; + $this->r = ''; } // https://code.spip.net/@fuzzy @@ -405,7 +407,7 @@ class DiffPhrase { // https://code.spip.net/@segmenter public function segmenter($texte) { - $paras = array(); + $paras = []; if (test_pcre_unicode()) { $punct = '([[:punct:]]|' . plage_punct_unicode() . ')'; $mode = 'u'; @@ -419,7 +421,7 @@ class DiffPhrase { $p = strpos($texte, $regs[0]); $l = strlen($regs[0]); $punct = $regs[1] ? $regs[1] : $regs[6]; - $milieu = ""; + $milieu = ''; if ($punct) { // notes if ($punct == '[[') { @@ -468,12 +470,12 @@ class DiffPhrase { // https://code.spip.net/@ajouter public function ajouter($p) { - $this->r .= "" . $p . " "; + $this->r .= '' . $p . ' '; } // https://code.spip.net/@supprimer public function supprimer($p_old) { - $this->r .= "" . $p_old . " "; + $this->r .= '' . $p_old . ' '; } // https://code.spip.net/@comparer diff --git a/inc/revisions.php b/inc/revisions.php index 3f66c7a..ef07056 100644 --- a/inc/revisions.php +++ b/inc/revisions.php @@ -15,7 +15,7 @@ * * @package SPIP\Revisions\Fonctions **/ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -31,9 +31,9 @@ define('_INTERVALLE_REVISIONS', 600); * @param array $paras Tableau de fragments déjà là * @return string[] Tableau de fragments (paragraphes) **/ -function separer_paras($texte, $paras = array()) { +function separer_paras($texte, $paras = []) { if (!$paras) { - $paras = array(); + $paras = []; } while (preg_match("/(\r\n?){2,}|\n{2,}/", $texte, $regs)) { $p = strpos($texte, $regs[0]) + strlen($regs[0]); @@ -69,7 +69,7 @@ function replace_fragment($id_objet, $objet, $version_min, $version_max, $id_fra */ // Attention a echapper $fragment, binaire potentiellement gz - return array( + return [ 'id_objet' => intval($id_objet), 'objet' => $objet, 'id_fragment' => intval($id_fragment), @@ -77,7 +77,7 @@ function replace_fragment($id_objet, $objet, $version_min, $version_max, $id_fra 'version_max' => intval($version_max), 'compress' => $compress, 'fragment' => $fragment - ); + ]; } // https://code.spip.net/@envoi_replace_fragments @@ -92,9 +92,13 @@ function envoi_replace_fragments($replaces) { // https://code.spip.net/@envoi_delete_fragments function envoi_delete_fragments($id_objet, $objet, $deletes) { if (count($deletes)) { - sql_delete("spip_versions_fragments", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND ((" . join(") OR (", - $deletes) . "))"); + sql_delete( + 'spip_versions_fragments', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . ' AND ((' . join( + ') OR (', + $deletes + ) . '))' + ); } } @@ -106,13 +110,18 @@ function envoi_delete_fragments($id_objet, $objet, $deletes) { function ajouter_fragments($id_objet, $objet, $id_version, $fragments) { global $agregation_versions; - $replaces = array(); + $replaces = []; foreach ($fragments as $id_fragment => $texte) { $nouveau = true; // Recuperer la version la plus recente - $row = sql_fetsel("compress, fragment, version_min, version_max", "spip_versions_fragments", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_fragment=$id_fragment AND version_min<=$id_version", - "", "version_min DESC", "1"); + $row = sql_fetsel( + 'compress, fragment, version_min, version_max', + 'spip_versions_fragments', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND id_fragment=$id_fragment AND version_min<=$id_version", + '', + 'version_min DESC', + '1' + ); if ($row) { $fragment = $row['fragment']; @@ -129,7 +138,7 @@ function ajouter_fragments($id_objet, $objet, $id_version, $fragments) { } } if ($nouveau) { - $fragment = array($id_version => $texte); + $fragment = [$id_version => $texte]; $version_min = $id_version; } else { // Ne pas dupliquer les fragments non modifies @@ -160,16 +169,21 @@ function ajouter_fragments($id_objet, $objet, $id_version, $fragments) { function supprimer_fragments($id_objet, $objet, $version_debut, $version_fin) { global $agregation_versions; - $replaces = array(); - $deletes = array(); + $replaces = []; + $deletes = []; // D'abord, vider les fragments inutiles - sql_delete("spip_versions_fragments", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND version_min>=$version_debut AND version_max<=$version_fin"); + sql_delete( + 'spip_versions_fragments', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND version_min>=$version_debut AND version_max<=$version_fin" + ); // Fragments chevauchant l'ensemble de l'intervalle, s'ils existent - $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND version_min<$version_debut AND version_max>$version_fin"); + $result = sql_select( + 'id_fragment, compress, fragment, version_min, version_max', + 'spip_versions_fragments', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND version_min<$version_debut AND version_max>$version_fin" + ); while ($row = sql_fetch($result)) { $id_fragment = $row['id_fragment']; @@ -188,15 +202,24 @@ function supprimer_fragments($id_objet, $objet, $version_debut, $version_fin) { } } - $replaces[] = replace_fragment($id_objet, $objet, - $row['version_min'], $row['version_max'], $id_fragment, $fragment); + $replaces[] = replace_fragment( + $id_objet, + $objet, + $row['version_min'], + $row['version_max'], + $id_fragment, + $fragment + ); } // Fragments chevauchant le debut de l'intervalle, s'ils existent - $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND version_min<$version_debut AND version_max>=$version_debut AND version_max<=$version_fin"); + $result = sql_select( + 'id_fragment, compress, fragment, version_min, version_max', + 'spip_versions_fragments', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND version_min<$version_debut AND version_max>=$version_debut AND version_max<=$version_fin" + ); - $deb_fragment = array(); + $deb_fragment = []; while ($row = sql_fetch($result)) { $id_fragment = $row['id_fragment']; $fragment = $row['fragment']; @@ -220,8 +243,11 @@ function supprimer_fragments($id_objet, $objet, $version_debut, $version_fin) { } // Fragments chevauchant la fin de l'intervalle, s'ils existent - $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND version_max>$version_fin AND version_min>=$version_debut AND version_min<=$version_fin"); + $result = sql_select( + 'id_fragment, compress, fragment, version_min, version_max', + 'spip_versions_fragments', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND version_max>$version_fin AND version_min>=$version_debut AND version_min<=$version_fin" + ); while ($row = sql_fetch($result)) { $id_fragment = $row['id_fragment']; @@ -252,9 +278,14 @@ function supprimer_fragments($id_objet, $objet, $version_debut, $version_fin) { $fragment = $deb_fragment[$id_fragment] + $fragment; $version_min = $deb_version_min[$id_fragment]; } else { - $replaces[] = replace_fragment($id_objet, $objet, - $deb_version_min[$id_fragment], $deb_version_max[$id_fragment], - $id_fragment, $deb_fragment[$id_fragment]); + $replaces[] = replace_fragment( + $id_objet, + $objet, + $deb_version_min[$id_fragment], + $deb_version_max[$id_fragment], + $id_fragment, + $deb_fragment[$id_fragment] + ); } unset($deb_fragment[$id_fragment]); } @@ -268,9 +299,14 @@ function supprimer_fragments($id_objet, $objet, $version_debut, $version_fin) { // Ajouter fragments restants if (is_array($deb_fragment) && count($deb_fragment) > 0) { foreach ($deb_fragment as $id_fragment => $fragment) { - $replaces[] = replace_fragment($id_objet, $objet, - $deb_version_min[$id_fragment], $deb_version_max[$id_fragment], - $id_fragment, $deb_fragment[$id_fragment]); + $replaces[] = replace_fragment( + $id_objet, + $objet, + $deb_version_min[$id_fragment], + $deb_version_max[$id_fragment], + $id_fragment, + $deb_fragment[$id_fragment] + ); } } @@ -288,17 +324,18 @@ function supprimer_fragments($id_objet, $objet, $version_debut, $version_fin) { * @return array Couples id_fragment => texte */ function recuperer_fragments($id_objet, $objet, $id_version) { - $fragments = array(); + $fragments = []; if ($id_version == 0) { - return array(); + return []; } $result = sql_select( - "id_fragment, version_min, version_max, compress, fragment", - "spip_versions_fragments", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) - . " AND version_min<=$id_version AND version_max>=$id_version"); + 'id_fragment, version_min, version_max, compress, fragment', + 'spip_versions_fragments', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) + . " AND version_min<=$id_version AND version_max>=$id_version" + ); while ($row = sql_fetch($result)) { $id_fragment = $row['id_fragment']; @@ -308,7 +345,7 @@ function recuperer_fragments($id_objet, $objet, $id_version) { if ($row['compress'] > 0) { $fragment_ = @gzuncompress($fragment); if (strlen($fragment) && $fragment_ === false) { - $fragment = serialize(array($row['version_max'] => "[" . _T('forum_titre_erreur') . $id_fragment . "]")); + $fragment = serialize([$row['version_max'] => '[' . _T('forum_titre_erreur') . $id_fragment . ']']); } else { $fragment = $fragment_; } @@ -316,19 +353,19 @@ function recuperer_fragments($id_objet, $objet, $id_version) { // tenter dedésérialiser le fragment, sinon écrire une erreur $fragment_ = unserialize($fragment); if (strlen($fragment) && $fragment_ === false) { - $fragment = array($row['version_max'] => "[" . _T('forum_titre_erreur') . $id_fragment . "]"); + $fragment = [$row['version_max'] => '[' . _T('forum_titre_erreur') . $id_fragment . ']']; } else { $fragment = $fragment_; } // on retrouve le fragment le plus près de notre version for ($i = $id_version; $i >= $version_min; $i--) { if (isset($fragment[$i])) { - ## hack destine a sauver les archives des sites iso-8859-1 ## convertis en utf-8 (les archives ne sont pas converties ## mais ce code va les nettoyer ; pour les autres charsets ## la situation n'est pas meilleure ni pire qu'avant) - if ($GLOBALS['meta']['charset'] == 'utf-8' + if ( + $GLOBALS['meta']['charset'] == 'utf-8' and include_spip('inc/charsets') and !is_utf8($fragment[$i]) ) { @@ -352,22 +389,22 @@ function recuperer_fragments($id_objet, $objet, $id_version) { // // https://code.spip.net/@apparier_paras function apparier_paras($src, $dest, $flou = true) { - $src_dest = array(); - $dest_src = array(); + $src_dest = []; + $dest_src = []; - $t1 = $t2 = array(); + $t1 = $t2 = []; - $md1 = $md2 = array(); - $gz_min1 = $gz_min2 = array(); - $gz_trans1 = $gz_trans2 = array(); - $l1 = $l2 = array(); + $md1 = $md2 = []; + $gz_min1 = $gz_min2 = []; + $gz_trans1 = $gz_trans2 = []; + $l1 = $l2 = []; // Nettoyage de la ponctuation pour faciliter l'appariement foreach ($src as $key => $val) { - $t1[$key] = strval(preg_replace("/[[:punct:][:space:]]+/", " ", $val)); + $t1[$key] = strval(preg_replace('/[[:punct:][:space:]]+/', ' ', $val)); } foreach ($dest as $key => $val) { - $t2[$key] = strval(preg_replace("/[[:punct:][:space:]]+/", " ", $val)); + $t2[$key] = strval(preg_replace('/[[:punct:][:space:]]+/', ' ', $val)); } // Premiere passe : chercher les correspondance exactes @@ -424,7 +461,7 @@ function apparier_paras($src, $dest, $flou = true) { } // Retourner les mappings - return array($src_dest, $dest_src); + return [$src_dest, $dest_src]; } /** @@ -441,7 +478,7 @@ function apparier_paras($src, $dest, $flou = true) { **/ function recuperer_version_complete($id_objet, $objet, $id_version) { if (!$id_version or !$id_objet or !$objet) { - return array(); + return []; } include_spip('inc/suivi_versions'); @@ -470,13 +507,18 @@ function recuperer_version_complete($id_objet, $objet, $id_version) { */ function recuperer_version($id_objet, $objet, $id_version) { - $champs = sql_getfetsel("champs", "spip_versions", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version=" . intval($id_version)); + $champs = sql_getfetsel( + 'champs', + 'spip_versions', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . ' AND id_version=' . intval($id_version) + ); if (!$champs or !is_array($champs = unserialize($champs))) { - return array(); + return []; } else { - return reconstuire_version($champs, - recuperer_fragments($id_objet, $objet, $id_version)); + return reconstuire_version( + $champs, + recuperer_fragments($id_objet, $objet, $id_version) + ); } } @@ -492,7 +534,7 @@ function recuperer_version($id_objet, $objet, $id_version) { * @param array $res Couples (champ => texte) déjà connus * @return array Couples (champ => texte) */ -function reconstuire_version($champs, $fragments, $res = array()) { +function reconstuire_version($champs, $fragments, $res = []) { static $msg; if (!$msg) { @@ -516,8 +558,10 @@ function reconstuire_version($champs, $fragments, $res = array()) { // https://code.spip.net/@supprimer_versions function supprimer_versions($id_objet, $objet, $version_min, $version_max) { - sql_delete("spip_versions", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version>=$version_min AND id_version<=$version_max"); + sql_delete( + 'spip_versions', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND id_version>=$version_min AND id_version<=$version_max" + ); supprimer_fragments($id_objet, $objet, $version_min, $version_max); } @@ -536,8 +580,8 @@ function supprimer_versions($id_objet, $objet, $version_min, $version_max) { * @return int * id_version : identifiant de la version **/ -function ajouter_version($id_objet, $objet, $champs, $titre_version = "", $id_auteur = null) { - $paras = $paras_old = $paras_champ = $fragments = array(); +function ajouter_version($id_objet, $objet, $champs, $titre_version = '', $id_auteur = null) { + $paras = $paras_old = $paras_champ = $fragments = []; // Attention a une edition anonyme (type wiki): id_auteur n'est pas // definie, on enregistre alors le numero IP @@ -549,13 +593,12 @@ function ajouter_version($id_objet, $objet, $champs, $titre_version = "", $id_au $permanent = empty($titre_version) ? 'non' : ''; // Detruire les tentatives d'archivages non abouties en 1 heure - sql_delete('spip_versions', array( - "id_objet=" . intval($id_objet), - "objet=" . sql_quote($objet), - "id_version <= 0", - "date < DATE_SUB(" . sql_quote(date('Y-m-d H:i:s')) . ", INTERVAL " . _INTERVALLE_REVISIONS . " SECOND)" - ) - ); + sql_delete('spip_versions', [ + 'id_objet=' . intval($id_objet), + 'objet=' . sql_quote($objet), + 'id_version <= 0', + 'date < DATE_SUB(' . sql_quote(date('Y-m-d H:i:s')) . ', INTERVAL ' . _INTERVALLE_REVISIONS . ' SECOND)' + ]); // Signaler qu'on opere en mettant un numero de version negatif // distinctif (pour eviter la violation d'unicite) @@ -565,14 +608,14 @@ function ajouter_version($id_objet, $objet, $champs, $titre_version = "", $id_au $date = ($sec . substr($ms, 1, 4)) - 20; $datediff = ($sec - mktime(0, 0, 0, 9, 1, 2007)) * 1000000 + substr($ms, 2, strlen($ms) - 4); - $valeurs = array( + $valeurs = [ 'id_objet' => $id_objet, 'objet' => $objet, 'id_version' => (0 - $datediff), 'date' => date('Y-m-d H:i:s'), 'id_auteur' => $str_auteur, // varchar ici! 'titre_version' => $date - ); + ]; sql_insertq('spip_versions', $valeurs); // Eviter les validations entremelees en s'endormant s'il existe @@ -587,30 +630,49 @@ function ajouter_version($id_objet, $objet, $champs, $titre_version = "", $id_au // 4. enregistrer une autre modif dans les 15 secondes # sleep(15); $delai = $sec - 10; - while (sql_countsel('spip_versions', - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version < 0 AND 0.0+titre_version < $date AND titre_version<>" . sql_quote($date, - '', 'text') . " AND 0.0+titre_version > $delai")) { + while ( + sql_countsel( + 'spip_versions', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND id_version < 0 AND 0.0+titre_version < $date AND titre_version<>" . sql_quote( + $date, + '', + 'text' + ) . " AND 0.0+titre_version > $delai" + ) + ) { spip_log("version $objet $id_objet :insertion en cours avant $date ($delai)", 'revisions'); sleep(1); $delai++; } # sleep(15); spip_log("sortie $sec $delai"); // Determiner le numero du prochain fragment - $next = sql_fetsel("id_fragment", "spip_versions_fragments", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet), "", "id_fragment DESC", "1"); + $next = sql_fetsel( + 'id_fragment', + 'spip_versions_fragments', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet), + '', + 'id_fragment DESC', + '1' + ); $onlylock = ''; // Examiner la derniere version - $row = sql_fetsel("id_version, champs, id_auteur, date, permanent", "spip_versions", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version > 0", '', "id_version DESC", - "1"); // le champ id_auteur est un varchar dans cette table + $row = sql_fetsel( + 'id_version, champs, id_auteur, date, permanent', + 'spip_versions', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . ' AND id_version > 0', + '', + 'id_version DESC', + '1' + ); // le champ id_auteur est un varchar dans cette table if ($row) { $id_version = $row['id_version']; $paras_old = recuperer_fragments($id_objet, $objet, $id_version); $champs_old = $row['champs']; - if ($row['id_auteur'] != $str_auteur + if ( + $row['id_auteur'] != $str_auteur or $row['permanent'] != 'non' or strtotime($row['date']) < (time() - _INTERVALLE_REVISIONS) ) { @@ -632,9 +694,9 @@ function ajouter_version($id_objet, $objet, $champs, $titre_version = "", $id_au $next = !$next ? 1 : ($next['id_fragment'] + 1); // Generer les nouveaux fragments - $codes = array(); + $codes = []; foreach ($champs as $nom => $texte) { - $codes[$nom] = array(); + $codes[$nom] = []; $paras = separer_paras($texte, $paras); $paras_champ[$nom] = count($paras); } @@ -649,7 +711,7 @@ function ajouter_version($id_objet, $objet, $champs, $titre_version = "", $id_au // eviter une notice PHP au tout debut de la boucle // on ajoute ''=>0 en debut de tableau. - $paras_champ = array($nom => 0) + $paras_champ; + $paras_champ = [$nom => 0] + $paras_champ; for ($i = 0; $i < $n; $i++) { while ($i >= $paras_champ[$nom]) { @@ -676,23 +738,28 @@ function ajouter_version($id_objet, $objet, $champs, $titre_version = "", $id_au // sinon la mise a jour efface en fait le verrou. if (!$onlylock) { - sql_updateq('spip_versions', array( + sql_updateq( + 'spip_versions', + [ 'id_version' => $id_version, 'date' => date('Y-m-d H:i:s'), 'champs' => serialize($codes), 'permanent' => $permanent, 'titre_version' => $titre_version - ), - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version < 0 AND titre_version='$date'"); + ], + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND id_version < 0 AND titre_version='$date'" + ); } else { - sql_updateq('spip_versions', array( + sql_updateq('spip_versions', [ 'date' => date('Y-m-d H:i:s'), 'champs' => serialize($codes), 'permanent' => $permanent, 'titre_version' => $titre_version - ), "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version=$id_version"); - sql_delete("spip_versions", - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version < 0 AND titre_version ='$date'"); + ], 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND id_version=$id_version"); + sql_delete( + 'spip_versions', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND id_version < 0 AND titre_version ='$date'" + ); } spip_log($onlylock . "memorise la version $id_version de l'objet $objet $id_objet $titre_version", 'revisions'); @@ -704,7 +771,7 @@ function ajouter_version($id_objet, $objet, $champs, $titre_version = "", $id_au // https://code.spip.net/@propre_diff function propre_diff($texte) { - $span_diff = array(); + $span_diff = []; if (preg_match_all(',<(/)?(span|div) (class|rem)="diff-[^>]*>,', $texte, $regs, PREG_SET_ORDER)) { $regs = array_slice($regs, 0, 500); #limiter la casse s'il y en a trop foreach ($regs as $c => $reg) { @@ -714,13 +781,19 @@ function propre_diff($texte) { // [ ... -> lien ] // < tag > - $texte = preg_replace(',<([^>]*?@@@SPIP_DIFF[0-9]+@@@),', - '<\1', $texte); + $texte = preg_replace( + ',<([^>]*?@@@SPIP_DIFF[0-9]+@@@),', + '<\1', + $texte + ); # attention ici astuce seulement deux @@ finals car on doit eviter # deux patterns a suivre, afin de pouvoir prendre [ mais eviter [[ - $texte = preg_replace(',(^|[^[])[[]([^[\]]*@@@SPIP_DIFF[0-9]+@@),', - '\1[\2', $texte); + $texte = preg_replace( + ',(^|[^[])[[]([^[\]]*@@@SPIP_DIFF[0-9]+@@),', + '\1[\2', + $texte + ); // desactiver TeX & toujours-paragrapher $tex = $GLOBALS['traiter_math']; @@ -777,20 +850,21 @@ function propre_diff($texte) { * Liste des champs versionnés */ function liste_champs_versionnes($table) { - $liste_objets_versionnees = is_array(unserialize($GLOBALS['meta']['objets_versions'])) ? unserialize($GLOBALS['meta']['objets_versions']) : array(); + $liste_objets_versionnees = is_array(unserialize($GLOBALS['meta']['objets_versions'])) ? unserialize($GLOBALS['meta']['objets_versions']) : []; if (!in_array($table, $liste_objets_versionnees)) { - return array(); + return []; } include_spip('base/objets'); - if ($infos = lister_tables_objets_sql($table) + if ( + $infos = lister_tables_objets_sql($table) and isset($infos['champs_versionnes']) ) { return $infos['champs_versionnes']; } - return array(); + return []; } /** @@ -805,21 +879,21 @@ function liste_champs_versionnes($table) { function recuperer_valeur_champ_jointure($objet, $id_objet, $jointure) { $objet_joint = objet_type($jointure); include_spip('action/editer_liens'); - $v = array(); + $v = []; if (objet_associable($objet_joint)) { - $liens = objet_trouver_liens(array($objet_joint => '*'), array($objet => $id_objet)); + $liens = objet_trouver_liens([$objet_joint => '*'], [$objet => $id_objet]); foreach ($liens as $l) { $v[] = $l[$objet_joint]; } } elseif (objet_associable($objet)) { - $liens = objet_trouver_liens(array($objet => $id_objet), array($objet_joint => '*')); + $liens = objet_trouver_liens([$objet => $id_objet], [$objet_joint => '*']); foreach ($liens as $l) { $v[] = $l[$objet]; } } sort($v); - return implode(",", $v); + return implode(',', $v); } /** @@ -848,14 +922,21 @@ function verifier_premiere_revision($table, $objet, $id_objet, $champs = null, $ return false; } - if (!$id_version = sql_getfetsel('id_version', 'spip_versions', - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet), '', 'id_version DESC', '0,1') + if ( + !$id_version = sql_getfetsel( + 'id_version', + 'spip_versions', + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet), + '', + 'id_version DESC', + '0,1' + ) ) { // recuperer toutes les valeurs actuelles des champs // pour l'objet - $originaux = sql_fetsel("*", $table, "$id_table_objet=" . intval($id_objet)); + $originaux = sql_fetsel('*', $table, "$id_table_objet=" . intval($id_objet)); $premiere = false; - $champs_originaux = array(); + $champs_originaux = []; foreach ($champs as $v) { if (isset($originaux[$v])) { @@ -876,26 +957,36 @@ function verifier_premiere_revision($table, $objet, $id_objet, $champs = null, $ // "trouver" une date raisonnable pour la version initiale - $date_modif = ""; - foreach (array('date_modif', 'maj') as $d) { + $date_modif = ''; + foreach (['date_modif', 'maj'] as $d) { if (!$date_modif and isset($originaux[$d]) and $t = strtotime($originaux[$d])) { - $date_modif = date("Y-m-d H:i:s", $t - 20); + $date_modif = date('Y-m-d H:i:s', $t - 20); } } - if (!$date_modif + if ( + !$date_modif and isset($desc['date']) and isset($originaux[$desc['date']]) ) { $date_modif = $originaux[$desc['date']]; } elseif (!$date_modif) { - $date_modif = date("Y-m-d H:i:s", time() - 20); + $date_modif = date('Y-m-d H:i:s', time() - 20); } - if ($id_version = ajouter_version($id_objet, $objet, $champs_originaux, _T('revisions:version_initiale'), - $id_auteur) + if ( + $id_version = ajouter_version( + $id_objet, + $objet, + $champs_originaux, + _T('revisions:version_initiale'), + $id_auteur + ) ) { - sql_updateq('spip_versions', array('date' => $date_modif), - "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version=$id_version"); + sql_updateq( + 'spip_versions', + ['date' => $date_modif], + 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet) . " AND id_version=$id_version" + ); } } } diff --git a/inc/revisions_autoriser.php b/inc/revisions_autoriser.php index 6f9dfa8..096dfc8 100644 --- a/inc/revisions_autoriser.php +++ b/inc/revisions_autoriser.php @@ -10,7 +10,6 @@ * Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ - /** * Autorisations du plugin révisions * @@ -26,7 +25,8 @@ if (!defined('_ECRIRE_INC_VERSION')) { * * @pipeline autoriser */ -function revisions_autoriser() { } +function revisions_autoriser() { +} /** * Autorisation de voir les revisions ? @@ -52,7 +52,7 @@ function autoriser_voirrevisions_dist($faire, $type, $id, $qui, $opt) { return false; } - if (!$row = sql_fetsel("*", $table, "$id_table_objet=" . intval($id))) { + if (!$row = sql_fetsel('*', $table, "$id_table_objet=" . intval($id))) { return false; } diff --git a/inc/suivi_versions.php b/inc/suivi_versions.php index 3c9b10d..d81d9b6 100644 --- a/inc/suivi_versions.php +++ b/inc/suivi_versions.php @@ -15,7 +15,7 @@ * * @package SPIP\Revisions\Versions **/ -if (!defined("_ECRIRE_INC_VERSION")) { +if (!defined('_ECRIRE_INC_VERSION')) { return; } @@ -56,7 +56,7 @@ function revisions_diff($id_objet, $objet, $id_version, $court = false) { } } - return $court ? _T('taille_octets', array('taille' => $nb)) : $rev; + return $court ? _T('taille_octets', ['taille' => $nb]) : $rev; } /** @@ -82,7 +82,7 @@ function retrouver_champ_version_objet($objet, $id_objet, $id_version, $champ, & // Remonter dans le temps pour trouver le champ en question // pour la version demandee $id_ref = $id_version - 1; - $prev = array(); + $prev = []; while (!isset($prev[$champ]) and $id_ref > 0) { $prev = recuperer_version($id_objet, $objet, $id_ref--); } @@ -126,13 +126,17 @@ function revision_comparee($id_objet, $objet, $id_version, $format = 'diff', $id // chercher le numero de la version precedente if (!$id_diff) { - $id_diff = sql_getfetsel("id_version", "spip_versions", - "id_objet=" . intval($id_objet) . " AND id_version < " . intval($id_version) . " AND objet=" . sql_quote($objet), - "", "id_version DESC", "1"); + $id_diff = sql_getfetsel( + 'id_version', + 'spip_versions', + 'id_objet=' . intval($id_objet) . ' AND id_version < ' . intval($id_version) . ' AND objet=' . sql_quote($objet), + '', + 'id_version DESC', + '1' + ); } if ($id_version && $id_diff) { - // si l'ordre est inverse, on remet a l'endroit if ($id_diff > $id_version) { $t = $id_version; @@ -143,7 +147,7 @@ function revision_comparee($id_objet, $objet, $id_version, $format = 'diff', $id $old = recuperer_version($id_objet, $objet, $id_diff); $new = recuperer_version($id_objet, $objet, $id_version); - $textes = array(); + $textes = []; // Mode "diff": on ne s'interesse qu'aux champs presents dans $new // Mode "complet": on veut afficher tous les champs @@ -180,7 +184,8 @@ function revision_comparee($id_objet, $objet, $id_version, $format = 'diff', $id // si on a les deux, le diff nous interesse, plus ou moins court if (isset($new[$champ]) and isset($old[$champ])) { - if (!$afficher_diff = charger_fonction($objet . "_" . $champ, 'afficher_diff', true) + if ( + !$afficher_diff = charger_fonction($objet . '_' . $champ, 'afficher_diff', true) and !$afficher_diff = charger_fonction($champ, 'afficher_diff', true) ) { $afficher_diff = (strncmp($champ, 'jointure_', 9) == 0 ? $afficher_diff_jointure : $afficher_diff_champ); diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 0000000..0087962 --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,14 @@ + + + . + vendor/* + lang/* + + + + + + + + + diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..d6cc4cc --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,597 @@ +parameters: + ignoreErrors: + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: afficher_diff/champ.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: afficher_diff/champ.php + + - + message: "#^Function _T not found\\.$#" + count: 2 + path: afficher_diff/id_rubrique.php + + - + message: "#^Function generer_info_entite not found\\.$#" + count: 3 + path: afficher_diff/id_rubrique.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: afficher_diff/id_rubrique.php + + - + message: "#^Function _T not found\\.$#" + count: 3 + path: afficher_diff/jointure.php + + - + message: "#^Function generer_info_entite not found\\.$#" + count: 3 + path: afficher_diff/jointure.php + + - + message: "#^Function generer_url_entite not found\\.$#" + count: 3 + path: afficher_diff/jointure.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: afficher_diff/jointure.php + + - + message: "#^Function objet_info not found\\.$#" + count: 3 + path: afficher_diff/jointure.php + + - + message: "#^Function objet_type not found\\.$#" + count: 1 + path: afficher_diff/jointure.php + + - + message: "#^Function _T not found\\.$#" + count: 1 + path: formulaires/configurer_revisions_objets.php + + - + message: "#^Function _request not found\\.$#" + count: 1 + path: formulaires/configurer_revisions_objets.php + + - + message: "#^Function ecrire_meta not found\\.$#" + count: 1 + path: formulaires/configurer_revisions_objets.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: formulaires/configurer_revisions_objets.php + + - + message: "#^Function _request not found\\.$#" + count: 4 + path: formulaires/reviser.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: formulaires/reviser.php + + - + message: "#^Function parametre_url not found\\.$#" + count: 2 + path: formulaires/reviser.php + + - + message: "#^Function self not found\\.$#" + count: 1 + path: formulaires/reviser.php + + - + message: "#^Function set_request not found\\.$#" + count: 2 + path: formulaires/reviser.php + + - + message: "#^Function sql_getfetsel not found\\.$#" + count: 1 + path: formulaires/reviser.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 1 + path: formulaires/reviser.php + + - + message: "#^Function table_objet_sql not found\\.$#" + count: 1 + path: formulaires/reviser.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: genie/optimiser_revisions.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: genie/optimiser_revisions.php + + - + message: "#^Function id_table_objet not found\\.$#" + count: 1 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function spip_log not found\\.$#" + count: 4 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function sql_countsel not found\\.$#" + count: 1 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function sql_delete not found\\.$#" + count: 1 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function sql_fetch not found\\.$#" + count: 2 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function sql_free not found\\.$#" + count: 1 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function sql_in not found\\.$#" + count: 1 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function sql_optimize not found\\.$#" + count: 1 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 3 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function sql_select not found\\.$#" + count: 2 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function sql_update not found\\.$#" + count: 1 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Function table_objet_sql not found\\.$#" + count: 1 + path: genie/revisions_optimiser_revisions.php + + - + message: "#^Call to function unset\\(\\) contains undefined variable \\$i_old\\.$#" + count: 1 + path: inc/diff.php + + - + message: "#^Function _T not found\\.$#" + count: 8 + path: inc/diff.php + + - + message: "#^Function charset2unicode not found\\.$#" + count: 2 + path: inc/diff.php + + - + message: "#^Function html2unicode not found\\.$#" + count: 2 + path: inc/diff.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: inc/diff.php + + - + message: "#^Function plage_punct_unicode not found\\.$#" + count: 2 + path: inc/diff.php + + - + message: "#^Function test_pcre_unicode not found\\.$#" + count: 1 + path: inc/diff.php + + - + message: "#^Function unicode_to_utf_8 not found\\.$#" + count: 2 + path: inc/diff.php + + - + message: "#^Function _T not found\\.$#" + count: 4 + path: inc/revisions.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function id_table_objet not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function importer_charset not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function include_spip not found\\.$#" + count: 4 + path: inc/revisions.php + + - + message: "#^Function interdire_scripts not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function is_utf8 not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function lister_tables_objets_sql not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function objet_associable not found\\.$#" + count: 2 + path: inc/revisions.php + + - + message: "#^Function objet_trouver_liens not found\\.$#" + count: 2 + path: inc/revisions.php + + - + message: "#^Function objet_type not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function propre not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function spip_log not found\\.$#" + count: 5 + path: inc/revisions.php + + - + message: "#^Function sql_countsel not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function sql_delete not found\\.$#" + count: 5 + path: inc/revisions.php + + - + message: "#^Function sql_fetch not found\\.$#" + count: 4 + path: inc/revisions.php + + - + message: "#^Function sql_fetsel not found\\.$#" + count: 4 + path: inc/revisions.php + + - + message: "#^Function sql_getfetsel not found\\.$#" + count: 2 + path: inc/revisions.php + + - + message: "#^Function sql_insertq not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 20 + path: inc/revisions.php + + - + message: "#^Function sql_replace not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function sql_select not found\\.$#" + count: 4 + path: inc/revisions.php + + - + message: "#^Function sql_updateq not found\\.$#" + count: 3 + path: inc/revisions.php + + - + message: "#^Function table_objet_sql not found\\.$#" + count: 1 + path: inc/revisions.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: inc/revisions_autoriser.php + + - + message: "#^Function id_table_objet not found\\.$#" + count: 1 + path: inc/revisions_autoriser.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: inc/revisions_autoriser.php + + - + message: "#^Function lire_config not found\\.$#" + count: 1 + path: inc/revisions_autoriser.php + + - + message: "#^Function sql_countsel not found\\.$#" + count: 1 + path: inc/revisions_autoriser.php + + - + message: "#^Function sql_fetsel not found\\.$#" + count: 1 + path: inc/revisions_autoriser.php + + - + message: "#^Function table_objet_sql not found\\.$#" + count: 1 + path: inc/revisions_autoriser.php + + - + message: "#^Function _T not found\\.$#" + count: 1 + path: inc/suivi_versions.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 4 + path: inc/suivi_versions.php + + - + message: "#^Function include_spip not found\\.$#" + count: 3 + path: inc/suivi_versions.php + + - + message: "#^Function sql_getfetsel not found\\.$#" + count: 1 + path: inc/suivi_versions.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 1 + path: inc/suivi_versions.php + + - + message: "#^Function table_objet_sql not found\\.$#" + count: 1 + path: inc/suivi_versions.php + + - + message: "#^Function _T not found\\.$#" + count: 2 + path: prive/objets/contenu/revision_fonctions.php + + - + message: "#^Function objet_info not found\\.$#" + count: 1 + path: prive/objets/contenu/revision_fonctions.php + + - + message: "#^Function objet_type not found\\.$#" + count: 1 + path: prive/objets/contenu/revision_fonctions.php + + - + message: "#^Function pipeline not found\\.$#" + count: 1 + path: prive/objets/contenu/revision_fonctions.php + + - + message: "#^Function include_spip not found\\.$#" + count: 2 + path: prive/objets/liste/versions_fonctions.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: prive/rss/revisions_fonctions.php + + - + message: "#^Function include_spip not found\\.$#" + count: 3 + path: prive/squelettes/contenu/revision_fonctions.php + + - + message: "#^Function charger_fonction not found\\.$#" + count: 2 + path: revisions_administrations.php + + - + message: "#^Function ecrire_fichier not found\\.$#" + count: 2 + path: revisions_administrations.php + + - + message: "#^Function ecrire_meta not found\\.$#" + count: 3 + path: revisions_administrations.php + + - + message: "#^Function effacer_meta not found\\.$#" + count: 2 + path: revisions_administrations.php + + - + message: "#^Function include_spip not found\\.$#" + count: 1 + path: revisions_administrations.php + + - + message: "#^Function maj_plugin not found\\.$#" + count: 1 + path: revisions_administrations.php + + - + message: "#^Function sous_repertoire not found\\.$#" + count: 2 + path: revisions_administrations.php + + - + message: "#^Function spip_log not found\\.$#" + count: 2 + path: revisions_administrations.php + + - + message: "#^Function sql_allfetsel not found\\.$#" + count: 2 + path: revisions_administrations.php + + - + message: "#^Function sql_countsel not found\\.$#" + count: 4 + path: revisions_administrations.php + + - + message: "#^Function sql_drop_table not found\\.$#" + count: 2 + path: revisions_administrations.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 2 + path: revisions_administrations.php + + - + message: "#^Function sql_updateq not found\\.$#" + count: 3 + path: revisions_administrations.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: revisions_autoriser.php + + - + message: "#^Function _T not found\\.$#" + count: 1 + path: revisions_ieconfig.php + + - + message: "#^Function _T not found\\.$#" + count: 3 + path: revisions_pipeline.php + + - + message: "#^Function _request not found\\.$#" + count: 1 + path: revisions_pipeline.php + + - + message: "#^Function autoriser not found\\.$#" + count: 1 + path: revisions_pipeline.php + + - + message: "#^Function generer_url_ecrire not found\\.$#" + count: 1 + path: revisions_pipeline.php + + - + message: "#^Function icone_horizontale not found\\.$#" + count: 1 + path: revisions_pipeline.php + + - + message: "#^Function id_table_objet not found\\.$#" + count: 1 + path: revisions_pipeline.php + + - + message: "#^Function include_spip not found\\.$#" + count: 10 + path: revisions_pipeline.php + + - + message: "#^Function objet_type not found\\.$#" + count: 2 + path: revisions_pipeline.php + + - + message: "#^Function recuperer_fond not found\\.$#" + count: 1 + path: revisions_pipeline.php + + - + message: "#^Function session_get not found\\.$#" + count: 4 + path: revisions_pipeline.php + + - + message: "#^Function sql_countsel not found\\.$#" + count: 1 + path: revisions_pipeline.php + + - + message: "#^Function sql_quote not found\\.$#" + count: 1 + path: revisions_pipeline.php + + - + message: "#^Function table_objet not found\\.$#" + count: 4 + path: revisions_pipeline.php + + - + message: "#^Function table_objet_sql not found\\.$#" + count: 5 + path: revisions_pipeline.php + diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000..cbdd580 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,11 @@ +includes: + - phpstan-baseline.neon + +parameters: + paths: + - . + excludePaths: + analyseAndScan: + - vendor + - lang + level: 0 diff --git a/prive/objets/contenu/revision_fonctions.php b/prive/objets/contenu/revision_fonctions.php index 00e5d77..0118d65 100644 --- a/prive/objets/contenu/revision_fonctions.php +++ b/prive/objets/contenu/revision_fonctions.php @@ -44,8 +44,8 @@ function label_champ($champ, $objet = false) { default: $label = pipeline( 'revisions_chercher_label', - array('args' => array('champ' => $champ, 'objet' => $objet), - 'data' => 'info_' . $champ) + ['args' => ['champ' => $champ, 'objet' => $objet], + 'data' => 'info_' . $champ] ); break; } diff --git a/revisions_administrations.php b/revisions_administrations.php index a2d08b5..0f8dea1 100644 --- a/revisions_administrations.php +++ b/revisions_administrations.php @@ -33,7 +33,8 @@ function revisions_upgrade($nom_meta_base_version, $version_cible) { // pour gerer l'historique des installations SPIP <=2.1 if (!isset($GLOBALS['meta'][$nom_meta_base_version])) { $trouver_table = charger_fonction('trouver_table', 'base'); - if ($desc = $trouver_table('spip_versions') + if ( + $desc = $trouver_table('spip_versions') and isset($desc['exist']) and $desc['exist'] and isset($desc['field']['id_article']) ) { @@ -42,51 +43,51 @@ function revisions_upgrade($nom_meta_base_version, $version_cible) { // si pas de table en base, on fera une simple creation de base } - $maj = array(); - $maj['create'] = array( - array('maj_tables', array('spip_versions', 'spip_versions_fragments')), - array('revisions_update_meta'), - ); + $maj = []; + $maj['create'] = [ + ['maj_tables', ['spip_versions', 'spip_versions_fragments']], + ['revisions_update_meta'], + ]; - $maj['1.1.0'] = array( + $maj['1.1.0'] = [ // Ajout du champs objet et modification du champs id_article en id_objet // sur les 2 tables spip_versions et spip_versions_fragments - array('sql_alter', 'TABLE spip_versions CHANGE id_article id_objet bigint(21) DEFAULT 0 NOT NULL'), - array('sql_alter', "TABLE spip_versions ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"), + ['sql_alter', 'TABLE spip_versions CHANGE id_article id_objet bigint(21) DEFAULT 0 NOT NULL'], + ['sql_alter', "TABLE spip_versions ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"], // Les id_objet restent les id_articles puisque les révisions n'étaient possibles que sur les articles - array('sql_updateq', 'spip_versions', array('objet' => 'article'), "objet=''"), + ['sql_updateq', 'spip_versions', ['objet' => 'article'], "objet=''"], // Changement des clefs primaires également - array('sql_alter', 'TABLE spip_versions DROP PRIMARY KEY'), - array('sql_alter', 'TABLE spip_versions ADD PRIMARY KEY (id_version, id_objet, objet)'), + ['sql_alter', 'TABLE spip_versions DROP PRIMARY KEY'], + ['sql_alter', 'TABLE spip_versions ADD PRIMARY KEY (id_version, id_objet, objet)'], - array('sql_alter', 'TABLE spip_versions_fragments CHANGE id_article id_objet bigint(21) DEFAULT 0 NOT NULL'), - array('sql_alter', "TABLE spip_versions_fragments ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"), + ['sql_alter', 'TABLE spip_versions_fragments CHANGE id_article id_objet bigint(21) DEFAULT 0 NOT NULL'], + ['sql_alter', "TABLE spip_versions_fragments ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"], // Les id_objet restent les id_articles puisque les révisions n'étaient possibles que sur les articles - array('sql_updateq', 'spip_versions_fragments', array('objet' => 'article'), "objet=''"), + ['sql_updateq', 'spip_versions_fragments', ['objet' => 'article'], "objet=''"], // Changement des clefs primaires également - array('sql_alter', 'TABLE spip_versions_fragments DROP PRIMARY KEY'), - array('sql_alter', 'TABLE spip_versions_fragments ADD PRIMARY KEY (id_objet, objet, id_fragment, version_min)'), - array('revisions_update_meta') - ); - $maj['1.1.2'] = array( - array('revisions_update_meta'), - array('sql_updateq', 'spip_versions', array('objet' => 'article'), "objet=''"), - array('sql_updateq', 'spip_versions_fragments', array('objet' => 'article'), "objet=''"), - ); - $maj['1.1.3'] = array( - array('sql_alter', 'TABLE spip_versions DROP KEY id_objet'), - array('sql_alter', 'TABLE spip_versions ADD INDEX id_version (id_version)'), - array('sql_alter', 'TABLE spip_versions ADD INDEX id_objet (id_objet)'), - array('sql_alter', 'TABLE spip_versions ADD INDEX objet (objet)') - ); - $maj['1.1.4'] = array( - array('sql_alter', "TABLE spip_versions CHANGE permanent permanent char(3) DEFAULT '' NOT NULL"), - array('sql_alter', "TABLE spip_versions CHANGE champs champs text DEFAULT '' NOT NULL"), - ); - $maj['1.2.0'] = array( - array('revisions_uncompress_fragments'), - array('revisions_repair_unserialized_fragments'), - ); + ['sql_alter', 'TABLE spip_versions_fragments DROP PRIMARY KEY'], + ['sql_alter', 'TABLE spip_versions_fragments ADD PRIMARY KEY (id_objet, objet, id_fragment, version_min)'], + ['revisions_update_meta'] + ]; + $maj['1.1.2'] = [ + ['revisions_update_meta'], + ['sql_updateq', 'spip_versions', ['objet' => 'article'], "objet=''"], + ['sql_updateq', 'spip_versions_fragments', ['objet' => 'article'], "objet=''"], + ]; + $maj['1.1.3'] = [ + ['sql_alter', 'TABLE spip_versions DROP KEY id_objet'], + ['sql_alter', 'TABLE spip_versions ADD INDEX id_version (id_version)'], + ['sql_alter', 'TABLE spip_versions ADD INDEX id_objet (id_objet)'], + ['sql_alter', 'TABLE spip_versions ADD INDEX objet (objet)'] + ]; + $maj['1.1.4'] = [ + ['sql_alter', "TABLE spip_versions CHANGE permanent permanent char(3) DEFAULT '' NOT NULL"], + ['sql_alter', "TABLE spip_versions CHANGE champs champs text DEFAULT '' NOT NULL"], + ]; + $maj['1.2.0'] = [ + ['revisions_uncompress_fragments'], + ['revisions_repair_unserialized_fragments'], + ]; include_spip('base/upgrade'); maj_plugin($nom_meta_base_version, $version_cible, $maj); @@ -123,10 +124,10 @@ function revisions_uncompress_fragments() { $fragment = 'corrompu-gz'; } - $set = array( + $set = [ 'compress' => 0, 'fragment' => $fragment, - ); + ]; sql_updateq( 'spip_versions_fragments', @@ -143,12 +144,12 @@ function revisions_uncompress_fragments() { if (sql_countsel('spip_versions_fragments', 'compress=' . intval(1)) > 0) { revisions_uncompress_fragments(); } - sql_updateq('spip_versions_fragments', array('compress' => -1)); + sql_updateq('spip_versions_fragments', ['compress' => -1]); } function revisions_repair_unserialized_fragments() { $n = sql_countsel('spip_versions_fragments', 'compress=' . intval(-1)); - spip_log("$n fragments a verifier", 'maj.'._LOG_ERREUR); + spip_log("$n fragments a verifier", 'maj.' . _LOG_ERREUR); if ($n > 20000) { $limit = '0,20000'; } else { @@ -166,9 +167,9 @@ function revisions_repair_unserialized_fragments() { foreach ($res as $row) { $fragment = $row['fragment']; - $set = array( + $set = [ 'compress' => 0, - ); + ]; // verifier que le fragment est bien serializable if (unserialize($fragment) === false and strncmp($fragment, 'corrompu', 8) !== 0) { @@ -277,11 +278,11 @@ function revisions_update_meta() { $config = charger_fonction('config', 'inc'); $config(); if (isset($GLOBALS['meta']['articles_versions']) and $GLOBALS['meta']['articles_versions'] == 'oui') { - ecrire_meta('objets_versions', serialize(array('articles'))); + ecrire_meta('objets_versions', serialize(['articles'])); } effacer_meta('articles_versions'); if (!$versions = unserialize($GLOBALS['meta']['objets_versions'])) { - $versions = array(); + $versions = []; } $versions = array_map('table_objet_sql', $versions); ecrire_meta('objets_versions', serialize($versions)); diff --git a/revisions_autoriser.php b/revisions_autoriser.php index 625df4c..2d87589 100644 --- a/revisions_autoriser.php +++ b/revisions_autoriser.php @@ -40,5 +40,5 @@ function revisions_autoriser() { * @return bool true s'il a le droit, false sinon **/ function autoriser_configurerrevisions_menu_dist($faire, $type, $id, $qui, $opt) { - return autoriser('configurer', '_revisions', $id, $qui, $opt); -} \ No newline at end of file + return autoriser('configurer', '_revisions', $id, $qui, $opt); +} diff --git a/revisions_ieconfig.php b/revisions_ieconfig.php index 88adbaa..bb683c0 100644 --- a/revisions_ieconfig.php +++ b/revisions_ieconfig.php @@ -5,6 +5,7 @@ * * @package SPIP\Revisions\Pipelines **/ + if (!defined('_ECRIRE_INC_VERSION')) { return; } diff --git a/revisions_pipeline.php b/revisions_pipeline.php index a0faa15..c54c9de 100644 --- a/revisions_pipeline.php +++ b/revisions_pipeline.php @@ -29,7 +29,8 @@ if (!defined('_ECRIRE_INC_VERSION')) { */ function revisions_boite_infos($flux) { $type = $flux['args']['type']; - if ($id = intval($flux['args']['id']) + if ( + $id = intval($flux['args']['id']) and $tables = unserialize($GLOBALS['meta']['objets_versions']) and in_array(table_objet_sql($type), $tables) and autoriser('voirrevisions', $type, $id) @@ -38,8 +39,11 @@ function revisions_boite_infos($flux) { and sql_countsel('spip_versions', 'id_objet=' . intval($id) . ' AND objet = ' . sql_quote($type)) > 1 ) { include_spip('inc/presentation'); - $flux['data'] .= icone_horizontale(_T('revisions:info_historique_lien'), - generer_url_ecrire('revision', "id_objet=$id&objet=$type"), "revision-24.png"); + $flux['data'] .= icone_horizontale( + _T('revisions:info_historique_lien'), + generer_url_ecrire('revision', "id_objet=$id&objet=$type"), + 'revision-24.png' + ); } return $flux; @@ -56,14 +60,15 @@ function revisions_boite_infos($flux) { */ function revisions_affiche_milieu($flux) { // la bonne page et des objets révisables cochées ! - if (in_array($flux['args']['exec'], array('accueil', 'suivi_edito')) + if ( + in_array($flux['args']['exec'], ['accueil', 'suivi_edito']) and unserialize($GLOBALS['meta']['objets_versions']) ) { - $contexte = array(); + $contexte = []; if ($GLOBALS['visiteur_session']['statut'] !== '0minirezo') { $contexte['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur']; } - $flux['data'] .= recuperer_fond('prive/objets/liste/versions', $contexte, array('ajax' => true)); + $flux['data'] .= recuperer_fond('prive/objets/liste/versions', $contexte, ['ajax' => true]); } return $flux; @@ -93,7 +98,8 @@ function revisions_configurer_liste_metas($metas) { * @return array $flux Données du pipeline */ function revisions_formulaire_charger($flux) { - if (strncmp($flux['args']['form'], 'editer_', 7) == 0 + if ( + strncmp($flux['args']['form'], 'editer_', 7) == 0 and $id_version = _request('id_version') and $objet = substr($flux['args']['form'], 7) and $id_table_objet = id_table_objet($objet) @@ -102,8 +108,8 @@ function revisions_formulaire_charger($flux) { and !$flux['args']['je_suis_poste'] ) { // ajouter un message convival pour indiquer qu'on a restaure la version - $flux['data']['message_ok'] = _T('revisions:icone_restaurer_version', array('version' => $id_version)); - $flux['data']['message_ok'] .= "
" . _T('revisions:message_valider_recuperer_version'); + $flux['data']['message_ok'] = _T('revisions:icone_restaurer_version', ['version' => $id_version]); + $flux['data']['message_ok'] .= '
' . _T('revisions:message_valider_recuperer_version'); // recuperer la version include_spip('inc/revisions'); $champs = recuperer_version_complete($id, $objet, $id_version); @@ -170,7 +176,8 @@ function revisions_post_insertion($x) { */ function revisions_pre_edition($x) { // ne rien faire quand on passe ici en controle md5 - if (!isset($x['args']['action']) + if ( + !isset($x['args']['action']) or $x['args']['action'] !== 'controler' ) { $table = $x['args']['table']; @@ -196,7 +203,8 @@ function revisions_pre_edition($x) { * @return array $x Données du pipeline */ function revisions_pre_edition_lien($x) { - if (intval($x['args']['id_objet_source']) > 0 + if ( + intval($x['args']['id_objet_source']) > 0 and intval($x['args']['id_objet']) > 0 ) { $table = table_objet_sql($x['args']['objet']); @@ -210,7 +218,8 @@ function revisions_pre_edition_lien($x) { if (isset($GLOBALS['premiere_revision']["$table:" . $id_objet])) { $GLOBALS['premiere_revision']["$table:" . $id_objet] = 0; } // ex : si le champ jointure_mots est versionnable sur les articles - elseif ($versionnes = liste_champs_versionnes($table) + elseif ( + $versionnes = liste_champs_versionnes($table) and in_array($j = 'jointure_' . table_objet($x['args']['objet_source']), $versionnes) ) { verifier_premiere_revision($table, $x['args']['objet'], $id_objet, $versionnes, -1); @@ -226,7 +235,8 @@ function revisions_pre_edition_lien($x) { if (isset($GLOBALS['premiere_revision']["$table:" . $id_objet])) { $GLOBALS['premiere_revision']["$table:" . $id_objet] = 0; } // ex : si le champ jointure_articles est versionnable sur les mots - elseif ($versionnes = liste_champs_versionnes($table) + elseif ( + $versionnes = liste_champs_versionnes($table) and in_array($j = 'jointure_' . table_objet($x['args']['objet']), $versionnes) ) { verifier_premiere_revision($table, $x['args']['objet_source'], $id_objet, $versionnes, -1); @@ -246,7 +256,7 @@ function revisions_post_edition($x) { include_spip('inc/revisions'); if (isset($x['args']['table']) and $versionnes = liste_champs_versionnes($x['args']['table'])) { // Regarder si au moins une des modifs est versionnable - $champs = array(); + $champs = []; $table = $x['args']['table']; $objet = isset($x['args']['type']) ? $x['args']['type'] : objet_type($table); include_spip('inc/session'); @@ -294,10 +304,10 @@ function revisions_post_edition_lien($x) { 'data' => $couples ) */ - if (intval($x['args']['id_objet_source']) > 0 + if ( + intval($x['args']['id_objet_source']) > 0 and intval($x['args']['id_objet']) > 0 ) { - $table = table_objet_sql($x['args']['objet']); $id_objet = $x['args']['id_objet']; include_spip('inc/revisions'); @@ -311,12 +321,13 @@ function revisions_post_edition_lien($x) { if (isset($GLOBALS['premiere_revision']["$table:" . $id_objet])) { $GLOBALS['premiere_revision']["$table:" . $id_objet] = 0; } // ex : si le champ jointure_mots est versionnable sur les articles - elseif ($versionnes = liste_champs_versionnes($table) + elseif ( + $versionnes = liste_champs_versionnes($table) and in_array($j = 'jointure_' . table_objet($x['args']['objet_source']), $versionnes) ) { - $champs = array( + $champs = [ $j => recuperer_valeur_champ_jointure($x['args']['objet'], $id_objet, $x['args']['objet_source']) - ); + ]; ajouter_version($id_objet, $x['args']['objet'], $champs, '', session_get('id_auteur')); } @@ -331,12 +342,13 @@ function revisions_post_edition_lien($x) { if (isset($GLOBALS['premiere_revision']["$table:" . $id_objet])) { $GLOBALS['premiere_revision']["$table:" . $id_objet] = 0; } // ex : si le champ jointure_articles est versionnable sur les mots - elseif ($versionnes = liste_champs_versionnes($table) + elseif ( + $versionnes = liste_champs_versionnes($table) and in_array($j = 'jointure_' . table_objet($x['args']['objet']), $versionnes) ) { - $champs = array( + $champs = [ $j => recuperer_valeur_champ_jointure($x['args']['objet_source'], $id_objet, $x['args']['objet']) - ); + ]; ajouter_version($id_objet, $x['args']['objet_source'], $champs, '', session_get('id_auteur')); } }