source: spip-zone/_plugins_/selection_d_objets/trunk/selection_objet_fonctions.php @ 70129

Last change on this file since 70129 was 70129, checked in by abelass@…, 7 years ago
  • inclure les documents
File size: 5.9 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) return;
4
5 //Applique des filtres sur des champs spéciciques
6function filtrer_champ($data){
7    include_spip('inc/texte');
8    $exceptions=charger_fonction('exceptions','inc');
9    $titres=$exceptions('titre');
10    $titres=array_merge(array(0=>'titre'),$titres);
11    $propres=array('descriptif','texte');
12    $extraire_multi=array_merge($titres,array('descriptif','texte'));
13    $filtres=array(
14        'extraire_multi'=>  $extraire_multi,         
15        'supprimer_numero'=>$titres,
16        'propre'=>$propres,
17       );
18       
19    foreach($filtres as $filtre => $champ){
20        if(is_array($data)){
21            if(is_array($champ)){
22                foreach($champ as $c){
23                    if($data[$c])$data[$c]=$filtre($data[$c]);
24                    }
25                }
26            }
27        else $data=$filtre($data);
28        }
29    return $data;   
30   
31}
32
33/* Fournit les champs désirés d'un objet donné */
34function info_objet($objet,$id_objet='',$champs='*',$where=array()){
35        include_spip('inc/filtres');
36
37    //Les tables non conforme
38    $exceptions=charger_fonction('exceptions','inc');
39    $exception_objet=$exceptions('objet');
40    if($exception_objet[$objet]){
41         $objet=$exception_objet[$objet];
42          $table='spip_'.$objet;
43    }
44    else $table='spip_'.$objet.'s';
45
46   
47    if($id_objet){
48        if(!$where)$where=array('id_'.$objet.'='.$id_objet); 
49        if($champs=='*')$data=sql_fetsel($champs,$table,$where);
50        else $data=sql_getfetsel($champs,$table,$where);
51        $data=filtrer_champ($data);
52        }
53    else{
54        $data=array();
55        $sql=sql_select($champs,$table,$where);
56        while($d = sql_fetch($sql)){
57           
58            if($d)$data[$d['id_'.$objet]]=filtrer_champ($d);
59            }
60        }
61   
62        return $data;
63   
64}
65
66/* Fonction qui fournit le lien d'un objet*/
67function url_objet($id_objet,$objet,$titre='',$url=''){
68   
69    if(!$titre AND !$url){
70        $objet_sel=sql_fetsel('titre,url','spip_selection_objets','id_objet='.$id_objet.' AND objet='.sql_quote($objet));
71        $url=$objet_sel['url'];
72        $titre=$objet_sel['titre'];
73    }
74
75        if(!$titre)$titre=info_objet($objet,$id_objet,'titre');
76    if(!$url)$url=generer_url_entite($id_objet,$objet);
77       
78        $lien = '<a href="'.$url.'" title="'.$titre.'">'.$titre.'</a>';
79        return $lien;
80}
81
82
83/*Fournit un tableau avec id_objet=>donnees_objet*/
84
85function tableau_objet($objet,$id_objet='',$champs='*',$where=array(),$filtrer=array(),$array_donnes=true){
86    $d=info_objet($objet,$id_objet,$champs,$where);
87    //Les tables non conforme, faudrait inclure une pipeline
88    $exceptions=charger_fonction('exceptions','inc');
89    $exception_objet=$exceptions('objet');
90    if($exception_objet[$objet]){
91         $objet=$exception_objet[$objet];
92    }
93    $data=array();
94    if(is_array($d)){
95        foreach($d as $r){
96            if(!$r['titre']){
97                if($objet=='document'){
98                    $fichier=explode('/',$r['fichier']);
99                    $r['titre']=$fichier[1];
100                    }
101                else $r['titre']=$r['nom']?$r['nom']:($r['nom_site']?$r['nom_site']:'objet'.$r['id_'.$objet]);
102            }
103            if(!$filtrer) $data[$r['id_'.$objet]]=$r;
104            elseif(is_array($filtrer)){
105                $donnees=array();
106                foreach($filtrer as $c){
107                if($r[$c])$donnees[$c]=$r[$c]; 
108                }
109             if($array_donnes) $data[$r['id_'.$objet]]=$donnees; 
110             else $data[$r['id_'.$objet]]=implode(',',$donnees);
111            }
112        }
113    }
114    return $data;
115}
116/* Assemble les données entre un objet sélectioné et son objet d'origine pour injection dans un modele choisit*/
117function generer_modele($id_objet,$objet='article',$fichier='modeles_selection_objet/defaut',$env=array(),$where=''){
118    include_spip('inc/utils');
119   
120    //Quelques objets ne sont pas conforme, on adapte
121    $exceptions=charger_fonction('exceptions','inc');
122    $exception_objet=$exceptions();
123   
124
125    if($exception_objet['objet'][$objet]){
126         $objet=$exception_objet['objet'][$objet];
127          $table='spip_'.$objet;
128    }
129    else $table='spip_'.$objet.'s';
130    if(!$where)$where='id_'.$objet.'='.$id_objet;
131   
132    if(!$contexte=sql_fetsel('*',$table,$where))$contexte=array();
133   
134    //Filtrer les champs vides
135    foreach($env as $k=>$v){
136        if(!$v)unset($env[$k]);
137    }
138   
139    if(!$cont=calculer_contexte())$cont=array();
140    if(is_array($env))$contexte= array_merge($cont,$contexte,$env);
141
142    $contexte['objet']=$objet;
143    $contexte['id_objet']=$id_objet; 
144   
145    if(!$exception_objet['objet'][$objet]){
146        $contexte['titre']=$contexte['titre'];
147        $contexte['champ_titre']='titre'; 
148        }
149    else{
150        $contexte['titre']=$contexte[$exception_objet['titre'][$objet]];
151        $contexte['champ_titre']=$exception_objet['titre'][$objet]; 
152        } 
153   
154    if(!$contexte['titre']){
155        if($objet=='document'){
156            $f=explode('/',$contexte['fichier']);
157            $contexte['titre']=$f[1];
158            }
159        else $contexte['titre']=$objet.'_'.$id_objet;
160   
161    }
162    //Chercher le logo correpsondant
163    //Si il y a un logo Selection Objet
164    $chercher_logo = charger_fonction('chercher_logo', 'inc');
165    $logo=$chercher_logo($contexte['id_selection_objet'],'id_selection_objet','on');
166    $contexte['logo_objet']=$logo[0];
167    //sinon le logo de l'objet sélectionné
168    if(!$contexte['logo_objet']){
169        $_id_objet=id_table_objet($objet);       
170        $logo=$chercher_logo($id_objet,$_id_objet,'on');
171        $contexte['logo_objet']=$logo[0];
172        }
173    $fond=recuperer_fond($fichier,$contexte);
174   
175    return $fond;
176}
177
178//donnele nom du type de lien
179function nom_type($type,$objet){
180    include_spip('inc/config');
181    if(!$types=lire_config('selection_objet/type_liens_'.$objet,array())) $types=lire_config('selection_objet/type_liens',array());
182   
183    if(!$nom=_T($types[$type]))$nom=$type;
184   
185    return $nom;
186    }
187?>
Note: See TracBrowser for help on using the repository browser.