Subversion Repositories Applications.projet

Rev

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