table=$table; //Vérification que la requête existe if ($table=="caddie_procs") { $requete="select idproc, type, name, requete, comment, autorisations, parameters from ".$this->table." where idproc=$id_parameters"; } else { //Ca c'est parcequ'Eric est borné !! $requete="select idproc, name, requete, comment, autorisations, parameters from ".$this->table." where idproc=$id_parameters"; } $resultat=mysql_query($requete); //Si requête échoue, c'est que le numéro passé n'est pas un nombre if ($resultat==false) return 0; //Si il y a 0 résultats, c'est que l'id passé n'existe pas if (mysql_num_rows($resultat)==0) return 0; $this->proc=mysql_fetch_object($resultat); $this->id_query=$id_parameters; //Récupération des paramètres cités dans la requête if (!$this->get_query_parameters()) return 0; //Récupération des paramètres décrits if (!$this->get_parameters_description()) return 0; //Vérification de la concordance et complément automatique s'il manque certains paramètres if (!$this->check_parameters()) return 0; $this->n_parameters=count($this->query_parameters); return 1; } function get_hidden_values() { global $charset; $ret=""; for ($i=0; $iquery_parameters); $i++) { $name=$this->query_parameters[$i]; global $$name; $val=$$name; if (isset($val)) { if (is_array($val)) { for ($j=0; $j\n"; } } else { $ret.="\n"; } } } return $ret; } //Pour ceux qui ne veulent pas gérer les appels en fonction du formulaire function proceed() { global $form_type; //Si type de formulaire vide alors retourner 0 if ($form_type=="") return 0; switch ($form_type) { //Le formulaire était le formulaire de saisie des paramètres d'une requête : // appel du constructeur de requête et retour de la valeur 1 case "gen_form": $this->get_final_query(); return 1; break; //Le formulaire étatit le formulaire de configuration des paramètres : //appel de la fonction de mise à jour des paramètres dans la table des procédures //et retour = 2 case "config_form": $this->update_config(); return 2; break; } } //Récupération des paramètres de la requête function get_query_parameters() { $query_parameters=array(); //S'il y a des termes !!*!! dans la requête alors il y a des paramètres if (preg_match_all("|!!(.*)!!|U",$this->proc->requete,$query_parameters)) { $this->query_parameters=array(); for ($i=0; $iquery_parameters); if (!(($as!==false)&&($as!==null))) $this->query_parameters[]=$query_parameters[1][$i]; } return 1; } else { //Sinon retour faux return 0; } } //Récupération de la description XML des paramètres et transformation en tableau function get_parameters_description() { global $parameters_description; $parameters_description=array(); //Appel du parser _parser_text_($this->proc->parameters, array("FIELD"=>"_field_"), "FIELDS"); //Récupération du tableau $this->parameters_description=$parameters_description; return 1; } //Comparaison entre les paramètres trouvés dans la requête et ceux trouvés dans le champ XML //Si besoin, création des paramètres de la requête non détaillés dans le XML function check_parameters() { //Paramètre par défaut : texte obligatoire $default_param[MANDATORY]="yes"; $default_param[ALIAS][0][value]=""; $default_param[TYPE][0][value]="text"; //Pour chaque paramètre trouvé dans la requête for ($i=0; $iquery_parameters);$i++) { //Si le paramètre n'est pas décrit if (!$this->parameters_description[$this->query_parameters[$i]]) { //Ajout du paramètre par défaut dans le tableau de description $default_param[NAME]=$this->query_parameters[$i]; $default_param[ALIAS][0][value]=$this->query_parameters[$i]; $this->parameters_description[$this->query_parameters[$i]]=$default_param; } } return 1; } //Renvoi du type d'un paramètre function get_field_type($field) { return $field[TYPE][0][value]; } //Renvoi de l'alias d'un paramètre (texte affiché dans le formulaire) function get_field_alias($field) { return $field[ALIAS][0][value]; } //Renvoi des options d'un type de paramètre function get_field_options($field) { return $field[OPTIONS][0]; } //Génération du formulaire de saisie des paramètres //$lien_base = adresse de postage du formulaire function gen_form($lien_base) { //$aff_list = liste des fonctions d'affichage en fonction du type global $aff_list; global $msg; global $current_module; //$check_scripts contients les javascripts de test de validité des champs avant soumission $check_scripts=""; //Titre du formulaire echo "

".$msg["proc_param_choice"]."

"; echo pmb_bidi("

".$this->proc->name."

"); echo pmb_bidi("".$this->proc->comment.""); echo "

"; echo "\n"; //Affichage des champs $champ_focus="";//nom du champ où l'on va mettre le focus for ($i=0; $iquery_parameters); $i++) { $name=$this->query_parameters[$i]; $champ_type=$this->get_field_type($this->parameters_description[$name]); if(!$champ_focus && ($champ_type == "text")) $champ_focus=$name;//en priorité le premier champ texte echo pmb_bidi(""); eval("\$aff=".$aff_list[$champ_type]."(\$this->parameters_description[\$name],\$check_scripts);"); echo pmb_bidi("\n"); } echo "
".$this->get_field_alias($this->parameters_description[$name])."".$aff."
"; if(!$champ_focus) $champ_focus=$this->query_parameters[0];//Si pas de champ texte par défaut on prend le premier //Compilation des javascripts de validité renvoyés par les fonctions d'affichage $check_scripts=""; echo $check_scripts; //Boutons d'annulation/soumission echo " "; echo "id_query."\" />\n"; echo "\n"; echo "
"; echo ""; } //Génération du formulaire de saisie des paramètres pour le planificateur function gen_form_plann() { //$aff_list = liste des fonctions d'affichage en fonction du type global $aff_list; global $msg; //$check_scripts contients les javascripts de test de validité des champs avant soumission $check_scripts=""; //Titre du formulaire $result = "

".$msg["proc_param_choice"]."

"; $result .= pmb_bidi("

".$this->proc->name."

"); $result .= pmb_bidi("".$this->proc->comment.""); $result .= "

"; $result .= "\n"; //Affichage des champs for ($i=0; $iquery_parameters); $i++) { $name=$this->query_parameters[$i]; //appel de la globale pré-enregistré (par le planificateur) s'il y a... global $$name; $result .= pmb_bidi(""); eval("\$aff=".$aff_list[$this->get_field_type($this->parameters_description[$name])]."(\$this->parameters_description[\$name],\$check_scripts);"); $result .= pmb_bidi("\n"); } $result .= "
".$this->get_field_alias($this->parameters_description[$name])."".$aff."
"; //Compilation des javascripts de validité renvoyés par les fonctions d'affichage $check_scripts=""; $result .= $check_scripts; // $result .= "id_query."\" />\n"; // $result .= "\n"; return $result; } //sérialisation des paramètres de la procédure pour le planificateur function make_serialized_parameters_params() { //seulement pour les procs internes... if ($this->parameters_description) { foreach($this->parameters_description as $parameter) { $name = $parameter["NAME"]; global $$name; $t[$name] = $$name; } } return $t; } //Récupération de la requête interprétée en fonction de ce qui a été saisi //dans le formulaire de saisie des paramètres function get_final_query() { global $chk_list; global $val_list; //Vérification du formulaire côté serveur for ($i=0; $iquery_parameters); $i++) { $name=$this->query_parameters[$i]; eval("\$chk=".$chk_list[$this->get_field_type($this->parameters_description[$name])]."(\$this->parameters_description[\$name],\$check_message);"); if (!$chk) { echo ""; exit(); } } //Récupération des valeurs finales & remplacement dans la requête $query=$this->proc->requete; for ($i=0; $iquery_parameters); $i++) { $name=$this->query_parameters[$i]; eval("\$val=".$val_list[$this->get_field_type($this->parameters_description[$name])]."(\$this->parameters_description[\$name]);"); $query=str_replace("!!".$name."!!",$val,$query); } //Stockage du résultats $this->final_query=$query; } //Conversion en XML du tableau des options function options_to_xml($field) { return array_to_xml($field[OPTIONS][0],"OPTIONS"); } //Affichage de la liste des types de champs function show_list_type($field) { global $type_list; $res=""; return $res; } //Fonction de mise à jour de la description des paramètres d'une procédure //l'appel doit être fait après le soumission du formulaire de configuration function update_config($lien_base) { global $charset; global $msg; $ret="\n"; $ret.="\n"; //Pour chaque paramètre for ($i=0; $iquery_parameters); $i++) { $name=$this->query_parameters[$i]; //Récupération des valeurs du formulaire de configuration $alias=$name."_alias"; $mandatory=$name."_mandatory"; $for=$name."_for"; $type=$name."_type"; $options=$name."_options"; global $$alias,$$mandatory,$$for,$$type,$$options; //Transformation de mandatory en "yes" ou "no" if ($$mandatory==1) $$mandatory="yes"; else $$mandatory="no"; //Si un type choisi dans le formulaire de configuration ne correspond pas au type des options //alors erreur ! if ($$type!=$$for) { echo ""; exit(); } //Ajout de la description XML du paramètre $ret.=" \n"; $ret.=" \n"; $ret.=" ".$$type."\n"; $ret.=stripslashes($$options)."\n"; $ret.=" \n"; } $ret.=""; //Mise à jour de la procédure $requete="update ".$this->table." set parameters='".addslashes($ret)."' where idproc=".$this->id_query; mysql_query($requete); $this->parameters($this->id_query); //Retour au lien echo ""; } //Formulaire de configuration des paramètres //$lien_base = adresse de postage du formulaire //$lien_cancel = adresse de retour en cas d'annulation function show_config_screen($lien_base,$lien_cancel) { global $type_list; global $options_list; global $charset; global $include_path; global $msg; global $current_module; global $charset; echo "
\n"; //Titre du formulaire echo "

".$msg["proc_param_define"]."

".$this->proc->name."

"; echo pmb_bidi("".$this->proc->comment."
"); $html_requete=$this->proc->requete; //Surlignage des paramètres dans la requête for ($i=0; $iquery_parameters); $i++) { $name=$this->query_parameters[$i]; $html_requete=str_replace("!!".$name."!!","".$name."",$html_requete); } echo "
".$html_requete."
"; echo "
"; echo "\n"; echo "\n"; //Affichage du tableau de configuration des paramètres for ($i=0; $iquery_parameters); $i++) { $name=$this->query_parameters[$i]; echo pmb_bidi(""); echo pmb_bidi(""); echo ""; echo "\n"; } echo "
".$msg["proc_param_title"]."".$msg["proc_param_choice_mod"]."".$msg["proc_param_mandatory"]."
".$name."get_field_alias($this->parameters_description[$name]),ENT_QUOTES,$charset)."\" name=\"".$name."_alias\">".$this->show_list_type($this->parameters_description[$name])."parameters_description[$name][MANDATORY]=="yes") echo "checked"; echo ">options_to_xml($this->parameters_description[$name]),ENT_QUOTES, $charset)."\" />get_field_type($this->parameters_description[$name])."\" />
"; //Boutons de soumission/annulation echo "id_query."\" />\n"; echo "\n"; echo " "; echo "
"; } } ?>