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