Définition du DB

Introduction

Un DB est un élement (de type tableau) du tableau global $record.
Un fichier DB crée avant tout un tableau :

$record[NOMOBJET] = array(
    définition du db
);

Syntaxe complète

$record['c_bloc'] = array(
    #'overridetable'=>'',
    #'adm_actions'=>array(
        'fiche'=>'administrator/action/c_bloc_fiche.php',
        'liste'=>'',
    ),
    #'adm_menu'=>array(
        'fiche'=>'administrator/menu/c_bloc_fiche.php',
        'liste'=>'administrator/menu/c_bloc_liste.php',
        'fiche_top'=>'',
        'liste_top'=>'',
    ),
    'droits'=>array(
        'show'=>'all',
        'add'=>'all',
        'write'=>'all',
        'delete'=>'all'
    ),
    #'aide'=>array(
            'all'=>'aide_bloc',
        ),
    #'libelle'=>'c_bloc',
    #'ss_fiche'=>'edit',
    #'unique'=>array('code'),
    #'delete_cascade'=>array('c_bloc_lien'=>'c_bloc_id', 'c_bloc_file'=>'c_bloc_id', 'c_bloc_album'=>'c_bloc_id', 'ss_fiche'=>"type_id|AND type='CBLOC'"),
    #'delete_condition'=>array('op_operation'=>array( 'field'=>'clt_soc_id',    'condition'=>'op_statut_id>1', ),
    
    #__ description de la liste
   
    #__ description du formulaire
    'table'=> array(
       
    ),
}

$record['NOMDB'] = array

Crée un DB sur l'élement NOMDB.
NOMDB peut correspondre à une table MySQL, à un élement LDAP ou à un élement arbitraire.

'overridetable'=>'NOMOBJETREEL',

Dans le cas où le DB serait de nature arbitraire, overridetable permet d'indiquer à quel objet (table mysql en général) réel il correspond.

Il peut être utile de créer des listes et/ou formulaires différents sur une même table MySQL, pour cela on crée des DBs différents tous rattachés au même overridetable.


'adm_actions'=>array

Permet d'indiquer qu'il existe un fichier PHP (d'actions) à charger sur la page liste et/ou fiche du DB.
Les fichiers PHP peuvent être n'importe où, on indique un chemin complet depuis la racine du cms.

'adm_menu'=>array

Permet d'indiquer qu'il existe un fichier spécifique du menu contextuel ou d'action à charger sur la page liste et/ou fiche du DB.
Les fichiers PHP peuvent être n'importe où, on indique un chemin complet depuis la racine du cms.

Les menus TOP correspondent au menu de gauche sur fond bleu de la fiche ou au menu haut sur fond bleu de la liste. on y trouve en général des formulaires d'import.

Les menus contextuels contiennent quand à eux en général uniquement des liens simples.

'droits'=>array

Ce paramètre est obligatoire, il permet de définir l'étendu des droits sur le DB.
Si aucun droit n'est défini pour all ou ADMIN, l'objet n'est alors pas manipulable.
Il faut y paramétrer au moins all ou ADMIN, les droits des autres profils de contributions seront définis dans le module d'administration du site.
Si une des 4 entrées n'est pas défini, alors ce droit n'existe pour personne, y compris les ADMINs.

'aide'=>array

Permet d'associer un code de texte à ce DB, il y aura alors une aide contextuelle dans la fiche de ce DB.
On peut créer une entrée pour chaque profil de contributeur

'libelle'=>

Code de texte de l'élement DB

'ss_fiche'=>

Dans le cas où ce DB est utilisé en fiche annexe, table ss_fiche, on peut spécifier comment l'objet est géré.
Par défaut, l'objet est géré en mode complet, c'est le contributeur qui choisit si c'est un SELECT (selection d'une fiche existante) ou un EDIT (edition d'une sous-fiche à usage unique)

les valeurs possibles :
edit : l'objet est géré automatiquement en mode sous-fiche...cela signifie qu'un enregistrement est créé dans la table sélectionnée. La suppression de la fiche annexe supprime aussi la sous-fiche.
select : l'objet est géré automatiquement en mode select...cela signifie que la fiche annexe fait juste un lien vers la fiche existante. La suppression de la fiche annexe supprime uniquement le lien vers la fiche existante, mais pas la sous-fiche.

'unique'=>array

Permet de définir les contraintes d'unicité de l'objet
C'est une tableau de champs de l'objet.

Par exemple :
'unique'=>array('nom')
On ne peut alors pas enregistrer 2 fiches avec le même nom.
Tous les éléments du tableaux doivent correspondre pour déterminer l'unicité.

'delete_cascade'=>array

Obligatoire si l'objet possède des sous-objets.
Il permet de faire des suppressions récursives dans la base si un objet est supprimé.

On indique une suite de tableau avec la table, la clé étrangère et éventuellement des paramètres de filtres

Exemple:
'delete_cascade'=>array('c_bloc_lien'=>'c_bloc_id', 'c_bloc_file'=>'c_bloc_id', 'c_bloc_album'=>'c_bloc_id', 'ss_fiche'=>"type_id|AND type='CBLOC'"),

'delete_condition'=>array

Permet de définir des conditions de blocage de la suppression.
Si une condition est remplie, la suppression via DeleteRecord() est bloquée.

Exemple :
'delete_condition'=>array('op_operation'=>array( 'field'=>'id', 'condition'=>'op_statut_id>1',    ),
==> on fait une requête sur FROM op_operation WHERE id='IDENCOURS' AND op_statut_id>1, si la requête ne ramène pas un tableau vide alors le DeleteRecord est bloqué