<?php
/**
 *
 *
 * @package openmairie_exemple
 * @version SVN : $Id: om_lettretype.class.php 2470 2013-09-09 12:21:44Z fmichon $
 */

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

class om_lettretype extends om_lettretype_gen {

    function om_lettretype($id, &$db, $debug) {
        $this->constructeur($id, $db, $debug);
    }

    function setOnchange(&$form, $maj) {
        //
        parent::setOnchange($form, $maj);
        //
        if ($this->getParameter("maj") == 1) {
            $form->setOnchange('om_sql','warn_user_query_change(form)');
        }
    }

    function setLib(&$form, $maj) {
        //
        parent::setLib($form, $maj);
        //
        $form->setLib('merge_fields', _("merge_fields"));
    }

    function setType(&$form, $maj) {
        //
        parent::setType($form, $maj);
        //
        $form->setType('merge_fields', 'textareastatic');
        //
        if ($maj == 0) {
            $form->setType('merge_fields', 'hidden');
        }
        // ajouter et modifier
        if ($maj == 0 || $maj == 1) {
            //
            $form->setType('orientation', 'select');
            $form->setType('format', 'select');
            $form->setType('titreattribut', 'select');
            $form->setType('corpsattribut', 'select');
            $form->setType('titrefont', 'select');
            $form->setType('corpsfont', 'select');
            $form->setType('titrealign', 'select');
            $form->setType('corpsalign', 'select');
            $form->setType('titrebordure', 'select');
            $form->setType('corpsbordure', 'select');
            //
            $form->setType('logo', 'select');
            //
            $form->setType('logotop', 'localisation_edition');
            $form->setType('titretop', 'localisation_edition');
            $form->setType('corpstop', 'localisation_edition');
        }
        // supprimer et consulter
        if ($maj == 2 or $maj == 3) {
            //
            $form->setType('orientation', 'selectstatic');
            $form->setType('format', 'selectstatic');
            $form->setType('titreattribut', 'selectstatic');
            $form->setType('corpsattribut', 'selectstatic');
            $form->setType('titrefont', 'selectstatic');
            $form->setType('corpsfont', 'selectstatic');
            $form->setType('titrealign', 'selectstatic');
            $form->setType('corpsalign', 'selectstatic');
            $form->setType('titrebordure', 'selectstatic');
            $form->setType('corpsbordure', 'selectstatic');
            //
            $form->setType('logo', 'selectstatic');
        }
    }

    function setSelect(&$form, $maj, &$db, $debug) {
        //
        parent::setSelect($form, $maj, $db, $debug);
        //
        $contenu = array();
        $contenu[0] = array('P', 'L');
        $contenu[1] = array(_('portrait'), _('paysage'));
        $form->setSelect('orientation',  $contenu);
        //
        $contenu = array();
        $contenu[0] = array('A4', 'A3');
        $contenu[1] = array('A4', 'A3');
        $form->setSelect('format', $contenu);
        //
        $contenu = array();
        $contenu[0] = array('', 'I', 'B', 'U', 'BI', 'UI');
        $contenu[1] = array(_('normal'), _('italique'), _('gras'), _('souligne'), _('italique').' '._('gras'), _('souligne').' '._('gras'));
        $form->setSelect('titreattribut', $contenu);
        $form->setSelect('corpsattribut', $contenu);
        $form->setSelect('footerattribut', $contenu);
        //
        $contenu = array();
        $contenu[0] = array('helvetica', 'times', 'arial', 'courier');
        $contenu[1] = array('helvetica', 'times', 'arial', 'courier');
        $form->setSelect('titrefont', $contenu);
        $form->setSelect('corpsfont', $contenu);
        //
        $contenu = array();
        $contenu[0] = array('L', 'R', 'J', 'C');
        $contenu[1] = array(_('gauche'), _('droite'), _('justifie'), _('centre'));
        $form->setSelect('titrealign', $contenu);
        $form->setSelect('corpsalign', $contenu);
        //
        $contenu = array();
        $contenu[0] = array('0', '1');
        $contenu[1] = array(_('sans'), _('avec'));
        $form->setSelect('titrebordure', $contenu);
        $form->setSelect('corpsbordure', $contenu);

        // LOCALISATION EDITION
        $config = array(
            "format" => "format",
            "orientation" => "orientation"
        );
        // Logo
        $contenu = $config;
        $contenu["x"] = "logoleft";
        $contenu["y"] = "logotop";
        $form->setSelect("logotop", $contenu);
        // Titre
        $contenu = $config;
        $contenu["x"] = "titreleft";
        $contenu["y"] = "titretop";
        $form->setSelect("titretop", $contenu);
        // Corps
        $contenu = $config;
        $contenu["x"] = "corpsleft";
        $contenu["y"] = "corpstop";
        $form->setSelect("corpstop", $contenu);

        // SOUS-ETATS ET LOGO
        if (file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php")) {
            include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
        }
        $this->init_select($form, $db, $maj, $debug, "logo",
                           $sql_om_logo, $sql_om_logo_by_id, false);

    }

    function setLayout(&$form, $maj) {

        $form->setFieldset($this->clePrimaire, 'D', _('Edition'), "collapsible");
        $form->setBloc($this->clePrimaire, 'D', "", "");
        $form->setBloc('actif', 'F', "", "");
        $form->setFieldset('orientation','D', _("Parametres generaux de l'edition"), "startClosed");
        $form->setBloc('orientation','D', "", "col_12");
        $form->setBloc('orientation','D', _("Orientation et format"), "col_4");
        $form->setBloc('format','F', "", "");
        $form->setBloc('logo','DF', _("Logo et positionnement"), "col_8");
        $form->setBloc('logoleft','D', "", "group");
        $form->setBloc('logotop','F');
        $form->setBloc('logotop','F');
        $form->setFieldset('logotop','F','');
        $form->setFieldset('logotop','F','');

        $form->setFieldset('titre','D', _('Titre'), "collapsible");
        $form->setBloc('titre','DF', "", "fullwidth hidelabel");
        $form->setFieldset('titreleft','D', _("Parametres du titre de l'edition"), "startClosed");
        $form->setBloc('titreleft','D', _("Positionnement"));
        $form->setBloc('titreleft','D', "", "group");
        $form->setBloc('titretop','F');
        $form->setBloc('titrelargeur','D', "", "group");
        $form->setBloc('titrehauteur','F');
        $form->setBloc('titrehauteur','F');
        $form->setBloc('titrefont','D', _("Style"));
        $form->setBloc('titrefont','D', "", "group");
        $form->setBloc('titretaille','F');
        $form->setBloc('titrebordure','D', "", "group");
        $form->setBloc('titrealign','F');
        $form->setBloc('titrealign','F');
        $form->setFieldset('titrealign','F','');
        $form->setFieldset('titrealign','F','');

        $form->setFieldset('corps','D', _('Corps'), "collapsible");
        $form->setBloc('corps','DF', "", "fullwidth hidelabel");
        $form->setFieldset('corpsleft','D', _("Parametres du corps de l'edition"), "startClosed");
        $form->setBloc('corpsleft','D', _("Positionnement"));
        $form->setBloc('corpsleft','D', "", "group");
        $form->setBloc('corpstop','F');
        $form->setBloc('corpslargeur','D', "", "group");
        $form->setBloc('corpshauteur','F');
        $form->setBloc('corpshauteur','F');
        $form->setBloc('corpsfont','D', _("Style"));
        $form->setBloc('corpsfont','D', "", "group");
        $form->setBloc('corpstaille','F');
        $form->setBloc('corpsbordure','D', "", "group");
        $form->setBloc('corpsalign','F');
        $form->setBloc('corpsalign','F');
        $form->setFieldset('corpsalign','F','');
        $form->setFieldset('corpsalign','F','');

        $form->setFieldset('om_sql','D', _('Champ(s) de fusion'), "collapsible");
        $form->setFieldset('merge_fields','F','');

    }

    function init_default_values() {
        //
        $this->form->setVal('orientation','P');
        $this->form->setVal('format','A4');
        //
        $this->form->setVal('logoleft', 10);
        $this->form->setVal('logotop', 10);
        //
        $this->form->setVal('titre',_('Texte du titre'));
        $this->form->setVal('titreleft',109);
        $this->form->setVal('titretop',16);
        $this->form->setVal('titrelargeur',0);
        $this->form->setVal('titrehauteur',10);
        $this->form->setVal('titrefont','arial');
        $this->form->setVal('titreattribut','B');
        $this->form->setVal('titretaille',20);
        $this->form->setVal('titrebordure',0);
        $this->form->setVal('titrealign','L');
        //
        $this->form->setVal('corps',_('Texte du corps'));
        $this->form->setVal('corpsleft',14);
        $this->form->setVal('corpstop',66);
        $this->form->setVal('corpslargeur',110);
        $this->form->setVal('corpshauteur',5);
        $this->form->setVal('corpsfont','times');
        $this->form->setVal('corpsattribut','');
        $this->form->setVal('corpstaille',10);
        $this->form->setVal('corpsbordure',0);
        $this->form->setVal('corpsalign','J');
    }

    function setVal(&$form, $maj, $validation, &$db, $DEBUG=null) {
        //
        parent::setVal($form, $maj, $validation, $db, $DEBUG=null);
        //
        if ($validation == 0) {
            //
            if ($maj == 0) {
                //
                $this->init_default_values();
            }
        }
    }

    function setValsousformulaire(&$form, $maj, $validation, $idxformulaire, $retourformulaire, $typeformulaire, &$db, $DEBUG=null) {
        //
        parent::setValsousformulaire($form, $maj, $validation, $idxformulaire, $retourformulaire, $typeformulaire, $db, $DEBUG);
        //
        if ($validation == 0) {
            //
            if ($maj == 0) {
                //
                $this->init_default_values();
            }
        }
    }

    function verifier($val = array(), &$db = NULL, $DEBUG = false) {
        // On appelle la methode de la classe parent
        parent::verifier($val, $db, $DEBUG);
        // On verifie si il y a un autre id 'actif' pour la collectivite
        if ($this->valF['actif'] == "Oui") {
            //
            if ($this->getParameter("maj") == 0) {
                //
                $this->verifieractif($db, $val, $DEBUG, "]");
            } else {
                //
                $this->verifieractif($db, $val, $DEBUG, $val[$this->clePrimaire]);
            }
        }
    }

    /**
     * verification sur existence d un etat deja actif pour la collectivite
     */
    function verifieractif(&$db, $val, $DEBUG, $id) {
        //
        $table = "om_lettretype";
        $primary_key = "om_lettretype";
        //
        $sql = " SELECT ".$table.".".$primary_key." ";
        $sql .= " FROM ".DB_PREFIXE."".$table." ";
        $sql .= " WHERE ".$table.".id='".$val['id']."' ";
        $sql .= " AND ".$table.".om_collectivite='".$val['om_collectivite']."' ";
        $sql .= " AND ".$table.".actif IS TRUE ";
        if ($id != "]") {
            $sql .=" AND ".$table.".".$primary_key."<>'".$id."' ";
        }
        //
        $res = $this->db->query($sql);
        $this->addToLog("db->query(\"".$sql."\");", VERBOSE_MODE);
        //
        if (database::isError($res)) {
            //
            die($res->getMessage()." => Echec  ".$sql);
        } else {
            //
            $nbligne = $res->numrows();
            if ($nbligne > 0) {
                $this->correct = false;
                $msg = $nbligne." ";
                $msg .= _("lettre(s) type existante(s) dans l'etat actif. Il ".
                          "n'est pas possible d'avoir plus d'une lettre type");
                $msg .= " \"".$val["id"]."\" "._("active par collectivite.");
                $this->addToMessage($msg);
            }
        }
    }

}

?>
