Commit 8460eea6 authored by Matthieu Marcillaud's avatar Matthieu Marcillaud

Lorsqu’on envoie une proposition de modification, on calcule un hash du contenu proposé.

On vérifie lors d’un envoie d’une nouvelle proposition que ce hash n’est pas déjà présent dans les 3 dernières propositions envoyées pour cet objet/id_objet.
De la sorte un outil qui envoie des propositions régulièrement, même si le contenu n’a pas changé, ne pollura pas la base pour rien et évitera des traitements
de vérifications aux équipes éditoriales.
parent 9fa5aedb
......@@ -51,6 +51,7 @@ function propositions_modifications_declarer_tables_objets_sql($tables) {
'id_objet' => 'bigint(21) NOT NULL DEFAULT 0',
'source' => 'varchar(255) NOT NULL DEFAULT ""',
'data' => 'longtext NOT NULL DEFAULT ""',
'hash' => 'varchar(32) NOT NULL DEFAULT ""',
'suivi' => 'mediumtext NOT NULL DEFAULT ""',
'date' => 'datetime NOT NULL DEFAULT "0000-00-00 00:00:00"',
'statut' => 'varchar(20) DEFAULT "0" NOT NULL',
......
......@@ -28,13 +28,28 @@ function inc_proposer_modifications_dist(string $objet, int $id_objet, string $s
if (!is_string($data)) {
$data = json_encode($data, JSON_PRETTY_PRINT | JSON_OBJECT_AS_ARRAY);
}
$hash = md5($data);
$now = (new DateTime())->format('Y-m-d H:i:s');
// hash déjà présent sur les 3 dernières propositions, on ne fait rien de plus pour ne pas surcharger de propositions doublons
$hashs = sql_allfetsel('hash, id_propositions_modification', 'spip_propositions_modifications', [
'objet = ' . sql_quote($objet),
'id_objet = ' . $id_objet,
], '', 'date DESC', '0,3');
$hashs = array_column($hashs, 'id_propositions_modification', 'hash');
if (isset($hashs[$hash])) {
return $hashs[$hash]; // id
}
include_spip('base/abstract_sql');
$id = sql_insertq('spip_propositions_modifications', [
'objet' => $objet,
'id_objet' => $id_objet,
'source' => $source,
'data' => $data,
'date' => (new DateTime())->format('Y-m-d H:i:s'),
'hash' => $hash,
'date' => $now,
'statut' => 'prop',
]);
if (!$id) {
......
<paquet
prefix="propositions_modifications"
categorie="edition"
version="1.0.0"
version="1.1.0"
etat="dev"
compatibilite="[3.2.0;3.2.*]"
logo="prive/themes/spip/images/propositions_modifications-64.png"
documentation=""
schema="1.0.0"
schema="1.1.0"
>
<nom>Propositions de modifications</nom>
<!-- Propositions de modifications sur les contenus -->
......
......@@ -27,6 +27,7 @@ function propositions_modifications_upgrade($nom_meta_base_version, $version_cib
$maj = array();
$maj['create'] = array(array('maj_tables', array('spip_propositions_modifications')));
$maj['1.1.0'] = array(array('maj_tables', array('spip_propositions_modifications')));
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment