Subversion Repositories Applications.projet

Rev

Rev 2 | Rev 11 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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