Création des tables mysql
La création de plugin Magix CMS requiert l'utilisation d'une ou plusieurs tables SQL dans la plupart des cas.
On peut très facilement intégré une installation automatique de vos tables à la première administration de celui-ci.
Créé votre table et copiez la requête de création dans un fichier avec l'extension .sql dans le dossier du même nom.
Editer le fichier admin.php et suivez les instructions :
Test de détection de votre table
Dans les fonctions qui s'occupent de faire les requêtes SQL de votre plugin, il faut dans un premier temps réaliser un test de détection de votre table.
/**
* Vérifie si les tables du plugin sont installé
* @access protected
* return integer
*/
protected function c_show_table(){
$table = 'mc_plugins_matable';
return magixglobal_model_db::layerDB()->showTable($table);
}
Installation des tables SQL
Pour utiliser ce test avant même de procéder à l'installation, il faut créer une fonction spécifique qui sera utilisée dans l'execution (run()).
/**
* @access private
* Installation des tables mysql du plugin
*/
private function install_table(){
if(parent::c_show_table() == 0){
backend_controller_plugins::create()->db_install_table(
'db.sql',
'request/install.phtml'
);
}else{
return true;
}
}
La fonction db_install_table à besoin de deux paramètres :
- Le nom du fichier SQL à lire pour l'installation
- Le fichier phtml pour le message de retour
- Le nom de dossier du plugin (optionnel)
Le système détecte si le fichier existe et exécute tout son contenu pour procéder à l'installation des tables.
Si les tables sont déjà installés, il ignore la procédure d'installation et exécute celui-ci.
/**
* Affiche les pages de l'administration du plugin
* @access public
*/
public function run(){
$create = backend_controller_plugins::create();
//Installation des tables mysql
if(self::install_table() == true){
/*
* Execution des scripts
*/
// Retourne la page index.phtml
$create->append_display('index.phtml');
}else{
// Retourne la page index.phtml
$create->append_display('index.phtml');
}
}


