<?php
/**
 * DBFORM - 'lien_module' - Surcharge gen.
 *
 * Ce script permet de définir la classe 'lien_module'.
 *
 * @package openads
 * @version SVN : $Id$
 */

require_once "../gen/obj/lien_module.class.php";

class lien_module extends lien_module_gen {

    function setType(&$form, $maj) {
        $this->f->log(__METHOD__, 'BEGIN');
        parent::setType($form, $maj);

        if ($maj == 0 || $maj == 1) { // ajout ou modification
            $retourformulaire = $_GET['retourformulaire'] ?? '';
            if (! empty($retourformulaire)) {
                $form->setType('object_name', 'hiddenstatic');

                $idx = $_GET['idxformulaire'] ?? '';
                if (! empty($idx)) {
                    $form->setType('object_id', 'textreadonly');
                }
            }

            $form->setType('module', 'select');
            $form->setType('declencheur', 'select');
        }
        $this->f->log(__METHOD__, 'END');
    }

    function setValsousformulaire(&$form, $maj, $validation, $idxformulaire, $retourformulaire, $typeformulaire, &$dnu1 = null, $dnu2 = null) {
        $this->f->log(__METHOD__, 'BEGIN');
        parent::setValsousformulaire($form, $maj, $validation, $idxformulaire, $retourformulaire, $typeformulaire);
        $this->set_form_default_values($form, $maj, $validation);
        $this->retourformulaire = $retourformulaire;
        //if ($validation == 0) {
            $retourformulaire = $_GET['retourformulaire'] ?? '';
            if (! empty($retourformulaire)) {
                $form->setVal('object_name', $retourformulaire, $validation);

                $idx = $_GET['idxformulaire'] ?? '';
                if (! empty($idx)) {
                    $form->setVal('object_id', $idx, $validation);
                }
            }
        //}
        $this->f->log(__METHOD__, 'END');
    }

    function setValF($val = array()) {
        $this->f->log(__METHOD__, 'BEGIN');
        parent::setValF($val);

        $retourformulaire = $_GET['retourformulaire'] ?? '';
        if (! empty($retourformulaire)) {
            if (! isset($this->valF['object_name'])) {
                $this->valF['object_name'] = $retourformulaire;
            }

            $idx = $_GET['idxformulaire'] ?? '';
            if (! empty($idx)) {
                if (! isset($this->valF['object_id'])) {
                    $this->valF['object_id'] = $idx;
                }
            }
        }
        $this->f->log(__METHOD__, 'END');
    }

    function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
        $this->f->log(__METHOD__, 'BEGIN');
        parent::verifier($val, $dnu1, $dnu2);

        $retourformulaire = $_GET['retourformulaire'] ?? '';
        if (! empty($retourformulaire)) {
            if (empty($this->valF['object_name'])) {
                $this->correct = false;
                $this->addToMessage(sprintf(__("Le champ '%s' ne peut avoir une valeur vide"), 'object_name'));
            }
            elseif($this->valF['object_name'] != $retourformulaire) {
                $this->correct = false;
                $this->addToMessage(sprintf(__("Le champ '%s' ne peut avoir une valeur différente de '%s'"), 'object_name', $retourformulaire));
            }
        }
        $idx = $_GET['idxformulaire'] ?? '';
        if (! empty($idx)) {
            if (empty($this->valF['object_id'])) {
                $this->correct = false;
                $this->addToMessage(sprintf(__("Le champ '%s' ne peut avoir une valeur vide"), 'object_id'));
            }
            elseif($this->valF['object_id'] != $idx) {
                $this->correct = false;
                $this->addToMessage(sprintf(__("Le champ '%s' ne peut avoir une valeur différente de '%s'"), 'object_id', $idx));
            }
        }
        // TODO appeler la fonction de vérification du module pour véfifier le paramétrage
        $this->f->log(__METHOD__, 'END');
    }

    /**
     * Surcharge pour corriger les libellés
     */
    function setLib(&$form, $maj) {
        $form->setLib('object_name', __("Type d'objet"));
        $form->setLib('object_id', __("Identifiant de l'instance de l'objet"));

        $retourformulaire = $_GET['retourformulaire'] ?? '';
        if (! empty($retourformulaire)) {
            $form->setLib('object_id', __("Évènement"));
        }
    }

    function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) {
        $hooks = $this->f->module_manager->get_all_available_hooks();
        $hooks_select_options = array(
            0 => array(''), // liste des identifiants
            1 => array( // liste des libellés
                __('choisir').' '.__('déclencheur'),
            ),
        );
        // TODO filtrer la liste pour chaque module
        foreach($hooks as $name => $desc) {
            $hooks_select_options[0][] = $name;
            $hooks_select_options[1][] = $desc;
        }
        if (! empty($hooks_select_options)) {
            $form->setSelect('declencheur', $hooks_select_options);
        }

        $modules = $this->f->module_manager->get_all_available_modules();
        $modules_select_options = array(
            0 => array(''), // liste des identifiants
            1 => array( // liste des libellés
                __('choisir').' '.__('module'),
            ),
        );
        foreach($modules as $module) {
            $module_name = $module->get_short_name();
            $module_desc = $module->get_description();
            $modules_select_options[0][] = $module_name;
            $modules_select_options[1][] = $module_desc;
        }
        if (! empty($modules_select_options)) {
            $form->setSelect('module', $modules_select_options);
        }
    }
}
