Subversion Repositories Applications.papyrus

Rev

Rev 465 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 465 Rev 474
1
<?php
1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
3
// +------------------------------------------------------------------------------------------------------+
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU General Public                                                  |
9
// | modify it under the terms of the GNU General Public                                                  |
10
// | License as published by the Free Software Foundation; either                                         |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | General Public License for more details.                                                             |
16
// | General Public License for more details.                                                             |
17
// |                                                                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU General Public                                            |
18
// | You should have received a copy of the GNU General Public                                            |
19
// | License along with this library; if not, write to the Free Software                                  |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
21
// +------------------------------------------------------------------------------------------------------+
22
// CVS : $Id: projet.class.php,v 1.2 2005-09-26 20:18:27 ddelon Exp $
22
// CVS : $Id: projet.class.php,v 1.3 2005-09-27 16:42:00 alexandre_tb Exp $
23
/**
23
/**
24
* Application projet
24
* Application projet
25
*
25
*
26
* La classe projet
26
* La classe projet
27
*
27
*
28
*@package projet
28
*@package projet
29
//Auteur original :
29
//Auteur original :
30
*@author        Alexandre Granier <alexandre@tela-botanica.org>
30
*@author        Alexandre Granier <alexandre@tela-botanica.org>
31
//Autres auteurs :
31
//Autres auteurs :
32
*@author        Aucun
32
*@author        Aucun
33
*@copyright     Tela-Botanica 2000-2004
33
*@copyright     Tela-Botanica 2000-2004
34
*@version       $Revision: 1.2 $
34
*@version       $Revision: 1.3 $
35
// +------------------------------------------------------------------------------------------------------+
35
// +------------------------------------------------------------------------------------------------------+
36
*/
36
*/
37
 
37
 
38
 
38
 
39
// +------------------------------------------------------------------------------------------------------+
39
// +------------------------------------------------------------------------------------------------------+
40
// |                                            ENTETE du PROGRAMME                                       |
40
// |                                            ENTETE du PROGRAMME                                       |
41
// +------------------------------------------------------------------------------------------------------+
41
// +------------------------------------------------------------------------------------------------------+
42
 
42
 
43
include_once PROJET_CHEMIN_CLASSES.'document.class.php' ;
43
include_once PROJET_CHEMIN_CLASSES.'document.class.php' ;
44
include_once PROJET_CHEMIN_CLASSES.'liste_discussion.class.php' ;
44
include_once PROJET_CHEMIN_CLASSES.'liste_discussion.class.php' ;
45
include_once PROJET_CHEMIN_FONCTIONS.'SQL_manipulation.fonct.php' ;
45
include_once PROJET_CHEMIN_FONCTIONS.'SQL_manipulation.fonct.php' ;
46
include_once 'Mail.php' ;
46
include_once 'Mail.php' ;
47
 
47
 
48
// +------------------------------------------------------------------------------------------------------+
48
// +------------------------------------------------------------------------------------------------------+
49
// |                                            ENTETE du PROGRAMME                                       |
49
// |                                            ENTETE du PROGRAMME                                       |
50
// +------------------------------------------------------------------------------------------------------+
50
// +------------------------------------------------------------------------------------------------------+
51
 
51
 
52
 
52
 
53
 
53
 
54
 
54
 
55
/**
55
/**
56
 * class projet
56
 * class projet
57
 * 
57
 * 
58
 */
58
 */
59
class projet
59
class projet
60
{
60
{
61
 
61
 
62
    /** Aggregations: */
62
    /** Aggregations: */
63
 
63
 
64
    /**
64
    /**
65
     * Le tableau d'objet document associés au projet
65
     * Le tableau d'objet document associés au projet
66
     *
66
     *
67
     */
67
     */
68
    var $_documents_associes = array();
68
    var $_documents_associes = array();
69
 
69
 
70
    var $_listes_associes = array();
70
    var $_listes_associes = array();
71
 
71
 
72
    /** Compositions: */
72
    /** Compositions: */
73
 
73
 
74
    /*** Attributes: ***/
74
    /*** Attributes: ***/
75
    
75
    
76
    /**
76
    /**
77
     * L'identifiant du projet.
77
     * L'identifiant du projet.
78
     * @access private
78
     * @access private
79
     */
79
     */
80
    var $_id_projet;
80
    var $_id_projet;
81
 
81
 
82
    /**
82
    /**
83
     * Le titre du projet, tel que dans la base de donnée.
83
     * Le titre du projet, tel que dans la base de donnée.
84
     * @access private
84
     * @access private
85
     */
85
     */
86
    var $_titre;
86
    var $_titre;
87
    /**
87
    /**
88
     * La description du projet, tel que dans la base.
88
     * La description du projet, tel que dans la base.
89
     * @access private
89
     * @access private
90
     */
90
     */
91
    var $_description;
91
    var $_description;
92
    /**
92
    /**
93
     * L'URL d'un site sur le projet. Facultatif.
93
     * L'URL d'un site sur le projet. Facultatif.
94
     * @access private
94
     * @access private
95
     */
95
     */
96
    var $_espace_internet;
96
    var $_espace_internet;
97
    /**
97
    /**
98
     * Le nom du wikini associé au projet, avec la syntaxe wikini. Vide par défaut.
98
     * Le nom du wikini associé au projet, avec la syntaxe wikini. Vide par défaut.
99
     * @access private
99
     * @access private
100
     */
100
     */
101
    var $_nom_wikini;
101
    var $_nom_wikini;
102
    /**
102
    /**
103
     * Date de création du projet. A priori ne varie pas dans le temps.
103
     * Date de création du projet. A priori ne varie pas dans le temps.
104
     * @access private
104
     * @access private
105
     */
105
     */
106
    var $_date_creation;
106
    var $_date_creation;
107
    /**
107
    /**
108
     * Le chemin relatif vers le répertoire contenant les wikinis.
108
     * Le chemin relatif vers le répertoire contenant les wikinis.
109
     * @access private
109
     * @access private
110
     */
110
     */
111
    var $_chemin_wikini;
111
    var $_chemin_wikini;
112
    /**
112
    /**
113
     * Une connexion vers la base de donnée.
113
     * Une connexion vers la base de donnée.
114
     * @access private
114
     * @access private
115
     */
115
     */
116
    var $_db;
116
    var $_db;
117
 
117
 
118
    /**
118
    /**
119
     * Contient le nom du répertoire du projet tel que sur le disque.
119
     * Contient le nom du répertoire du projet tel que sur le disque.
120
     * @access private
120
     * @access private
121
     */
121
     */
122
    var $_nom_repertoire;
122
    var $_nom_repertoire;
123
 
123
 
124
    /**
124
    /**
125
     * Le chemin jusqu'au répertoire où seront stockés les fichiers.
125
     * Le chemin jusqu'au répertoire où seront stockés les fichiers.
126
     * @access private
126
     * @access private
127
     */
127
     */
128
    var $_chemin_repertoire;
128
    var $_chemin_repertoire;
129
 
129
 
130
    /**
130
    /**
131
     * Vaut vrai si le projet est un projet racine et s'il est le seul.
131
     * Vaut vrai si le projet est un projet racine et s'il est le seul.
132
     * @access private
132
     * @access private
133
     */
133
     */
134
    var $_est_racine;
134
    var $_est_racine;
135
    /**
135
    /**
136
     * Le résumé du projet
136
     * Le résumé du projet
137
     * @access private
137
     * @access private
138
     */
138
     */
139
    var $_resume;
139
    var $_resume;
-
 
140
    /**
-
 
141
     * Contient le numéro du type du projet
-
 
142
     * @access private
-
 
143
     */
-
 
144
    var $_type;
140
 
145
 
141
    /**
146
    /**
142
     * 
147
     * 
143
     * PHP5 
148
     *
144
     * @return projet
149
     * @return projet
145
     * @access public
150
     * @access public
146
     */
151
     */
147
    function __construct( &$dbObject,  $id_projet = "")
152
    function __construct( )
148
    {
153
    {
149
      $this->projet($dbObject,  $id_projet);
-
 
150
      
154
        
151
    } // end of member function __construct
155
    } // end of member function __construct
152
 
156
 
153
    /**
157
    /**
154
     * 
158
     * 
155
     *
159
     *
156
     * @param DB dbObject Un objet PEAR:DB
160
     * @param DB dbObject Un objet PEAR:DB
157
     * @param int id_projet On passe un identifiant de projet au constructeur. Cela lui permet de faire une
161
     * @param int id_projet On passe un identifiant de projet au constructeur. Cela lui permet de faire une
158
     * première requête pour les infos de bases comme le titre, le description etc.
162
     * première requête pour les infos de bases comme le titre, le description etc.
159
     * @return projet
163
     * @return projet
160
     * @access public
164
     * @access public
161
     */
165
     */
162
    function projet( &$dbObject,  $id_projet = "")
166
    function projet( &$dbObject,  $id_projet = "")
163
    {
167
    {
164
        $this->_db = $dbObject ;
168
        $this->_db = $dbObject ;
165
        if ($id_projet != "") {
169
        if ($id_projet != "") {
166
            $requete = "select * from projet where p_id=$id_projet" ;
170
            $requete = "select * from projet where p_id=$id_projet" ;
167
            $resultat = $this->_db->query ($requete) ;
171
            $resultat = $this->_db->query ($requete) ;
168
            if (DB::isError($resultat)) {
172
            if (DB::isError($resultat)) {
169
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
173
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
170
            }
174
            }
171
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
175
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
172
            
176
            
173
            // Affectations dans les propriétés
177
            // Affectations dans les propriétés
174
            $this->_id_projet = $ligne->p_id ;
178
            $this->_id_projet = $ligne->p_id ;
175
            $this->_titre = $ligne->p_titre ;
179
            $this->_titre = $ligne->p_titre ;
176
            $this->_description = $ligne->p_description ;
180
            $this->_description = $ligne->p_description ;
177
            $this->_espace_internet = $ligne->p_espace_internet ;
181
            $this->_espace_internet = $ligne->p_espace_internet ;
178
            $this->_date_creation = $ligne->p_date_creation ;
182
            $this->_date_creation = $ligne->p_date_creation ;
179
            $this->_nom_wikini = $ligne->p_wikini ;
183
            $this->_nom_wikini = $ligne->p_wikini ;
180
            $this->_resume = $ligne->p_resume;
184
            $this->_resume = $ligne->p_resume;
181
            
-
 
-
 
185
            $this->_type = $ligne->p_type ;
182
            // On récupère le nom du répertoire
186
            // On récupère le nom du répertoire
183
            $this->_nom_repertoire = $ligne->p_nom_repertoire ;
187
            $this->_nom_repertoire = $ligne->p_nom_repertoire ;
184
            
188
            
185
            // on regarde si on a à faire au projet racine
189
            // on regarde si on a à faire au projet racine
186
            $requete = 'select  ph_id_projet_pere, ph_id_projet_fils from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
190
            $requete = 'select  ph_id_projet_pere, ph_id_projet_fils from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
187
            $resultat = $this->_db->query ($requete) ;
191
            $resultat = $this->_db->query ($requete) ;
188
            if (DB::isError ($resultat)) {
192
            if (DB::isError ($resultat)) {
189
                die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
193
                die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
190
            }
194
            }
191
            if (!$resultat->numRows()) {
195
            if (!$resultat->numRows()) {
192
                $this->_est_racine = true ;
196
                $this->_est_racine = true ;
193
            } else {
197
            } else {
194
                $this->_est_racine = false ;
198
                $this->_est_racine = false ;
195
            }
199
            }
196
        }
200
        }
197
    } // end of member function projet
201
    } // end of member function projet
198
 
202
 
199
    /**
203
    /**
200
     * 
204
     * 
201
     *
205
     *
202
     * @param DB dbObject Un objet PEAR:DB
206
     * @param DB dbObject Un objet PEAR:DB
203
     * @param int id_projet On passe un identifiant de projet au constructeur.
207
     * @param int id_projet On passe un identifiant de projet au constructeur.
204
     * @return bool 
208
     * @return bool 
205
     * @access public
209
     * @access public
206
     */
210
     */
207
    function projetExiste( &$dbObject,  $id_projet)
211
    function projetExiste( &$dbObject,  $id_projet)
208
    {
212
    {
209
        if ($id_projet != "") {
213
        if ($id_projet != "") {
210
            $requete = "select * from projet where p_id=$id_projet" ;
214
            $requete = "select * from projet where p_id=$id_projet" ;
211
            $resultat = $dbObject->query ($requete) ;
215
            $resultat = $dbObject->query ($requete) ;
212
            if (DB::isError($resultat)) {
216
            if (DB::isError($resultat)) {
213
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
217
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
214
            }
218
            }
215
            if ($resultat->numRows() != 0) {
219
            if ($resultat->numRows() != 0) {
216
                return true ;
220
                return true ;
217
            }
221
            }
218
        }
222
        }
219
    } // end of member function projet
223
    } // end of member function projet
220
    
224
    
221
    /**
225
    /**
222
     * 
226
     * 
223
     *
227
     *
224
     * @param int id_projet 
228
     * @param int id_projet 
225
     * @return string
229
     * @return string
226
     * @access public
230
     * @access public
227
     */
231
     */
228
    function getTitre( $id_projet = "" )
232
    function getTitre( $id_projet = "" )
229
    {
233
    {
230
        return $this->_titre ;
234
        return $this->_titre ;
231
    } // end of member function getTitre
235
    } // end of member function getTitre
232
    
236
    
233
    /**
237
    /**
234
     * 
238
     * 
235
     *
239
     *
236
     * @return string
240
     * @return string
237
     * @access public
241
     * @access public
238
     */
242
     */
239
    function getResume( )
243
    function getResume( )
240
    {
244
    {
241
        return $this->_resume ;
245
        return $this->_resume ;
242
    } // end of member function getResume
246
    } // end of member function getResume
243
 
247
 
244
    /**
248
    /**
245
     * Renvoie l'identifiant du projet courant.
249
     * Renvoie l'identifiant du projet courant.
246
     *
250
     *
247
     * @return int
251
     * @return int
248
     * @access public
252
     * @access public
249
     */
253
     */
250
    function getId( )
254
    function getId( )
251
    {
255
    {
252
        return $this->_id_projet ;
256
        return $this->_id_projet ;
253
    } // end of member function getId
257
    } // end of member function getId
254
 
258
 
255
    /**
259
    /**
256
     * 
260
     * 
257
     *
261
     *
258
     * @return string
262
     * @return string
259
     * @access public
263
     * @access public
260
     */
264
     */
261
    function getDescription( )
265
    function getDescription( )
262
    {
266
    {
263
        return $this->_description;
267
        return $this->_description;
264
    } // end of member function getDescription
268
    } // end of member function getDescription
265
 
269
 
266
    /**
270
    /**
267
     * 
271
     * 
268
     *
272
     *
269
     * @return string
273
     * @return string
270
     * @access public
274
     * @access public
271
     */
275
     */
272
    function getEspaceInternet( )
276
    function getEspaceInternet( )
273
    {
277
    {
274
        return $this->_espace_internet;
278
        return $this->_espace_internet;
275
    } // end of member function getEspaceInternet
279
    } // end of member function getEspaceInternet
276
 
280
 
277
    /**
281
    /**
278
     * Charge dans l'objet projet, les listes de discussion
282
     * Charge dans l'objet projet, les listes de discussion
279
     * ['nom_liste']
283
     * ['nom_liste']
280
     * ['domaine']
284
     * ['domaine']
281
     * ['adresse']
285
     * ['adresse']
282
     *
286
     *
283
     * @return boolean  true en cas de succès
287
     * @return boolean  true en cas de succès
284
     * @access public
288
     * @access public
285
     */
289
     */
286
    function getListesAssociees( )
290
    function getListesAssociees( )
287
    {
291
    {
288
        // On rajoute un test pour éviter l'appel SQL si il a déjà été fait une fois
292
        // On rajoute un test pour éviter l'appel SQL si il a déjà été fait une fois
289
        if (count($this->_listes_associes) > 0) return ;
293
        if (count($this->_listes_associes) > 0) return ;
290
        $requete = "select pl_id_liste from projet_lien_liste where pl_id_projet=".$this->_id_projet ;
294
        $requete = "select pl_id_liste from projet_lien_liste where pl_id_projet=".$this->_id_projet ;
291
        $resultat = $this->_db->query ($requete) ;
295
        $resultat = $this->_db->query ($requete) ;
292
        if (DB::isError ($resultat)) {
296
        if (DB::isError ($resultat)) {
293
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
297
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
294
        }
298
        }
295
        $retour = array() ;
299
        $retour = array() ;
296
        if ($resultat->numRows()) {
300
        if ($resultat->numRows()) {
297
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
301
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
298
            $this->_listes_associes[] = new liste_discussion($ligne->pl_id_liste, $this->_db) ;
302
            $this->_listes_associes[] = new liste_discussion($ligne->pl_id_liste, $this->_db) ;
299
            
303
            
300
        }
304
        }
301
    } // end of member function getListesAssociees
305
    } // end of member function getListesAssociees
302
 
306
 
303
    /**
307
    /**
304
     * Renvoie vrai si le projet a au moins une liste
308
     * Renvoie vrai si le projet a au moins une liste
305
     *
309
     *
306
     * @return bool
310
     * @return bool
307
     * @access public
311
     * @access public
308
     */
312
     */
309
    function avoirListe( )
313
    function avoirListe( )
310
    {
314
    {
311
        $this->getListesAssociees() ;
315
        $this->getListesAssociees() ;
312
        if (count($this->_listes_associes)) {
316
        if (count($this->_listes_associes)) {
313
            return true ;
317
            return true ;
314
        }
318
        }
315
        return false ;
319
        return false ;
316
    } // end of member function isListeExiste
320
    } // end of member function isListeExiste
317
 
321
 
318
 
322
 
319
    /**
323
    /**
320
     * Renvoie la liste des documents associés sous forme d'un tableau, avec les
324
     * Renvoie la liste des documents associés sous forme d'un tableau, avec les
321
     * informations afférentes. 0 => "nom (cliquable)"
325
     * informations afférentes. 0 => "nom (cliquable)"
322
     "Taille"
326
     "Taille"
323
     "Date
327
     "Date
324
     * de création"          "Proriétaire"          "Visibilité"          "Action
328
     * de création"          "Proriétaire"          "Visibilité"          "Action
325
     * (cliquable)"
329
     * (cliquable)"
326
     *
330
     *
327
     * @param visibilite visibilite Si visibilite est à prive, tous les fichiers sont renvoyés ainsi qu'une entrée
331
     * @param visibilite visibilite Si visibilite est à prive, tous les fichiers sont renvoyés ainsi qu'une entrée
328
     * pour indiquer la visibilité du document. 
332
     * pour indiquer la visibilité du document. 
329
     * @return Array
333
     * @return Array
330
     * @access public
334
     * @access public
331
     */
335
     */
332
    function getListesDocuments( $chemin, $chemin_icones = "icones/" )
336
    function getListesDocuments( $chemin, $chemin_icones = "icones/" )
333
    {
337
    {
334
        // On réalise une requete sur projet_documents avec une jointure sur l'annuaire
338
        // On réalise une requete sur projet_documents avec une jointure sur l'annuaire
335
        // et sur gen_type_de_fichier pour envoyer un résultat complet.
339
        // et sur gen_type_de_fichier pour envoyer un résultat complet.
336
        // On exclue les fichiers racines cad pd_pere is null
340
        // On exclue les fichiers racines cad pd_pere is null
337
        $requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' order by pd_nom' ;
341
        $requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' order by pd_nom' ;
338
        $resultat = $this->_db->query ($requete) ;
342
        $resultat = $this->_db->query ($requete) ;
339
        if (DB::isError($resultat)) {
343
        if (DB::isError($resultat)) {
340
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
344
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
341
        }
345
        }
342
        $tableau_document = array() ;
346
        $tableau_document = array() ;
343
        
347
        
344
        // Un compteur
348
        // Un compteur
345
        $i = 0 ;
349
        $i = 0 ;
346
        
350
        
347
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
351
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
348
            array_push ($tableau_document, new document ($ligne->pd_id, &$this->_db, $chemin, $chemin_icones)) ;
352
            array_push ($tableau_document, new document ($ligne->pd_id, &$this->_db, $chemin, $chemin_icones)) ;
349
        }
353
        }
350
        return $tableau_document ;
354
        return $tableau_document ;
351
    } // end of member function getListesDocuments
355
    } // end of member function getListesDocuments
352
 
356
 
353
 
357
 
354
    /**
358
    /**
355
     * Renvoie un tableau avec tous les répertoires d'un projet, imbriqué. ['rep1'],
359
     * Renvoie un tableau avec tous les répertoires d'un projet, imbriqué. ['rep1'],
356
     * ['rep2'] => array (['rep21'], 	['rep22']), etc .
360
     * ['rep2'] => array (['rep21'], 	['rep22']), etc .
357
     *
361
     *
358
     * @return Array
362
     * @return Array
359
     * @access public
363
     * @access public
360
     */
364
     */
361
    function getListeRepertoireHierarchisee( )
365
    function getListeRepertoireHierarchisee( )
362
    {
366
    {
363
        // On ne prend que les répertoires
367
        // On ne prend que les répertoires
364
        $requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' and pd_ce_type=0 order by pd_nom' ;
368
        $requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' and pd_ce_type=0 order by pd_nom' ;
365
        $resultat = $this->_db->query ($requete) ;
369
        $resultat = $this->_db->query ($requete) ;
366
        if (DB::isError($resultat)) {
370
        if (DB::isError($resultat)) {
367
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
371
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
368
        }
372
        }
369
        $tableau_document = array() ;
373
        $tableau_document = array() ;
370
        
374
        
371
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
375
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
372
            array_push ($tableau_document, new document ($ligne->pd_id, $this->_db));
376
            array_push ($tableau_document, new document ($ligne->pd_id, $this->_db));
373
        }
377
        }
374
        
378
        
375
        return $tableau_document ;
379
        return $tableau_document ;
376
    } // end of member function getListeRepertoireHierarchisee
380
    } // end of member function getListeRepertoireHierarchisee
377
 
381
 
378
 
382
 
379
    /**
383
    /**
380
     * Renvoie un tableau comprenant tous les objets projet de la base.
384
     * Renvoie un tableau comprenant tous les objets projet de la base.
381
     *
385
     *
382
     * @return Array
386
     * @return Array
383
     * @static
387
     * @static
384
     * @access public
388
     * @access public
385
     */
389
     */
386
    function getTousLesProjets(&$objetDB)
390
    function getTousLesProjets(&$objetDB)
387
    {
391
    {
388
        $requete = "select p_id from projet order by p_titre" ;
392
        $requete = "select p_id from projet order by p_titre" ;
389
        $resultat = $objetDB->query ($requete) ;
393
        $resultat = $objetDB->query ($requete) ;
390
        if (DB::isError($resultat)) {
394
        if (DB::isError($resultat)) {
391
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
395
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
392
        }
396
        }
393
        $tableau_resultat = array() ;
397
        $tableau_resultat = array() ;
394
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
398
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
395
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
399
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
396
        }
400
        }
397
        return $tableau_resultat ;
401
        return $tableau_resultat ;
398
    } // end of member function getTousLesProjets
402
    } // end of member function getTousLesProjets
399
 
403
 
400
    /**
404
    /**
-
 
405
     * Renvoie un tableau comprenant les objets projet de la base du type $type.
-
 
406
     *
-
 
407
     * @return Array
-
 
408
     * @static
-
 
409
     * @access public
-
 
410
     */
-
 
411
    function getProjetDuType($type, &$objetDB)
-
 
412
    {
-
 
413
        $requete = "select p_id from projet where p_type=$type order by p_titre" ;
-
 
414
        $resultat = $objetDB->query ($requete) ;
-
 
415
        if (DB::isError($resultat)) {
-
 
416
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
-
 
417
        }
-
 
418
        $tableau_resultat = array() ;
-
 
419
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
-
 
420
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
-
 
421
        }
-
 
422
        return $tableau_resultat ;
-
 
423
    } // end of member function getTousLesProjets
-
 
424
 
-
 
425
    /**
-
 
426
     * Renvoie un le projet racine.
-
 
427
     *
-
 
428
     * @return projet
-
 
429
     * @static
-
 
430
     * @access public
-
 
431
     */
-
 
432
    function getProjetRacine(&$objetDB)
-
 
433
    {
-
 
434
        $requete = "select p_id from projet where p_id not in (select ph_id_projet_fils from projet_hierarchie)" ;
-
 
435
        $resultat = $objetDB->query ($requete) ;
-
 
436
        if (DB::isError($resultat)) {
-
 
437
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
-
 
438
        }
-
 
439
        if ($resultat->numRows() == 1) {
-
 
440
            $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
-
 
441
            return new projet($objetDB, $ligne->p_id) ;
-
 
442
        }
-
 
443
        $tableau_resultat = array() ;
-
 
444
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
-
 
445
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
-
 
446
        }
-
 
447
        return $tableau_resultat ;
-
 
448
    } // end of member function getTousLesProjets
-
 
449
 
-
 
450
    /**
401
     * Desctructeur de la classe. Libère la mémoire, ferme les connexions et fichiers.
451
     * Desctructeur de la classe. Libère la mémoire, ferme les connexions et fichiers.
402
     *
452
     *
403
     * @return void
453
     * @return void
404
     * @access public
454
     * @access public
405
     */
455
     */
406
    function __destruct( )
456
    function __destruct( )
407
    {
457
    {
408
        
458
        
409
    } // end of member function __destruct
459
    } // end of member function __destruct
410
 
460
 
411
    /**
461
    /**
412
     * Supprime le projet courrant. Il s'ensuit une suppression en cascade de tous les
462
     * Supprime le projet courrant. Il s'ensuit une suppression en cascade de tous les
413
     * éléments liés.
463
     * éléments liés.
414
     *
464
     *
415
     * @return void
465
     * @return void
416
     * @access public
466
     * @access public
417
     */
467
     */
418
    function supprimer( )
468
    function supprimer( )
419
    {
469
    {
420
        
470
        
421
    } // end of member function supprimer
471
    } // end of member function supprimer
422
 
472
 
423
    /**
473
    /**
424
     * Permet d'enregistrer une ligne dans la table concernée.
474
     * Permet d'enregistrer une ligne dans la table concernée.
425
     *
475
     *
426
     * @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments
476
     * @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments
427
     * du formulaire.
477
     * du formulaire.
428
     * @return int
478
     * @return int
429
     * @access public
479
     * @access public
430
     */
480
     */
431
    function enregistrerSQL( $tableau_de_valeur )
481
    function enregistrerSQL( $tableau_de_valeur )
432
    {
482
    {
433
    	
-
 
434
        $nom_repertoire = projet::genereNomRepertoire($tableau_de_valeur['projet_titre'], $this->_db) ;
483
        $nom_repertoire = projet::genereNomRepertoire($tableau_de_valeur['projet_titre'], $this->_db) ;
435
        if (!$this->_creationRepertoire ($nom_repertoire)) {
484
        if (!$this->_creationRepertoire ($nom_repertoire)) {
436
            echo 'Impossible de crée un répertoire' ;
485
            echo 'Impossible de crée un répertoire'.$nom_repertoire ;
437
            return false ;
486
            return false ;
438
        }
487
        }
-
 
488
        // Traitement du type
-
 
489
        if (!PROJET_UTILISE_TYPE) {
-
 
490
            $tableau_de_valeur['projet_type'] = 0 ;
-
 
491
        }
439
        $id = SQL_obtenirNouveauId($this->_db, 'projet', 'p_id') ;
492
        $id = SQL_obtenirNouveauId($this->_db, 'projet', 'p_id') ;
440
        $requete = 'insert into projet set p_id='.$id ;
493
        $requete = 'insert into projet set p_id='.$id ;
441
        if (!isset($tableau_de_valeur['projet_wikini'])) {
-
 
442
        	$tableau_de_valeur['projet_wikini']='';
-
 
443
        }
-
 
444
        $requete .= ', p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
494
        $requete .= ', p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
445
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'", p_date_creation=NOW()'.
495
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'", p_date_creation=NOW()'.
446
                    ', p_wikini="'.$tableau_de_valeur['projet_wikini'].'", p_nom_repertoire="'.$nom_repertoire.'", p_resume="'.$tableau_de_valeur['projet_resume'].'"' ;
496
                    ', p_wikini="'.$tableau_de_valeur['projet_wikini'].'", p_nom_repertoire="'.$nom_repertoire.'", p_resume="'.$tableau_de_valeur['projet_resume'].
-
 
497
                    '", p_type='.$tableau_de_valeur['projet_type'] ;
447
        $resultat = $this->_db->query ($requete) ;
498
        $resultat = $this->_db->query ($requete) ;
448
        if (DB::isError($resultat)) {
499
        if (DB::isError($resultat)) {
449
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
500
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
450
        }
501
        }
451
        //insertion dans projet_hiérarchie
502
        //insertion dans projet_hiérarchie
452
 
503
 
453
        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
504
        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
454
                    ', ph_id_projet_fils='.$id ;
505
                    ', ph_id_projet_fils='.$id ;
455
        $resultat = $this->_db->query ($requete) ;
506
        $resultat = $this->_db->query ($requete) ;
456
        
507
        
457
        return true ;
508
        return true ;
458
    } // end of member function enregistrerSQL
509
    } // end of member function enregistrerSQL
459
 
510
 
460
    /**
511
    /**
461
     * Permet de mettre à jour une ligne dans la table concernée.
512
     * Permet de mettre à jour une ligne dans la table concernée.
462
     *
513
     *
463
     * @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments
514
     * @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments
464
     * du formulaire.
515
     * du formulaire.
465
     * @return int
516
     * @return int
466
     * @access public
517
     * @access public
467
     */
518
     */
468
    function majSQL( $tableau_de_valeur )
519
    function majSQL( $tableau_de_valeur )
469
    {
520
    {
-
 
521
        // Traitement du type
-
 
522
        if (!PROJET_UTILISE_TYPE) {
-
 
523
            $tableau_de_valeur['projet_type'] = 0 ;
-
 
524
        }
470
        $requete = 'update projet set ';
525
        $requete = 'update projet set ';
471
        $requete .= 'p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
526
        $requete .= 'p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
472
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'"'.
527
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'"'.
473
                    ', p_resume="'.$tableau_de_valeur['projet_resume'].'"'.
528
                    ', p_resume="'.$tableau_de_valeur['projet_resume'].'", p_type='.$tableau_de_valeur['projet_type'].
474
                    ' where p_id="'.$this->_id_projet.'"' ;
529
                    ' where p_id="'.$this->_id_projet.'"' ;
475
        $resultat = $this->_db->query ($requete) ;
530
        $resultat = $this->_db->query ($requete) ;
476
        if (DB::isError($resultat)) {
531
        if (DB::isError($resultat)) {
477
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
532
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
478
        }
533
        }
479
        
534
        
480
        // suppression dans projet_hierarchie
535
        // suppression dans projet_hierarchie
481
        
536
        
482
        $requete = 'delete from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
537
        $requete = 'delete from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
483
        $resultat = $this->_db->query ($requete) ;
538
        $resultat = $this->_db->query ($requete) ;
484
        
539
        
485
        //insertion dans projet_hiérarchie
540
        //insertion dans projet_hiérarchie
486
 
541
 
487
        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
542
        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
488
                    ', ph_id_projet_fils='.$this->_id_projet ;
543
                    ', ph_id_projet_fils='.$this->_id_projet ;
489
        $resultat = $this->_db->query ($requete) ;
544
        $resultat = $this->_db->query ($requete) ;
490
        return true ;
545
        return true ;
491
    } // end of member function enregistrerSQL
546
    } // end of member function enregistrerSQL
492
 
547
 
493
    /**
548
    /**
494
     * Met à jour dans la base de donnée le champs p_nom_wikini
549
     * Met à jour dans la base de donnée le champs p_nom_wikini
495
     *
550
     *
496
     * @param int nom_wikini Le nouveau nom wikini
551
     * @param int nom_wikini Le nouveau nom wikini
497
     * @return bool
552
     * @return bool
498
     * @access public
553
     * @access public
499
     */
554
     */
500
    function majNomWikini( $nom_wikini )
555
    function majNomWikini( $nom_wikini )
501
    {
556
    {
502
        $requete = 'update projet set p_wikini="'.$nom_wikini.'" where p_id="'.$this->_id_projet.'"' ;
557
        $requete = 'update projet set p_wikini="'.$nom_wikini.'" where p_id="'.$this->_id_projet.'"' ;
503
        $resultat = $this->_db->query ($requete) ;
558
        $resultat = $this->_db->query ($requete) ;
504
        if (DB::isError ($resultat)) {
559
        if (DB::isError ($resultat)) {
505
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
560
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
506
        }
561
        }
507
        return true ;
562
        return true ;
508
    } // end of member function majNomWikini
563
    } // end of member function majNomWikini
509
 
564
 
510
 
565
 
511
    /**
566
    /**
512
     * 
567
     * 
513
     *
568
     *
514
     * @param string code_sql 
569
     * @param string code_sql 
515
     * @return bool
570
     * @return bool
516
     * @access public
571
     * @access public
517
     */
572
     */
518
    function suppressionSQL()
573
    function suppressionSQL()
519
    {
574
    {
520
        $msg = '' ;
575
        $msg = '' ;
521
        // Supression du répertoire du projet
576
        // Supression du répertoire du projet
522
        if (!$this->_suppression_repertoire()) {
577
        if (!$this->_suppression_repertoire()) {
523
            $msg = 'La suppression du répertoire n\'a pas fonctionné' ;
578
            $msg = 'La suppression du répertoire n\'a pas fonctionné' ;
524
        }
579
        }
525
        // A ajouter la suppression des documents associés
580
        // A ajouter la suppression des documents associés
526
        
581
        
527
        // La suppression des évènements associés
582
        // La suppression des évènements associés
528
        
583
        
529
        // Le projet lui-même
584
        // Le projet lui-même
530
        $requete = "delete from projet where p_id=".$this->_id_projet ;
585
        $requete = "delete from projet where p_id=".$this->_id_projet ;
531
        $resultat = $this->_db->query ($requete) ;
586
        $resultat = $this->_db->query ($requete) ;
532
        
587
        
533
        $requete = "delete from projet_hierarchie where ph_id_projet_fils=".$this->_id_projet ;
588
        $requete = "delete from projet_hierarchie where ph_id_projet_fils=".$this->_id_projet ;
534
        $resultat = $this->_db->query ($requete) ;
589
        $resultat = $this->_db->query ($requete) ;
535
        
590
        
536
        $requete = "delete from projet_statut_utilisateurs where psu_id_projet=".$this->_id_projet ;
591
        $requete = "delete from projet_statut_utilisateurs where psu_id_projet=".$this->_id_projet ;
537
        $resultat = $this->_db->query ($requete) ;
592
        $resultat = $this->_db->query ($requete) ;
538
        return $msg ;
593
        return $msg ;
539
    } // end of member function suppressionSQL
594
    } // end of member function suppressionSQL
540
 
595
 
541
    /**
596
    /**
542
     * Supprime le répertoire associé au projet (le répertoire doit être vide).
597
     * Supprime le répertoire associé au projet (le répertoire doit être vide).
543
     *
598
     *
544
     * @return void
599
     * @return void
545
     * @access private
600
     * @access private
546
     */
601
     */
547
    function _suppression_repertoire( )
602
    function _suppression_repertoire( )
548
    {
603
    {
549
        return rmdir ($this->_chemin_repertoire.$this->_nom_repertoire) ;
604
        return rmdir ($this->_chemin_repertoire.$this->_nom_repertoire) ;
550
    } // end of member function _suppression_repertoire
605
    } // end of member function _suppression_repertoire
551
 
606
 
552
    /**
607
    /**
553
     * Permet de créer le répertoire associé au projet.
608
     * Permet de créer le répertoire associé au projet.
554
     *
609
     *
555
     * @param string nom_repertoire Le nom du répertoire à créer.
610
     * @param string nom_repertoire Le nom du répertoire à créer.
556
     * @return boolean
611
     * @return boolean
557
     * @access private
612
     * @access private
558
     */
613
     */
559
    function _creationRepertoire( $nom_repertoire )
614
    function _creationRepertoire( $nom_repertoire )
560
    {
615
    {
561
        return mkdir ($this->_chemin_repertoire.$nom_repertoire) ;
616
        return mkdir ($this->_chemin_repertoire.$nom_repertoire) ;
562
    } // end of member function _creationRepertoire
617
    } // end of member function _creationRepertoire
563
 
618
 
564
    /**
619
    /**
565
     * Permet d'indiquer où seront stockés les fichiers.
620
     * Permet d'indiquer où seront stockés les fichiers.
566
     *
621
     *
567
     * @param string cheminRepertoire Le chemin jusqu'au répertoire où seront stockés les fichiers.
622
     * @param string cheminRepertoire Le chemin jusqu'au répertoire où seront stockés les fichiers.
568
     * @return void
623
     * @return void
569
     * @access public
624
     * @access public
570
     */
625
     */
571
    function setCheminRepertoire( $cheminRepertoire )
626
    function setCheminRepertoire( $cheminRepertoire )
572
    {
627
    {
573
        $this->_chemin_repertoire = $cheminRepertoire ;
628
        $this->_chemin_repertoire = $cheminRepertoire ;
574
    } // end of member function setCheminRepertoire
629
    } // end of member function setCheminRepertoire
575
 
630
 
576
    /**
631
    /**
577
     * Génère un nom de répertoire à partir de la première lettre de la chaine passé en
632
     * Génère un nom de répertoire à partir de la première lettre de la chaine passé en
578
     * paramètre et de l'identifiant du dernier projet.
633
     * paramètre et de l'identifiant du dernier projet.
579
     *
634
     *
580
     * @param string chaine Une chaine à partir de laquelle sera générer le nom du répertoire.
635
     * @param string chaine Une chaine à partir de laquelle sera générer le nom du répertoire.
581
     * @param DB objetDB un objet PEAR::DB
636
     * @param DB objetDB un objet PEAR::DB
582
     * @return string
637
     * @return string
583
     * @static
638
     * @static
584
     * @access public
639
     * @access public
585
     */
640
     */
586
    function genereNomRepertoire( $chaine, &$objetDB )
641
    function genereNomRepertoire( $chaine, &$objetDB )
587
    {
642
    {
588
        $requete = "select p_id from projet order by p_id desc limit 0,1" ;
643
        $requete = "select p_id from projet order by p_id desc limit 0,1" ;
589
        $resultat = $objetDB->query ($requete) ;
644
        $resultat = $objetDB->query ($requete) ;
590
        if (DB::isError ($resultat)) {
645
        if (DB::isError ($resultat)) {
591
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
646
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
592
        }
647
        }
593
        if ($resultat->numRows() > 0) {
-
 
594
	        $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
648
        $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
595
	        $nom = strtoupper(substr($chaine, 0, 1)) ;
649
        $nom = strtoupper(substr($chaine, 0, 1)) ;
596
	        $nom .= $ligne->p_id + 1 ;
650
        $nom .= $ligne->p_id + 1 ;
597
        }
-
 
598
	    else {
-
 
599
	    	$nom = strtoupper(substr($chaine, 0, 1)) ;
-
 
600
	        $nom .=  1 ;
-
 
601
	    }
-
 
602
        return $nom ;
651
        return $nom ;
603
        
652
        
604
    } // end of member function genereNomRepertoire
653
    } // end of member function genereNomRepertoire
605
 
654
 
606
    /**
655
    /**
607
     * Permet de récupérer le nom du répertoire d'un projet.
656
     * Permet de récupérer le nom du répertoire d'un projet.
608
     *
657
     *
609
     * @return string
658
     * @return string
610
     * @access public
659
     * @access public
611
     */
660
     */
612
    function getNomRepertoire( )
661
    function getNomRepertoire( )
613
    {
662
    {
614
        return $this->_nom_repertoire ;
663
        return $this->_nom_repertoire ;
615
    } // end of member function getNomRepertoire
664
    } // end of member function getNomRepertoire
616
 
665
 
617
    /**
666
    /**
618
     *  Ajoute une liste à un projet
667
     *  Ajoute une liste à un projet
619
     *  Effectue une insertion dans projet_lien_liste
668
     *  Effectue une insertion dans projet_lien_liste
620
     *
669
     *
621
     * @param liste_discussion liste Une instance de la classe liste_discussion
670
     * @param liste_discussion liste Une instance de la classe liste_discussion
622
     * @return void
671
     * @return void
623
     * @access public
672
     * @access public
624
     */
673
     */
625
    function ajouterListe( &$liste )
674
    function ajouterListe( &$liste )
626
    {
675
    {
627
        $requete = "insert into projet_lien_liste set pl_id_liste=".$liste->getId().
676
        $requete = "insert into projet_lien_liste set pl_id_liste=".$liste->getId().
628
                    ', pl_id_projet='.$this->_id_projet ;
677
                    ', pl_id_projet='.$this->_id_projet ;
629
        $resultat = $this->_db->query ($requete) ;
678
        $resultat = $this->_db->query ($requete) ;
630
        if (DB::isError ($resultat)) {
679
        if (DB::isError ($resultat)) {
631
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
680
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
632
        }
681
        }
633
    } // end of member function ajouterListe
682
    } // end of member function ajouterListe
634
 
683
 
635
    /**
684
    /**
636
     * Supprime la liste de discussion associée au projet
685
     * Supprime la liste de discussion associée au projet
637
     *
686
     *
638
     * @return void
687
     * @return void
639
     * @access public
688
     * @access public
640
     */
689
     */
641
    function supprimerListe(&$liste)
690
    function supprimerListe(&$liste)
642
    {
691
    {
643
        $requete = 'delete from projet_lien_liste where pl_id_liste='.$liste->getId() ;
692
        $requete = 'delete from projet_lien_liste where pl_id_liste='.$liste->getId() ;
644
        $resultat = $this->_db->query ($requete) ;
693
        $resultat = $this->_db->query ($requete) ;
645
        if (DB::isError ($resultat)) {
694
        if (DB::isError ($resultat)) {
646
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
695
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
647
        }
696
        }
648
        $requete = 'delete from projet_liste where pl_id_liste='.$liste->getId() ;
697
        $requete = 'delete from projet_liste where pl_id_liste='.$liste->getId() ;
649
        $resultat = $this->_db->query ($requete) ;
698
        $resultat = $this->_db->query ($requete) ;
650
        if (DB::isError ($resultat)) {
699
        if (DB::isError ($resultat)) {
651
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
700
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
652
        }
701
        }
653
    } // end of member function supprimerListe
702
    } // end of member function supprimerListe
654
 
703
 
655
 
704
 
656
    /**
705
    /**
657
     * Renvoie vrai si le projet est racine.
706
     * Renvoie vrai si le projet est racine.
658
     *
707
     *
659
     * @return bool
708
     * @return bool
660
     * @access public
709
     * @access public
661
     */
710
     */
662
    function isRacine( )
711
    function isRacine( )
663
    {
712
    {
664
        return $this->_est_racine ;
713
        return $this->_est_racine ;
665
    } // end of member function isRacine
714
    } // end of member function isRacine
666
 
715
 
667
    /**
716
    /**
668
     * Renvoie le nombre d'inscrits au projet. Effectue une requete dans la table
717
     * Renvoie le nombre d'inscrits au projet. Effectue une requete dans la table
669
     * projet_statut_utilisateurs
718
     * projet_statut_utilisateurs
670
     *
719
     *
671
     * @return int
720
     * @return int
672
     * @access public
721
     * @access public
673
     */
722
     */
674
    function getNombreInscrits( )
723
    function getNombreInscrits( )
675
    {
724
    {
676
        $requete = 'select count(psu_id_utilisateur) as nbre from projet_statut_utilisateurs where psu_id_projet='.$this->_id_projet ;
725
        $requete = 'select count(psu_id_utilisateur) as nbre from projet_statut_utilisateurs where psu_id_projet='.$this->_id_projet ;
677
        $resultat = $this->_db->query ($requete) ;
726
        $resultat = $this->_db->query ($requete) ;
678
        if (DB::isError ($resultat)) {
727
        if (DB::isError ($resultat)) {
679
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
728
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
680
        }
729
        }
681
        $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
730
        $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
682
        return $ligne->nbre ;
731
        return $ligne->nbre ;
683
    } // end of member function getNombreInscrits
732
    } // end of member function getNombreInscrits
684
 
733
 
685
 
734
 
686
    /**
735
    /**
687
     * Renvoie un tableau contenant les identifiants des fils du projet courant.
736
     * Renvoie un tableau contenant les identifiants des fils du projet courant.
688
     *
737
     *
689
     * @return Array
738
     * @return Array
690
     * @access public
739
     * @access public
691
     */
740
     */
692
    function getHierarchie( )
741
    function getHierarchie( )
693
    {
742
    {
694
        $requete = 'select ph_id_projet_fils from projet_hierarchie where ph_id_projet_pere='.$this->_id_projet ;
743
        $requete = 'select ph_id_projet_fils from projet_hierarchie where ph_id_projet_pere='.$this->_id_projet ;
695
        $resultat = $this->_db->query ($requete) ;
744
        $resultat = $this->_db->query ($requete) ;
696
        if (DB::isError ($resultat)) {
745
        if (DB::isError ($resultat)) {
697
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
746
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
698
        }
747
        }
699
        $tableau_resultat = array() ;
748
        $tableau_resultat = array() ;
700
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
749
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
701
            array_push ($tableau_resultat, $ligne->ph_id_projet_fils) ;
750
            array_push ($tableau_resultat, $ligne->ph_id_projet_fils) ;
702
        }
751
        }
703
        return $tableau_resultat ;
752
        return $tableau_resultat ;
704
    } // end of member function getHierarchie
753
    } // end of member function getHierarchie
705
    
754
    
706
    /**
755
    /**
707
     * Renvoie l'identifiant du pere du projet courrant.
756
     * Renvoie l'identifiant du pere du projet courrant.
708
     *
757
     *
709
     * @return int
758
     * @return int
710
     * @access public
759
     * @access public
711
     */
760
     */
712
    function getIdPere()
761
    function getIdPere()
713
    {
762
    {
714
        $requete = 'select ph_id_projet_pere from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
763
        $requete = 'select ph_id_projet_pere from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
715
        $resultat = $this->_db->query ($requete) ;
764
        $resultat = $this->_db->query ($requete) ;
716
        if (DB::isError ($resultat)) {
765
        if (DB::isError ($resultat)) {
717
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
766
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
718
        }
767
        }
719
        $tableau_resultat = array() ;
768
        $tableau_resultat = array() ;
720
        $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
769
        $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
721
        return $ligne->ph_id_projet_pere ;
770
        return $ligne->ph_id_projet_pere ;
722
    } // end of member function getIdPere()
771
    } // end of member function getIdPere()
723
 
772
 
724
    /**
773
    /**
725
     * Renvoie le nom Wiki du wikini associé au projet.
774
     * Renvoie le nom Wiki du wikini associé au projet.
726
     *
775
     *
727
     * @return string
776
     * @return string
728
     * @access public
777
     * @access public
729
     */
778
     */
730
    function getWikini( )
779
    function getWikini( )
731
    {
780
    {
732
        return $this->_nom_wikini ;
781
        return $this->_nom_wikini ;
733
    } // end of member function getWikini
782
    } // end of member function getWikini
-
 
783
 
-
 
784
    /**
-
 
785
     * Renvoie le type du projet, ou zéro si le projet n'a pas de type.
-
 
786
     *
-
 
787
     * @return int
-
 
788
     * @access public
-
 
789
     */
-
 
790
    function getType( )
-
 
791
    {
-
 
792
        return $this->_type ;
-
 
793
    } // end of member function getType
734
 
794
 
735
 
795
 
736
 
796
 
737
 
797
 
738
 
798
 
739
    /**
799
    /**
740
     * initAttributes sets all projet attributes to its default                    value make
800
     * initAttributes sets all projet attributes to its default                    value make
741
     * sure to call this method within your class constructor
801
     * sure to call this method within your class constructor
742
     */
802
     */
743
    function initAttributes( )
803
    function initAttributes( )
744
    {
804
    {
745
        $this->chemin_wikini = "projet/wikini/";
805
        $this->chemin_wikini = "projet/wikini/";
746
    }
806
    }
747
 
807
 
748
 
808
 
749
} // end of projet
809
} // end of projet
750
?>
810
?>