コード例 #1
0
ファイル: ViewRenderer.php プロジェクト: aeberh/php-movico
 private function parseTemplate(XmlElement $composition)
 {
     $templateName = $composition->getAttribute("template");
     $title = $composition->getAttribute("title");
     $description = $composition->getAttribute("description");
     $tplXml = $this->getTemplateLocation($templateName);
     if (!file_exists($tplXml)) {
         throw new TemplateNotExistsException($templateName);
     }
     $replaces = array();
     foreach ($composition->getChildren() as $define) {
         $key = "<insert name=\"{$define->getAttribute("name")}\"/>";
         $replaces[$key] = $define->asXmlChildren();
     }
     $tplNode = $this->xmlFactory->fromFile($tplXml)->getRootElement();
     $result = $tplNode->asXml();
     $result = StringUtil::replaceWith($result, "<template>", "<view>");
     $result = StringUtil::replaceWith($result, "</template>", "</view>");
     $inserts = $tplNode->getNbDescendants("insert");
     for ($i = 0; $i < $inserts; $i++) {
         $result = StringUtil::replaceAssoc($result, $replaces);
     }
     $root = $this->xmlFactory->fromString($result)->getRootElement();
     if (!is_null($title)) {
         $root->addAttribute("title", $title);
     }
     if (!is_null($description)) {
         $root->addAttribute("description", $description);
     }
     return $root;
 }
コード例 #2
0
ファイル: helper.php プロジェクト: cyan-framework/cms
 /**
  * @param XmlElement $menu_node
  * @return \stdClass
  */
 private static function getMenuManifestNode(XmlElement $menu_node)
 {
     $Cyan = \Cyan::initialize();
     $App = $Cyan->getContainer('application');
     $User = $App->getContainer('user');
     $acl_menu_permission = $menu_node->getAttribute('acl_check');
     if ($acl_menu_permission) {
         $acl_check = explode(',', $acl_menu_permission);
         $continue = false;
         foreach ($acl_check as $acl_permission) {
             if (!$continue && $User->can($acl_permission)) {
                 $continue = true;
                 break;
             }
         }
         if (!$continue) {
             return [];
         }
     }
     $route_name = $menu_node->getAttribute('route_name');
     $route_params = json_decode($menu_node->getAttribute('route_params', '{}'), true);
     if (!is_array($route_params)) {
         $route_params = [];
     }
     $menu = new \stdClass();
     $menu->icon = $menu_node->getAttribute('icon', 'fa fa-circle-o');
     $menu->title = $menu_node->getAttribute('title');
     $menu->link = !empty($route_name) ? $App->Router->generate($route_name, $route_params) : '#';
     if (isset($menu_node->submenu) && $menu_node->submenu->menu->count()) {
         $menu->items = [];
         foreach ($menu_node->submenu->menu as $submenu_node) {
             $submenu_items = self::getMenuManifestNode($submenu_node);
             if (!empty($submenu_items)) {
                 $menu->items[] = $submenu_items;
             }
         }
     }
     return $menu;
 }