source: spip-zone/_plugins_/champs_extras2/core/inc/cextras.php @ 32322

Last change on this file since 32322 was 32322, checked in by marcimat@…, 11 years ago
  • Mettre les paramètres des saisies dans un unique tableau… Comme ça, pas besion de se poser de questions, les paramètres indiqués sont envoyés à la saisie.
File size: 3.2 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION")) return;
3
4class ChampExtra{
5        var $table = ''; // type de table ('rubrique')
6        var $champ = ''; // nom du champ ('ps')
7        var $label = ''; // label du champ, code de lanque ('monplug:mon_label')
8                var $precisions = ''; // (deprecie ; voir $saisie_parametres) precisions pour la saisie du champ (optionnel), code de lanque ('monplug:mon_label')
9        var $obligatoire = false; // ce champ est il obligatoire ? 'oui' ou true : c'est le cas.
10        var $rechercher = false; // ce champ entre-t-il dans le moteur de recherche ?
11        var $enum = ''; // liste de valeurs (champ texte : "cle1,val1\ncle2,val2" ou tableau : array("cle1"=>"val1","cle2"=>"val2") )
12        var $type = ''; // type (ligne/bloc/etc)
13        var $sql = ''; // declaration sql (text NOT NULL DEFAULT '')
14        var $traitements = ''; // _TRAITEMENT_RACCOURCIS ,  _TRAITEMENT_TYPO ou autre declaration pour la $table_des_traitements
15       
16        var $_id = ''; // identifiant de ce champ extra
17
18        // experimental (avec saisies)
19        var $saisie_externe = false;
20        var $saisie_parametres = array();
21                /*
22                    peut indiquer tout parametre d'une #SAISIE, tel que :
23                        explication => ''; // message d'explication !
24                        attention => ''; // message d'attention !
25                        class => ""; // classes CSS     sur l'element
26                        li_class => ""; // classes CSS sur l'element parent LI
27                */
28
29       
30        // constructeur
31        function ChampExtra($params=array()) {
32                $this->definir($params);
33        }
34       
35        // definir les champs
36        function definir($params=array()) {
37                foreach ($params as $cle=>$valeur) {
38                        if (isset($this->$cle)) {
39                                $this->$cle = $valeur;
40                        }
41                }
42                // calculer l'id du champ extra
43                $this->make_id();
44        }
45       
46        // creer l'id du champ extra :
47        function make_id(){
48                // creer un hash
49                $hash = $this->champ . $this->table . $this->sql;
50                $this->_id = substr(md5($hash),0,6);
51        }
52       
53        // determiner un identifiant
54        function get_id(){
55                if (!$this->_id) $this->make_id();
56                return $this->_id;
57        }
58       
59        // transformer en tableau PHP les variable publiques de la classe.
60        function toArray(){
61                $extra = array();
62                foreach ($this as $cle=>$val) {
63                        if ($cle[0]!=='_') {
64                                $extra[$cle] = $val;
65                        }
66                }
67                $extra['extra_id'] = $this->get_id();
68                return $extra;
69        }
70}
71
72
73function declarer_champs_extras($champs, $tables){
74        // ajoutons les champs un par un
75        foreach ($champs as $c){
76                $table = table_objet_sql($c->table);
77                if (isset($tables[$table]) and $c->champ and $c->sql) {
78                        $tables[$table]['field'][$c->champ] = $c->sql;
79                }
80        }
81        return $tables;
82}
83
84
85function declarer_champs_extras_interfaces($champs, $interface){
86        // ajoutons les filtres sur les champs
87        foreach ($champs as $c){
88                if ($c->filtres and $c->champ and $c->sql) {
89                        $tobjet = table_objet($c->table);
90                        $balise = strtoupper($c->champ);
91                        // definir
92                        if (!isset($interface['table_des_traitements'][$balise])) {
93                                $interface['table_des_traitements'][$balise] = array();
94                        }
95                        $interface['table_des_traitements'][$balise][$tobjet] = $c->filtres;
96                }
97        }
98        return $interface;
99}
100
101
102/**
103 * Log une information si l'on est en mode debug
104 * ( define('EXTRAS_DEBUG',true); )
105 * Ou si le second parametre est true.
106 */
107function extras_log($contenu, $important=false) {
108        if ($important
109        OR (defined('EXTRAS_DEBUG') and EXTRAS_DEBUG)) {
110                spip_log($contenu,'extras');
111        }
112}
113?>
Note: See TracBrowser for help on using the repository browser.