/**
* Gets the item from the administration entry points defined in the config.json, by the given code.
*
* @param string $code <bundleName>/news/foo/bar/edit
*
* @return EntryPoint
*/
public function getEntryPoint($code)
{
if ('/' === $code) {
return null;
}
$path = $code;
if (substr($code, 0, 1) == '/') {
$code = substr($code, 1);
}
if (false === strpos($code, '/')) {
$path = '';
}
$bundleName = $code;
if (false !== strpos($code, '/')) {
$bundleName = substr($code, 0, strpos($code, '/'));
$path = substr($code, strpos($code, '/') + 1);
}
//$bundleName = ucfirst($bundleName) . 'Bundle';
$config = $this->jarves->getConfig($bundleName);
if (!$path && $config) {
//root
$entryPoint = new EntryPoint();
$entryPoint->setType(0);
$entryPoint->setPath($code);
$entryPoint->setChildren($config->getEntryPoints());
$entryPoint->setBundle($config);
return $entryPoint;
}
$entryPoint = null;
if ($config) {
while (!($entryPoint = $config->getEntryPoint($path))) {
if (false === strpos($path, '/')) {
break;
}
$path = substr($path, 0, strrpos($path, '/'));
}
}
return $entryPoint;
}