function flatten_traits($profile_json_str)
{
    $profile_obj = json_decode($profile_json_str, true);
    $list = array();
    flatten_tree($profile_obj['tree'], 0, $list);
    return $list;
}
示例#2
0
function flatten_tree($data,$removeChildren=false){
	$output=array();
	foreach($data as $id=>$item){
		if(isset($item['node:children']) && count($item['node:children'])){
			$children=flatten_tree($item['node:children']);
			$output=$output+$children;
		}
		if($removeChildren===true) unset($item['node:children']);
		if(!isset($output[$item['node:address']])) $output[$item['node:address']]=$item;
	}
	return $output;
}
示例#3
0
				if(isset($thisItem['pattern:match'])){
					$patternData=$tree->get($thisItem['pattern:match'],2);
					$patternItem=pull_item($patternData);
					$patternFlat=flatten_tree($patternData);
					if(isset($patternItem['type']) && $patternItem['type']==='recursive') $childTypes[$patternItem['node:name']]=$patternItem;
				}elseif(isset($thisItem['pattern:children'])){
					if(substr($thisItem['pattern:children'],-1)!=='/'){
						//1 pattern type insertable
						$patternChildren=$tree->get($thisItem['pattern:children'],2);
						$patternItem=array('node:children'=>$patternChildren);
						$patternFlat=flatten_tree($patternChildren);
					}else{
						//multiple pattern types
						$patternData=$tree->get($thisItem['pattern:children'],2);
						$patternItem=array('node:children'=>$patternData);
						$patternFlat=flatten_tree($patternData);
					}
				}
				foreach($patternItem['node:children'] as $patKey=>$patVal){
					if(isset($patVal['type']) && in_array($patVal['type'],array('array','recursive'))){
						if(!isset($patVal['enable-insert'])){
							$childTypes[$patKey]=$patVal;
						}else{
							$inserters=explode(',',$patVal['enable-insert']);
				
							//cross check it!
							foreach($inserters as $cId){
								if(in_array(trim($cId)*1,$accessId)){
									$childTypes[$patKey]=$patVal;
								}
							}