Fonctionnement des modules à partir de PEEL 8

1 post in this topic

Posted (edited) · Report post

Deux types de modules existent :

- les modules classiques appelés "light", du même type que pour les versions de PEEL. Ces modules contiennent un fichier de fonctions appelé "fonctions.php" ou "functions.php" pour le front-office et/ou un fichier de fonctions pour l'administration du même nom mais dans un dossier administrer/ ou admin/.
Ces modules light sont installés automatiquement lors de la consultation de la page de configuration du site dans l'administration.
Si l'installation nécessite des modifications en base de données, un fichier SQL avec pour nom nomdumodule.sql ou peel_nomdumodule.sql peut être mis à la racine du dossier du module.
Ce fichier SQL est alors exécuté automatiquement lors de l'installation expresse.

- les modules complet contenant une classe au nom du module.
Ces nouveaux modules, qui n'existaient pas dans les précédentes versions, dérivent de la classe Module de PEEL. Ils permettent notamment une installation et une désinstallation structurée.

Exemple de classe de module :

/**
 *
 * @brief Exemple de module : dossier monmodule/ contenant un fichier Monmodule.php ayant pour contenu la classe ci-dessous
 * @package PEEL
 * @author PEEL <contact@peel.fr>
 * @copyright Advisto SAS 51 bd Strasbourg 75010 Paris https://www.peel.fr/
 * @version $Id: xxx $
 * @access public
 */
class Monmodule extends Module
{
    /**
     * Constructor
     *
     */
    public function __construct()
    {
        $this->name_by_lang = array('en' => 'My module', 'fr' => 'Mon module');
        $this->description_by_lang = 'Description à définir';
        $this->technical_code = 'monmodule';
        $this->activation_variable = 'module_monmodule';
        $this->version = '8.0';
        $this->vendor = 'Advisto';
        $this->peel_versions_compatibility_infos = array('min' => '8.0', 'max' => null);
        $this->dependencies = null;

        parent::__construct();
    }

    /**
     * Vérifie l'installation du module
     */
    static public function check_install()
    {
        $listTables = listTables();
        return in_array('peel_xxxx', $listTables);
    }
    
    /**
     * Gère les opérations liées au module
     */
    public function execute($mode = null)
    {
        if($mode == 'install') {
            query("
CREATE TABLE IF NOT EXISTS `peel_xxxx` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `xxxx` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
");
            set_configuration_variable(array('technical_code' => 'modules_lang_folders_array', 'string' => array_merge_recursive($GLOBALS['site_parameters']['modules_lang_folders_array'], array('monmodule' => '/modules/monmodule/lang/')), 'type' => 'array', 'site_id' => 0, 'origin' => $this->technical_code), true);
            $GLOBALS['site_parameters']['modules_front_office_functions_files_array']['monmodule'] = '/modules/monmodule/Monmodule.php';
            set_configuration_variable(array('technical_code' => 'modules_front_office_functions_files_array', 'string' => $GLOBALS['site_parameters']['modules_front_office_functions_files_array'], 'type' => 'array', 'origin' => 'sites.php', 'site_id' => 0), true);
        } elseif($mode == 'uninstall') {
            query("DROP TABLE `peel_xxxx`");
            unset($GLOBALS['site_parameters']['modules_lang_folders_array']['monmodule']);
            set_configuration_variable(array('technical_code' => 'modules_lang_folders_array', 'string' => $GLOBALS['site_parameters']['modules_lang_folders_array'], 'type' => 'array', 'site_id' => 0, 'origin' => $this->technical_code), true);
            unset($GLOBALS['site_parameters']['modules_front_office_functions_files_array']['monmodule']);
            set_configuration_variable(array('technical_code' => 'modules_front_office_functions_files_array', 'string' => $GLOBALS['site_parameters']['modules_front_office_functions_files_array'], 'type' => 'array', 'origin' => 'sites.php', 'site_id' => 0), true);
        }
    }

    /**
     * Fonction de hook, qui renverra un contenu dépendant du hook concerné
     *
     * @param array $params
     * @return
     */
    static public function hook_XXXXXXXXXX1($params) {
    }

    /**
     * Fonction de hook, qui renverra un contenu dépendant du hook concerné
     *
     * @param array $params
     * @return
     */
   static public function hook_XXXXXXXXXX2($params) {
    }

    /**
     * quelconque()
     *
     * @param string $param1
     * @param string $param2
     * @return
     */
    public function quelconque($param1, $param2)
    {
    }
}

 

 

Edited by Simon développeur PEEL

Share this post


: post
Share on other sites
This topic is now closed to further replies.

Twitter Advisto ecommerce

Facebook PEEL Shopping