<?php
/**
 * Ce fichier est destine a permettre la surcharge de certaines methodes de
 * la classe om_application pour des besoins specifiques de l'application
 *
 * @package framework_openmairie
 * @version SVN : $Id: framework_openmairie.class.php 4591 2020-04-07 20:44:23Z fmichon $
 */

/**
 *
 */
if (file_exists("../dyn/locales.inc.php") === true) {
    require_once "../dyn/locales.inc.php";
}

/**
 * Définition de la constante représentant le chemin d'accès au framework
 */
define("PATH_OPENMAIRIE", getcwd()."/../core/");

/**
 * TCPDF specific config
 */
define("K_TCPDF_EXTERNAL_CONFIG", true);
define("K_TCPDF_CALLS_IN_HTML", true);

/**
 * Dépendances PHP du framework
 * On modifie la valeur de la directive de configuration include_path en
 * fonction pour y ajouter les chemins vers les librairies dont le framework
 * dépend.
 */
set_include_path(
    get_include_path().PATH_SEPARATOR.implode(
        PATH_SEPARATOR,
        array(
            getcwd()."/../php/pear",
            getcwd()."/../php/db",
            getcwd()."/../php/fpdf",
            getcwd()."/../php/phpmailer",
            getcwd()."/../php/tcpdf",
        )
    )
);

/**
 *
 */
if (file_exists("../dyn/debug.inc.php") === true) {
    require_once "../dyn/debug.inc.php";
}

/**
 *
 */
require_once PATH_OPENMAIRIE."om_application.class.php";

/**
 *
 */
class framework_openmairie extends application {
	
	protected $config__dashboard_nb_column = 2;

    /**
     * Cette variable est un marqueur permettant d'indiquer si nous sommes
     * en mode développement du framework ou non.
     * @var boolean
     */
    protected $_framework_development_mode = true;

    /**
     * Gestion du nom de l'application.
     *
     * @var mixed Configuration niveau application.
     */
    protected $_application_name = "Framework openMairie";

    /**
     * Titre HTML.
     *
     * @var mixed Configuration niveau application.
     */
    protected $html_head_title = ":: openMairie :: Framework";
    
    protected $version = "4.10.0-om5_no_code-1.1.1";

    /*


    function setDefaultValues() {
        $this->addHTMLHeadCss(
            array(
                "../om-theme/jquery-ui-theme/jquery-ui.custom.css",
                "../om-theme/om.css",
            ),
            21
        );
    }
*/

    function setDefaultValues() {
        $this->addHTMLHeadCss(
            array(
                "../lib/om-theme/jquery-ui-theme/jquery-ui.custom.css",
                "../lib/om-theme/om.css",
            ),
            21
        );
    }
        
    /* ergonomie openads
    function setDefaultValues() {
        $this->addHTMLHeadCss(
            array(
                "../app/lib/chosen/chosen.min.css",
            ),
            21
        );
        $this->addHTMLHeadJs(
            array(
                "../app/lib/chosen/chosen.jquery.min.js",
            ),
            21
        );

        $this->addHTMLHeadCss(
            array(
                "../app/lib/gridjs/mermaid.min.css",
            ),
            22
        );
        $this->addHTMLHeadJs(
            array(
                "../app/lib/gridjs/gridjs.min.js",
            ),
            22
        );
    }
	*/
    function get_inst__om_gen($args = array()) {
        //require_once PATH_OPENMAIRIE."om_gen.class.php";
        require_once "om_gen_plus.class.php";
        return new gen_plus();
    }




   
    // surcharge spécifique pour om5_RAD
    // affichage du menu des applications
    // affichage de pg_admin
	protected function set_config__menu() {
		parent::set_config__menu();
		$parent_menu = $this->config__menu;
		// en premiere connexion suite à entrée du login : erreur avec db->query 
		// Call to a member function query() on null 
		// detour par passage par pg_query
		// possibilité d'utiliser les variables globales plutot que database.in.php initiées en connexion
		include "../dyn/database.inc.php";
		$coll=$_SESSION['coll'];
		//$coll=1;
		$user= $conn[$coll][3];
		$pwd = $conn[$coll][4];
		$host= $conn[$coll][6];
		$base= $conn[$coll][9];
		$schema= $conn[$coll][11];
		$con = pg_connect("host=".$host.
				  " port=5432 dbname=".$base.
				  " user=".$user." password=".$pwd);
		if (!$con) {
		  echo "Une erreur de connexion s'est produite avec pg_connect dans la méthode set_config_menu.\n"; 
		  //exit;
		}
		//
		// ---> menu des tables issues d'information_schema
		//      
		$sql  = " SELECT  tables.table_name, parametres->>'libelle' as libelle, parametres->>'affichage' as affichage ";
		$sql .= "  FROM information_schema.tables ";
		$sql .= " left join ".$schema.".om_tables_parametre on tables.table_name=om_tables_parametre.table_name";
		$sql .= " where table_type = 'BASE TABLE' and table_schema = '".$schema."'";
		$sql .= " and substring(tables.table_name,1,3) not like 'om_'";
		$res = pg_query($con, $sql);
		if (!$res) {
		  echo "Une erreur s'est produite avec pg_query dans la méthode set_config_menu .\n.$sql";
		  //exit;
		}				
		$this->addToLog("app/framework_openmairie.class.php: pg_query(\"".$sql."\");", VERBOSE_MODE);		
		//
		$rubrik = array(
			"title" => _("Application"),
			"class" => "application",
		);
		$links = array();			
		while ($row = pg_fetch_assoc($res)) {
			$affiche= $row['affichage'];
			$title = $row['libelle'];
			if($affiche==1){	
				$links[] = array(
					"href" => OM_ROUTE_TAB."&obj=".$row['table_name'],
					"class" => $row['table_name'],
					"title" => _($title),
					"right" => array($row['table_name'], $row['table_name']."_tab", ),
					"open" => array(
						"tab.php|".$row['table_name'],
						"index.php|".$row['table_name']."[module=tab]",
						"form.php|".$row['table_name'],
						"index.php|".$row['table_name']."[module=form]",
					),
				);
			}	
		}
		$rubrik['links'] = $links;
		$menu_avant[] = $rubrik;
		// }}}

		// {{{ Rubrique pg admin
		//
		$rubrik = array(
			"title" => _("om5 no code"),
			"class" => "application",
		);
		//
		$links = array();
		//
		// ---> creation sur la base de la vue 
		//
		$links[] = array(
			"href" => OM_ROUTE_TAB."&obj=om_tables",
			"class" => "om_tables",
			"title" => _("gestion tables"),
			"right" => array("om_tables", "om_tables_tab", ),
			"open" => array(
				"tab.php|om_tables",
				"index.php|om_tables[module=tab]",
				"form.php|om_tables",
				"index.php|om_tables[module=form]",
			),
		);
		
		$links[] = array(
			"href" => OM_ROUTE_TAB."&obj=om_vues",
			"class" => "om_vues",
			"title" => _("gestion vues"),
			"right" => array("om_vues", "om_vues_tab", ),
			"open" => array(
				"tab.php|om_vues",
				"index.php|om_vues[module=tab]",
				"form.php|om_vues",
				"index.php|om_vues[module=form]",
			),
		);
		
		$links[] = array(
			"href" => OM_ROUTE_TAB."&obj=om_proc",
			"class" => "om_vues",
			"title" => _("gestion procédures"),
			"right" => array("om_proc", "om_proc_tab", ),
			"open" => array(
				"tab.php|om_proc",
				"index.php|om_proc[module=tab]",
				"form.php|om_proc",
				"index.php|om_proc[module=form]",
			),
		);

        $links[] = array(
            "href" => OM_ROUTE_FORM."&obj=om_forms&amp;idx=0&amp;action=4",
            "class" => "om_forms",
            "title" => __("composition formulaires"),
            "description" => __("Composition formulaires"),
            "right" => array("om_forms", ),
            "open" => array(
                "tab.php|om_forms",
                "index.php|om_forms[module=tab]",
                "form.php|om_forms",
                "index.php|om_forms[module=form]",
            ),
        );

        $links[] = array(
            "href" => OM_ROUTE_FORM."&obj=om_forms_liste&amp;idx=0&amp;action=6",
            "class" => "om_forms",
            "title" => __("composition listes"),
            "description" => __("Composition listes."),
            "right" => array("om_forms", ),
            "open" => array(
                "tab.php|om_forms_liste",
                "index.php|om_forms_liste[module=tab]",
                "form.php|om_forms_liste",
                "index.php|om_forms_liste[module=form]",
            ),
        );
		/*
		$links[] = array(
			"href" => OM_ROUTE_TAB."&obj=om_etat",
			"class" => "om_etat",
			"title" => _("gestion etat"),
			"right" => array("om_etat", "om_etat_tab", ),
			"open" => array(
				"tab.php|om_etat",
				"index.php|om_etat[module=tab]",
				"form.php|om_etat",
				"index.php|om_etat[module=form]",
			),
		);




		// editions_etat et sous_etat
		
        $links[] = array(
            "href" => OM_ROUTE_MODULE_GEN."&view=editions_etat",
            "class" => "om_gen",
            "title" => __("générer état"),
            "description" => __("generation d'un squelette d'état"),
            "right" => array("om_forms", ),
            //"open" => array(
            //    OM_ROUTE_MODULE_GEN."&view=editions_etat",
            //),
        );

        $links[] = array(
            //"href" => OM_ROUTE_MODULE_GEN."&view=editions_sousetat",
            "href" => "../app/index.php?module=gen&view=editions_sousetat",
            "class" => "om_gen",
            "title" => __("générer sous état"),
            "description" => __("generation d'un squelette de sous état"),
            "right" => array("om_forms", ),
            //"open" => array(
            //    OM_ROUTE_MODULE_GEN."&view=editions_etat",
            //),
        );
		*/
		$rubrik['links'] = $links;
		//
		$menu_apres[] = $rubrik;
		// }}}

//print_r($menu["om-menu-rubrik-administration"]);

		$this->config__menu = array_merge(
			$menu_avant,
			$parent_menu,
			$menu_apres
		);
       
       
       
        
	}

    /**
     * Permet de définir la configuration des liens du footer.
     *
     * @return void
     */
    protected function set_config__footer() {
        $footer = array();
        // Documentation du site
        $footer[] = array(
            "title" => __("Documentation d'om5_NoCode"),
            "description" => __("Acceder a l'espace documentation de l'application"),
            "href" => "../doc/html/",
            "target" => "_blank",
            "class" => "footer-documentation",
        );

        // Forum openMairie
        $footer[] = array(
            "title" => __("Forum"),
            "description" => __("Espace d'échange ouvert du projet openMairie"),
            "href" => "https://communaute.openmairie.org/c/framework",
            "target" => "_blank",
            "class" => "footer-forum",
        );

        // Portail openMairie
        $footer[] = array(
            "title" => __("openMairie.org"),
            "description" => __("Site officiel du projet openMairie"),
            "href" => "http://www.openmairie.org/framework",
            "target" => "_blank",
            "class" => "footer-openmairie",
        );
        //
        $this->config__footer = $footer;
    }
/*
    function getActionsToDisplay() {
        // Récupère les actions
        $actions = parent::getActionsToDisplay();    
        // probleme avec login.php - DB_PREFIXE non initialisé
        // ne pas afficher les actions si l utilisateur n est pas logué
        if (isset($_SESSION['login']) && !empty($_SESSION['login'])){    
            // action a ajouter -> changement d action
            $changerfonction = array(
                "title" => _("changer profil"),
                "description" => _("changer de profil"),
                "href" => "../app/index.php?module=changerprofil",
                "class" => "changerprofil",
            );
            
            // On ajoute la nouvelle action au début du tableau
            array_unshift($actions, $changerfonction);
            //}
            // Action à ajouter -> affichage de la fonction active
            $fonction = array(
                "title" => $_SESSION['profil'],
                "description" => _("profil de l'utilisateur"),
                "class" => "fonction",
            );
            // On ajoute la nouvelle action au début du tableau
            array_unshift($actions, $fonction);
            // Retourne les actions
            return $actions;
        }
        
        //parent::getActionsToDisplay(); 
    }

    function changerprofil() {       
        echo "xxxx";
        return; 
    }   
*/
}
