| 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;	    }	}	}
 |