示例#1
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;
 }
示例#2
0
 /**
  * Builds the content of a class node including it's content
  *
  * @param core_kernel_classes_Class $class
  *
  * @return array
  */
 private function buildChildNodes(core_kernel_classes_Class $class)
 {
     $childs = array();
     // subclasses
     foreach ($class->getSubClasses(false) as $subclass) {
         $childs[] = $this->classToNode($subclass, $class);
     }
     // resources
     if ($this->showResources) {
         $limit = $this->limit;
         if (in_array($class->getUri(), $this->browsableTypes)) {
             $limit = 0;
         }
         $searchResult = $class->searchInstances(array(), array('limit' => $limit, 'offset' => $this->offset, 'recursive' => false, 'order' => RDFS_LABEL));
         foreach ($searchResult as $instance) {
             $childs[] = TreeHelper::buildResourceNode($instance, $class);
         }
     }
     return $childs;
 }