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

Last change on this file since 70395 was 70395, checked in by abelass@…, 7 years ago
  • permetre de passer des variables par défaut
  • permettre d'utiliser le ménu de langue natif
File size: 6.1 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    $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é */
53function 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*/
88function 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*/
105function 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*/
132function 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
188function 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?>
Note: See TracBrowser for help on using the repository browser.