source: plugins_spip/media_collections/formulaires/associer_media_collection.php @ 7350

Last change on this file since 7350 was 7350, checked in by kent1, 8 years ago

invalider le cache si des changements ont lieu

File size: 3.6 KB
Line 
1<?php
2/**
3 * Plugin Collection (ou albums)
4 *
5 * Auteurs :
6 * kent1 (http://www.kent1.info - kent1@arscenic.info)
7 *
8 * © 2012 - Distribue sous licence GNU/GPL
9 *
10 * Formulaire d'association d'un media à une collection
11 *
12 **/
13
14if (!defined("_ECRIRE_INC_VERSION")) return;
15
16include_spip('inc/editer');
17include_spip('inc/config');
18
19/**
20 *
21 * @param string $objet
22 * @param int $id_objet
23 * @return array
24 */
25function formulaires_associer_media_collection_charger_dist($id_objet){
26        $valeurs = array(
27                'editable'=>true, # Peut on utiliser le formulaire
28                'id_objet' => $id_objet, # Quel est l'id_objet à utiliser
29                '_collections' => array() # La liste des collections auxquelles le media est déjà lié
30        );
31       
32        /**
33         * Le secteur des medias
34         */
35        $secteur_medias = sql_getfetsel('id_secteur','spip_diogenes','objet="emballe_media"');
36       
37        /**
38         * On n'est pas auteur ou l'$id_objet passé n'est pas numérique
39         * On rend le formulaire non éditable
40         */
41        if(!isset($GLOBALS['visiteur_session']['statut']) OR !is_numeric(intval($id_objet))){
42                $valeurs['editable'] = false;
43        }
44        /**
45         * On vérifie que l'on est bien sur un media et non un article X
46         */
47        else if(
48                (sql_getfetsel('id_secteur','spip_articles','id_article = '.intval($id_objet)) != $secteur_medias)
49                OR (sql_countsel('spip_documents_liens','objet="article" AND id_objet = '.intval($id_objet)) != 1)){
50                $valeurs['editable'] = false;
51        }
52       
53        /**
54         * On rempli l'array "collections" avec l'ensemble des collections où ce media est associé
55         *
56         * On récupÚre également le media du document
57         */
58        else {
59                $deja_collections = sql_select('id_collection','spip_collections_liens','objet="article" AND id_objet='.intval($id_objet));
60                while($collection = sql_fetch($deja_collections)){
61                        $valeurs['_collections'][] = $collection['id_collection']; 
62                }
63                $valeurs['_genres'] = array('mixed');
64                $valeurs['_genres'][] = sql_getfetsel('doc.media','spip_documents as doc LEFT JOIN spip_documents_liens as lien ON doc.id_document=lien.id_document','lien.objet="article" AND lien.id_objet='.intval($id_objet));
65        }
66        return $valeurs;
67}
68
69function formulaires_associer_media_collection_verifier_dist($id_objet){
70        $erreurs = array();
71        return $erreurs;
72}
73
74function formulaires_associer_media_collection_traiter_dist($id_objet){
75        $res = array('message_ok'=>' ');
76        $collection_ajoutee = false;
77       
78        if(intval(_request('id_collection')) && ($id_collection = sql_getfetsel('id_collection','spip_collections','id_collection='.intval(_request('id_collection')))) && autoriser('lierobjet','collection',intval(_request('id_collection')))){
79                $id_collection = $id_collection;
80        }else if(_request('id_collection')){
81                return $res['message_erreur'] = _T('collection:erreur_collection_non_existante');
82        }else if(!_request('id_collection')){
83                unset($res['message_ok']);
84                return $res;
85        }
86       
87        include_spip('action/editer_liens');
88       
89        if (autoriser('lierobjet', 'collection', $id_collection)) {
90                $association = objet_associer(array('collection' => $id_collection), array('article' => $id_objet));
91        }
92       
93        if(!$association){
94                return $res['message_erreur'] = _T('collection:erreur_association_collection');
95        }else{
96                include_spip('inc/invalideur');
97                suivre_invalideur('1');
98        }
99       
100        $autoclose = (lire_config('collections/mediabox') == "on" OR !defined('_DIR_PLUGIN_MEDIABOX')) ? '' : "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>";
101        if (!isset($res['message_erreur'])){
102                $res['message_ok'] = $autoclose;
103                $res['editable'] = false;
104        }
105
106        if ($res['message_ok'])
107                $res['message_ok'].= '<script type="text/javascript">if (window.jQuery) jQuery(".info-collections_liees").ajaxReload();</script>';
108       
109        return $res;
110}
111?>
Note: See TracBrowser for help on using the repository browser.