Programar con SPIP 3.0
Documentación técnica de SPIP 3.0

> > > > declarer_tables_principales

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) :

  1. $tables_principales['spip_nom'] = array(
  2. 'field' => array('champ'=>'codigo sql de creacion'),
  3. 'key' => array('type' => 'nombre del/de los campos'),
  4. 'join' => array('champ'=>'campo de enlace')
  5. );

Descargar

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.

  1. function agenda_declarer_tables_principales($tables_principales){
  2. //-- Table EVENEMENTS -------------------
  3. $evenements = array(
  4. "id_evenement" => "bigint(21) NOT NULL",
  5. "id_article" => "bigint(21) DEFAULT '0' NOT NULL",
  6. "date_debut" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
  7. "date_fin" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
  8. "titre" => "text NOT NULL",
  9. "descriptif" => "text NOT NULL",
  10. "lieu" => "text NOT NULL",
  11. "adresse" => "text NOT NULL",
  12. "inscription" => "tinyint(1) DEFAULT 0 NOT NULL",
  13. "places" => "int(11) DEFAULT 0 NOT NULL",
  14. "horaire" => "varchar(3) DEFAULT 'oui' NOT NULL",
  15. "id_evenement_source" => "bigint(21) NOT NULL",
  16. "maj" => "TIMESTAMP"
  17. );
  18.  
  19. $evenements_key = array(
  20. "PRIMARY KEY" => "id_evenement",
  21. "KEY date_debut" => "date_debut",
  22. "KEY date_fin" => "date_fin",
  23. "KEY id_article" => "id_article"
  24. );
  25.  
  26. $tables_principales['spip_evenements'] = array(
  27. 'field' => &$evenements,
  28. 'key' => &$evenements_key,
  29. 'join'=>array(
  30. 'id_evenement'=>'id_evenement',
  31. 'id_article'=>'id_article'
  32. ));
  33.  
  34. $tables_principales['spip_rubriques']['field']['agenda'] = 'tinyint(1) DEFAULT 0 NOT NULL';
  35.  
  36. return $tables_principales;
  37. }

Descargar

  • Autor:
  • Publicado el:
  • Actualizado: 12/05/17
  • Traducciones: English, Español, français