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); }
/** * 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); }
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; }
/** * 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; }