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