Subversion Repositories Applications.projet

Rev

Rev 59 | Rev 208 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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