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 .= "
".$this->format_text($this->msg['frbr_entity_common_datasource_sub_datasource_choice'])."
".$this->format_text($this->msg['frbr_entity_common_datasource_sub_datasource_choice'])." ";
foreach($sub_datasources as $sub_datasource){
$form.= "
parameters->sub_datasource_choice) && $sub_datasource == $this->parameters->sub_datasource_choice ? " selected='selected'" : "").">".$this->format_text($this->msg[$sub_datasource])." ";
}
$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;
}
}