controller; $action=$controller->action; foreach($this->items as $item) { if(isset($item['visible']) && !$item['visible']) continue; $item2=array(); $item2['label']=$item['label']; if(is_array($item['url'])) $item2['url']=$controller->createUrl($item['url'][0],array_splice($item['url'],1)); else $item2['url']=$item['url']; $pattern=isset($item['pattern'])?$item['pattern']:$item['url']; $item2['active']=$this->isActive($pattern,$controller->uniqueID,$action->id); $items[]=$item2; } $this->render('mainMenu',array('items'=>$items)); } protected function isActive($pattern,$controllerID,$actionID) { if(!is_array($pattern) || !isset($pattern[0])) return false; $pattern[0]=trim($pattern[0],'/'); if(strpos($pattern[0],'/')!==false) $matched=$pattern[0]===$controllerID.'/'.$actionID; else $matched=$pattern[0]===$controllerID; if($matched && count($pattern)>1) { foreach(array_splice($pattern,1) as $name=>$value) { if(!isset($_GET[$name]) || $_GET[$name]!=$value) return false; } return true; } else return $matched; } }