Subversion Repositories Applications.gtt

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 jpm 1
<?php
2
// +------------------------------------------------------------------------------------------------------+
3
// | PHP version 4.1                                                                                      |
4
// +------------------------------------------------------------------------------------------------------+
5
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// +------------------------------------------------------------------------------------------------------+
7
// | This library is free software; you can redistribute it and/or                                        |
8
// | modify it under the terms of the GNU Lesser General Public                                           |
9
// | License as published by the Free Software Foundation; either                                         |
10
// | version 2.1 of the License, or (at your option) any later version.                                   |
11
// |                                                                                                      |
12
// | This library is distributed in the hope that it will be useful,                                      |
13
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
14
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
15
// | Lesser General Public License for more details.                                                      |
16
// |                                                                                                      |
17
// | You should have received a copy of the GNU Lesser General Public                                     |
18
// | License along with this library; if not, write to the Free Software                                  |
19
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
20
// +------------------------------------------------------------------------------------------------------+
21
 
22
// |@author ABDOOL RAHEEM shaheen   shaheenar50@hotmail.com                                                 |
23
// |@version 3                                                                                            |
24
 
25
 
26
include_once 'gtt_projet.class.php';
27
 
28
/**
29
  * class Categorie
30
  *une categorie regroupe une liste de projets
31
  */
32
 
33
class Categorie
34
{
35
 
36
  /**Aggregations: */
37
 
38
    var $_liste_projets = array();//liste de projets de la categorie
39
 
40
  /**Attributes: */
41
 
42
    var $_id_categorie=null;
43
 
44
    var $_libelle_categorie=null;
45
 
46
    /*
47
    *construit une categorie a partir d'un identifiant
48
    */
49
   function Categorie($id)
50
   {
51
       $this->_id_categorie=$id;
52
   }
53
 
54
  /**
55
    *ajouter le libelle
56
    */
57
   function setLibelleCategorie($l)
58
   {
59
       $this->_libelle_categorie= $l;
60
   }
61
 
62
   /*
63
   *construit une categorie a partir d'un tableau
64
   */
65
   function construireCategorie($tableau)
66
   {
67
       $this->_id_categorie=$tableau[GEST_CHAMPS_ID_CATEGORIE];
68
       $this->_libelle_categorie=$tableau[GEST_CHAMPS_LIBELLE_CATEGORIE];
69
   }
70
 
71
   /*
72
   *verifie si la categorie contient des projets ou non
73
   *renvoie 1 si contient des projets
74
   *-1 sinon
75
   */
76
   function contientProjet($id)
77
   {
78
    $requete="SELECT ".GEST_CHAMPS_ID_PROJET.
79
             " FROM ".GEST_PROJET.
80
	     " WHERE ".GEST_CHAMPS_ID_CATEGORIE." = $id";
81
 
82
    $ligne= $GLOBALS['db']->query($requete);
83
 
84
   (DB::isError($ligne)) ?
85
           die (BOG_afficherErreurSql(__FILE__, __LINE__, $ligne->getMessage(), $requete)) : '' ;
86
 
87
   $j= $ligne->numRows();
88
    if ($j==0){
89
	return -1;
90
    }else {
91
	return 1;
92
    }
93
   }
94
 
95
   /*recuperer un tableau contenant la liste des categories*/
96
   function recupererTableauCategorie()
97
   {
98
       $tableau = array();
99
       $i=0;
100
       $requete ="SELECT * FROM ".GEST_CATEGORIE." ";
101
 
102
       $resultat =$GLOBALS['db']->query($requete);
103
 
104
       (DB::isError($resultat)) ?
105
             die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
106
 
107
     while ($ligne= $resultat->fetchRow(DB_FETCHMODE_ASSOC))
108
     {
109
        $case = array(GEST_CHAMPS_ID_CATEGORIE => $ligne[GEST_CHAMPS_ID_CATEGORIE],
110
                GEST_CHAMPS_LIBELLE_CATEGORIE =>$ligne[GEST_CHAMPS_LIBELLE_CATEGORIE]);
111
 
112
        $tableau[$i]=$case;
113
        $i=$i+1;
114
     }
115
 
116
     return $tableau;
117
   }
118
 
119
   /**
120
   *recupere l'identifiant de la prochaine categorie
121
   *de la base de donnees
122
   */
123
 
124
   function nextId()
125
   {
126
    $requete = 'SELECT MAX('.GEST_CHAMPS_ID_CATEGORIE.') AS maxi FROM '.GEST_CATEGORIE;
127
    $resultat = $GLOBALS['db']->query($requete);
128
    if (DB::isError($resultat) || $resultat->numRows() > 1) {
129
        return false;
130
    }
131
 
132
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
133
    return $ligne->maxi + 1;
134
   }
135
 
136
 
137
  /*
138
  *enregistre une nouvelle categorie dans la base de donnees
139
  *ne fait qu'inserer une nouvelle identifiant
140
  *et libelle de categorie
141
  *ne traite pas les projets inclus dans une categorie
142
  *renvoie 1 si enregistrement effectue
143
  *0 si aucun enregistrement
144
  *-1 si erreur
145
  */
146
 
147
 
148
  function enregistrerNewCategorie()
149
  {
150
 
151
    $table =GEST_CATEGORIE;
152
    //Verification si identifiant deja attribue
153
 
154
    $b=&Categorie::nextId();
155
    $this->_id_categorie=$b;
156
 
157
    $champs = array(
158
              GEST_CHAMPS_ID_CATEGORIE => $this->_id_categorie,
159
	      GEST_CHAMPS_LIBELLE_CATEGORIE => "$this->_libelle_categorie");
160
 
161
    $resultat = $GLOBALS['db']->autoExecute($table, $champs, DB_AUTOQUERY_INSERT);
162
    if (DB::isError($resultat)) {
163
    die($resultat->getMessage());
164
    }
165
 
166
   $j=$GLOBALS['db']->affectedRows();
167
   switch ($j)
168
   {
169
       case 1 : return 1;
170
       case 0 :return 0;
171
       default :return -1;
172
   }
173
 
174
  }
175
 
176
 
177
 
178
  /**
179
    *  construit une instance de categorie en recuperant les donnees
180
    *stockees dans la base de donnees
181
    */
182
  function recupererCategorie($id)
183
  {
184
   $requete="SELECT * FROM ".GEST_CATEGORIE.
185
            " WHERE ".GEST_CHAMPS_ID_CATEGORIE." =$id ";
186
 
187
   $ligne =$GLOBALS['db']->query($requete) ;
188
   $resultat = $ligne->fetchRow(DB_FETCHMODE_ASSOC);
189
 
190
   (DB::isError($resultat)) ?
191
        die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
192
 
193
    $nb_ligne_selectionne = $ligne->numRows();
194
 
195
    if($nb_ligne_selectionne==1)
196
    {
197
    //construction d'une nouvelle categorie
198
 
199
     $cat = new Categorie($resultat[GEST_CHAMPS_ID_CATEGORIE]) ;
200
     $cat->setLibelleCategorie($resultat[GEST_CHAMPS_LIBELLE_CATEGORIE]);
201
 
202
     $cat->_liste_projets=$this->recupererListeProjets($id);
203
     return $cat;
204
    }elseif($nb_ligne_selectionne==0){
205
	return 0;
206
    }else {
207
  return -1;
208
    }
209
 
210
  }
211
 
212
 
213
    /*
214
    *fonction recuperant la liste de projets
215
    *d'une categorie de la base de donnes
216
    */
217
    function recupererListeProjets($id)
218
 
219
    {
220
 
221
    $tableau=array();
222
    $requete="SELECT ".GEST_CHAMPS_ID_PROJET.
223
             " FROM ".GEST_PROJET.
224
	     " WHERE ".GEST_CHAMPS_ID_CATEGORIE." = $id";
225
 
226
    $ligne= $GLOBALS['db']->query($requete);
227
 
228
   (DB::isError($resultat)) ?
229
           die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
230
 
231
   $j = $ligne->numRows();
232
   if($j!=0){
233
   //remplit le tableau avec la liste de projets
234
   while($resultat=$ligne->fetchRow(DB_FETCHMODE_ORDERED))
235
   {
236
       array_push($tableau,$resultat[0]);
237
   }
238
   }
239
   return $tableau;
240
  }
241
 
242
 
243
  /**
244
    * supprime une categorie de la base de donnees
245
    *cette methode n'est appelé que quand on est sure qu'il n'y a
246
    *aucun projet dans la categorie
247
    */
248
  function supprimerCategorie($id)
249
  {
250
    $requete="DELETE FROM ".GEST_CATEGORIE.
251
             " WHERE ".GEST_CHAMPS_ID_CATEGORIE. " = $id";
252
 
253
    $resultat = $GLOBALS['db']->query($requete);
254
 
255
    $j=	$GLOBALS['db']->affectedRows();
256
    return $j;
257
  }
258
 
259
 
260
 function afficherCategorie()
261
 {
262
     echo "<BR> Categorie : ";
263
     echo "id categorie : \n";
264
     echo "$this->_id_categorie  <BR>";
265
     echo "libelle : \n  $this->_libelle_categorie <BR>";
266
     echo "liste de projets :  ";
267
     foreach($this->_liste_projets as $h)
268
     {
269
	 echo "$h \t";
270
     }
271
 
272
 }
273
}
274
?>