Subversion Repositories Sites.tela-botanica.org

Compare Revisions

Ignore whitespace Rev 3 → Rev 4

/trunk/actu/ecrire/inc_objet.php3
New file
0,0 → 1,150
<?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);
}
 
 
?>