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

Last change on this file since 69203 was 69203, checked in by abelass@…, 7 years ago
  • ne pas soummetre deux fois le même objet our la même liste
  • debugage problèmes jabvascripts
  • permette plueieurs formulaire recherche sur une page
File size: 4.7 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                $r['titre']=$r['nom']?$r['nom']:($r['nom_site']?$r['nom_site']:'objet'.$r['id_'.$objet]);
98                unset($r['nom']);
99                unset($r['nom_site']);
100            }
101            if(!$filtrer) $data[$r['id_'.$objet]]=$r;
102            elseif(is_array($filtrer)){
103                $donnees=array();
104                foreach($filtrer as $c){
105                if($r[$c])$donnees[$c]=$r[$c]; 
106                }
107             if($array_donnes) $data[$r['id_'.$objet]]=$donnees; 
108             else $data[$r['id_'.$objet]]=implode(',',$donnees);
109            }
110        }
111    }
112    return $data;
113}
114/* Assemble les données entre un objet sélectioné et son objet d'origine pour injection dans un modele choisit*/
115function generer_modele($id_objet,$objet='article',$fichier='modeles_selection_objet/defaut',$env=array(),$where=''){
116    include_spip('inc/utils');
117   
118    if(!$where)$where='id_'.$objet.'='.$id_objet;
119   
120    if(!$contexte=sql_fetsel('*','spip_'.$objet.'s',$where))$contexte=array();
121    if(!$cont=calculer_contexte())$cont=array();
122    if(is_array($env))$contexte= array_merge($contexte,$env,$cont);
123
124    $contexte['objet']=$objet;
125    $contexte['id_objet']=$id_objet; 
126   
127    if($contexte['nom'])$contexte['titre']=$contexte['nom'];
128    $rest = substr($objet, 0,3);
129    $extensions=array('png','jpg','gif');
130    foreach($extensions as $extension){
131        if($contexte['logo_objet']=find_in_path('IMG/'.$rest.'on'.$id_objet.'.'.$extension))break;
132    }
133
134    $fond=recuperer_fond($fichier,$contexte);
135   
136    return $fond;
137}
138
139//donnele nom du type de lien
140function nom_type($type,$objet){
141    include_spip('inc/config');
142    if(!$types=lire_config('selection_objet/type_liens_'.$objet_dest_original,array())) $types=lire_config('selection_objet/type_liens',array());
143   
144    $nom=_T($types[$type]);
145   
146    return $nom;
147    }
148?>
Note: See TracBrowser for help on using the repository browser.