Subversion Repositories Applications.projet

Rev

Rev 397 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1                                                                                      |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or                                        |
// | modify it under the terms of the GNU General Public                                                  |
// | License as published by the Free Software Foundation; either                                         |
// | version 2.1 of the License, or (at your option) any later version.                                   |
// |                                                                                                      |
// | This library is distributed in the hope that it will be useful,                                      |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
// | General Public License for more details.                                                             |
// |                                                                                                      |
// | You should have received a copy of the GNU General Public                                            |
// | License along with this library; if not, write to the Free Software                                  |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: inscription_liste.class.php,v 1.5 2006/04/19 13:50:49 alexandre_tb Exp $
/**
* Application projet
*
* La classe inscription_liste
*
*@package projet
//Auteur original :
*@author        Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author        Aucun
*@copyright     Tela-Botanica 2000-2004
*@version       $Revision: 1.5 $
// +------------------------------------------------------------------------------------------------------+
*/


// +------------------------------------------------------------------------------------------------------+
// |                                            ENTETE du PROGRAMME                                       |
// +------------------------------------------------------------------------------------------------------+


/**
 * class isncription_liste
 * 
 */
class inscription_liste
{
     /*** Attributes: ***/

    /**
     * Identifiant de la liste
     * @access private
     */
    var $_id_liste;
    /**
     * Identifiant de l'utilisateur
     * @access private
     */
    var $_id_utilisateur;
    /**
     * Une ressource PEAR::DB
     * @access private
     */
    var $_db;
    /**
     * Le type d'inscription indique : - 0 : pas d'email - 1 : normale - 2 : résumé
     * @access private
     */
    var $_type_inscription;

    /**
     * Constructeur
     *
     * @param DB objetDB Une ressource PEAR::DB
     * @return void
     * @access public
     */
    function inscription_liste( &$objetDB )
    {
        $this->_db = $objetDB ;
    } // end of member function inscription_liste

    /**
     * Renvoie un tableau avec la liste des inscrit à une liste.
     *
     * @param int id_liste L'identifiant de la liste
     * @return Array
     * @access public
     */
    function getInscritsListe( $id_liste )
    {
        
    } // end of member function getInscritsListe

    /**
     * 
     *
     * @param annire utilisateur 
     * @param liste_discussion id_liste 
     * @param int type_inscription 
     * @return void
     * @access public
     */
    function inscrireUtilisateur( &$utilisateur,  &$liste,  $type_inscription )
    {
        $requete = 'update projet_inscription_liste set '.
                    'pil_id_liste='.$liste->getId().', pil_id_statut='.$this->_db->escapeSimple($type_inscription).' where pil_id_utilisateur='.$this->_db->escapeSimple($utilisateur->getInfo('identifiant')) ; 
        $resultat = $this->_db->query ($requete) ;
        if (DB::isError ($resultat)) {
            echo ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
        }
        if ($this->_db->affectedRows() == 0) {
            $requete = 'insert into projet_inscription_liste set pil_id_utilisateur='.$this->_db->escapeSimple($utilisateur->getInfo('identifiant')).
                        ', pil_id_liste='.$this->_db->escapeSimple($liste->getId()).', pil_id_statut='.$this->_db->escapeSimple($type_inscription) ; 
            $resultat = $this->_db->query ($requete) ;
            if (DB::isError ($resultat)) {
                echo ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
            }
        }
        
        // Ajout dans la liste des commandes au serveur
        // On inscrit le créateur de la liste
        $resultat_ajout_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/ajout_abonne.php?domaine='.
                  $liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$utilisateur->getInfo('mail')) ;
          
    } // end of member function inscrireUtilisateur

    /**
     * 
     *
     * @param int id_utilisateur 
     * @param int id_liste 
     * @return void
     * @access public
     */
    function desinscrireUtilisateur( &$utilisateur, &$liste )
    {
        $requete = 'delete from projet_inscription_liste where pil_id_utilisateur='.$this->_db->escapeSimple($utilisateur->getInfo('identifiant')).' and pil_id_liste='.$this->_db->escapeSimple($liste->getId()) ;
        $resultat = $this->_db->query ($requete) ;
        $resultat_suppression_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/suppression_abonne.php?domaine='.
                  $liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$utilisateur->getInfo('mail')) ;

    } // end of member function desinscrireUtilisateur

    /**
     * 
     *
     * @param int id_liste 
     * @param int id_utilisateur 
     * @param int type_inscription 
     * @return void
     * @access public
     */
    function modifierTypeInscription( $liste,  $utilisateur,  $type_inscription )
    {

        // envoie d'une demande d'inscription par email à la liste
        //include_once 'Mail.php' ;
        
        switch ($type_inscription) {
            case 0 :

            // Ajout du modérateur en tant qu'utilisateur
            $resultat_suppression_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/suppression_abonne.php?domaine='.
                                    $liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$utilisateur->getInfo('mail')) ;

            break ;
            case 1 :
 
            break ;
            case 2 : 

                // Ajout d'un utilisateur
                $resultat_ajout_utilisateur = file_get_contents (PROJET_SERVEUR_VPOPMAIL.'/ajout_abonne.php?domaine='.
                                    $liste->getDomaine().'&liste='.$liste->getNom().'&mail='.$utilisateur->getInfo('mail')) ;
            break ;
        }
    } // end of member function modifierTypeInscription

    /**
     * Renvoie la liste des statuts d'un utilisateur
     *
     * @param int id_utilisateur 
     * @return Array
     * @access public
     */
    function getStatutsInscrit( $id_utilisateur )
    {
        
        $requete = 'select pil_id_liste, pil_id_statut from projet_inscription_liste where pil_id_utilisateur='.$this->_db->escapeSimple($id_utilisateur) ;
        $resultat = $this->_db->query ($requete) ;echo $requete;
        if (DB::isError ($resultat)) {
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
        }
        $tableau_resultat = array() ;
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
            $tableau_resultat[$ligne->pil_id_liste] = $ligne->pil_id_statut ;
        }
        return $tableau_resultat ;
        

    } // end of member function getStatutsInscrit

    /**
     * Renvoie le statut d'un inscrit à une liste
     *
     * @param int id_liste 
     * @param int id_utilisateur 
     * @return int
     * @access public
     */
    function getStatutInscrit( $id_liste,  &$auth )
    {
       
        // Récupération de la liste des listes !!
        $requete = 'select pl_nom_liste, pl_domaine from projet_liste where pl_id_liste='.$this->_db->escapeSimple($id_liste) ;
        $resultat = $this->_db->query ($requete) ;
        if (DB::isError ($resultat)) {
            die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
        }
        $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
        $xml = file_get_contents(PROJET_SERVEUR_VPOPMAIL.'/liste_abonnes.php?domaine='.
                            $ligne->pl_domaine.'&liste='.$ligne->pl_nom_liste) ;
        $tableau_mail = array() ;
        $tableau_ligne = explode ('<email>', $xml) ;
        foreach ($tableau_ligne as $ligne) array_push ($tableau_mail, strip_tags($ligne)) ;
        array_shift($tableau_mail) ;
        if (in_array($auth->getUsername(), $tableau_mail)) {
            return 2;       // Inscrit est le statut  2
        }
        return 0 ;
    } // end of member function getStatutInscrit
} // end of isncription_liste
?>