Subversion Repositories Applications.papyrus

Rev

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

Rev 481 Rev 535
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.4 2005-09-28 16:29:39 ddelon Exp $
22
// CVS : $Id: projet.class.php,v 1.5 2005-10-14 08:50:37 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.4 $
34
*@version       $Revision: 1.5 $
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
    /**
140
    /**
141
     * Contient le numéro du type du projet
141
     * Contient le numéro du type du projet
142
     * @access private
142
     * @access private
143
     */
143
     */
144
    var $_type;
144
    var $_type;
145
 
145
 
146
    /**
146
    /**
147
     * 
147
     * 
148
     * PHP5 
148
     * PHP5 
149
     * @return projet
149
     * @return projet
150
     * @access public
150
     * @access public
151
     */
151
     */
152
    function __construct( &$dbObject,  $id_projet = "")
152
    function __construct( &$dbObject,  $id_projet = "")
153
    {
153
    {
154
      $this->projet($dbObject,  $id_projet);
154
      $this->projet($dbObject,  $id_projet);
155
      
155
      
156
    } // end of member function __construct
156
    } // end of member function __construct
157
 
157
 
158
    /**
158
    /**
159
     * 
159
     * 
160
     *
160
     *
161
     * @param DB dbObject Un objet PEAR:DB
161
     * @param DB dbObject Un objet PEAR:DB
162
     * @param int id_projet On passe un identifiant de projet au constructeur. Cela lui permet de faire une
162
     * @param int id_projet On passe un identifiant de projet au constructeur. Cela lui permet de faire une
163
     * première requête pour les infos de bases comme le titre, le description etc.
163
     * première requête pour les infos de bases comme le titre, le description etc.
164
     * @return projet
164
     * @return projet
165
     * @access public
165
     * @access public
166
     */
166
     */
167
    function projet( &$dbObject,  $id_projet = "")
167
    function projet( &$dbObject,  $id_projet = "")
168
    {
168
    {
169
        $this->_db = $dbObject ;
169
        $this->_db = $dbObject ;
170
        if ($id_projet != "") {
170
        if ($id_projet != "") {
171
            $requete = "select * from projet where p_id=$id_projet" ;
171
            $requete = "select * from projet where p_id=$id_projet" ;
172
            $resultat = $this->_db->query ($requete) ;
172
            $resultat = $this->_db->query ($requete) ;
173
            if (DB::isError($resultat)) {
173
            if (DB::isError($resultat)) {
174
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
174
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
175
            }
175
            }
176
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
176
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
177
            
177
            
178
            // Affectations dans les propriétés
178
            // Affectations dans les propriétés
179
            $this->_id_projet = $ligne->p_id ;
179
            $this->_id_projet = $ligne->p_id ;
180
            $this->_titre = $ligne->p_titre ;
180
            $this->_titre = $ligne->p_titre ;
181
            $this->_description = $ligne->p_description ;
181
            $this->_description = $ligne->p_description ;
182
            $this->_espace_internet = $ligne->p_espace_internet ;
182
            $this->_espace_internet = $ligne->p_espace_internet ;
183
            $this->_date_creation = $ligne->p_date_creation ;
183
            $this->_date_creation = $ligne->p_date_creation ;
184
            $this->_nom_wikini = $ligne->p_wikini ;
184
            $this->_nom_wikini = $ligne->p_wikini ;
185
            $this->_resume = $ligne->p_resume;
185
            $this->_resume = $ligne->p_resume;
186
            $this->_type = $ligne->p_type ;
186
            $this->_type = $ligne->p_type ;
187
            // On récupère le nom du répertoire
187
            // On récupère le nom du répertoire
188
            $this->_nom_repertoire = $ligne->p_nom_repertoire ;
188
            $this->_nom_repertoire = $ligne->p_nom_repertoire ;
189
            
189
            
190
            // on regarde si on a à faire au projet racine
190
            // on regarde si on a à faire au projet racine
-
 
191
            if (PROJET_UTILISE_HIERARCHIE) {
191
            $requete = 'select  ph_id_projet_pere, ph_id_projet_fils from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
192
	            $requete = 'select  ph_id_projet_pere, ph_id_projet_fils from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
192
            $resultat = $this->_db->query ($requete) ;
193
	            $resultat = $this->_db->query ($requete) ;
193
            if (DB::isError ($resultat)) {
194
	            if (DB::isError ($resultat)) {
194
                die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
195
	                die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
195
            }
196
	            }
196
            if (!$resultat->numRows()) {
197
	            if (!$resultat->numRows()) {
197
                $this->_est_racine = true ;
198
	                $this->_est_racine = true ;
198
            } else {
199
	            } else {
199
                $this->_est_racine = false ;
200
	                $this->_est_racine = false ;
-
 
201
	            }
200
            }
202
            }
201
        }
203
        }
202
    } // end of member function projet
204
    } // end of member function projet
203
 
205
 
204
    /**
206
    /**
205
     * 
207
     * 
206
     *
208
     *
207
     * @param DB dbObject Un objet PEAR:DB
209
     * @param DB dbObject Un objet PEAR:DB
208
     * @param int id_projet On passe un identifiant de projet au constructeur.
210
     * @param int id_projet On passe un identifiant de projet au constructeur.
209
     * @return bool 
211
     * @return bool 
210
     * @access public
212
     * @access public
211
     */
213
     */
212
    function projetExiste( &$dbObject,  $id_projet)
214
    function projetExiste( &$dbObject,  $id_projet)
213
    {
215
    {
214
        if ($id_projet != "") {
216
        if ($id_projet != "") {
215
            $requete = "select * from projet where p_id=$id_projet" ;
217
            $requete = "select * from projet where p_id=$id_projet" ;
216
            $resultat = $dbObject->query ($requete) ;
218
            $resultat = $dbObject->query ($requete) ;
217
            if (DB::isError($resultat)) {
219
            if (DB::isError($resultat)) {
218
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
220
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
219
            }
221
            }
220
            if ($resultat->numRows() != 0) {
222
            if ($resultat->numRows() != 0) {
221
                return true ;
223
                return true ;
222
            }
224
            }
223
        }
225
        }
224
    } // end of member function projet
226
    } // end of member function projet
225
    
227
    
226
    /**
228
    /**
227
     * 
229
     * 
228
     *
230
     *
229
     * @param int id_projet 
231
     * @param int id_projet 
230
     * @return string
232
     * @return string
231
     * @access public
233
     * @access public
232
     */
234
     */
233
    function getTitre( $id_projet = "" )
235
    function getTitre( $id_projet = "" )
234
    {
236
    {
235
        return $this->_titre ;
237
        return $this->_titre ;
236
    } // end of member function getTitre
238
    } // end of member function getTitre
237
    
239
    
238
    /**
240
    /**
239
     * 
241
     * 
240
     *
242
     *
241
     * @return string
243
     * @return string
242
     * @access public
244
     * @access public
243
     */
245
     */
244
    function getResume( )
246
    function getResume( )
245
    {
247
    {
246
        return $this->_resume ;
248
        return $this->_resume ;
247
    } // end of member function getResume
249
    } // end of member function getResume
248
 
250
 
249
    /**
251
    /**
250
     * Renvoie l'identifiant du projet courant.
252
     * Renvoie l'identifiant du projet courant.
251
     *
253
     *
252
     * @return int
254
     * @return int
253
     * @access public
255
     * @access public
254
     */
256
     */
255
    function getId( )
257
    function getId( )
256
    {
258
    {
257
        return $this->_id_projet ;
259
        return $this->_id_projet ;
258
    } // end of member function getId
260
    } // end of member function getId
259
 
261
 
260
    /**
262
    /**
261
     * 
263
     * 
262
     *
264
     *
263
     * @return string
265
     * @return string
264
     * @access public
266
     * @access public
265
     */
267
     */
266
    function getDescription( )
268
    function getDescription( )
267
    {
269
    {
268
        return $this->_description;
270
        return $this->_description;
269
    } // end of member function getDescription
271
    } // end of member function getDescription
270
 
272
 
271
    /**
273
    /**
272
     * 
274
     * 
273
     *
275
     *
274
     * @return string
276
     * @return string
275
     * @access public
277
     * @access public
276
     */
278
     */
277
    function getEspaceInternet( )
279
    function getEspaceInternet( )
278
    {
280
    {
279
        return $this->_espace_internet;
281
        return $this->_espace_internet;
280
    } // end of member function getEspaceInternet
282
    } // end of member function getEspaceInternet
281
 
283
 
282
    /**
284
    /**
283
     * Charge dans l'objet projet, les listes de discussion
285
     * Charge dans l'objet projet, les listes de discussion
284
     * ['nom_liste']
286
     * ['nom_liste']
285
     * ['domaine']
287
     * ['domaine']
286
     * ['adresse']
288
     * ['adresse']
287
     *
289
     *
288
     * @return boolean  true en cas de succès
290
     * @return boolean  true en cas de succès
289
     * @access public
291
     * @access public
290
     */
292
     */
291
    function getListesAssociees( )
293
    function getListesAssociees( )
292
    {
294
    {
293
        // On rajoute un test pour éviter l'appel SQL si il a déjà été fait une fois
295
        // On rajoute un test pour éviter l'appel SQL si il a déjà été fait une fois
294
        if (count($this->_listes_associes) > 0) return ;
296
        if (count($this->_listes_associes) > 0) return ;
295
        $requete = "select pl_id_liste from projet_lien_liste where pl_id_projet=".$this->_id_projet ;
297
        $requete = "select pl_id_liste from projet_lien_liste where pl_id_projet=".$this->_id_projet ;
296
        $resultat = $this->_db->query ($requete) ;
298
        $resultat = $this->_db->query ($requete) ;
297
        if (DB::isError ($resultat)) {
299
        if (DB::isError ($resultat)) {
298
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
300
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
299
        }
301
        }
300
        $retour = array() ;
302
        $retour = array() ;
301
        if ($resultat->numRows()) {
303
        if ($resultat->numRows()) {
302
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
304
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
303
            $this->_listes_associes[] = new liste_discussion($ligne->pl_id_liste, $this->_db) ;
305
            $this->_listes_associes[] = new liste_discussion($ligne->pl_id_liste, $this->_db) ;
304
            
306
            
305
        }
307
        }
306
    } // end of member function getListesAssociees
308
    } // end of member function getListesAssociees
307
 
309
 
308
    /**
310
    /**
309
     * Renvoie vrai si le projet a au moins une liste
311
     * Renvoie vrai si le projet a au moins une liste
310
     *
312
     *
311
     * @return bool
313
     * @return bool
312
     * @access public
314
     * @access public
313
     */
315
     */
314
    function avoirListe( )
316
    function avoirListe( )
315
    {
317
    {
316
        $this->getListesAssociees() ;
318
        $this->getListesAssociees() ;
317
        if (count($this->_listes_associes)) {
319
        if (count($this->_listes_associes)) {
318
            return true ;
320
            return true ;
319
        }
321
        }
320
        return false ;
322
        return false ;
321
    } // end of member function isListeExiste
323
    } // end of member function isListeExiste
322
 
324
 
323
 
325
 
324
    /**
326
    /**
325
     * Renvoie la liste des documents associés sous forme d'un tableau, avec les
327
     * Renvoie la liste des documents associés sous forme d'un tableau, avec les
326
     * informations afférentes. 0 => "nom (cliquable)"
328
     * informations afférentes. 0 => "nom (cliquable)"
327
     "Taille"
329
     "Taille"
328
     "Date
330
     "Date
329
     * de création"          "Proriétaire"          "Visibilité"          "Action
331
     * de création"          "Proriétaire"          "Visibilité"          "Action
330
     * (cliquable)"
332
     * (cliquable)"
331
     *
333
     *
332
     * @param visibilite visibilite Si visibilite est à prive, tous les fichiers sont renvoyés ainsi qu'une entrée
334
     * @param visibilite visibilite Si visibilite est à prive, tous les fichiers sont renvoyés ainsi qu'une entrée
333
     * pour indiquer la visibilité du document. 
335
     * pour indiquer la visibilité du document. 
334
     * @return Array
336
     * @return Array
335
     * @access public
337
     * @access public
336
     */
338
     */
337
    function getListesDocuments( $chemin, $chemin_icones = "icones/" )
339
    function getListesDocuments( $chemin, $chemin_icones = "icones/" )
338
    {
340
    {
339
        // On réalise une requete sur projet_documents avec une jointure sur l'annuaire
341
        // On réalise une requete sur projet_documents avec une jointure sur l'annuaire
340
        // et sur gen_type_de_fichier pour envoyer un résultat complet.
342
        // et sur gen_type_de_fichier pour envoyer un résultat complet.
341
        // On exclue les fichiers racines cad pd_pere is null
343
        // On exclue les fichiers racines cad pd_pere is null
342
        $requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' order by pd_nom' ;
344
        $requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' order by pd_nom' ;
343
        $resultat = $this->_db->query ($requete) ;
345
        $resultat = $this->_db->query ($requete) ;
344
        if (DB::isError($resultat)) {
346
        if (DB::isError($resultat)) {
345
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
347
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
346
        }
348
        }
347
        $tableau_document = array() ;
349
        $tableau_document = array() ;
348
        
350
        
349
        // Un compteur
351
        // Un compteur
350
        $i = 0 ;
352
        $i = 0 ;
351
        
353
        
352
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
354
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
353
            array_push ($tableau_document, new document ($ligne->pd_id, &$this->_db, $chemin, $chemin_icones)) ;
355
            array_push ($tableau_document, new document ($ligne->pd_id, &$this->_db, $chemin, $chemin_icones)) ;
354
        }
356
        }
355
        return $tableau_document ;
357
        return $tableau_document ;
356
    } // end of member function getListesDocuments
358
    } // end of member function getListesDocuments
357
 
359
 
358
 
360
 
359
    /**
361
    /**
360
     * Renvoie un tableau avec tous les répertoires d'un projet, imbriqué. ['rep1'],
362
     * Renvoie un tableau avec tous les répertoires d'un projet, imbriqué. ['rep1'],
361
     * ['rep2'] => array (['rep21'], 	['rep22']), etc .
363
     * ['rep2'] => array (['rep21'], 	['rep22']), etc .
362
     *
364
     *
363
     * @return Array
365
     * @return Array
364
     * @access public
366
     * @access public
365
     */
367
     */
366
    function getListeRepertoireHierarchisee( )
368
    function getListeRepertoireHierarchisee( )
367
    {
369
    {
368
        // On ne prend que les répertoires
370
        // On ne prend que les répertoires
369
        $requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' and pd_ce_type=0 order by pd_nom' ;
371
        $requete = "select pd_id from projet_documents where pd_ce_projet=".$this->_id_projet.' and pd_ce_type=0 order by pd_nom' ;
370
        $resultat = $this->_db->query ($requete) ;
372
        $resultat = $this->_db->query ($requete) ;
371
        if (DB::isError($resultat)) {
373
        if (DB::isError($resultat)) {
372
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
374
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
373
        }
375
        }
374
        $tableau_document = array() ;
376
        $tableau_document = array() ;
375
        
377
        
376
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
378
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
377
            array_push ($tableau_document, new document ($ligne->pd_id, $this->_db));
379
            array_push ($tableau_document, new document ($ligne->pd_id, $this->_db));
378
        }
380
        }
379
        
381
        
380
        return $tableau_document ;
382
        return $tableau_document ;
381
    } // end of member function getListeRepertoireHierarchisee
383
    } // end of member function getListeRepertoireHierarchisee
382
 
384
 
383
 
385
 
384
    /**
386
    /**
385
     * Renvoie un tableau comprenant tous les objets projet de la base.
387
     * Renvoie un tableau comprenant tous les objets projet de la base.
386
     *
388
     *
387
     * @return Array
389
     * @return Array
388
     * @static
390
     * @static
389
     * @access public
391
     * @access public
390
     */
392
     */
391
    function getTousLesProjets(&$objetDB)
393
    function getTousLesProjets(&$objetDB)
392
    {
394
    {
393
        $requete = "select p_id from projet order by p_titre" ;
395
        $requete = "select p_id from projet order by p_titre" ;
394
        $resultat = $objetDB->query ($requete) ;
396
        $resultat = $objetDB->query ($requete) ;
395
        if (DB::isError($resultat)) {
397
        if (DB::isError($resultat)) {
396
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
398
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
397
        }
399
        }
398
        $tableau_resultat = array() ;
400
        $tableau_resultat = array() ;
399
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
401
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
400
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
402
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
401
        }
403
        }
402
        return $tableau_resultat ;
404
        return $tableau_resultat ;
403
    } // end of member function getTousLesProjets
405
    } // end of member function getTousLesProjets
404
 
406
 
405
    /**
407
    /**
406
     * Renvoie un tableau comprenant les objets projet de la base du type $type.
408
     * Renvoie un tableau comprenant les objets projet de la base du type $type.
407
     *
409
     *
408
     * @return Array
410
     * @return Array
409
     * @static
411
     * @static
410
     * @access public
412
     * @access public
411
     */
413
     */
412
    function getProjetDuType($type, &$objetDB)
414
    function getProjetDuType($type, &$objetDB)
413
    {
415
    {
414
        $requete = "select p_id from projet where p_type=$type order by p_titre" ;
416
        $requete = "select p_id from projet where p_type=$type order by p_titre" ;
415
        $resultat = $objetDB->query ($requete) ;
417
        $resultat = $objetDB->query ($requete) ;
416
        if (DB::isError($resultat)) {
418
        if (DB::isError($resultat)) {
417
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
419
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
418
        }
420
        }
419
        $tableau_resultat = array() ;
421
        $tableau_resultat = array() ;
420
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
422
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
421
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
423
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
422
        }
424
        }
423
        return $tableau_resultat ;
425
        return $tableau_resultat ;
424
    } // end of member function getTousLesProjets
426
    } // end of member function getTousLesProjets
425
 
427
 
426
    /**
428
    /**
427
     * Renvoie un le projet racine.
429
     * Renvoie un le projet racine.
428
     *
430
     *
429
     * @return projet
431
     * @return projet
430
     * @static
432
     * @static
431
     * @access public
433
     * @access public
432
     */
434
     */
433
    function getProjetRacine(&$objetDB)
435
    function getProjetRacine(&$objetDB)
434
    {
436
    {
435
        $requete = "select p_id from projet where p_id not in (select ph_id_projet_fils from projet_hierarchie)" ;
437
        $requete = "select p_id from projet where p_id not in (select ph_id_projet_fils from projet_hierarchie)" ;
436
        $resultat = $objetDB->query ($requete) ;
438
        $resultat = $objetDB->query ($requete) ;
437
        if (DB::isError($resultat)) {
439
        if (DB::isError($resultat)) {
438
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
440
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
439
        }
441
        }
440
        if ($resultat->numRows() == 1) {
442
        if ($resultat->numRows() == 1) {
441
            $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
443
            $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
442
            return new projet($objetDB, $ligne->p_id) ;
444
            return new projet($objetDB, $ligne->p_id) ;
443
        }
445
        }
444
        $tableau_resultat = array() ;
446
        $tableau_resultat = array() ;
445
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
447
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
446
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
448
            array_push ($tableau_resultat, new projet ($objetDB, $ligne->p_id)) ;
447
        }
449
        }
448
        return $tableau_resultat ;
450
        return $tableau_resultat ;
449
    } // end of member function getTousLesProjets
451
    } // end of member function getTousLesProjets
450
 
452
 
451
    /**
453
    /**
452
     * Desctructeur de la classe. Libère la mémoire, ferme les connexions et fichiers.
454
     * Desctructeur de la classe. Libère la mémoire, ferme les connexions et fichiers.
453
     *
455
     *
454
     * @return void
456
     * @return void
455
     * @access public
457
     * @access public
456
     */
458
     */
457
    function __destruct( )
459
    function __destruct( )
458
    {
460
    {
459
        
461
        
460
    } // end of member function __destruct
462
    } // end of member function __destruct
461
 
463
 
462
    /**
464
    /**
463
     * Supprime le projet courrant. Il s'ensuit une suppression en cascade de tous les
465
     * Supprime le projet courrant. Il s'ensuit une suppression en cascade de tous les
464
     * éléments liés.
466
     * éléments liés.
465
     *
467
     *
466
     * @return void
468
     * @return void
467
     * @access public
469
     * @access public
468
     */
470
     */
469
    function supprimer( )
471
    function supprimer( )
470
    {
472
    {
471
        
473
        
472
    } // end of member function supprimer
474
    } // end of member function supprimer
473
 
475
 
474
    /**
476
    /**
475
     * Permet d'enregistrer une ligne dans la table concernée.
477
     * Permet d'enregistrer une ligne dans la table concernée.
476
     *
478
     *
477
     * @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments
479
     * @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments
478
     * du formulaire.
480
     * du formulaire.
479
     * @return int
481
     * @return int
480
     * @access public
482
     * @access public
481
     */
483
     */
482
    function enregistrerSQL( $tableau_de_valeur )
484
    function enregistrerSQL( $tableau_de_valeur )
483
    {
485
    {
484
        $nom_repertoire = projet::genereNomRepertoire($tableau_de_valeur['projet_titre'], $this->_db) ;
486
        $nom_repertoire = projet::genereNomRepertoire($tableau_de_valeur['projet_titre'], $this->_db) ;
485
        if (!$this->_creationRepertoire ($nom_repertoire)) {
487
        if (!$this->_creationRepertoire ($nom_repertoire)) {
486
            echo 'Impossible de crée un répertoire'.$nom_repertoire ;
488
            echo 'Impossible de crée un répertoire'.$nom_repertoire ;
487
            return false ;
489
            return false ;
488
        }
490
        }
489
        // Traitement du type
491
        // Traitement du type
490
        if (!PROJET_UTILISE_TYPE) {
492
        if (!PROJET_UTILISE_TYPE) {
491
            $tableau_de_valeur['projet_type'] = 0 ;
493
            $tableau_de_valeur['projet_type'] = 0 ;
492
        }
494
        }
493
        $id = SQL_obtenirNouveauId($this->_db, 'projet', 'p_id') ;
495
        $id = SQL_obtenirNouveauId($this->_db, 'projet', 'p_id') ;
494
        $requete = 'insert into projet set p_id='.$id ;
496
        $requete = 'insert into projet set p_id='.$id ;
495
        if (!isset($tableau_de_valeur['projet_wikini'])) {
497
        if (!isset($tableau_de_valeur['projet_wikini'])) {
496
        	$tableau_de_valeur['projet_wikini']='';
498
        	$tableau_de_valeur['projet_wikini']='';
497
        }
499
        }
498
        $requete .= ', p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
500
        $requete .= ', p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
499
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'", p_date_creation=NOW()'.
501
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'", p_date_creation=NOW()'.
500
                    ', p_wikini="'.$tableau_de_valeur['projet_wikini'].'", p_nom_repertoire="'.$nom_repertoire.'", p_resume="'.$tableau_de_valeur['projet_resume'].
502
                    ', p_wikini="'.$tableau_de_valeur['projet_wikini'].'", p_nom_repertoire="'.$nom_repertoire.'", p_resume="'.$tableau_de_valeur['projet_resume'].
501
                    '", p_type='.$tableau_de_valeur['projet_type'] ;
503
                    '", p_type='.$tableau_de_valeur['projet_type'] ;
502
        $resultat = $this->_db->query ($requete) ;
504
        $resultat = $this->_db->query ($requete) ;
-
 
505
        
503
        if (DB::isError($resultat)) {
506
        if (DB::isError($resultat)) {
504
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
507
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
505
        }
508
        }
506
        //insertion dans projet_hiérarchie
-
 
507
 
-
 
508
        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
-
 
509
                    ', ph_id_projet_fils='.$id ;
-
 
510
        $resultat = $this->_db->query ($requete) ;
-
 
-
 
509
        
-
 
510
        // On affecte à l'objet projet son identifiant
-
 
511
        $this->_id_projet = $id ;
-
 
512
        
-
 
513
        //insertion dans projet_hiérarchie
-
 
514
		if (PROJET_UTILISE_HIERARCHIE) {
-
 
515
	        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
-
 
516
	                    ', ph_id_projet_fils='.$id ;
-
 
517
	        $resultat = $this->_db->query ($requete) ;
511
        
518
		}
512
        return true ;
519
        return true ;
513
    } // end of member function enregistrerSQL
520
    } // end of member function enregistrerSQL
514
 
521
 
515
    /**
522
    /**
516
     * Permet de mettre à jour une ligne dans la table concernée.
523
     * Permet de mettre à jour une ligne dans la table concernée.
517
     *
524
     *
518
     * @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments
525
     * @param Array tableau_de_valeur Le tableau de valeur a insérer dans la base avec pour clé les noms des éléments
519
     * du formulaire.
526
     * du formulaire.
520
     * @return int
527
     * @return int
521
     * @access public
528
     * @access public
522
     */
529
     */
523
    function majSQL( $tableau_de_valeur )
530
    function majSQL( $tableau_de_valeur )
524
    {
531
    {
525
        // Traitement du type
532
        // Traitement du type
526
        if (!PROJET_UTILISE_TYPE) {
533
        if (!PROJET_UTILISE_TYPE) {
527
            $tableau_de_valeur['projet_type'] = 0 ;
534
            $tableau_de_valeur['projet_type'] = 0 ;
528
        }
535
        }
529
        $requete = 'update projet set ';
536
        $requete = 'update projet set ';
530
        $requete .= 'p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
537
        $requete .= 'p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
531
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'"'.
538
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'"'.
532
                    ', p_resume="'.$tableau_de_valeur['projet_resume'].'", p_type='.$tableau_de_valeur['projet_type'].
539
                    ', p_resume="'.$tableau_de_valeur['projet_resume'].'", p_type='.$tableau_de_valeur['projet_type'].
533
                    ' where p_id="'.$this->_id_projet.'"' ;
540
                    ' where p_id="'.$this->_id_projet.'"' ;
534
        $resultat = $this->_db->query ($requete) ;
541
        $resultat = $this->_db->query ($requete) ;
535
        if (DB::isError($resultat)) {
542
        if (DB::isError($resultat)) {
536
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
543
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
537
        }
544
        }
-
 
545
        
538
        
546
        if (PROJET_UTILISE_HIERARCHIE) {
539
        // suppression dans projet_hierarchie
547
	        // suppression dans projet_hierarchie
540
        
548
	        
541
        $requete = 'delete from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
549
	        $requete = 'delete from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
542
        $resultat = $this->_db->query ($requete) ;
550
	        $resultat = $this->_db->query ($requete) ;
543
        
551
	        
544
        //insertion dans projet_hiérarchie
552
	        //insertion dans projet_hiérarchie
545
 
553
	
546
        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
554
	        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
547
                    ', ph_id_projet_fils='.$this->_id_projet ;
555
	                    ', ph_id_projet_fils='.$this->_id_projet ;
-
 
556
	        $resultat = $this->_db->query ($requete) ;
548
        $resultat = $this->_db->query ($requete) ;
557
        }
549
        return true ;
558
        return true ;
550
    } // end of member function enregistrerSQL
559
    } // end of member function enregistrerSQL
551
 
560
 
552
    /**
561
    /**
553
     * Met à jour dans la base de donnée le champs p_nom_wikini
562
     * Met à jour dans la base de donnée le champs p_nom_wikini
554
     *
563
     *
555
     * @param int nom_wikini Le nouveau nom wikini
564
     * @param int nom_wikini Le nouveau nom wikini
556
     * @return bool
565
     * @return bool
557
     * @access public
566
     * @access public
558
     */
567
     */
559
    function majNomWikini( $nom_wikini )
568
    function majNomWikini( $nom_wikini )
560
    {
569
    {
561
        $requete = 'update projet set p_wikini="'.$nom_wikini.'" where p_id="'.$this->_id_projet.'"' ;
570
        $requete = 'update projet set p_wikini="'.$nom_wikini.'" where p_id="'.$this->_id_projet.'"' ;
562
        $resultat = $this->_db->query ($requete) ;
571
        $resultat = $this->_db->query ($requete) ;
563
        if (DB::isError ($resultat)) {
572
        if (DB::isError ($resultat)) {
564
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
573
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
565
        }
574
        }
566
        return true ;
575
        return true ;
567
    } // end of member function majNomWikini
576
    } // end of member function majNomWikini
568
 
577
 
569
 
578
 
570
    /**
579
    /**
571
     * 
580
     * 
572
     *
581
     *
573
     * @param string code_sql 
582
     * @param string code_sql 
574
     * @return bool
583
     * @return bool
575
     * @access public
584
     * @access public
576
     */
585
     */
577
    function suppressionSQL()
586
    function suppressionSQL()
578
    {
587
    {
579
        $msg = '' ;
588
        $msg = '' ;
580
        // Supression du répertoire du projet
589
        // Supression du répertoire du projet
581
        if (!$this->_suppression_repertoire()) {
590
        if (!$this->_suppression_repertoire()) {
582
            $msg = 'La suppression du répertoire n\'a pas fonctionné' ;
591
            $msg = 'La suppression du répertoire n\'a pas fonctionné' ;
583
        }
592
        }
584
        // A ajouter la suppression des documents associés
593
        // A ajouter la suppression des documents associés
585
        
594
        
586
        // La suppression des évènements associés
595
        // La suppression des évènements associés
587
        
596
        
588
        // Le projet lui-même
597
        // Le projet lui-même
589
        $requete = "delete from projet where p_id=".$this->_id_projet ;
598
        $requete = "delete from projet where p_id=".$this->_id_projet ;
590
        $resultat = $this->_db->query ($requete) ;
599
        $resultat = $this->_db->query ($requete) ;
-
 
600
        
591
        
601
        if (PROJET_UTILISE_HIERARCHIE) {
592
        $requete = "delete from projet_hierarchie where ph_id_projet_fils=".$this->_id_projet ;
602
	        $requete = "delete from projet_hierarchie where ph_id_projet_fils=".$this->_id_projet ;
593
        $resultat = $this->_db->query ($requete) ;
603
	        $resultat = $this->_db->query ($requete) ;
594
        
604
        }
595
        $requete = "delete from projet_statut_utilisateurs where psu_id_projet=".$this->_id_projet ;
605
        $requete = "delete from projet_statut_utilisateurs where psu_id_projet=".$this->_id_projet ;
596
        $resultat = $this->_db->query ($requete) ;
606
        $resultat = $this->_db->query ($requete) ;
597
        return $msg ;
607
        return $msg ;
598
    } // end of member function suppressionSQL
608
    } // end of member function suppressionSQL
599
 
609
 
600
    /**
610
    /**
601
     * Supprime le répertoire associé au projet (le répertoire doit être vide).
611
     * Supprime le répertoire associé au projet (le répertoire doit être vide).
602
     *
612
     *
603
     * @return void
613
     * @return void
604
     * @access private
614
     * @access private
605
     */
615
     */
606
    function _suppression_repertoire( )
616
    function _suppression_repertoire( )
607
    {
617
    {
608
        return rmdir ($this->_chemin_repertoire.$this->_nom_repertoire) ;
618
        return rmdir ($this->_chemin_repertoire.$this->_nom_repertoire) ;
609
    } // end of member function _suppression_repertoire
619
    } // end of member function _suppression_repertoire
610
 
620
 
611
    /**
621
    /**
612
     * Permet de créer le répertoire associé au projet.
622
     * Permet de créer le répertoire associé au projet.
613
     *
623
     *
614
     * @param string nom_repertoire Le nom du répertoire à créer.
624
     * @param string nom_repertoire Le nom du répertoire à créer.
615
     * @return boolean
625
     * @return boolean
616
     * @access private
626
     * @access private
617
     */
627
     */
618
    function _creationRepertoire( $nom_repertoire )
628
    function _creationRepertoire( $nom_repertoire )
619
    {
629
    {
620
        return mkdir ($this->_chemin_repertoire.$nom_repertoire) ;
630
        return mkdir ($this->_chemin_repertoire.$nom_repertoire) ;
621
    } // end of member function _creationRepertoire
631
    } // end of member function _creationRepertoire
622
 
632
 
623
    /**
633
    /**
624
     * Permet d'indiquer où seront stockés les fichiers.
634
     * Permet d'indiquer où seront stockés les fichiers.
625
     *
635
     *
626
     * @param string cheminRepertoire Le chemin jusqu'au répertoire où seront stockés les fichiers.
636
     * @param string cheminRepertoire Le chemin jusqu'au répertoire où seront stockés les fichiers.
627
     * @return void
637
     * @return void
628
     * @access public
638
     * @access public
629
     */
639
     */
630
    function setCheminRepertoire( $cheminRepertoire )
640
    function setCheminRepertoire( $cheminRepertoire )
631
    {
641
    {
632
        $this->_chemin_repertoire = $cheminRepertoire ;
642
        $this->_chemin_repertoire = $cheminRepertoire ;
633
    } // end of member function setCheminRepertoire
643
    } // end of member function setCheminRepertoire
634
 
644
 
635
    /**
645
    /**
636
     * Génère un nom de répertoire à partir de la première lettre de la chaine passé en
646
     * Génère un nom de répertoire à partir de la première lettre de la chaine passé en
637
     * paramètre et de l'identifiant du dernier projet.
647
     * paramètre et de l'identifiant du dernier projet.
638
     *
648
     *
639
     * @param string chaine Une chaine à partir de laquelle sera générer le nom du répertoire.
649
     * @param string chaine Une chaine à partir de laquelle sera générer le nom du répertoire.
640
     * @param DB objetDB un objet PEAR::DB
650
     * @param DB objetDB un objet PEAR::DB
641
     * @return string
651
     * @return string
642
     * @static
652
     * @static
643
     * @access public
653
     * @access public
644
     */
654
     */
645
    function genereNomRepertoire( $chaine, &$objetDB )
655
    function genereNomRepertoire( $chaine, &$objetDB )
646
    {
656
    {
647
        $requete = "select p_id from projet order by p_id desc limit 0,1" ;
657
        $requete = "select p_id from projet order by p_id desc limit 0,1" ;
648
        $resultat = $objetDB->query ($requete) ;
658
        $resultat = $objetDB->query ($requete) ;
649
        if (DB::isError ($resultat)) {
659
        if (DB::isError ($resultat)) {
650
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
660
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
651
        }
661
        }
652
        if ($resultat->numRows() > 0) {
662
        if ($resultat->numRows() > 0) {
653
	        $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
663
	        $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
654
	        $nom = strtoupper(substr($chaine, 0, 1)) ;
664
	        $nom = strtoupper(substr($chaine, 0, 1)) ;
655
	        $nom .= $ligne->p_id + 1 ;
665
	        $nom .= $ligne->p_id + 1 ;
656
        }
666
        }
657
	    else {
667
	    else {
658
	    	$nom = strtoupper(substr($chaine, 0, 1)) ;
668
	    	$nom = strtoupper(substr($chaine, 0, 1)) ;
659
	        $nom .=  1 ;
669
	        $nom .=  1 ;
660
	    }
670
	    }
661
        return $nom ;
671
        return $nom ;
662
        
672
        
663
    } // end of member function genereNomRepertoire
673
    } // end of member function genereNomRepertoire
664
 
674
 
665
    /**
675
    /**
666
     * Permet de récupérer le nom du répertoire d'un projet.
676
     * Permet de récupérer le nom du répertoire d'un projet.
667
     *
677
     *
668
     * @return string
678
     * @return string
669
     * @access public
679
     * @access public
670
     */
680
     */
671
    function getNomRepertoire( )
681
    function getNomRepertoire( )
672
    {
682
    {
673
        return $this->_nom_repertoire ;
683
        return $this->_nom_repertoire ;
674
    } // end of member function getNomRepertoire
684
    } // end of member function getNomRepertoire
675
 
685
 
676
    /**
686
    /**
677
     *  Ajoute une liste à un projet
687
     *  Ajoute une liste à un projet
678
     *  Effectue une insertion dans projet_lien_liste
688
     *  Effectue une insertion dans projet_lien_liste
679
     *
689
     *
680
     * @param liste_discussion liste Une instance de la classe liste_discussion
690
     * @param liste_discussion liste Une instance de la classe liste_discussion
681
     * @return void
691
     * @return void
682
     * @access public
692
     * @access public
683
     */
693
     */
684
    function ajouterListe( &$liste )
694
    function ajouterListe( &$liste )
685
    {
695
    {
686
        $requete = "insert into projet_lien_liste set pl_id_liste=".$liste->getId().
696
        $requete = "insert into projet_lien_liste set pl_id_liste=".$liste->getId().
687
                    ', pl_id_projet='.$this->_id_projet ;
697
                    ', pl_id_projet='.$this->_id_projet ;
688
        $resultat = $this->_db->query ($requete) ;
698
        $resultat = $this->_db->query ($requete) ;
689
        if (DB::isError ($resultat)) {
699
        if (DB::isError ($resultat)) {
690
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
700
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
691
        }
701
        }
692
    } // end of member function ajouterListe
702
    } // end of member function ajouterListe
693
 
703
 
694
    /**
704
    /**
695
     * Supprime la liste de discussion associée au projet
705
     * Supprime la liste de discussion associée au projet
696
     *
706
     *
697
     * @return void
707
     * @return void
698
     * @access public
708
     * @access public
699
     */
709
     */
700
    function supprimerListe(&$liste)
710
    function supprimerListe(&$liste)
701
    {
711
    {
702
        $requete = 'delete from projet_lien_liste where pl_id_liste='.$liste->getId() ;
712
        $requete = 'delete from projet_lien_liste where pl_id_liste='.$liste->getId() ;
703
        $resultat = $this->_db->query ($requete) ;
713
        $resultat = $this->_db->query ($requete) ;
704
        if (DB::isError ($resultat)) {
714
        if (DB::isError ($resultat)) {
705
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
715
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
706
        }
716
        }
707
        $requete = 'delete from projet_liste where pl_id_liste='.$liste->getId() ;
717
        $requete = 'delete from projet_liste where pl_id_liste='.$liste->getId() ;
708
        $resultat = $this->_db->query ($requete) ;
718
        $resultat = $this->_db->query ($requete) ;
709
        if (DB::isError ($resultat)) {
719
        if (DB::isError ($resultat)) {
710
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
720
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
711
        }
721
        }
712
    } // end of member function supprimerListe
722
    } // end of member function supprimerListe
713
 
723
 
714
 
724
 
715
    /**
725
    /**
716
     * Renvoie vrai si le projet est racine.
726
     * Renvoie vrai si le projet est racine.
717
     *
727
     *
718
     * @return bool
728
     * @return bool
719
     * @access public
729
     * @access public
720
     */
730
     */
721
    function isRacine( )
731
    function isRacine( )
722
    {
732
    {
723
        return $this->_est_racine ;
733
        return $this->_est_racine ;
724
    } // end of member function isRacine
734
    } // end of member function isRacine
725
 
735
 
726
    /**
736
    /**
727
     * Renvoie le nombre d'inscrits au projet. Effectue une requete dans la table
737
     * Renvoie le nombre d'inscrits au projet. Effectue une requete dans la table
728
     * projet_statut_utilisateurs
738
     * projet_statut_utilisateurs
729
     *
739
     *
730
     * @return int
740
     * @return int
731
     * @access public
741
     * @access public
732
     */
742
     */
733
    function getNombreInscrits( )
743
    function getNombreInscrits( )
734
    {
744
    {
735
        $requete = 'select count(psu_id_utilisateur) as nbre from projet_statut_utilisateurs where psu_id_projet='.$this->_id_projet ;
745
        $requete = 'select count(psu_id_utilisateur) as nbre from projet_statut_utilisateurs where psu_id_projet='.$this->_id_projet ;
736
        $resultat = $this->_db->query ($requete) ;
746
        $resultat = $this->_db->query ($requete) ;
737
        if (DB::isError ($resultat)) {
747
        if (DB::isError ($resultat)) {
738
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
748
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
739
        }
749
        }
740
        $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
750
        $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
741
        return $ligne->nbre ;
751
        return $ligne->nbre ;
742
    } // end of member function getNombreInscrits
752
    } // end of member function getNombreInscrits
743
 
753
 
744
 
754
 
745
    /**
755
    /**
746
     * Renvoie un tableau contenant les identifiants des fils du projet courant.
756
     * Renvoie un tableau contenant les identifiants des fils du projet courant.
747
     *
757
     *
748
     * @return Array
758
     * @return Array
749
     * @access public
759
     * @access public
750
     */
760
     */
751
    function getHierarchie( )
761
    function getHierarchie( )
752
    {
762
    {
753
        $requete = 'select ph_id_projet_fils from projet_hierarchie where ph_id_projet_pere='.$this->_id_projet ;
763
        $requete = 'select ph_id_projet_fils from projet_hierarchie where ph_id_projet_pere='.$this->_id_projet ;
754
        $resultat = $this->_db->query ($requete) ;
764
        $resultat = $this->_db->query ($requete) ;
755
        if (DB::isError ($resultat)) {
765
        if (DB::isError ($resultat)) {
756
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
766
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
757
        }
767
        }
758
        $tableau_resultat = array() ;
768
        $tableau_resultat = array() ;
759
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
769
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
760
            array_push ($tableau_resultat, $ligne->ph_id_projet_fils) ;
770
            array_push ($tableau_resultat, $ligne->ph_id_projet_fils) ;
761
        }
771
        }
762
        return $tableau_resultat ;
772
        return $tableau_resultat ;
763
    } // end of member function getHierarchie
773
    } // end of member function getHierarchie
764
    
774
    
765
    /**
775
    /**
766
     * Renvoie l'identifiant du pere du projet courrant.
776
     * Renvoie l'identifiant du pere du projet courrant.
767
     *
777
     *
768
     * @return int
778
     * @return int
769
     * @access public
779
     * @access public
770
     */
780
     */
771
    function getIdPere()
781
    function getIdPere()
772
    {
782
    {
773
        $requete = 'select ph_id_projet_pere from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
783
        $requete = 'select ph_id_projet_pere from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
774
        $resultat = $this->_db->query ($requete) ;
784
        $resultat = $this->_db->query ($requete) ;
775
        if (DB::isError ($resultat)) {
785
        if (DB::isError ($resultat)) {
776
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
786
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
777
        }
787
        }
778
        $tableau_resultat = array() ;
788
        $tableau_resultat = array() ;
779
        $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
789
        $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
780
        return $ligne->ph_id_projet_pere ;
790
        return $ligne->ph_id_projet_pere ;
781
    } // end of member function getIdPere()
791
    } // end of member function getIdPere()
782
 
792
 
783
    /**
793
    /**
784
     * Renvoie le nom Wiki du wikini associé au projet.
794
     * Renvoie le nom Wiki du wikini associé au projet.
785
     *
795
     *
786
     * @return string
796
     * @return string
787
     * @access public
797
     * @access public
788
     */
798
     */
789
    function getWikini( )
799
    function getWikini( )
790
    {
800
    {
791
        return $this->_nom_wikini ;
801
        return $this->_nom_wikini ;
792
    } // end of member function getWikini
802
    } // end of member function getWikini
793
 
803
 
794
    /**
804
    /**
795
     * Renvoie le type du projet, ou zéro si le projet n'a pas de type.
805
     * Renvoie le type du projet, ou zéro si le projet n'a pas de type.
796
     *
806
     *
797
     * @return int
807
     * @return int
798
     * @access public
808
     * @access public
799
     */
809
     */
800
    function getType( )
810
    function getType( )
801
    {
811
    {
802
        return $this->_type ;
812
        return $this->_type ;
803
    } // end of member function getType
813
    } // end of member function getType
804
 
814
 
805
 
815
 
806
 
816
 
807
 
817
 
808
 
818
 
809
    /**
819
    /**
810
     * initAttributes sets all projet attributes to its default                    value make
820
     * initAttributes sets all projet attributes to its default                    value make
811
     * sure to call this method within your class constructor
821
     * sure to call this method within your class constructor
812
     */
822
     */
813
    function initAttributes( )
823
    function initAttributes( )
814
    {
824
    {
815
        $this->chemin_wikini = "projet/wikini/";
825
        $this->chemin_wikini = "projet/wikini/";
816
    }
826
    }
817
 
827
 
818
 
828
 
819
} // end of projet
829
} // end of projet
820
?>
830
?>