예제 #1
0
 public function getData()
 {
     if (!tao_helpers_Request::isAjax()) {
         throw new common_exception_IsAjaxAction(__FUNCTION__);
     }
     if ($this->hasRequestParameter('classUri')) {
         $classUri = tao_helpers_Uri::decode($this->getRequestParameter('classUri'));
         $class = new core_kernel_classes_Class($classUri);
         $hideNode = true;
     } elseif ($this->hasRequestParameter('rootNode')) {
         $class = new core_kernel_classes_Class($this->getRequestParameter('rootNode'));
         $hideNode = false;
     } else {
         throw new common_Exception('Missing node information for ' . __FUNCTION__);
     }
     $openNodes = array($class->getUri());
     if ($this->hasRequestParameter('openNodes') && is_array($this->getRequestParameter('openNodes'))) {
         $openNodes = array_merge($openNodes, $this->getRequestParameter('openNodes'));
     } else {
         if ($this->hasRequestParameter('openParentNodes') && is_array($this->getRequestParameter('openParentNodes'))) {
             $childNodes = $this->getRequestParameter('openParentNodes');
             $openNodes = TreeHelper::getNodesToOpen($childNodes, $class);
         }
     }
     $limit = $this->hasRequestParameter('limit') ? $this->getRequestParameter('limit') : self::DEFAULT_LIMIT;
     $offset = $this->hasRequestParameter('offset') ? $this->getRequestParameter('offset') : 0;
     $showInst = $this->hasRequestParameter('hideInstances') ? !$this->getRequestParameter('hideInstances') : true;
     $factory = new GenerisTreeFactory($showInst, $openNodes, $limit, $offset);
     $array = $factory->buildTree($class);
     if ($hideNode) {
         $array = isset($array['children']) ? $array['children'] : array();
     }
     echo json_encode($array);
 }
예제 #2
0
 /**
  * simplified Version of TaoModule function
  * 
  * @return void
  */
 public function sasGetOntologyData()
 {
     if (!tao_helpers_Request::isAjax()) {
         throw new common_exception_IsAjaxAction(__FUNCTION__);
     }
     $showInstances = $this->hasRequestParameter('hideInstances') ? !(bool) $this->getRequestParameter('hideInstances') : true;
     $hideNode = $this->hasRequestParameter('classUri');
     $clazz = $this->hasRequestParameter('classUri') ? $this->getCurrentClass() : $this->getRootClass();
     if ($this->hasRequestParameter('offset')) {
         $options['offset'] = $this->getRequestParameter('offset');
     }
     $limit = $this->hasRequestParameter('limit') ? $this->getRequestParameter('limit') : 0;
     $offset = $this->hasRequestParameter('offset') ? $this->getRequestParameter('offset') : 0;
     $factory = new GenerisTreeFactory($showInstances, array($clazz->getUri()), $limit, $offset);
     $tree = $factory->buildTree($clazz);
     $returnValue = $hideNode ? $tree['children'] : $tree;
     echo json_encode($returnValue);
 }
예제 #3
0
 public function rangeToTree(core_kernel_classes_Class $range, $recursive = true)
 {
     $openNodes = array_reduce($range->getSubClasses(true), function ($carry, $item) {
         if (!$carry) {
             $carry = [];
         }
         $carry[] = $item->getUri();
         return $carry;
     });
     $openNodes[] = $range->getUri();
     $factory = new GenerisTreeFactory(true, $openNodes, 10, 0);
     $array = $factory->buildTree($range);
     return $array;
 }
예제 #4
0
 /**
  * Format an RDFS Class to an array to be interpreted by the client tree
  * This is a closed array format.
  *
  * @access public
  * @author Jerome Bogaerts, <*****@*****.**>
  * @param  core_kernel_classes_Class $clazz
  * @param  array $options
  * @return array
  */
 public function toTree(core_kernel_classes_Class $clazz, array $options = array())
 {
     // show instances yes/no
     $instances = isset($options['instances']) ? $options['instances'] : true;
     // cut of the class and only display the children?
     $chunk = isset($options['chunk']) ? $options['chunk'] : false;
     // probably which subtrees should be opened
     $browse = isset($options['browse']) ? $options['browse'] : array();
     // limit of instances shown by subclass if no search label is given
     // if a search string is given, this is the total limit of results, independent of classes
     $limit = isset($options['limit']) ? $options['limit'] : 0;
     // offset for limit
     $offset = isset($options['offset']) ? $options['offset'] : 0;
     // A unique node URI to be returned from as a tree leaf.
     $uniqueNode = isset($options['uniqueNode']) ? $options['uniqueNode'] : null;
     if ($uniqueNode !== null) {
         $instance = new \core_kernel_classes_Resource($uniqueNode);
         $results[] = TreeHelper::buildResourceNode($instance, $clazz);
         $returnValue = $results;
     } else {
         // Let's walk the tree with super walker! ~~~ p==[w]õ__
         array_walk($browse, function (&$item) {
             $item = tao_helpers_Uri::decode($item);
         });
         $openNodes = TreeHelper::getNodesToOpen($browse, $clazz);
         if (!in_array($clazz->getUri(), $openNodes)) {
             $openNodes[] = $clazz->getUri();
         }
         $factory = new GenerisTreeFactory($instances, $openNodes, $limit, $offset, $browse);
         $tree = $factory->buildTree($clazz);
         $returnValue = $chunk ? isset($tree['children']) ? $tree['children'] : array() : $tree;
     }
     return $returnValue;
 }