Пример #1
0
 public function setReverseValues()
 {
     if (!tao_helpers_Request::isAjax()) {
         throw new common_exception_IsAjaxAction(__FUNCTION__);
     }
     $values = tao_helpers_form_GenerisTreeForm::getSelectedInstancesFromPost();
     $resource = new core_kernel_classes_Resource($this->getRequestParameter('resourceUri'));
     $property = new core_kernel_classes_Property($this->getRequestParameter('propertyUri'));
     $currentValues = array();
     foreach ($property->getDomain() as $domain) {
         $instances = $domain->searchInstances(array($property->getUri() => $resource), array('recursive' => true, 'like' => false));
         $currentValues = array_merge($currentValues, array_keys($instances));
     }
     $toAdd = array_diff($values, $currentValues);
     $toRemove = array_diff($currentValues, $values);
     $success = true;
     foreach ($toAdd as $uri) {
         $subject = new core_kernel_classes_Resource($uri);
         $success = $success && $subject->setPropertyValue($property, $resource);
     }
     foreach ($toRemove as $uri) {
         $subject = new core_kernel_classes_Resource($uri);
         $success = $success && $subject->removePropertyValue($property, $resource);
     }
     echo json_encode(array('saved' => $success));
 }
 /**
  * save the related items from the checkbox tree or from the sequence box
  * @return void
  */
 public function saveItems()
 {
     if (!tao_helpers_Request::isAjax()) {
         throw new Exception("wrong request mode");
     }
     $saved = false;
     $candidates = tao_helpers_form_GenerisTreeForm::getSelectedInstancesFromPost();
     foreach ($this->getRequestParameters() as $key => $value) {
         if (preg_match("/^instance_/", $key)) {
             $candidates[] = tao_helpers_Uri::decode($value);
         }
     }
     $items = array();
     foreach ($candidates as $uri) {
         $item = new core_kernel_classes_Resource($uri);
         $itemModel = $item->getOnePropertyValue(new core_kernel_classes_Property(TAO_ITEM_MODEL_PROPERTY));
         $supported = false;
         if (!is_null($itemModel)) {
             foreach ($itemModel->getPropertyValues(new core_kernel_classes_Property(TAO_ITEM_MODELTARGET_PROPERTY)) as $targeturi) {
                 if ($targeturi == TAO_ITEM_ONLINE_TARGET) {
                     $supported = true;
                     break;
                 }
             }
         }
         if ($supported) {
             array_push($items, $item);
         } else {
             throw new common_Exception($item->getLabel() . ' cannot be added to a test');
         }
     }
     if ($this->service->setTestItems($this->getCurrentInstance(), $items)) {
         $saved = true;
     }
     $this->returnJson(array('saved' => $saved));
 }