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

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