declarer_tables_principales : declarar_tablas_principales
Este pipeline permite declarar tablas adicionales o campos de tablas de SPIP, indicando el tipo SQL de cada campo, las claves primarias, las claves de índice y, a veces, las claves de juntura de tablas (join).
Este pipeline concierene las tablas llamadas «principales» que contienen objetos editoriales, en oposición a tablas llamadas «auxiliares» que contienen más bien enlaces entre tablas principales.
Estas declaraciones sirven a SPIP para :
- manejar las denominaciones de bucles (pero esto no es indispensable, ya que SPIP sabe recuperar las descripciones de una tabla aunque no esté declarada),
- crear tablas (o los campos que faltan) a la instalación de SPIP o de un plugin,
- tomar en cuenta estas tablas y los campos en los respaldos y restauraciones hechas por el manejador de respaldos de SPIP (los dump).
La función toma como parámetro la lista de tablas ya declaradas y debe devolver este cuadro (array). Este cuadro lista las tablas y, para cada una de éstas, un cuadro con 2 o 3 claves (join
es opcional) :
$tables_principales['spip_nom'] = array(
'field' => array('champ'=>'codigo sql de creacion'),
'key' => array('type' => 'nombre del/de los campos'),
'join' => array('champ'=>'campo de enlace')
);
SPIP llama este pipeline cuando declara las tablas utilizadas, en el archivo ecrire/base/serial.php.
Ejemplo
El plugin «Agenda» declara una tabla «spip_evenements» con varios campos. Declara la clave primaria (id_evenement
), 3 índices (date_debut
, date_fin
et id_article
), así como dos claves potenciales para las junturas (join): id_evenement
y id_article
(creo que el orden es importante).
Este plugin declara también un campo "agenda" en la tabla spip_rubriques
.
function agenda_declarer_tables_principales($tables_principales){
//-- Table EVENEMENTS -------------------
$evenements = array(
"id_evenement" => "bigint(21) NOT NULL",
"id_article" => "bigint(21) DEFAULT '0' NOT NULL",
"date_debut" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"date_fin" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"titre" => "text NOT NULL",
"descriptif" => "text NOT NULL",
"lieu" => "text NOT NULL",
"adresse" => "text NOT NULL",
"inscription" => "tinyint(1) DEFAULT 0 NOT NULL",
"places" => "int(11) DEFAULT 0 NOT NULL",
"horaire" => "varchar(3) DEFAULT 'oui' NOT NULL",
"id_evenement_source" => "bigint(21) NOT NULL",
"maj" => "TIMESTAMP"
);
$evenements_key = array(
"PRIMARY KEY" => "id_evenement",
"KEY date_debut" => "date_debut",
"KEY date_fin" => "date_fin",
"KEY id_article" => "id_article"
);
$tables_principales['spip_evenements'] = array(
'field' => &$evenements,
'key' => &$evenements_key,
'join'=>array(
'id_evenement'=>'id_evenement',
'id_article'=>'id_article'
));
$tables_principales['spip_rubriques']['field']['agenda'] = 'tinyint(1) DEFAULT 0 NOT NULL';
return $tables_principales;
}