Changeset 88148 in spip-zone for _plugins_/albums
- Timestamp:
- Mar 22, 2015, 4:53:51 PM (6 years ago)
- Location:
- _plugins_/albums/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/albums/trunk/albums_autorisations.php
r86553 r88148 324 324 * Autorisation à supprimer définitivement un album. 325 325 * 326 * Il faut qu'il soit vide et inutilisé, + non publié si on est pasadmin complet326 * Il faut qu'il soit vide et inutilisé, et avoir le droit de le modifier ou être admin complet 327 327 * 328 328 * @param string $faire Action demandée … … 414 414 * @param array $opts Options de cette autorisation 415 415 * Doit contenir les clés `objet` et `id_objet` 416 * pour rens igner le type et l'identifiant de l'objet416 * pour renseigner le type et l'identifiant de l'objet 417 417 * @return bool true s'il a le droit, false sinon 418 418 */ … … 505 505 **/ 506 506 function autoriser_album_vider_dist($faire, $type, $id, $qui, $opts) { 507 507 508 include_spip('action/editer_liens'); 508 509 $rempli = count(objet_trouver_liens(array('document'=>'*'),array('album'=>$id)))>0; 509 510 $admin = $qui['statut']=='0minirezo' AND !$qui['restreint']; 510 511 $autoriser = ($admin AND $rempli) ? true : false; 512 513 return $autoriser; 514 } 515 516 517 /** 518 * Autorisation de transvaser les documents d'un album 519 * 520 * Il faut que l'album soit lié à l'objet et 521 * avoir le droit de modifier l'album et d'ajouter des documents ou être admin complet. 522 * 523 * @param string $faire Action demandée 524 * @param string $type Type d'objet sur lequel appliquer l'action 525 * @param int $id Identifiant de l'objet 526 * @param array $qui Description de l'auteur demandant l'autorisation 527 * @param array $opts Options de cette autorisation 528 * Doit contenir les clés `objet` et `id_objet` 529 * pour renseigner le type et l'identifiant de l'objet 530 * @return bool true s'il a le droit, false sinon 531 **/ 532 function autoriser_album_transvaser_dist($faire, $type, $id, $qui, $opts) { 533 534 include_spip('action/editer_liens'); 535 $objet = $opts['objet']; 536 $id_objet = $opts['id_objet']; 537 $liaison = (count(objet_trouver_liens(array('album'=>$id),array($objet=>$id_objet)))>0) ? true : false; 538 $autoriser_modifier = autoriser('modifier','album',$id); 539 $autoriser_joindredocument = autoriser('joindredocument',$objet,$id_objet); 540 $admin = $qui['statut']=='0minirezo' AND !$qui['restreint']; 541 542 $autoriser = ( 543 $liaison 544 AND 545 ( 546 ( 547 $autoriser_modifier 548 AND $autoriser_joindredocument 549 ) 550 OR 551 $admin 552 ) 553 ) ? true : false; 554 511 555 return $autoriser; 512 556 } -
_plugins_/albums/trunk/inc/albums.php
r86340 r88148 80 80 include_spip('inc/autoriser'); 81 81 include_spip('action/editer_liens'); 82 82 83 foreach($ids_albums as $id_album) { 83 84 if ( … … 105 106 106 107 /** 108 * Transvaser les documents entre un album et un objet éditorial auquel il est associé 109 * 110 * @note 111 * On ne fait que modifier des liens existants au lieu de dissocier puis réassocier 112 * les documents au moyen des fonctions de Médias (`dissocier_document` et `associer_document`) 113 * 114 * @param int|string $id_album 115 * Identifiant de l'album 116 * 0 pour créer un nouvel album vide, dans le cas d'un remplissage 117 * @param string $objet 118 * Type d'objet 119 * @param int $id_objet 120 * Identifiant de l'objet 121 * @param bool $remplir 122 * Définit le sens du transvasement (on remplit l'album ou on le vide) 123 * true : portfolio -> album 124 * false : album -> portfolio 125 * @param bool $supprimer 126 * true : supprimer l'album dans le cas d'un vidage 127 * @return int|bool 128 * nb de liens changés si ok, 129 * false en cas d'erreur 130 */ 131 function transvaser_album($id_album, $objet, $id_objet, $remplir=true, $supprimer=false) { 132 133 include_spip('inc/autoriser'); 134 include_spip('action/editer_liens'); 135 include_spip('action/editer_objet'); 136 137 $echec = null; 138 $nb_maj = 0; 139 140 // au besoin, on crée d'abord un album et on l'associe à l'objet 141 if ( 142 !intval($id_album) 143 AND $remplir === true 144 ) { 145 $id_album = objet_inserer('album'); 146 objet_associer(array('album'=>$id_album),array($objet=>$id_objet)); 147 } 148 149 if (autoriser('transvaser','album',$id_album,'',array('objet'=>$objet,'id_objet'=>$id_objet))){ 150 151 $objet_source = ($remplir === true) ? $objet : 'album'; 152 $id_objet_source = ($remplir === true) ? $id_objet : $id_album; 153 $objet_destination = ($remplir === true) ? 'album' : $objet; 154 $id_objet_destination = ($remplir === true) ? $id_album : $id_objet; 155 156 // changer les liens existants 157 // on ne peut pas changer objet et id_objet avec objet_qualifier_liens, donc on fait ça à la main 158 if ( 159 $liens_docs = objet_trouver_liens(array('document'=>'*'),array($objet_source=>$id_objet_source)) 160 AND is_array($liens_docs) 161 ){ 162 foreach ($liens_docs as $lien){ 163 $qualif = array('objet'=>$objet_destination,'id_objet'=>$id_objet_destination); 164 $where = 'id_document='.intval($lien['id_document']).' AND objet='.sql_quote($objet_source).' AND id_objet='.intval($id_objet_source); 165 $res = sql_updateq('spip_documents_liens',$qualif,$where); 166 if ($res===false) 167 $echec = true; 168 else 169 $nb_maj++; 170 } 171 } 172 // en cas de vidage, dissocier l'album 173 // puis éventuellement le supprimer 174 if ( 175 $remplir === false 176 AND $echec !== false 177 ){ 178 objet_dissocier(array('album'=>$id_album),array($objet=>$id_objet)); 179 if ( 180 $supprimer === true 181 AND autoriser('supprimer','album',$id_album) 182 ) { 183 supprimer_albums($id_album); 184 } 185 } 186 } else { 187 $echec = true; 188 } 189 return ($echec?false:$nb_maj); 190 } 191 192 193 /** 107 194 * Lister les formulaire yaml des modèles «album» disponibles dans les dossiers modeles/ 108 195 *
Note: See TracChangeset
for help on using the changeset viewer.