Browse Source

feat(dev-tools): Mise en place phpcs+phpstan (#4834)

Co-authored-by: JamesRezo <james@rezo.net>
Reviewed-on: #4834
Co-authored-by: JamesRezo <jamesrezo@noreply.git.spip.net>
Co-committed-by: JamesRezo <jamesrezo@noreply.git.spip.net>
pull/4837/head
JamesRezo 2 years ago
parent
commit
e7e107e14c
  1. 7
      .gitignore
  2. 2
      afficher_diff/champ.php
  3. 4
      afficher_diff/id_rubrique.php
  4. 2
      afficher_diff/jointure.php
  5. 28
      base/revisions.php
  6. 7
      composer.json
  7. 11
      formulaires/configurer_revisions_objets.php
  8. 16
      formulaires/reviser.php
  9. 7
      genie/optimiser_revisions.php
  10. 13
      genie/revisions_optimiser_revisions.php
  11. 66
      inc/diff.php
  12. 325
      inc/revisions.php
  13. 6
      inc/revisions_autoriser.php
  14. 23
      inc/suivi_versions.php
  15. 14
      phpcs.xml.dist
  16. 597
      phpstan-baseline.neon
  17. 11
      phpstan.neon.dist
  18. 4
      prive/objets/contenu/revision_fonctions.php
  19. 93
      revisions_administrations.php
  20. 4
      revisions_autoriser.php
  21. 1
      revisions_ieconfig.php
  22. 56
      revisions_pipeline.php

7
.gitignore vendored

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

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

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

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

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

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

11
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'])
) {

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

7
genie/optimiser_revisions.php

@ -1,4 +1,5 @@
<?php
/***************************************************************************\
* SPIP, Systรจme de publication pour l'internet *
* *
@ -11,9 +12,9 @@
/**
* @plugin Revisions pour SPIP
*
*
* @deprecated 4.0 Utiliser genie/revisions_optimiser_revisions.php
*
*
* @license GPL
* @package SPIP\Revisions\Genie
*/
@ -29,7 +30,7 @@ include_spip('genie/revisions_optimiser_revisions');
*
* @deprecated 4.0
* @uses genie_revisions_optimiser_revisions_dist()
*
*
* @param int $last
* Timestamp de la derniรจre exรฉcution de cette tรขche
* @return int

13
genie/revisions_optimiser_revisions.php

@ -1,4 +1,5 @@
<?php
/***************************************************************************\
* SPIP, Systรจme de publication pour l'internet *
* *
@ -52,7 +53,7 @@ function optimiser_base_revisions() {
* On supprimera ensuite les occurences dans spip_versions et spip_versions_fragments
*/
while ($objet = sql_fetch($objets_revises)) {
$in = array();
$in = [];
$table = table_objet_sql($objet['objet']);
$id_table_objet = id_table_objet($objet['objet']);
$res = sql_select(
@ -76,7 +77,7 @@ function optimiser_base_revisions() {
* -* spip_versions_fragments
*/
if ($in) {
foreach (array('spip_versions', 'spip_versions_fragments') as $table) {
foreach (['spip_versions', 'spip_versions_fragments'] as $table) {
sql_delete($table, sql_in('id_objet', array_keys($in)) . ' AND objet=' . sql_quote($objet['objet']));
}
}
@ -87,7 +88,7 @@ function optimiser_base_revisions() {
* Optimisation des tables spip_versions et spip_versions_fragments
*/
function optimiser_tables_revision() {
foreach (array('spip_versions', 'spip_versions_fragments') as $table) {
foreach (['spip_versions', 'spip_versions_fragments'] as $table) {
spip_log("debut d'optimisation de la table $table");
if (sql_optimize($table)) {
spip_log("fin d'optimisation de la table $table");
@ -103,13 +104,13 @@ function optimiser_tables_revision() {
**/
function anonymiser_base_revisions() {
if (defined('_CNIL_PERIODE') and _CNIL_PERIODE) {
$critere_cnil = 'date<"'.date('Y-m-d', time()-_CNIL_PERIODE).'"'
$critere_cnil = 'date<"' . date('Y-m-d', time() - _CNIL_PERIODE) . '"'
. ' AND (id_auteur LIKE "%.%" OR id_auteur LIKE "%:%")'; # ipv4 ou ipv6
$c = sql_countsel('spip_versions', $critere_cnil);
if ($c>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;
}
}

66
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<span class=\"diff-para-ajoute\" title=\"" . _T('revisions:diff_para_ajoute') . "\">" . $p . "</span rem=\"diff-\">";
$this->r .= "\n\n\n<span class=\"diff-para-ajoute\" title=\"" . _T('revisions:diff_para_ajoute') . '">' . $p . '</span rem="diff-">';
}
// https://code.spip.net/@supprimer
public function supprimer($p_old) {
$p_old = trim($p_old);
$this->r .= "\n\n\n<span class=\"diff-para-supprime\" title=\"" . _T('revisions:diff_para_supprime') . "\">" . $p_old . "</span rem=\"diff-\">";
$this->r .= "\n\n\n<span class=\"diff-para-supprime\" title=\"" . _T('revisions:diff_para_supprime') . '">' . $p_old . '</span rem="diff-">';
}
// https://code.spip.net/@deplacer
public function deplacer($p, $p_old) {
$this->r .= "\n\n\n<span class=\"diff-para-deplace\" title=\"" . _T('revisions:diff_para_deplace') . "\">";
$this->r .= "\n\n\n<span class=\"diff-para-deplace\" title=\"" . _T('revisions:diff_para_deplace') . '">';
$this->r .= trim($this->_diff($p, $p_old));
$this->r .= "</span rem=\"diff-\">";
$this->r .= '</span rem="diff-">';
}
// 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 .= "<span class=\"diff-ajoute\" title=\"" . _T('revisions:diff_texte_ajoute') . "\">" . $p . "</span rem=\"diff-\">";
$this->r .= '<span class="diff-ajoute" title="' . _T('revisions:diff_texte_ajoute') . '">' . $p . '</span rem="diff-">';
}
// https://code.spip.net/@supprimer
public function supprimer($p_old) {
$this->r .= "<span class=\"diff-supprime\" title=\"" . _T('revisions:diff_texte_supprime') . "\">" . $p_old . "</span rem=\"diff-\">";
$this->r .= '<span class="diff-supprime" title="' . _T('revisions:diff_texte_supprime') . '">' . $p_old . '</span rem="diff-">';
}
// https://code.spip.net/@deplacer
public function deplacer($p, $p_old) {
$this->r .= "<span class=\"diff-deplace\" title=\"" . _T('revisions:diff_texte_deplace') . "\">" . $this->_diff($p,
$p_old) . "</span rem=\"diff-\">";
$this->r .= '<span class="diff-deplace" title="' . _T('revisions:diff_texte_deplace') . '">' . $this->_diff(
$p,
$p_old
) . '</span rem="diff-">';
}
// 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 .= "<span class=\"diff-ajoute\" title=\"" . _T('revisions:diff_texte_ajoute') . "\">" . $p . "</span rem=\"diff-\"> ";
$this->r .= '<span class="diff-ajoute" title="' . _T('revisions:diff_texte_ajoute') . '">' . $p . '</span rem="diff-"> ';
}
// https://code.spip.net/@supprimer
public function supprimer($p_old) {
$this->r .= "<span class=\"diff-supprime\" title=\"" . _T('revisions:diff_texte_supprime') . "\">" . $p_old . "</span rem=\"diff-\"> ";
$this->r .= '<span class="diff-supprime" title="' . _T('revisions:diff_texte_supprime') . '">' . $p_old . '</span rem="diff-"> ';
}
// https://code.spip.net/@comparer

325
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) {
// [ ...<span diff> -> lien ]
// < tag <span diff> >
$texte = preg_replace(',<([^>]*?@@@SPIP_DIFF[0-9]+@@@),',
'&lt;\1', $texte);
$texte = preg_replace(
',<([^>]*?@@@SPIP_DIFF[0-9]+@@@),',
'&lt;\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&#91;\2', $texte);
$texte = preg_replace(
',(^|[^[])[[]([^[\]]*@@@SPIP_DIFF[0-9]+@@),',
'\1&#91;\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"
);
}
}
}

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

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

14
phpcs.xml.dist

@ -0,0 +1,14 @@
<?xml version="1.0"?>
<ruleset>
<file>.</file>
<exclude-pattern>vendor/*</exclude-pattern>
<exclude-pattern>lang/*</exclude-pattern>
<rule ref="SPIP41"/>
<config name="ignore_warnings_on_exit" value="1"/>
<arg name="cache" value=".php_cs.cache"/>
<arg name="report-full" value=".php_cs.txt"/>
<arg name="report-summary"/>
<arg value="s"/>
</ruleset>

597
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