Subversion Repositories Applications.referentiel

Rev

Rev 20 | Rev 24 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// declare(encoding='UTF-8');
/**
* Classe modèle spécifique à l'application, donc d'accés au données, elle ne devrait pas être appelée de l'extérieur.
* Elle est abstraite donc doit obligatoirement être étendue.
*
* @category             Php5
* @package              Referentiel
* @author               Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright    2010 Tela-Botanica
* @license              http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license              http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version              SVN: $Id$
*/
abstract class Dao {
        protected $distinction = '0';
        protected $limite_debut = null;
        protected $limite_nbre = null;
        protected $url_jrest = null;
        
        public function __construct() {
                $this->url_jrest = config::get('url_jrest');
        }
        
        //+----------------------------------------------------------------------------------------------------------------+
        // ACCESSEURS
        
        public function avoirLimitation() {
                $limitation = false;
                if (!is_null($this->limite_debut) && !is_null($this->limite_nbre)) {
                        $limitation = true;
                }
                return $limitation;
        }
        
        public function setDistinction($distinct) {
                $this->distinction = $distinct;
        }
        
        public function getDistinction() {
                return $this->distinction;
        }
        
        public function setLimitation($limite_debut, $limite_nbre) {
                $this->limite_debut = $limite_debut;
                $this->limite_nbre = $limite_nbre;
        }
        
        public function getLimiteDebut() {
                return $this->limite_debut;
        }
        public function getLimiteNbre() {
                return $this->limite_nbre;
        }
        
        //+----------------------------------------------------------------------------------------------------------------+
        // MÉTHODES
        protected function envoyerRequeteAjout($url, Array $donnees) {
                $retour = $this->envoyerRequete($url, $donnees, 'PUT');
                return $retour;
        }
        
        protected function envoyerRequeteModif($url, $donnees) {
                $retour = $this->envoyerRequete($url, $donnees, 'POST');
                return $retour;
        }
        
        protected function envoyerRequeteSuppression($url) {
                $retour = $this->envoyerRequete($url, $donnees, 'DELETE');
                return $retour;
        }
        
        private function envoyerRequete($url, Array $donnees, $mode) {
                $retour = false;
                if ($mode != 'PUT' && $mode != 'POST' && $mode != 'DELETE') {
                        $e = "Le mode de requête '$mode' n'est pas accepté!";
                        trigger_error($e, E_USER_WARNING);
                } else {
                        $contexte = stream_context_create(
                                array('http' => array(
                                'method' => $mode,
                                        'header' => "Content-type: application/x-www-form-urlencoded\r\n",
                                'content' => http_build_query($donnees))));
                        $retour = file_get_contents($url, false, $contexte);
                }
                return $retour;
        }
}