From e2d0e1440dd8fe18b9f3ca376724b50d4dbde34f Mon Sep 17 00:00:00 2001 From: "marcimat@rezo.net" <> Date: Mon, 11 Mar 2019 20:11:52 +0000 Subject: [PATCH] =?UTF-8?q?Suite=20de=20la=20gestion=20des=20rangs=20dans?= =?UTF-8?q?=20l=E2=80=99api=20d=E2=80=99=C3=A9dition=20de=20liens.=20Lorsq?= =?UTF-8?q?u=E2=80=99on=20d=C3=A9finit=20un=20rang,=20sa=20valeur=20est=20?= =?UTF-8?q?attribu=C3=A9e=20pour=20tous=20les=20roles=20de=20ce=20lien,=20?= =?UTF-8?q?pas=20uniquement=20pour=20le=20role=20en=20cours=20de=20qualifi?= =?UTF-8?q?cation.=20C=E2=80=99est=20un=20choix=20d=E2=80=99impl=C3=A9ment?= =?UTF-8?q?ation,=20mais=20il=20est=20coh=C3=A9rent=20avec=20les=20interfa?= =?UTF-8?q?ces=20que=20l=E2=80=99on=20a=20d=E2=80=99ajout=20de=20roles=20s?= =?UTF-8?q?ur=20les=20liens.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Permet de faire fonctionner les boutons "Ordonner les auteurs" et "Réinisialiser l’ordre" sur le plugin roles_auteurs (v2). https://zone.spip.net/trac/spip-zone/changeset/114438 --- ecrire/action/editer_liens.php | 15 +++++++++++---- prive/formulaires/editer_liens.php | 6 +++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/ecrire/action/editer_liens.php b/ecrire/action/editer_liens.php index f9ba5148f0..2125a660fa 100644 --- a/ecrire/action/editer_liens.php +++ b/ecrire/action/editer_liens.php @@ -834,10 +834,17 @@ function lien_set($objet_source, $primary, $table_lien, $id, $objets, $qualif) { ); $args['id_objet'] = $id_objet; - if (lien_triables($table_lien) and isset($qualif['rang_lien']) and intval($qualif['rang_lien'])) { - // on decale les liens de rang_lien>=la valeur inseree pour faire la place - $w = lien_where($primary, '*', $objet, $id_objet, array('rang_lien>='.intval($qualif['rang_lien']),"$primary!=".intval($id))); - sql_update($table_lien, array('rang_lien'=>'rang_lien+1'), $w); + if (lien_triables($table_lien) and isset($qualif['rang_lien'])) { + if (intval($qualif['rang_lien'])) { + // on decale les liens de rang_lien>=la valeur inseree pour faire la place + $w = lien_where($primary, '*', $objet, $id_objet, array('rang_lien>='.intval($qualif['rang_lien']),"$primary!=".intval($id))); + sql_update($table_lien, array('rang_lien'=>'rang_lien+1'), $w); + } + // tous les liens de même rôle recoivent le rang indiqué aussi + if (roles_colonne($objet_source, $objet)) { + $w = lien_where($primary, $id, $objet, $id_objet); + sql_updateq($table_lien, array('rang_lien' => intval($qualif['rang_lien'])), $w); + } $reordonner = true; } diff --git a/prive/formulaires/editer_liens.php b/prive/formulaires/editer_liens.php index 334e8be838..1b114f6add 100644 --- a/prive/formulaires/editer_liens.php +++ b/prive/formulaires/editer_liens.php @@ -184,7 +184,7 @@ function formulaires_editer_liens_charger_dist($a, $b, $c, $options = array()) { * ordonner_lien doit être de la forme, et sert pour trier les liens * ordonner_lien[objet1-id1-objet2-id2] = nouveau_rang * - * desordonner_liens n'a pas de forme precise, il doit simplement estre non nul/non vide + * desordonner_liens n'a pas de forme précise, il doit simplement être non nul/non vide * * @param string $a * @param string|int $b @@ -278,7 +278,7 @@ function formulaires_editer_liens_traiter_dist($a, $b, $c, $options = array()) { foreach ($supprimer as $k => $v) { if ($lien = lien_verifier_action($k, $v)) { $lien = explode('-', $lien); - list($objet_source, $ids, $objet_lie, $idl, $role) = $lien; + list($objet_source, $ids, $objet_lie, $idl, $role) = array_pad($lien, 5, null); // appliquer une condition sur le rôle si défini ('*' pour tous les roles) $cond = (!is_null($role) ? array('role' => $role) : array()); if ($objet_lien == $objet_source) { @@ -407,7 +407,7 @@ function lien_verifier_action($k, $v) { function lien_retrouver_qualif($objet_lien, $lien) { // un role est défini dans la liaison $defs = explode('-', $lien); - list($objet1, , $objet2, , $role) = $defs; + list($objet1, , $objet2, , $role) = array_pad($defs, 5, null); if ($objet_lien == $objet1) { $colonne_role = roles_colonne($objet1, $objet2); } else { -- GitLab