id = $id+0; parent::__construct(); } /* * Récupération des informations en base */ protected function fetch_data(){ $this->parameters = new stdClass(); if($this->id){ //on commence par aller chercher ses infos $query = " select id_datanode_content, datanode_content_num_datanode, datanode_content_data from frbr_datanodes_content where id_datanode_content = '".$this->id."'"; $result = pmb_mysql_query($query); if(pmb_mysql_num_rows($result)){ $row = pmb_mysql_fetch_object($result); $this->id = $row->id_datanode_content+0; $this->num_datanode = $row->datanode_content_num_datanode+0; $this->json_decode($row->datanode_content_data); } } } protected function get_sub_datasources() { return array(); } /* * Méthode de génération du formulaire... */ public function get_form(){ $form = "
"; $sub_datasources = $this->get_sub_datasources(); if(count($sub_datasources)) { if(count($sub_datasources)>1) { $form .= "
"; } else if (count($sub_datasources) == 1) { $form.=""; } } $form.="
"; if ($this->limitable && isset($this->entity_type) && $this->entity_type && (count($sub_datasources)<=1)) { $form.= "
"; } if (isset($this->parameters->sub_datasource_choice) && $this->parameters->sub_datasource_choice) { $form.=""; } $form.="
"; return $form; } /* * Sauvegarde des infos depuis un formulaire... */ public function save_form(){ global $datanode_sub_datasource_choice; global $datanode_datasource_nb_max_elements; $this->parameters->sub_datasource_choice = $datanode_sub_datasource_choice; $this->parameters->nb_max_elements = $datanode_datasource_nb_max_elements+0; if($this->id){ $query = "update frbr_datanodes_content set"; $clause = " where id_datanode_content='".$this->id."'"; }else{ $query = "insert into frbr_datanodes_content set"; $clause = ""; } $query.= " datanode_content_type = 'datasource', datanode_content_object = '".$this->class_name."',". ($this->num_datanode ? "datanode_content_num_datanode = '".$this->num_datanode."'," : "")." datanode_content_data = '".addslashes($this->json_encode())."' ".$clause; $result = pmb_mysql_query($query); if($result){ if(!$this->id){ $this->id = pmb_mysql_insert_id(); } //on supprime les anciennes sources de données... $query = "delete from frbr_datanodes_content where id_datanode_content != '".$this->id."' and datanode_content_type='datasource' and datanode_content_num_datanode = '".$this->num_datanode."'"; pmb_mysql_query($query); return true; }else{ return false; } } /* * Méthode de suppression */ public function delete(){ if($this->id){ $query = "delete from frbr_datanode_content where id_datanode_content = '".$this->id."'"; $result = pmb_mysql_query($query); if($result){ return true; }else{ return false; } } } public function get_format_data_structure(){ return array(); } /** * * @param string $query * @return arrau: */ protected function get_datas_from_query($query) { $result = pmb_mysql_query($query); $datas = array(); while ($row = pmb_mysql_fetch_object($result)) { $datas[$row->parent][] = $row->id; $datas[0][] = $row->id; } return $datas; } /* * Récupération des données de la source... */ public function get_datas($datas=array()){ if (count($datas)) { if ($this->used_external_filter){ foreach($datas as $parent => $data) { if ($parent) { $datas[$parent] = $this->external_filter->filter_datas($data); } } } $datas[0] = $this->filter_datas($datas[0]); } return $datas; } /* * Méthode pour filtrer les résultats en fonction de la visibilité */ protected function filter_datas($datas=array()){ if ($this->used_external_filter){ $datas = $this->external_filter->filter_datas($datas); } if ($this->used_external_sort){ $datas = $this->external_sort->sort_datas($datas); } return $datas; } public function get_num_datanode(){ return $this->num_datanode; } public function set_num_datanode($id){ $this->num_datanode = $id+0; } public function get_entity_type() { return $this->entity_type; } public function set_entity_class_name($entity_class_name){ $this->entity_class_name = $entity_class_name; $this->fetch_managed_datas("filters"); } public function set_filter($filter){ $this->used_external_filter = true; $this->external_filter = $filter; } public function set_sort($sort){ $this->used_external_sort = true; $this->external_sort = $sort; } public function have_child(){ $query = "select id_datanode from frbr_datanodes where datanode_num_parent = '".$this->num_datanode."' "; $result = pmb_mysql_query($query); if(pmb_mysql_num_rows($result)){ return true; } return false; } }