Subversion Repositories Applications.projet

Rev

Rev 35 | Rev 121 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 35 Rev 59
Line 1... Line 1...
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
// +------------------------------------------------------------------------------------------------------+
Line 17... Line 17...
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.5 2005-10-14 08:50:37 alexandre_tb Exp $
22
// CVS : $Id: projet.class.php,v 1.6 2005-11-14 10:14:30 ddelon Exp $
23
/**
23
/**
24
* Application projet
24
* Application projet
25
*
25
*
26
* La classe projet
26
* La classe projet
27
*
27
*
Line 29... Line 29...
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.5 $
34
*@version       $Revision: 1.6 $
35
// +------------------------------------------------------------------------------------------------------+
35
// +------------------------------------------------------------------------------------------------------+
36
*/
36
*/
Line 37... Line 37...
37
 
37
 
38
 
38
 
39
// +------------------------------------------------------------------------------------------------------+
39
// +------------------------------------------------------------------------------------------------------+
Line 40... Line 40...
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' ;
Line 44... Line 45...
44
include_once PROJET_CHEMIN_CLASSES.'liste_discussion.class.php' ;
45
/* Permet la récupération d'un nouvel identifiant d'une table.*/
45
include_once PROJET_CHEMIN_FONCTIONS.'SQL_manipulation.fonct.php' ;
46
require_once PROJET_CHEMIN_BIBLIOTHEQUE_API.'sql/SQL_manipulation.fonct.php';
46
include_once 'Mail.php' ;
47
include_once 'Mail.php' ;
Line 52... Line 53...
52
 
53
 
53
 
54
 
54
 
55
 
55
/**
56
/**
56
 * class projet
57
 * class projet
57
 * 
58
 *
Line 58... Line 59...
58
 */
59
 */
Line 70... Line 71...
70
    var $_listes_associes = array();
71
    var $_listes_associes = array();
Line 71... Line 72...
71
 
72
 
Line 72... Line 73...
72
    /** Compositions: */
73
    /** Compositions: */
73
 
74
 
74
    /*** Attributes: ***/
75
    /*** Attributes: ***/
75
    
76
 
76
    /**
77
    /**
77
     * L'identifiant du projet.
78
     * L'identifiant du projet.
78
     * @access private
79
     * @access private
Line 142... Line 143...
142
     * @access private
143
     * @access private
143
     */
144
     */
144
    var $_type;
145
    var $_type;
Line 145... Line 146...
145
 
146
 
146
    /**
147
    /**
147
     * 
148
     *
148
     * PHP5 
149
     * PHP5
149
     * @return projet
150
     * @return projet
150
     * @access public
151
     * @access public
151
     */
152
     */
152
    function __construct( &$dbObject,  $id_projet = "")
153
    function __construct( &$dbObject,  $id_projet = "")
153
    {
154
    {
154
      $this->projet($dbObject,  $id_projet);
155
      $this->projet($dbObject,  $id_projet);
155
      
156
 
Line 156... Line 157...
156
    } // end of member function __construct
157
    } // end of member function __construct
157
 
158
 
158
    /**
159
    /**
159
     * 
160
     *
160
     *
161
     *
161
     * @param DB dbObject Un objet PEAR:DB
162
     * @param DB dbObject Un objet PEAR:DB
162
     * @param int id_projet On passe un identifiant de projet au constructeur. Cela lui permet de faire une
163
     * @param int id_projet On passe un identifiant de projet au constructeur. Cela lui permet de faire une
Line 172... Line 173...
172
            $resultat = $this->_db->query ($requete) ;
173
            $resultat = $this->_db->query ($requete) ;
173
            if (DB::isError($resultat)) {
174
            if (DB::isError($resultat)) {
174
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
175
                die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
175
            }
176
            }
176
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
177
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
177
            
178
 
178
            // Affectations dans les propriétés
179
            // Affectations dans les propriétés
179
            $this->_id_projet = $ligne->p_id ;
180
            $this->_id_projet = $ligne->p_id ;
180
            $this->_titre = $ligne->p_titre ;
181
            $this->_titre = $ligne->p_titre ;
181
            $this->_description = $ligne->p_description ;
182
            $this->_description = $ligne->p_description ;
182
            $this->_espace_internet = $ligne->p_espace_internet ;
183
            $this->_espace_internet = $ligne->p_espace_internet ;
Line 184... Line 185...
184
            $this->_nom_wikini = $ligne->p_wikini ;
185
            $this->_nom_wikini = $ligne->p_wikini ;
185
            $this->_resume = $ligne->p_resume;
186
            $this->_resume = $ligne->p_resume;
186
            $this->_type = $ligne->p_type ;
187
            $this->_type = $ligne->p_type ;
187
            // On récupère le nom du répertoire
188
            // On récupère le nom du répertoire
188
            $this->_nom_repertoire = $ligne->p_nom_repertoire ;
189
            $this->_nom_repertoire = $ligne->p_nom_repertoire ;
189
            
190
 
190
            // on regarde si on a à faire au projet racine
191
            // on regarde si on a à faire au projet racine
191
            if (PROJET_UTILISE_HIERARCHIE) {
192
            if (PROJET_UTILISE_HIERARCHIE) {
192
	            $requete = 'select  ph_id_projet_pere, ph_id_projet_fils from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
193
	            $requete = 'select  ph_id_projet_pere, ph_id_projet_fils from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
193
	            $resultat = $this->_db->query ($requete) ;
194
	            $resultat = $this->_db->query ($requete) ;
194
	            if (DB::isError ($resultat)) {
195
	            if (DB::isError ($resultat)) {
Line 202... Line 203...
202
            }
203
            }
203
        }
204
        }
204
    } // end of member function projet
205
    } // end of member function projet
Line 205... Line 206...
205
 
206
 
206
    /**
207
    /**
207
     * 
208
     *
208
     *
209
     *
209
     * @param DB dbObject Un objet PEAR:DB
210
     * @param DB dbObject Un objet PEAR:DB
210
     * @param int id_projet On passe un identifiant de projet au constructeur.
211
     * @param int id_projet On passe un identifiant de projet au constructeur.
211
     * @return bool 
212
     * @return bool
212
     * @access public
213
     * @access public
213
     */
214
     */
214
    function projetExiste( &$dbObject,  $id_projet)
215
    function projetExiste( &$dbObject,  $id_projet)
215
    {
216
    {
Line 222... Line 223...
222
            if ($resultat->numRows() != 0) {
223
            if ($resultat->numRows() != 0) {
223
                return true ;
224
                return true ;
224
            }
225
            }
225
        }
226
        }
226
    } // end of member function projet
227
    } // end of member function projet
227
    
228
 
228
    /**
229
    /**
229
     * 
-
 
230
     *
230
     *
-
 
231
     *
231
     * @param int id_projet 
232
     * @param int id_projet
232
     * @return string
233
     * @return string
233
     * @access public
234
     * @access public
234
     */
235
     */
235
    function getTitre( $id_projet = "" )
236
    function getTitre( $id_projet = "" )
236
    {
237
    {
237
        return $this->_titre ;
238
        return $this->_titre ;
238
    } // end of member function getTitre
239
    } // end of member function getTitre
239
    
240
 
240
    /**
241
    /**
241
     * 
242
     *
242
     *
243
     *
243
     * @return string
244
     * @return string
244
     * @access public
245
     * @access public
245
     */
246
     */
246
    function getResume( )
247
    function getResume( )
Line 258... Line 259...
258
    {
259
    {
259
        return $this->_id_projet ;
260
        return $this->_id_projet ;
260
    } // end of member function getId
261
    } // end of member function getId
Line 261... Line 262...
261
 
262
 
262
    /**
263
    /**
263
     * 
264
     *
264
     *
265
     *
265
     * @return string
266
     * @return string
266
     * @access public
267
     * @access public
267
     */
268
     */
268
    function getDescription( )
269
    function getDescription( )
269
    {
270
    {
270
        return $this->_description;
271
        return $this->_description;
Line 271... Line 272...
271
    } // end of member function getDescription
272
    } // end of member function getDescription
272
 
273
 
273
    /**
274
    /**
274
     * 
275
     *
275
     *
276
     *
276
     * @return string
277
     * @return string
277
     * @access public
278
     * @access public
Line 301... Line 302...
301
        }
302
        }
302
        $retour = array() ;
303
        $retour = array() ;
303
        if ($resultat->numRows()) {
304
        if ($resultat->numRows()) {
304
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
305
            $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
305
            $this->_listes_associes[] = new liste_discussion($ligne->pl_id_liste, $this->_db) ;
306
            $this->_listes_associes[] = new liste_discussion($ligne->pl_id_liste, $this->_db) ;
306
            
307
 
307
        }
308
        }
308
    } // end of member function getListesAssociees
309
    } // end of member function getListesAssociees
Line 309... Line 310...
309
 
310
 
310
    /**
311
    /**
Line 330... Line 331...
330
     "Date
331
     "Date
331
     * de création"          "Proriétaire"          "Visibilité"          "Action
332
     * de création"          "Proriétaire"          "Visibilité"          "Action
332
     * (cliquable)"
333
     * (cliquable)"
333
     *
334
     *
334
     * @param visibilite visibilite Si visibilite est à prive, tous les fichiers sont renvoyés ainsi qu'une entrée
335
     * @param visibilite visibilite Si visibilite est à prive, tous les fichiers sont renvoyés ainsi qu'une entrée
335
     * pour indiquer la visibilité du document. 
336
     * pour indiquer la visibilité du document.
336
     * @return Array
337
     * @return Array
337
     * @access public
338
     * @access public
338
     */
339
     */
339
    function getListesDocuments( $chemin, $chemin_icones = "icones/" )
340
    function getListesDocuments( $chemin, $chemin_icones = "icones/" )
340
    {
341
    {
Line 345... Line 346...
345
        $resultat = $this->_db->query ($requete) ;
346
        $resultat = $this->_db->query ($requete) ;
346
        if (DB::isError($resultat)) {
347
        if (DB::isError($resultat)) {
347
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
348
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
348
        }
349
        }
349
        $tableau_document = array() ;
350
        $tableau_document = array() ;
350
        
351
 
351
        // Un compteur
352
        // Un compteur
352
        $i = 0 ;
353
        $i = 0 ;
353
        
354
 
354
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
355
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
355
            array_push ($tableau_document, new document ($ligne->pd_id, &$this->_db, $chemin, $chemin_icones)) ;
356
            array_push ($tableau_document, new document ($ligne->pd_id, &$this->_db, $chemin, $chemin_icones)) ;
356
        }
357
        }
357
        return $tableau_document ;
358
        return $tableau_document ;
358
    } // end of member function getListesDocuments
359
    } // end of member function getListesDocuments
Line 372... Line 373...
372
        $resultat = $this->_db->query ($requete) ;
373
        $resultat = $this->_db->query ($requete) ;
373
        if (DB::isError($resultat)) {
374
        if (DB::isError($resultat)) {
374
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
375
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
375
        }
376
        }
376
        $tableau_document = array() ;
377
        $tableau_document = array() ;
377
        
378
 
378
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
379
        while ($ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT)) {
379
            array_push ($tableau_document, new document ($ligne->pd_id, $this->_db));
380
            array_push ($tableau_document, new document ($ligne->pd_id, $this->_db));
380
        }
381
        }
381
        
382
 
382
        return $tableau_document ;
383
        return $tableau_document ;
383
    } // end of member function getListeRepertoireHierarchisee
384
    } // end of member function getListeRepertoireHierarchisee
Line 384... Line 385...
384
 
385
 
Line 456... Line 457...
456
     * @return void
457
     * @return void
457
     * @access public
458
     * @access public
458
     */
459
     */
459
    function __destruct( )
460
    function __destruct( )
460
    {
461
    {
461
        
462
 
462
    } // end of member function __destruct
463
    } // end of member function __destruct
Line 463... Line 464...
463
 
464
 
464
    /**
465
    /**
465
     * Supprime le projet courrant. Il s'ensuit une suppression en cascade de tous les
466
     * Supprime le projet courrant. Il s'ensuit une suppression en cascade de tous les
Line 468... Line 469...
468
     * @return void
469
     * @return void
469
     * @access public
470
     * @access public
470
     */
471
     */
471
    function supprimer( )
472
    function supprimer( )
472
    {
473
    {
473
        
474
 
474
    } // end of member function supprimer
475
    } // end of member function supprimer
Line 475... Line 476...
475
 
476
 
476
    /**
477
    /**
477
     * Permet d'enregistrer une ligne dans la table concernée.
478
     * Permet d'enregistrer une ligne dans la table concernée.
Line 500... Line 501...
500
        $requete .= ', p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
501
        $requete .= ', p_titre="'.$tableau_de_valeur['projet_titre'].'", p_description="'.$tableau_de_valeur['projet_description'].'"'.
501
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'", p_date_creation=NOW()'.
502
                    ', p_espace_internet="'.$tableau_de_valeur['projet_espace_internet'].'", p_date_creation=NOW()'.
502
                    ', p_wikini="'.$tableau_de_valeur['projet_wikini'].'", p_nom_repertoire="'.$nom_repertoire.'", p_resume="'.$tableau_de_valeur['projet_resume'].
503
                    ', p_wikini="'.$tableau_de_valeur['projet_wikini'].'", p_nom_repertoire="'.$nom_repertoire.'", p_resume="'.$tableau_de_valeur['projet_resume'].
503
                    '", p_type='.$tableau_de_valeur['projet_type'] ;
504
                    '", p_type='.$tableau_de_valeur['projet_type'] ;
504
        $resultat = $this->_db->query ($requete) ;
505
        $resultat = $this->_db->query ($requete) ;
505
        
506
 
506
        if (DB::isError($resultat)) {
507
        if (DB::isError($resultat)) {
507
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
508
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
508
        }
509
        }
509
        
510
 
510
        // On affecte à l'objet projet son identifiant
511
        // On affecte à l'objet projet son identifiant
511
        $this->_id_projet = $id ;
512
        $this->_id_projet = $id ;
512
        
513
 
513
        //insertion dans projet_hiérarchie
514
        //insertion dans projet_hiérarchie
514
		if (PROJET_UTILISE_HIERARCHIE) {
515
		if (PROJET_UTILISE_HIERARCHIE) {
515
	        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
516
	        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
516
	                    ', ph_id_projet_fils='.$id ;
517
	                    ', ph_id_projet_fils='.$id ;
517
	        $resultat = $this->_db->query ($requete) ;
518
	        $resultat = $this->_db->query ($requete) ;
Line 540... Line 541...
540
                    ' where p_id="'.$this->_id_projet.'"' ;
541
                    ' where p_id="'.$this->_id_projet.'"' ;
541
        $resultat = $this->_db->query ($requete) ;
542
        $resultat = $this->_db->query ($requete) ;
542
        if (DB::isError($resultat)) {
543
        if (DB::isError($resultat)) {
543
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
544
            die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
544
        }
545
        }
545
        
546
 
546
        if (PROJET_UTILISE_HIERARCHIE) {
547
        if (PROJET_UTILISE_HIERARCHIE) {
547
	        // suppression dans projet_hierarchie
548
	        // suppression dans projet_hierarchie
548
	        
549
 
549
	        $requete = 'delete from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
550
	        $requete = 'delete from projet_hierarchie where ph_id_projet_fils='.$this->_id_projet ;
550
	        $resultat = $this->_db->query ($requete) ;
551
	        $resultat = $this->_db->query ($requete) ;
551
	        
552
 
552
	        //insertion dans projet_hiérarchie
553
	        //insertion dans projet_hiérarchie
553
	
554
 
554
	        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
555
	        $requete = 'insert into projet_hierarchie set ph_id_projet_pere='.$tableau_de_valeur['projet_asso'].
555
	                    ', ph_id_projet_fils='.$this->_id_projet ;
556
	                    ', ph_id_projet_fils='.$this->_id_projet ;
556
	        $resultat = $this->_db->query ($requete) ;
557
	        $resultat = $this->_db->query ($requete) ;
557
        }
558
        }
558
        return true ;
559
        return true ;
Line 575... Line 576...
575
        return true ;
576
        return true ;
576
    } // end of member function majNomWikini
577
    } // end of member function majNomWikini
Line 577... Line 578...
577
 
578
 
578
 
-
 
579
    /**
579
 
-
 
580
    /**
580
     * 
581
     *
581
     *
582
     *
582
     * @param string code_sql 
583
     * @param string code_sql
583
     * @return bool
584
     * @return bool
584
     * @access public
585
     * @access public
585
     */
586
     */
Line 589... Line 590...
589
        // Supression du répertoire du projet
590
        // Supression du répertoire du projet
590
        if (!$this->_suppression_repertoire()) {
591
        if (!$this->_suppression_repertoire()) {
591
            $msg = 'La suppression du répertoire n\'a pas fonctionné' ;
592
            $msg = 'La suppression du répertoire n\'a pas fonctionné' ;
592
        }
593
        }
593
        // A ajouter la suppression des documents associés
594
        // A ajouter la suppression des documents associés
594
        
595
 
595
        // La suppression des évènements associés
596
        // La suppression des évènements associés
596
        
597
 
597
        // Le projet lui-même
598
        // Le projet lui-même
598
        $requete = "delete from projet where p_id=".$this->_id_projet ;
599
        $requete = "delete from projet where p_id=".$this->_id_projet ;
599
        $resultat = $this->_db->query ($requete) ;
600
        $resultat = $this->_db->query ($requete) ;
600
        
601
 
601
        if (PROJET_UTILISE_HIERARCHIE) {
602
        if (PROJET_UTILISE_HIERARCHIE) {
602
	        $requete = "delete from projet_hierarchie where ph_id_projet_fils=".$this->_id_projet ;
603
	        $requete = "delete from projet_hierarchie where ph_id_projet_fils=".$this->_id_projet ;
603
	        $resultat = $this->_db->query ($requete) ;
604
	        $resultat = $this->_db->query ($requete) ;
604
        }
605
        }
605
        $requete = "delete from projet_statut_utilisateurs where psu_id_projet=".$this->_id_projet ;
606
        $requete = "delete from projet_statut_utilisateurs where psu_id_projet=".$this->_id_projet ;
Line 667... Line 668...
667
	    else {
668
	    else {
668
	    	$nom = strtoupper(substr($chaine, 0, 1)) ;
669
	    	$nom = strtoupper(substr($chaine, 0, 1)) ;
669
	        $nom .=  1 ;
670
	        $nom .=  1 ;
670
	    }
671
	    }
671
        return $nom ;
672
        return $nom ;
672
        
673
 
673
    } // end of member function genereNomRepertoire
674
    } // end of member function genereNomRepertoire
Line 674... Line 675...
674
 
675
 
675
    /**
676
    /**
676
     * Permet de récupérer le nom du répertoire d'un projet.
677
     * Permet de récupérer le nom du répertoire d'un projet.
Line 769... Line 770...
769
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
770
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
770
            array_push ($tableau_resultat, $ligne->ph_id_projet_fils) ;
771
            array_push ($tableau_resultat, $ligne->ph_id_projet_fils) ;
771
        }
772
        }
772
        return $tableau_resultat ;
773
        return $tableau_resultat ;
773
    } // end of member function getHierarchie
774
    } // end of member function getHierarchie
774
    
775
 
775
    /**
776
    /**
776
     * Renvoie l'identifiant du pere du projet courrant.
777
     * Renvoie l'identifiant du pere du projet courrant.
777
     *
778
     *
778
     * @return int
779
     * @return int
779
     * @access public
780
     * @access public