Changeset 70227 in spip-zone


Ignore:
Timestamp:
Feb 27, 2013, 10:02:34 AM (8 years ago)
Author:
marcimat@…
Message:

Report de http://core.spip.org/projects/spip/repository/revisions/20197 (cerdic) : 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.

Location:
_plugins_/roles/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/roles/trunk/action/editer_liens.php

    r64300 r70227  
    216216
    217217
     218
    218219/**
    219220 * Dupliquer tous les liens entrant ou sortants d'un objet
    220221 * vers un autre (meme type d'objet, mais id different)
     222 * si $types est fourni, seuls les liens depuis/vers les types listes seront copies
     223 * si $exclure_types est fourni, les liens depuis/vers les types listes seront ignores
    221224 *
    222225 * @api
     
    224227 * @param int $id_source
    225228 * @param int $id_cible
     229 * @param array $types
     230 * @param array $exclure_types
    226231 * @return int
    227232 *     Nombre de liens copiés
    228233 */
    229 function objet_dupliquer_liens($objet,$id_source,$id_cible){
     234function objet_dupliquer_liens($objet,$id_source,$id_cible,$types=null,$exclure_types=null){
    230235        include_spip('base/objets');
    231236        $tables = lister_tables_objets_sql();
    232237        $n = 0;
    233238        foreach($tables as $table_sql => $infos){
    234                 if (objet_associable($infos['type'])){
    235                         $liens = (($infos['type']==$objet)?
    236                                         objet_trouver_liens(array($objet=>$id_source),'*')
    237                                 :
    238                                         objet_trouver_liens(array($infos['type']=>'*'),array($objet=>$id_source)));
    239                         foreach($liens as $lien){
    240                                 $n++;
    241                                 if ($infos['type']==$objet){
    242                                         objet_associer(array($objet=>$id_cible),array($lien['objet']=>$lien[$lien['objet']]),$lien);
    243                                 }
    244                                 else {
    245                                         objet_associer(array($infos['type']=>$lien[$infos['type']]),array($objet=>$id_cible),$lien);
     239                if (
     240                        (is_null($types) OR in_array($infos['type'],$types))
     241                        AND (is_null($exclure_types) OR !in_array($infos['type'],$exclure_types))
     242                        ){
     243                        if (objet_associable($infos['type'])){
     244                                $liens = (($infos['type']==$objet)?
     245                                                objet_trouver_liens(array($objet=>$id_source),'*')
     246                                        :
     247                                                objet_trouver_liens(array($infos['type']=>'*'),array($objet=>$id_source)));
     248                                foreach($liens as $lien){
     249                                        $n++;
     250                                        if ($infos['type']==$objet){
     251                                                objet_associer(array($objet=>$id_cible),array($lien['objet']=>$lien[$lien['objet']]),$lien);
     252                                        }
     253                                        else {
     254                                                objet_associer(array($infos['type']=>$lien[$infos['type']]),array($objet=>$id_cible),$lien);
     255                                        }
    246256                                }
    247257                        }
     
    250260        return $n;
    251261}
     262
    252263
    253264/**
  • _plugins_/roles/trunk/paquet.xml

    r64300 r70227  
    22        prefix="roles"
    33        categorie="outil"
    4         version="1.1.1"
     4        version="1.2.0"
    55        etat="dev"
    66        compatibilite="[3.0.0-dev;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.