当前位置: 首页>>代码示例>>PHP>>正文


PHP cmsModel::buildTreeRecursive方法代码示例

本文整理汇总了PHP中cmsModel::buildTreeRecursive方法的典型用法代码示例。如果您正苦于以下问题:PHP cmsModel::buildTreeRecursive方法的具体用法?PHP cmsModel::buildTreeRecursive怎么用?PHP cmsModel::buildTreeRecursive使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在cmsModel的用法示例。


在下文中一共展示了cmsModel::buildTreeRecursive方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: buildMenu

 public static function buildMenu($menus, $parse_hooks = true)
 {
     $items = array();
     $user = cmsUser::getInstance();
     // перебираем все вернувшиеся пункты меню
     foreach ($menus as $item) {
         $is_root_added = false;
         if ($item['groups_view'] && !$user->isInGroups($item['groups_view'])) {
             continue;
         }
         if ($item['groups_hide'] && $user->isInGroups($item['groups_hide'])) {
             continue;
         }
         $hook_result = array('items' => false);
         if ($parse_hooks) {
             // если URL пункта меню содержит свойство пользователя
             if (strpos($item['url'], '{user.') !== false) {
                 $item['url'] = string_replace_user_properties($item['url']);
             } else {
                 // если URL пункта меню содержит шаблон {controller:action}
                 if (preg_match('/^{([a-z0-9]+):*([a-z0-9_]*)}$/i', $item['url'], $matches)) {
                     // то вызываем хук menu указанного контроллера
                     $controller = $matches[1];
                     $action = $matches[2];
                     $hook_result = cmsEventsManager::hook("menu_{$controller}", array('action' => $action, 'menu_item_id' => $item['id'], 'menu_item_url' => $item['url']));
                     // если хук вернул результат
                     if ($hook_result) {
                         // получаем новый URL пункта меню
                         $item['url'] = isset($hook_result['url']) ? $hook_result['url'] : '';
                         if (isset($hook_result['counter'])) {
                             $item['counter'] = $hook_result['counter'];
                         }
                         if (isset($hook_result['items']) && is_array($hook_result['items'])) {
                             $item['childs_count'] = sizeof($hook_result['items']);
                         }
                         $is_root_added = true;
                     } else {
                         continue;
                     }
                 }
             }
             $is_external = mb_strpos($item['url'], '://') !== false;
             if (!$is_root_added && !$is_external) {
                 $item['url'] = href_to($item['url']);
             }
         }
         // добавляем обработанную строку в результирующий массив
         $items[$item['id']] = $item;
         // получаем дополнительные пункты меню
         if (isset($hook_result['items']) && is_array($hook_result['items'])) {
             foreach ($hook_result['items'] as $i) {
                 $i['menu_id'] = $item['menu_id'];
                 $items[$i['id']] = $i;
             }
         }
     }
     $tree = array();
     cmsModel::buildTreeRecursive($items, $tree);
     // возвращаем дерево
     return $tree;
 }
开发者ID:asphix,项目名称:icms2,代码行数:61,代码来源:model.php


注:本文中的cmsModel::buildTreeRecursive方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。