Skip to content
Extraits de code Groupes Projets
  1. mars 20, 2024
    • marcimat's avatar
      fix: Corriger et optimiser la suppression de liens ayant des rangs · b59badd9
      marcimat a rédigé et marcimat's avatar marcimat a validé
      Lorsqu’on supprime un lien, par exemple un document depuis `action_supprimer_document_dist`, on appelle la fonction
      
      ```php
      objet_dissocier(['document' => $id_document], '*', ['role' => '*']);
      ```
      
      Si la table de lien dispose d’une colonne `rang_lien`, un recalcul
      des rangs est effectué. Cependant ce recalcul s’applique pour tous les objets liés (à tort),
      pas seulement ceux concernés spécifiquement par la suppression.
      
      On corrige ce point, ce qui accélère grandement le processus de recalcul du rang
      pour ces cas là, en plus de corriger un mauvais calcul de rang.
      b59badd9
  2. jan. 19, 2024
  3. jan. 10, 2024
  4. juin 11, 2023
  5. mars 22, 2023
  6. jan. 08, 2023
  7. jan. 14, 2022
  8. déc. 23, 2021
  9. sept. 02, 2021
    • cerdic's avatar
      Fix #4866 : tous les comptages de rang se font avec un where calcule via la... · feea64d7
      cerdic a rédigé
      Fix #4866 : tous les comptages de rang se font avec un where calcule via la fonction lien_rang_where() qui par defaut calcule un where correspondant a "tous les id_xx associes a objet-id_objet" mais dont le comportement peut etre personalise au cas par cas via une fonction perso lien_rang_where_{$table_lien}()
      Par ailleurs si un rang_lien est fourni lors de l'appel a objet_associer() il est directement pris en compte pour l'insertion du lien plutot que de calculer un rang automatique, inserer avec ce rang, puis modifier ensuite
      Enfin, dans ce dernier cas, on appelle pas lien_ordonner() immediatement apres l'insertion, mais on laisse d'abord lien_set() faire son job (a savoir eventuellement mettre le meme rang sur les autres liens id_xx/objet/id_objet identiques mais avec un role different), et finalement finir par un lien_ordonner()
      
      Additionnellement, la fonction lien_ordonner() ne presume plus du mode de comptage des rangs :
      - elle se repose aussi sur la fonction lien_rang_where()
      - elle utilise les infos des liens trouves
      - elle note les liens deja ordonnes pour eviter un double recomptage (notamment si on l'appelle avec plusieurs objets/id_objets qui sont tous comptes en une seule fois parce que c'est le primary qui sert de regroupement)
      
      (finger crossed)
      feea64d7
  10. août 30, 2021
  11. sept. 28, 2020
  12. sept. 11, 2020
  13. août 05, 2019
  14. juil. 30, 2019
  15. juil. 26, 2019
  16. mars 13, 2019
  17. mars 11, 2019
  18. mars 07, 2019
  19. mars 06, 2019
    • cerdic's avatar
      Fix : https://core.spip.net/issues/4305 · dd48fb36
      cerdic a rédigé
      gestion generique du champ rang_lien sur les tables de liens dans l'API editer_liens:
      * numerotation automatique a l'insertion si un des lien est deja numerote (par defaut non, donc)
      * renumerotation a la suppression d'un lien (si les liens sont numerotes)
      * renumerotation quand on modifie le rang_lien d'un lien via objet_qualifier_liens() (sauf quand on met a zero un rang)
      * prise en compte de la variable postee ordonner_lien dans le formulaires pour permettre de changer le rang d'un lien
      * prise en compte de la variable postee desordonner_liens pour remettre tous les rang a zero
      
      Evolution de la balise #RANG pour afficher le rang du lien quand il est disponible dans la boucle, ou dans le formulaire d'edition des liens
      Pas d'interface ni d'utilisation dans le core : l'esprit de SPIP n'etant pas de hierarchiser les auteurs on reste par defaut sans ordre, c'est un plugin de la zone qui implemente ca https://zone.spip.net/trac/spip-zone/browser/_plugins_/rang_auteurs
      dd48fb36
  20. jan. 08, 2019
  21. mars 26, 2018
  22. juin 15, 2017
  23. jan. 01, 2016
  24. déc. 13, 2015
  25. nov. 22, 2015
  26. nov. 08, 2015
    • amemo's avatar
      Documentation du code : · 493d929a
      amemo a rédigé
      - objet_dissocier (par pierretux) : Meilleurs visibilité et accents
      - url_de_base (par pierretux) : ortographe
      
      
      Relecteur : Matthieu Marcillaud
      493d929a
  27. sept. 25, 2015
    • amemo's avatar
      Documentation du code : · 17053cfc
      amemo a rédigé
      - objet_associer (par pierretux) : Rajout d'accent
      - translitteration_complexe (par Ybbet) : Correction de l'accent du a` confondu avec un code markdown
      - ecrire_meta (par Ybbet) : Faute de frappe
      - verifier_session (par pierretux) : Lien vers la doc inutile
      - nettoyer_uri (par Ybbet) : L'url vers code.spip.net cassait la mise en page sur le site.
      
      
      Relecteur : Matthieu Marcillaud
      17053cfc
  28. mai 08, 2015
    • marcimat's avatar
      Comme le faisait le remarquer une note de http://contrib.spip.net/Des-roles-sur-des-liens , · 87d25cc6
      marcimat a rédigé
      les pipelines pre_edition_lien et post_edition_lien ne fonctionnent pas 
      comme pre_edition et post_edition dans le sens où ils ne 
      transmettent pas dans $flux['data'] la liste 
      des champs impactés par l’insertion ou la suppression, mais seulement l'identifiant de l'objet concerné. 
      
      On corrige ce point pour rendre les fonctionnements identiques et homogènes en transmettant
      tout le tableau des champs modifiés aux pipelines pre_edition_liens et post_edition_liens.
      
      Les 3 plugins de la zone qui utilisent post_edition_liens ne sont pas impactés par ces
      modifications (ils utilisent ces pipelines un peu comme des triggers sans utiliser
      la valeur 'data'.).
      
      
      
      87d25cc6
    • marcimat's avatar
      Intégration dans SPIP de la possibilité de gérer des liens entre objets · abc7193e
      marcimat a rédigé
      avec des rôles.
      
      On intègre l'API présente actuellement dans le plugin Rôles, en modifiant
      un peu les fonctions d'édition de liens.
      
      Celles-ci permettent maintenant d'éditer des liens ayant donc des rôles.
      Ces différents rôles et le nom de la colonne SQL qui les reçoit,
      s'ils sont utilisés, doivent être déclarés avec la déclaration
      de l'objet éditorial correspondant.
      
      Un exemple est donné avec le plugin «Roles auteurs» qui définit
      quelques rôles. Les champs décrivant les rôles : `roles_colonne`, `roles_titres` et `roles_objets`
      doivent être déclarés (via le pipeline declarer_tables_objets_sql).
      
      ```
      "roles_colonne" => "role",
      "roles_titres" => array(
      	'redacteur'  => 'info_statut_redacteur',
      	'traducteur' => 'roles_auteurs:traducteur',
      	'correcteur' => 'roles_auteurs:correcteur',
      	'relecteur'  => 'roles_auteurs:relecteur',
      ),
      "roles_objets" => array(
      	'articles' => array(
      		'choix' => array('redacteur', 'traducteur', 'correcteur', 'relecteur'),
      		'defaut' => 'redacteur'
      	)
      	#'*' => array()
      )
      ```
      
      Une fois déclaré, on peut appeler les fonctions d'édition de lien
      en transmettant des valeurs de rôles, tel que :
      
      ```
      objet_associer(
      	array('auteur' => 3),
      	array('article' => 11),
      	array('role' => 'correcteur')
      );
      
      // utilisera le rôle par défaut
      objet_associer(
      	array('auteur' => 3),
      	array('article' => 11)
      );
      ```
      
      Si aucun rôle n'est indiqué, le rôle par défaut est appliqué.
      
      Dans le cas d'une dissociation également, si aucun rôle n'est indiqué,
      seuls les liaisons avec le rôle par défaut seront supprimés ; pour
      supprimer tous les rôles, il faut à ce moment là indiquer '*' :
      
      ```
      objet_dissocier(
      	array('auteur' => 3),
      	array('article' => 11),
      	array('role' => 'correcteur')
      );
      
      // utilisera le rôle par défaut
      objet_dissocier(
      	array('auteur' => 3),
      	array('article' => 11)
      );
      
      // enlèvera tous les rôles
      objet_dissocier(
      	array('auteur' => 3),
      	array('article' => 11),
      	array('role' => '*')
      );
      ```
      
      
      Le formulaire d'édition de liens n'utilisera pas les mêmes squelettes
      de liaison lorsqu'une colonne de rôle est déclarée.
      
      Ainsi dans cet exemple, au lieu de `prive/objets/liste/auteurs_lies.html`
      et `auteurs_associer.html`, cela utiliserait `prive/objets/liste/auteurs_roles_lies.html`
      et `auteurs_roles_associer.html`. Il faut donc créer ces squelettes.
      
      
      Ces squelettes peuvent poster les valeurs au formulaire pour insérer
      de nouveaux liens, de la forme `qualifier_lien[auteur-3-article-11][role]`
      en postant `redacteur` par exemple.
      
      Il est possible au passage de poster en plus d'autres valeurs, qui seront
      intégrées dans l'enregistrement du lien.
      Ainsi, poster en même temps `qualifier_lien[auteur-3-article-11][valeur]` = `50`
      enregistrera la valeur 50 dans la colonne `valeur` de la table de lien (qui doit
      exister !).
      
      D'autres informations sont présentes dans http://contrib.spip.net/Des-roles-sur-des-liens,
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/roles_auteurs ou encore
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/roles
      
      abc7193e
  29. mars 18, 2015
  30. jan. 01, 2014
  31. mars 12, 2013
    • cerdic's avatar
      Report de r20196 : objet_dupliquer_liens prend 2 arguments optionnels... · 85d5ba08
      cerdic a rédigé
      Report de r20196 : objet_dupliquer_liens prend 2 arguments optionnels supplementaires qui permet de lister les types des objets lies a prendre en compte ou a exclure. Par defaut il copie tous les liens, et l'on peut donc se limiter a certain types de liens ou au contraire exclure certains types de lien. La valeur null pour chacun des deux arguments supplementaires est ignorée.
      85d5ba08
  32. mars 06, 2013
  33. août 21, 2012
Chargement en cours