Exemplo n.º 1
0
 public function init()
 {
     // Add ordering
     $criteria = new CDbCriteria();
     $criteria->order = "SCHEMA_NAME ASC";
     $schemata = Schema::model()->findAll($criteria);
     $dbSeperator = "_";
     $items = $root = $children = $items = array();
     foreach ($schemata as $schema) {
         // Find prefix in name
         if ($position = strpos($schema->SCHEMA_NAME, $dbSeperator)) {
             $prefix = substr($schema->SCHEMA_NAME, 0, $position);
             $root[$prefix] = $prefix;
             $children[$prefix][] = substr($schema->SCHEMA_NAME, $position + 1);
         } else {
             $root[] = $schema->SCHEMA_NAME;
         }
     }
     $i = 0;
     foreach ($root as $key => $item) {
         $childs = array();
         $childrenCount = count($children[$item]);
         if ($childrenCount > 1) {
             foreach ($children[$item] as $child) {
                 $childs[] = array('text' => CHtml::link($child, SchemaController::createUrl("/schema/" . $item . $dbSeperator . $child)));
             }
         } else {
             if ($childrenCount == 1) {
                 $name = $item . $dbSeperator . $children[$item][0];
             } else {
                 $name = $item;
             }
             $items[] = array('text' => CHtml::link($name, SchemaController::createUrl("/schema/" . $name)));
             $i++;
             continue;
         }
         $items[] = array('text' => $childrenCount == 0 ? CHtml::link($item, SchemaController::createUrl("/schema/" . $item)) : $item, 'expanded' => $i == 0 ? true : false, 'children' => $childs);
         $i++;
     }
     $this->data = $items;
     parent::init();
 }