Subversion Repositories Sites.tela-botanica.org

Rev

Rev 4 | Blame | Last modification | View Log | RSS feed

<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2005                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/


//
// Ce fichier ne sera execute qu'une fois
if (defined("_ECRIRE_INC_OBJET")) return;
define("_ECRIRE_INC_OBJET", "1");

include_ecrire('inc_objet_base.php3');


//
// --- Creation de classe concrete ----
//
// Il faut creer deux classes :
//   - une pour la factory
//   - une pour le descripteur d'objet
//
// Le descripteur d'objet doit declarer le constructeur, qui peut
// etre laisse vide.
//
// La factory doit declarer 1) le constructeur, qui regle normalement
// le nom des champs, de la table sql, et du descripteur d'objet ;
// ainsi que 2) la methode new_object, qui prend le $id d'un objet en
// argument et initialise les champs du nouvel objet selon la
// semantique choisie pour icelui.
//
// Ensuite il faut instancier et enregistrer la factory et fournir
// une fonction globale d'appel d'objet. Le plus simple est de
// recopier la fonction fournie et de changer les noms.
//

// --------------------------------------------------------------------

//
// Factory d'articles
//

class ArticleFactory extends _ObjectFactory {
        // Initialiser les variables de classe
        function ArticleFactory() {
                $this->fast_vars_list = array('id_article', 'id_rubrique', 'id_secteur', 'titre', 'surtitre',
                        'soustitre', 'descriptif', 'date', 'date_redac', 'visites', 'referers', 'statut');
                $this->slow_vars_list = array('chapo', 'texte', 'ps');
                $this->sql_table = 'spip_articles';
                $this->object_class = 'Article';
        }

        // Initialiser les variables d'objet
        function new_object($id) {
                $this->set_object_field($id, 'titre', 'Nouvel article');
                $this->set_object_field($id, 'statut', 'poubelle');
        }
}

class Article extends _Object {
        // Ne rien faire
        function Article() {
        }
}

add_factory('article'); // Retourne 'article_factory'

function fetch_article($critere, $fast = true) {
        return $GLOBALS['article_factory']->fetch_object($critere, $fast);
}


// --------------------------------------------------------------------

//
// Factory de breves
//

class BreveFactory extends _ObjectFactory {
        // Initialiser les variables de classe
        function BreveFactory() {
                $this->fast_vars_list = array('id_breve', 'id_rubrique', 'titre', 
                        'lien_titre', 'lien_url', 'date_heure', 'statut');
                $this->slow_vars_list = array('texte');
                $this->sql_table = 'spip_breves';
                $this->object_class = 'Breve';
        }

        // Initialiser les variables d'objet
        function new_object($id) {
                $this->set_object_field($id, 'titre', 'Nouvelle breve');
                $this->set_object_field($id, 'statut', 'refuse');
        }
}

class Breve extends _Object {
        // Ne rien faire
        function Breve() {
        }
}

add_factory('breve'); // Retourne 'article_factory'

function fetch_breve($critere, $fast = true) {
        return $GLOBALS['breve_factory']->fetch_object($critere, $fast);
}


// --------------------------------------------------------------------

//
// Factory de documents
//

class DocumentFactory extends _ObjectFactory {
        // Initialiser les variables de classe
        function DocumentFactory() {
                $this->fast_vars_list = array('id_document', 'id_vignette', 'id_type', 
                        'titre', 'descriptif', 'fichier', 'largeur', 'hauteur', 'taille', 'mode', 'date');
                $this->slow_vars_list = '';
                $this->sql_table = 'spip_documents';
                $this->object_class = 'Document';
        }

        // Initialiser les variables d'objet
        function new_object($id) {
                $this->set_object_field($id, 'titre', 'nouveau document');
        }
}

class Document extends _Object {
        // Ne rien faire
        function Document() {
        }
}

add_factory('document'); // Retourne 'article_factory'

function fetch_document($critere, $fast = true) {
        return $GLOBALS['document_factory']->fetch_object($critere, $fast);
}


?>