id = $id*1; $this->fetch_data(); } protected function fetch_data(){ if(!$this->id){ $this->name = ""; $this->classement= 0; $this->comment = ""; $this->used_datasource = ""; }else{ $query = "select editions_state_name, editions_state_used_datasource, editions_state_comment, editions_state_num_classement,editions_state_fieldslist, editions_state_fieldsparams from editions_states where id_editions_state = ".$this->id; $result = mysql_query($query); if(mysql_num_rows($result)){ $row = mysql_fetch_object($result); $this->name = $row->editions_state_name; $this->used_datasource = $row->editions_state_used_datasource; $this->comment = $row->editions_state_comment; $this->classement = $row->editions_state_num_classement; $this->state_fields_list = unserialize($row->editions_state_fieldslist); $this->state_fields_params = unserialize($row->editions_state_fieldsparams); // $this->datasource = new $this->used_datasource(); } } $this->datasource = new editions_datasource($this->used_datasource); $this->fields = $this->datasource->get_struct_format(); $this->get_filter();//Je récupère les valeurs des filtres si besoin } public function save(){ if($this->id){ $query = "update editions_states"; $clause= " where id_editions_state = ".$this->id; }else{ $query ="insert into editions_states"; $clause= ""; } //On supprimer les informations de paramétrage pour les vues au cas ou on supprime un champ utilisé pour une vue $this->state_fields_params["view"]=array(); //on va chercher les infos des filtres, tris, groupements... $query.=" set editions_state_name = '".addslashes($this->name)."', editions_state_num_classement = '".addslashes($this->classement)."', editions_state_used_datasource = '".addslashes($this->used_datasource)."', editions_state_comment = '".addslashes($this->comment)."', editions_state_fieldslist = '".addslashes(serialize($this->state_fields_list))."', editions_state_fieldsparams = '".addslashes(serialize($this->state_fields_params))."'"; mysql_query($query.$clause); if(!$this->id){ $this->id = mysql_insert_id(); } } public function update_param_view($param){ if($this->id){ $this->state_fields_params["view"]=$param; $query = "update editions_states "; $query.=" set editions_state_fieldsparams = '".addslashes(serialize($this->state_fields_params))."'"; $clause= " where id_editions_state = ".$this->id; mysql_query($query.$clause); } } public function delete(){ if($this->id){ $query = "delete from editions_states where id_editions_state=".$this->id; mysql_query($query); } } public function get_from_form(){ global $editions_state_name; global $editions_state_classement; global $editions_state_datasource; global $editions_state_comment; global $editions_state_fields_fields; global $editions_state_fields_content_fields; global $editions_state_filters_fields; global $editions_state_filters_content_fields; global $editions_state_orders_fields; global $editions_state_orders_content_fields; global $class_path; global $partial_submit,$action; $this->name = stripslashes($editions_state_name); $this->classement = $editions_state_classement; $this->used_datasource = $editions_state_datasource; // $this->datasource = new $this->used_datasource(); $this->datasource = new editions_datasource($this->used_datasource); $this->comment = stripslashes($editions_state_comment); $this->fields = $this->datasource->get_struct_format(); if($partial_submit == 1 || $action == "save"){// On vient de déplacer une information pour créer l'état //Je garde les valeurs $this->state_fields_list=array( 'fields' => array( 'fields' => (is_array($editions_state_fields_fields) ? $editions_state_fields_fields : array()), 'content' => (is_array($editions_state_fields_content_fields) ? $editions_state_fields_content_fields : array()) ), 'filters' => array( 'fields' => (is_array($editions_state_filters_fields) ? $editions_state_filters_fields : array()), 'content' => (is_array($editions_state_filters_content_fields) ? $editions_state_filters_content_fields : array()), ), 'orders' => array( 'fields' => (is_array($editions_state_orders_fields) ? $editions_state_orders_fields : array()), 'content' => (is_array($editions_state_orders_content_fields) ? $editions_state_orders_content_fields : array()), ) ); $this->get_filter(); $this->state_fields_params['orders']=array();//on initialise foreach($this->state_fields_list['orders']['content'] as $field){ $order = new editions_state_order($this->fields[$field]); $this->state_fields_params['orders'][$field] = $order->get_params(); } }else{//$partial_submit == 2 On vient de changer la source de données //Je réinitialise toutes les informations $this->state_fields_list=array( 'fields' => array( 'fields' => array(), 'content' => array() ), 'filters' => array( 'fields' => array(), 'content' => array(), ), 'orders' => array( 'fields' => array(), 'content' => array(), ) ); } } public function get_form(){ global $msg,$charset; global $editions_state_form; $form = str_replace('!!id!!', $this->id, $editions_state_form); //positionnement auto sur le dernier onglet, ca marche tout seul, pas besoin de s'en soucier ! global $editionsstate_active_tab; $form = str_replace('!!active_tab!!', htmlentities($editionsstate_active_tab,ENT_QUOTES, $charset), $form); //Titre du formulaire if (!$this->id) $form = str_replace('!!form_title!!', $msg[704], $form); else $form = str_replace('!!form_title!!', $msg["procs_modification"], $form); //nom $form = str_replace('!!name!!', htmlentities($this->name,ENT_QUOTES, $charset), $form); //commentaire $form = str_replace('!!comment!!', htmlentities($this->comment,ENT_QUOTES, $charset), $form); //classement $combo_clas= gen_liste ("SELECT idproc_classement,libproc_classement FROM procs_classements ORDER BY libproc_classement ", "idproc_classement", "libproc_classement", "editions_state_classement", "", $this->classement, 0, $msg[proc_clas_aucun],0, $msg[proc_clas_aucun]) ; $form = str_replace('!!classement!!', $combo_clas, $form); //source de données $datasource_options = " "; } // // $datasource_options.=" // "; $form = str_replace('!!datasource_options!!', $datasource_options, $form); if(count($this->state_fields_list['filters']['content']) || count($this->state_fields_list['fields']['content'])){ //J'ai commencé à créer un état je ne peux donc pas changer de source $form = str_replace('!!datasource_readonly!!', "disabled='disabled'", $form); $form = str_replace('', "", $form); }else{ $form = str_replace('!!datasource_readonly!!', "", $form); } if(!$this->used_datasource){ $form = str_replace("!!tabs!!","",$form); }else{ $form = str_replace("!!tabs!!",$this->get_tabs_form(),$form); } $del_button = ""; if($this->id){ $del_button = " "; } $form = str_replace("!!del_button!!",$del_button,$form); return $form; } public function get_tabs_form(){ global $msg,$charset; global $class_path; global $editions_state_form_tabs; $form = $editions_state_form_tabs; if(count($this->state_fields_list['fields']['fields']) ==0 && count($this->state_fields_list['fields']['content']) == 0){ foreach($this->fields as $id => $field){ $this->state_fields_list['fields']['fields'][] = $id; $this->state_fields_list['filters']['fields'][] = $id; } }else{ $nb_champ=count($this->state_fields_list['fields']['fields']) + count($this->state_fields_list['fields']['content']); if($nb_champ < count($this->fields)){ //On a ajouté des champs dans le fichier datasources.xml foreach($this->fields as $id => $field){ if(!in_array($id,$this->state_fields_list['fields']['fields']) && !in_array($id,$this->state_fields_list['fields']['content'])){ $this->state_fields_list['fields']['fields'][] = $id; $this->state_fields_list['filters']['fields'][] = $id; } } }elseif($nb_champ > count($this->fields)){ //On a enlevé des champs dans le fichier datasources.xml foreach($this->state_fields_list['fields']['fields'] as $key => $field){ if(!($this->fields[$field])){ unset($this->state_fields_list['fields']['fields'][$key]); $key_fiters=array_search ($field, $this->state_fields_list['filters']['fields']); if( $key_fiters !== false){ unset($this->state_fields_list['filters']['fields'][$key_fiters]); } $key_fiters=array_search ($field, $this->state_fields_list['filters']['content']); if( $key_fiters !== false){ unset($this->state_fields_list['filters']['content'][$key_fiters]); } } } foreach($this->state_fields_list['fields']['content'] as $key => $field){ if(!($this->fields[$field])){ unset($this->state_fields_list['fields']['content'][$key]); $key_fiters=array_search ($field, $this->state_fields_list['filters']['fields']); if( $key_fiters !== false){ unset($this->state_fields_list['filters']['fields'][$key_fiters]); } $key_fiters=array_search ($field, $this->state_fields_list['filters']['content']); if( $key_fiters !== false){ unset($this->state_fields_list['filters']['content'][$key_fiters]); } $key_fiters=array_search ($field, $this->state_fields_list['orders']['fields']); if( $key_fiters !== false){ unset($this->state_fields_list['orders']['fields'][$key_fiters]); } $key_fiters=array_search ($field, $this->state_fields_list['orders']['content']); if( $key_fiters !== false){ unset($this->state_fields_list['orders']['content'][$key_fiters]); } } } } } //contruction de la liste des champs pour l'onglets champs $form = str_replace("!!fields_fields_list!!",$this->gen_tab_list('fields'),$form); $form = str_replace("!!fields_fields_content!!",$this->gen_tab_content('fields'),$form); //contruction de la liste des champs pour l'onglets filtres $form = str_replace("!!filters_fields_list!!",$this->gen_tab_list('filters'),$form); $form = str_replace("!!filters_fields_content!!",$this->gen_tab_content('filters'),$form); //contruction de la liste des champs pour l'onglets tri $form = str_replace("!!order_fields_list!!",$this->gen_tab_list('orders'),$form); $form = str_replace("!!order_fields_content!!",$this->gen_tab_content('orders'),$form); return $form; } public function gen_tab_list($tab){ $list = ""; foreach($this->state_fields_list[$tab]['fields'] as $field){ switch($tab){ case "fields" : $id = $this->fields[$field]['id']; break; case "filters" : $id = "filter_".$this->fields[$field]['id']; break; case "orders" : $id = "crit_".$this->fields[$field]['id']; break; } $list.="