item->set_contribution_area_form(contribution_area_form::get_contribution_area_form($this->params->sub,$this->params->form_id,$this->params->area_id,$this->params->form_uri));
print $this->item->get_form("./".$this->get_base_resource()."lvl=".$this->params->lvl."&sub=".$this->params->sub."&area_id=".$this->params->area_id."&id=".$this->params->id.'&form_id='.$this->params->form_id.'&form_uri='.$this->params->form_uri);
}
public function proceed(){
global $msg;
//on affecte la proprité item par une instance si nécessaire...
$this->init_item();
switch($this->params->action){
case 'push':
print $msg["onto_contribution_push_in_progress"];
$data = $this->proceed_push();
print "";
break;
case 'save_push' :
print encoding_normalize::json_encode($this->proceed_push());
break;
case 'save' :
print encoding_normalize::json_encode($this->proceed_save());
break;
case 'delete' :
print $msg["onto_contribution_delete_in_progress"];
$this->proceed_delete(true);
print "";
break;
default:
parent::proceed();
break;
}
}
protected function proceed_push() {
global $class_path;
global $pmb_contribution_ws_url, $pmb_contribution_ws_username, $pmb_contribution_ws_password;
$return = '';
if ($this->params->action == "save_push") {
$return = $this->proceed_save(false);
}
require_once($class_path.'/jsonRPCClient.php');
$jsonRPC = new jsonRPCClient(stripslashes($pmb_contribution_ws_url));
$jsonRPC->setUser(stripslashes($pmb_contribution_ws_username));
$jsonRPC->setPwd(stripslashes($pmb_contribution_ws_password));
$result = $jsonRPC->pmbesContributions_integrate_entity($this->item->get_uri());
if (!$return) {
$return = array("uri" => $this->item->get_uri(), "id" => $this->item->get_id());
}
$return["entity"] = $result;
//on enregitre un triplet faisant le lien entre l'URI et l'id de l'entité créée
$data_store = $this->handler->get_data_store();
$this->save_entity_id_in_store($result, $data_store);
return $return;
}
/**
* On enregitre les triplets faisant le lien entre l'URI et l'id des entités créées
* @param array $data Tableau des entités à insérer sous la forme uri, id, children
* @param onto_store $data_store Store dans lequel on agit
*/
protected function save_entity_id_in_store($data, $data_store) {
$query = ' select ?pmb_id where {
<'.$data['uri'].'> pmb:identifier "'.$data["id"].'" .
<'.$data['uri'].'> pmb:identifier ?pmb_id
}';
$data_store->query($query);
if (!$data_store->num_rows()) {
$query_insert = 'insert into {
<'.$data['uri'].'> pmb:identifier "'.$data["id"].'" .
}';
$data_store->query($query_insert);
}
if (count($data['children'])) {
foreach ($data['children'] as $child) {
$this->save_entity_id_in_store($child, $data_store);
}
}
}
protected function proceed_save($list = true){
$this->item->get_values_from_form();
$result = $this->handler->save($this->item);
if($result !== true){
$ui_class_name=self::resolve_ui_class_name($this->params->sub,$this->handler->get_onto_name());
$ui_class_name::display_errors($this,$result);
}else {
$display_label = $this->item->get_label($this->handler->get_display_label($this->handler->get_class_uri($this->params->sub)));
return array("uri" => $this->item->get_uri(), "displayLabel" => $display_label, "id" => $this->item->get_id());
}
}
protected function proceed_delete($force_delete = false){
$result = $this->handler->delete($this->item,$force_delete);
}
}