declarer_tables_principales

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;
}

Autor o autora dani Publicado el: Actualizado: 12/05/17

Traducciones: English, Español, français