sfSiteMapPlugin - Sample


最終更新日: 2007-11-06

sfPakeSiteMapPlugin.php
/*####### BEGIN Scanning of module dir to discover actions #######*/
$template_content = '<ul>'.chr(10);
$dirs = scandir($modules_root);
foreach($dirs as $moduledir)
{
	$action_class = $modules_root.DIRECTORY_SEPARATOR.$moduledir.DIRECTORY_SEPARATOR.sfConfig::get('sf_app_module_action_dir_name').'/actions.class.php';
	if(file_exists($action_class)&&is_file($action_class))
	{
		require_once($action_class);
		// PHP5 Reflection
		$class = new ReflectionClass($moduledir.'Actions');
		$is_head = true;
		$tmp_content = '';
		foreach($class->getMethods() as $reflectionMethod)
		{
			if(ereg("^execute([[:alnum:]]+)", $reflectionMethod->getName(),&$regs))
			{
				$first_letter = $regs[1]{0};
				$first_letter = strtolower($first_letter);
				$actionName = $first_letter.substr($regs[1],1,strlen($regs[1]));
				$internal_uri = $moduledir.'/'.$actionName;
				
				if($is_head) {
					$template_content .= '<li><?echo link_to(\''.$moduledir.'/\',\''.$internal_uri.'\')?>'.chr(10);
					$tmp_content = chr(10).'<ul>'.chr(10);
				}
				$tmp_content .= '<li><?echo link_to(\''.$internal_uri.'\',\''.$internal_uri.'\')?></li>'.chr(10);
				$is_head = false;
			}
		}
	if($tmp_content) $tmp_content .= '</ul>'.chr(10);
	if($tmp_content) $template_content .= $tmp_content.'</li>'.chr(10);
	}
}
$template_content .= '</ul>'.chr(10);
/*####### END Scanning of module dir to discover actions #######*/