<?php
/**
 * Ce fichier est destine a permettre la surcharge de certaines methodes de
 * la classe om_dbform pour des besoins specifiques de l'application
 *
 * @package openmairie_exemple
 * @version SVN : $Id: om_dbform.class.php 2045 2013-01-22 14:03:35Z jbastide $
 */

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

/**
 *
 */
require_once "om_formulaire.class.php";

/**
 *
 */
class om_dbform extends dbForm {
    
    /**
     *
     */
    var $om_formulaire = "om_formulaire";



	function preparePrecSuiv() {
		(isset($this -> f -> submitted_get_value['idx']) ? $id = $this -> f -> submitted_get_value['idx'] : $id = "");
		(isset($this -> f -> submitted_get_value['obj']) ? $obj = $this -> f -> submitted_get_value['obj'] : $obj = "");
		(isset($this -> f -> submitted_get_value['premier']) ? $premier = $this -> f -> submitted_get_value['premier'] : $premier = 0);
		(isset($this -> f -> submitted_get_value['tricol']) ? $tricol = $this -> f -> submitted_get_value['tricol'] : $tricol = "");
		(isset($this -> f -> submitted_get_value['advs_id']) ? $advs_id = $this -> f -> submitted_get_value['advs_id'] : $advs_id = "");
		(isset($this -> f -> submitted_get_value['valide']) ? $valide = $this -> f -> submitted_get_value['valide'] : $valide = "");
		(isset($this -> f -> submitted_get_value['recherche']) ? $recherche = $this -> f -> submitted_get_value['recherche'] : $recherche = "");
		(isset($this -> f -> submitted_get_value['selectioncol']) ? $selectioncol = $this -> f -> submitted_get_value['selectioncol'] : $selectioncol = "");
		(isset($this -> f -> submitted_get_value['retourformulaire']) ? $retourformulaire = $this -> f -> submitted_get_value['retourformulaire'] : $retourformulaire = "");
		(isset($this -> f -> submitted_get_value['idxformulaire']) ? $idxformulaire = $this -> f -> submitted_get_value['idxformulaire'] : $idxformulaire = "");
		(isset($this -> f -> submitted_get_value['retour']) ? $retour = $this -> f -> submitted_get_value['retour'] : $retour = "");
		// Liste des options
        // -----------------
        if (!isset($options)) {
            $options = array();
        }
        // Dictionnaire des actions
        // ------------------------
        // Ancien tableau (retro-compatibilite)
        $href = array();
        // Declaration du dictionnaire
        $tab_actions = array(
            'corner' => array(),
            'left' => array(),
            'content' => array(),
            'specific_content' => array(),
        );
		$extra_parameters = array();

        // surcharge globale
        if (file_exists('../dyn/tab.inc.php')) {
            require_once '../dyn/tab.inc.php';
        }
        if (file_exists('../dyn/custom.inc.php')) {
            require '../dyn/custom.inc.php';
        }
		if(isset($custom['tab'][$obj]) and file_exists($custom['tab'][$obj])){
            require $custom['tab'][$obj];
        }else{
            // surcharge specifique des objets
            if (file_exists("../sql/".OM_DB_PHPTYPE."/".$obj.".inc.php")) {
               require "../sql/".OM_DB_PHPTYPE."/".$obj.".inc.php";
            } else {
               require "../sql/".OM_DB_PHPTYPE."/".$obj.".inc";
            }   
        }
        $edition = "";
        $om_validite = false;
        if (!isset($options)) {
            $options = array();
        }
		// on ne prend que la première colonne 
		$champAffiche[0]=substr($champAffiche[0], 0, strpos(strtolower($champAffiche[0]), " as "))." as idx";
		// Instanciation d'om_table
        require_once "../obj/om_table.class.php";
		$tb = new om_table(
            "../scr/tab.php",
            $table,
            $serie,
            $champAffiche,
            $champRecherche,
            $tri,
            $selection,
            $edition,
            $options,
            $advs_id,
            $om_validite
        );
		$params = array(
            "obj" => $obj,
            "premier" => $premier,
            "recherche" => $recherche,
            "selectioncol" => $selectioncol,
            "tricol" => $tricol,
            "advs_id" => $advs_id,
            "valide" => $valide,
        );
        // Ajout de paramètre spécifique
        $params = array_merge($params, $extra_parameters);
		$tb->setParams($params);
		// Methode permettant de definir si la recherche doit etre faite
		// sur la recherche simple ou avncee
		$tb->composeSearchTab();
		// Generation de la requete de recherche
		$tb->composeQuery();
		// récupération de la requête générée
		$limit=$tb ->serie+2;
		if ($premier-1 >= 0)
			$offset=$premier - 1;
		else
			$offset=0;
		$sql= "SELECT array_agg(idx) FROM (SELECT idx FROM (".$tb->sql.") lst LIMIT ".$limit." OFFSET ".$offset.") a";
		$tb->__destruct();
		$idxs=$this ->f -> db -> getOne($sql);
		$aidxs=explode(",",str_replace("{","",str_replace("}","",($idxs))));
		$pos=array_search($id, $aidxs,true);
		$prec=$pos-1;
		$suiv=$pos+1;
		if ($suiv == sizeof($aidxs))
			$suiv=-1;
		$premier_prec=$premier;
		$premier_suiv=$premier;
		if ($premier_prec > 0 && $prec==0)
			$premier_prec=$premier_prec-$tb ->serie;
		if ($premier_suiv == 0 && $suiv==$tb ->serie)
			$premier_suiv=$premier_suiv+$tb ->serie;
		if ($premier_suiv > 0 && $suiv>$tb ->serie)
			$premier_suiv=$premier_suiv+$tb ->serie;
		if ( $prec >=0) {
			if ($this->f->submitted_get_value['retourformulaire'] != null)
				$url_prec='../scr/sousform.php?obj='.$obj.'&action=3&idx='.$aidxs[$prec].'&premiersf='.$premier_prec.'&retourformulaire='.$retourformulaire.'&idxformulaire='.$idxformulaire.'&retour='.$retour;
			else
				$url_prec='../scr/form.php?obj='.$obj.'&action=3&idx='.$aidxs[$prec].'&advs_id='.$advs_id.'&premier='.$premier_prec.'&recherche='.$recherche.'&selectioncol='.$selectioncol.'&tricol='.$tricol.'&valide='.$valide.'&retour='.$retour;
		} else {
			$url_prec="";
		}
		if ( $suiv >=0) {
			if ($this->f->submitted_get_value['retourformulaire'] != null)
				$url_suiv='../scr/sousform.php?obj='.$obj.'&action=3&idx='.$aidxs[$suiv].'&premiersf='.$premier_suiv.'&retourformulaire='.$retourformulaire.'&idxformulaire='.$idxformulaire.'&retour='.$retour;
			else
				$url_suiv='../scr/form.php?obj='.$obj.'&action=3&idx='.$aidxs[$suiv].'&advs_id='.$advs_id.'&premier='.$premier_suiv.'&recherche='.$recherche.'&selectioncol='.$selectioncol.'&tricol='.$tricol.'&valide='.$valide.'&retour='.$retour;
		} else {
			$url_suiv="";
		}
		$prev_suiv = array(
			"idx" => $id,
			"prec_idx" => $prec,
			"prec_premier" => $premier_prec,
			"prec_url" => $url_prec,
			"suiv_idx" => $suiv,
			"suiv_premier" => $premier_suiv,
			"suiv_url" => $url_suiv
			);
		if ($prev_suiv['idx'] != '' && $prev_suiv["prec_idx"] >=0) {
			array_push(
				$this->class_actions,
				array(
					"identifier" => "nav_prec",
					"portlet" => array(
						"type" => "action-self",
						'libelle' => _('précédent'),
						//'ajax' => false,
						"class" => "prev-16",
						'order' => 30,
						'url' => $prev_suiv["prec_url"]
						//'id' => '',
					)
				)
			);
		}
		if ($prev_suiv['idx'] != '' && $prev_suiv["suiv_idx"] >=0) {
			array_push(
				$this->class_actions,
				array(
					"identifier" => "nav_suiv",
					"portlet" => array(
						'libelle' => _('suivant'),
						"type" => "action-self",
						//'ajax' => false,
						"class" => "suiv-16",
						'ordre' => 101,
						'url' => $prev_suiv["suiv_url"]
						//'id' => '',
					),
				)
			);
		}
		return $prev_suiv;
	}
}

?>
