12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- /**
- * Manage application and plugins lists with key/value pair.
- *
- * @author valentin carruesco
- *
- * @category Core
- *
- * @license copyright
- */
- class Dictionnary extends Entity
- {
- public $id,$slug,$label,$parent,$state,$sublistlabel;
- protected $fields =
- array(
- 'id' => '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;
- }
- }
-
- }
|