示例#1
0
 protected function proceed_selector_save()
 {
     $this->item->get_values_from_form();
     $saved = $this->handler->save($this->item);
     $query = "select ?scheme ?broader ?broaderScheme where{\n\t\t\t<" . $this->item->get_uri() . "> rdf:type skos:Concept .\n\t\t\t<" . $this->item->get_uri() . "> skos:inScheme ?scheme .\n\t\t\toptional {\n\t\t\t\t<" . $this->item->get_uri() . "> skos:broader ?broader .\n\t\t\t\t?broader skos:inScheme ?broaderScheme\n\t\t\t}\n\t\t} order by ?scheme ?broader";
     $this->handler->data_query($query);
     if ($this->handler->data_num_rows()) {
         $results = $this->handler->data_result();
         $lastScheme = $results[0]->scheme;
         $flag = true;
         foreach ($results as $result) {
             if ($result->scheme == $result->broaderScheme) {
                 $flag = false;
             }
             if ($lastScheme != $result->scheme) {
                 if ($flag) {
                     $query = "insert into <pmb> {<" . $this->item->get_uri() . "> pmb:showInTop <" . $lastScheme . ">}";
                     $this->handler->data_query($query);
                 }
                 $flag = true;
                 $lastScheme = $result->scheme;
             }
         }
         if ($flag) {
             $query = "insert into <pmb> {<" . $this->item->get_uri() . "> pmb:showInTop <" . $lastScheme . ">}";
             $this->handler->data_query($query);
         }
     } else {
         $query = "select * where{\n\t\t\t<" . $this->item->get_uri() . "> rdf:type skos:Concept .\n\t\t\toptional{\n\t\t\t <" . $this->item->get_uri() . "> skos:inScheme ?scheme .\n\t\t\t} . filter(!bound(?scheme)) .\n\t\t\t optional {\n\t\t\t\t<" . $this->item->get_uri() . "> skos:broader ?broader .\n\t\t\t\t?broader skos:inScheme ?broaderScheme\n\t\t\t} filter (!bound(?broaderScheme))\n\t\t} ";
         $this->handler->data_query($query);
         if (!$this->handler->data_num_rows()) {
             $query = "insert into <pmb> {<" . $this->item->get_uri() . "> pmb:showInTop owl:Nothing}";
             $this->handler->data_query($query);
         }
     }
     $ui_class_name = self::resolve_ui_class_name($this->params->sub, $this->handler->get_onto_name());
     //ils sont nouveaux dont pas encore utilisé...pas besoin du hook pour les notices...
     if ($saved !== true) {
         $ui_class_name::display_errors($this, $saved);
     } else {
         // 			$this->proceed_list();
         $this->params->action = "list_selector";
         $this->params->deb_rech = "\"" . $this->item->get_label("http://www.w3.org/2004/02/skos/core#prefLabel") . "\"";
         //  		$this->params->parent_id = $_SESSION['onto_skos_concept_selector_last_parent_id'];
         return parent::proceed();
     }
 }