Skip to the content.

Retour

<?php
//Hérite de bnum_plugin.
//Doit être sous mel_metapage dans la liste des plugins
class MonPlugin extends bnum_plugin {
    //Indique sous quels tâches ce plugin va être intialisé et appelé
    public $task = '.*';

   //Initialise le plugin, c'est la première chose qui va être appelé
    public function init()
    {
        //Charge les configs de config.inc.php
        $this->load_config();
        //Charge les textes du plugins, le premier argument est le dossier qui contient les textes, 
        //le second indique si les textes doivent être envoyé au js ou non
        $this->add_texts('localization/', true);

        if ('monplugin' === $this->rc()->task) {
            //Enregistre la tâche
            $this->register_task('monplugin');
            //Enregistre l'action index et sera appelé via un appel à l'url _task=monplugin
            $this->register_action('index', [$this, 'index]);
        }

        //Sera appelé avant tout
        $this->add_hook('startup', [$this, 'startup']);
    }

    public function index() {
        //Charge les données de la config pour la clé 'data'
        $data = this->rc->config->get('data', []);
        //Envoie la donnée au javascript dans rcmail.env
        $this->rc->output->set_env('data', data);
        //Charge le module javascript plugin.js qui se trouve dans /js/lib/
        $this->load_script_module('plugin.js');
        //Charge le fichier style.css
        $this->include_stylesheet($this->local_skin_path().'/style.css');

       //Envoie la page html index lié au plugin "MonPlugin"
        $this->rc->output->send('MonPlugin.index');
    }

    //Exemple de startup
    public function startup($args) {
        $data = this->rc->config->get('data', []);

        if (count(data) === 0) {
            $data = OtherClass::feed();
            $this->rc->user->save_prefs('data', $data);
        }

        return $args;
    }
}