Subversion Repositories Applications.projet

Rev

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

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