source: spip-zone/_plugins_/SPIP-Genea/public/genea_criteres.php @ 30253

Last change on this file since 30253 was 30253, checked in by gilles.vincent@…, 11 years ago

[30252] suite : split est deprecie en 5.3.0

File size: 3.2 KB
Line 
1<?php
2/* *********************************************************************
3   *
4   * Copyright (c) 2006-2008
5   * Xavier Burot
6   * fichier : public/genea_criteres.php
7   *
8   * Ce programme est un logiciel libre distribue sous licence GNU/GPL.
9   *
10   *********************************************************************
11*/
12
13// -- Definition de criteres supplementaires ----------------------------
14
15if (!defined("_ECRIRE_INC_VERSION")) return;
16
17//
18// {importance xxx} permet de classer par importance un champ de la table
19//
20function critere_importance_dist($idb, &$boucles, $crit){
21//      $op='';
22        $boucle = &$boucles[$idb];
23        $params = $crit->param;
24        $type = array_shift($params);
25        $type = $type[0]->texte;
26//      if(preg_match(',^(\w+)([<>=])([0-9]+)$,',$type,$r)){
27//              $type=$r[1];
28//              $op=$r[2];
29//              $op_val=$r[3];
30//      }
31        $champ = $boucle->id_table . '.' . $type;
32        $boucle->select[] = 'COUNT('.$champ.') AS importance';
33        $boucles[$idb]->group[] = $champ;
34}
35
36//
37// {initial yyyy x} permet de filter un champs par son initial ----------
38//
39// FONCTION EN SUSPENS CAR PB DE RECUPERATION DE LA VALEUR DE #GET{lettre}
40// A LA PLACE D'UNE LETTRE.
41function critere_initial_dist($idb, &$boucles, $crit){
42        $tbl_initial = array(
43                '?' => '?',
44                'A' => 'aA',
45                'B' => 'bB',
46                'C' => 'cC',
47                'D' => 'dD',
48                'E' => 'eE',
49                'F' => 'fF',
50                'G' => "gG",
51                'H' => "hH",
52                'I' => "iI",
53                'J' => "jJ",
54                'K' => "kK",
55                'L' => "lL",
56                'M' => "mM",
57                'N' => "mN",
58                'O' => "oO",
59                'P' => "pP",
60                'Q' => "qQ",
61                'R' => "rR",
62                'S' => "sS",
63                'T' => "tT",
64                'U' => "uU",
65                'V' => "vV",
66                'W' => "wW",
67                'X' => "xX",
68                'Y' => "yY",
69                'Z' => "zZ");
70        $boucle = &$boucles[$idb];
71        $params = $crit->param;
72        if (count($params) < 1) erreur_squelette(_T('genea:zbug_manque_parametre_initial'), "BOUCLE$idb");
73        $params = array_shift($params);
74        //$champs = ($params[0]->type = 'texte') ? calculer_liste(array($params[0]), array(), $boucles, $boucle->parent) :
75        list($champs, $val) = explode('=', $params[0]->texte);
76        if (isset($params[1])) {
77                $val = "'".calculer_liste(array($params[1]), array(), $boucles, $boucle->parent)."'";
78        }
79        $val = strtoupper($val); // Passage en majuscule pour appel du tableau de valeur
80        //if (($val<'A') || ($val>'Z') && ($val!='?')) erreur_squelette(_T('genea:zbug_initial_non conforme'), "BOUCLE$idb");
81        //echo "$champs - $val<br />";
82        $table = $boucle->id_table;
83        $where = array("'REGEXP'", "'$table.$champs'", "'\'^[". $tbl_initial[$val]. "]\''");
84        //print_r ($where); echo "<br />";
85        $boucle->where[] = ($crit->not ? array("'NOT'", $where) : $where);
86}
87
88//
89// Surcharge du critere PAR de base afin de prendre en compte la boucle FOR
90// Christian Lefebvre, Oct. 2005 - Distribué sous licence GPL
91//
92function critere_par($idb, &$boucles, $crit) {
93        $boucle = &$boucles[$idb];
94        if($boucle->type_requete!='for') {
95                return critere_par_dist($idb, &$boucles, $crit);
96        }
97        $tri= $crit->param[0];
98        if ($tri[0]->type != 'texte') {
99                $par =
100                        calculer_liste($tri, array(), $boucles, $boucles[$idb]->id_parent);
101        } else {
102                $par = array_shift($tri);
103                $par = $par->texte;
104        }
105        if ($crit->not) $par="!$par";
106        $boucle->order=array($par);
107}
108?>
Note: See TracBrowser for help on using the repository browser.