wip : POC pour le passage en champ rang des objets spip.

Pour l'instant, il s'occupe pour les rubriques :
- ajouter un champ rang
- recuperer le numero dans le titre pour le mettre dans le champ rang
- réécrire le champ rang sans le numero de titre

refs spip/spip#688
master
tofulm 6 months ago
parent 91001cb829
commit 1f4f4c4e1b

@ -0,0 +1,12 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function delnum_declarer_tables_principales($tables) {
$tables['spip_rubriques']['field']['rang'] = 'bigint(21) NOT NULL';
return $tables;
}

@ -0,0 +1,71 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction d'installation et de mise à jour du plugin Gformation.
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @param string $version_cible
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
* @return void
**/
function delnum_upgrade($nom_meta_base_version, $version_cible) {
$maj = [];
$tables = [
'spip_rubriques'
];
$maj['create'] = [ ['maj_tables', $tables]];
$maj['1.0.2'] = [
['maj_tables', $tables],
];
$maj['1.0.3'] = [
['delnum_num_titre_en_rang', 'rubriques'],
];
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
function delnum_num_titre_en_rang(string $objet):void {
$table = table_objet_sql($objet);
$trouver_table = charger_fonction('trouver_table', 'base');
$desc = $trouver_table($table);
$tChamps = $desc['field'];
if (!array_key_exists('rang', $tChamps)) {
spip_log('Il manque le champ rang dans : '. $table, 'delnum_error');
}
$id_table_objet = id_table_objet($table);
$w = [
"titre REGEXP '^[0-9]+[.][[:space:]]'",
// "rang=0"
];
$s = [$id_table_objet, 'titre'];
include_spip('inc/filtres');
$res = sql_allfetsel($s, $table, $w);
$t = [];
if (!empty($res)) {
foreach ($res as $d) {
$titre = $d['titre'];
$rang = (int) recuperer_numero($titre);
$titre = supprimer_numero($titre);
if ($rang) {
sql_updateq($table, ['titre' => $titre, 'rang' => $rang], "$id_table_objet =".intval($d[$id_table_objet]));
$t[] = $d[$id_table_objet];
}
}
spip_log('Modification du titre pour '. count($t) . ' ' . $objet, 'delnum_'.$objet);
spip_log($t, 'delnum_'.$objet);
}
}

@ -0,0 +1,5 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}

@ -0,0 +1,14 @@
<paquet
prefix="delnum"
categorie="outil"
version="1.0.0"
etat="dev"
compatibilite="[4.1.0;4.2.*]"
documentation=""
schema="1.0.3"
>
<nom>Supprimer numero</nom>
<pipeline nom="declarer_tables_principales" inclure="base/delnum.php" />
</paquet>
Loading…
Cancel
Save