Subversion Repositories Applications.projet

Rev

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

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