public static function get_values_from_form($instance_name, $property, $uri_item)
 {
     $datatypes = array();
     $var_name = $instance_name . "_" . $property->pmb_name;
     global ${$var_name};
     if (${$var_name} && count(${$var_name})) {
         global ${$var_name . "_is_composed"};
         if (!${$var_name . "_is_composed"}) {
             // Ce n'est pas une vedette composée
             //On va supprimer une éventuelle vedette précédente
             global ${$var_name . "_composed"};
             foreach (${$var_name . "_composed"} as $order => $data) {
                 if ($data["id"]) {
                     $vedette_composee = new vedette_composee($data["id"]);
                     $vedette_composee->delete();
                 }
             }
             // On va chercher les valeurs actuelles
             foreach (${$var_name} as $order => $data) {
                 $data = stripslashes_array($data);
                 if ($data["value"]) {
                     $data_properties = array();
                     if ($data["lang"]) {
                         $data_properties["lang"] = $data["lang"];
                     }
                     if ($data["type"] == "http://www.w3.org/2000/01/rdf-schema#Literal") {
                         $data_properties["type"] = "literal";
                     } else {
                         $data_properties["type"] = "uri";
                     }
                     if ($data["display_label"]) {
                         $data_properties["display_label"] = $data["display_label"];
                     }
                     $class_name = get_called_class();
                     $datatypes[$property->uri][] = new $class_name($data["value"], $data["type"], $data_properties);
                 }
             }
         } else {
             // C'est une vedette composée
             global ${$var_name . "_composed"};
             foreach (${$var_name . "_composed"} as $order => $data) {
                 $data = stripslashes_array($data);
                 if ($data["elements"]) {
                     $vedette_composee = new vedette_composee($data["id"]);
                     if ($data["value"]) {
                         $vedette_composee->set_label($data["value"]);
                     }
                     // On commence par réinitialiser le tableau des éléments de la vedette composée
                     $vedette_composee->reset_elements();
                     // On remplit le tableau des éléments de la vedette composée
                     foreach ($data["elements"] as $subdivision => $elements) {
                         if ($elements["elements_order"] !== "") {
                             $elements_order = explode(",", $elements["elements_order"]);
                             foreach ($elements_order as $position => $num_element) {
                                 if ($elements[$num_element]["id"] && $elements[$num_element]["label"]) {
                                     $velement = $elements[$num_element]["type"];
                                     $available_field_class_name = $vedette_composee->get_at_available_field_class_name($velement);
                                     if ($available_field_class_name['params']) {
                                         $vedette_element = new $velement($available_field_class_name['params'], $available_field_class_name["num"], $elements[$num_element]["id"], $elements[$num_element]["label"]);
                                     } else {
                                         $vedette_element = new $velement($available_field_class_name["num"], $elements[$num_element]["id"], $elements[$num_element]["label"]);
                                     }
                                     $vedette_composee->add_element($vedette_element, $subdivision, $position);
                                 }
                             }
                         }
                     }
                     $vedette_composee_id = $vedette_composee->save();
                 }
                 if ($vedette_composee_id) {
                     vedette_link::save_vedette_link($vedette_composee, onto_common_uri::get_id($uri_item), TYPE_CONCEPT_PREFLABEL);
                     if ($data["value"]) {
                         $data_properties = array();
                         if ($data["type"] == "http://www.w3.org/2000/01/rdf-schema#Literal") {
                             $data_properties["type"] = "literal";
                         } else {
                             $data_properties["type"] = "uri";
                         }
                         $class_name = get_called_class();
                         $datatypes[$property->uri][] = new $class_name($data["value"], $data["type"], $data_properties);
                     }
                 }
             }
         }
     }
     return $datatypes;
 }
Example #2
0
 protected function proceed_delete($force_delete = false)
 {
     global $dbh, $msg;
     // On déclare un flag pour savoir si on peut continuer la suppression
     $deletion_allowed = true;
     $message = $this->item->get_label($this->handler->get_display_label($this->handler->get_class_uri($this->params->categ)));
     // on  déjà vérifier l'utilisation dans les notices d'un concept
     $query = "select num_object from index_concept where type_object =1 and num_concept = " . onto_common_uri::get_id($this->item->get_uri());
     $result = pmb_mysql_query($query, $dbh);
     if (pmb_mysql_num_rows($result)) {
         $deletion_allowed = false;
         $message .= "<br/>" . $msg['concept_use_in_notices_cant_delete'];
     }
     // On regarde si l'autorité est utilisée dans des vedettes composées
     $attached_vedettes = vedette_composee::get_vedettes_built_with_element(onto_common_uri::get_id($this->item->get_uri()), "concept");
     if (count($attached_vedettes)) {
         // Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer
         $deletion_allowed = false;
         $message .= "<br/>" . $msg['vedette_dont_del_autority'];
     }
     if ($deletion_allowed) {
         // On peut continuer la suppression
         $id_vedette = vedette_link::get_vedette_id_from_object(onto_common_uri::get_id($this->item->get_uri()), TYPE_CONCEPT_PREFLABEL);
         $vedette = new vedette_composee($id_vedette);
         $vedette->delete();
         //suppression des autorités liées...
         // liens entre autorités
         if (get_class($this->item) == "onto_skos_concept_item") {
             $aut_link = new aut_link(AUT_TABLE_CONCEPT, onto_common_uri::get_id($this->item->get_uri()));
             $aut_link->delete();
         }
         parent::proceed_delete($force_delete);
     } else {
         error_message($msg[132], $message, 1, "./autorites.php?categ=concepts&sub=concept&action=edit&id=" . onto_common_uri::get_id($this->item->get_uri()));
     }
 }