'key', 'slug' => 'string', 'label' => 'string', 'parent' => 'int', 'state' => 'string', 'sublistlabel' => 'longstring' ); public function __construct() { parent::__construct(); } //Retourne une liste formatée en fonction de son slug //(retourne ses enfants si le parametre childs est à true) public static function slugToArray($slug, $childs = false, $state = self::ACTIVE){ $listArray = array(); $lists = self::bySlug($slug, $childs, $state); if(!$childs) return $lists; foreach($lists as $list) $listArray[$list->id] = $list; return $listArray; } //Retourne une liste en fonction de son slug (retourne ses enfants si le parametre childs est à true) public static function bySlug($slug, $childs = false, $state = self::ACTIVE){ if($childs) return self::childs(array('slug'=>$slug,'state:IN'=>$state)); return self::load(array("slug"=>$slug,'state:IN'=>$state)); } public static function childs($param = array()) { $childs = array(); $parent = self::load($param); if(!$parent) return $childs; $state = isset($param['state:IN']) ? $param['state:IN'] : self::ACTIVE; foreach (self::loadAll(array('parent'=>$parent->id, 'state:IN'=>$state), array( ' label ASC ')) as $child) { $childs[] = $child; } return $childs; } public static function hierarchy($id, &$elements=array()) { $current = self::getById($id); if(!$current) return array(); if($current->parent != 0) { $parent = self::load(array('id' => $current->parent)); $children = self::childs(array('id'=>$parent->id)); $parent->childs = array(); foreach ($children as $i => $child) { if ($child->id == $current->id) { $child = !empty($elements) ? $elements : $child; $child->selected = true; } else { $child->childs = array(); $child->childs = self::childs(array('id'=>$child->id)); } $parent->childs[] = $child; } $elements = $parent; return self::hierarchy($parent->id, $elements); } else { $elements->selected = true; return $elements; } } }