|
|
|
@ -11,26 +11,21 @@
|
|
|
|
|
* @license GPL v.2 |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Функция обработки навигации |
|
|
|
|
* Возвращает меню навигации |
|
|
|
|
* |
|
|
|
|
* @param int $navi_tag - идентификатор меню навигации |
|
|
|
|
* @return mixed|string |
|
|
|
|
* @param int $id идентификатор меню навигации |
|
|
|
|
* @return string|mixed объект с навигацией по id, либо массив всех навигаций |
|
|
|
|
*/ |
|
|
|
|
function parse_navigation($navi_tag) |
|
|
|
|
function get_navigations($navi_id = null) |
|
|
|
|
{ |
|
|
|
|
global $AVE_DB, $AVE_Core; |
|
|
|
|
|
|
|
|
|
// Извлекаем id из аргумента |
|
|
|
|
$navi_id = $navi_tag[1]; |
|
|
|
|
|
|
|
|
|
Debug::startTime('NAVIAGTION_' . $navi_id); |
|
|
|
|
global $AVE_DB; |
|
|
|
|
|
|
|
|
|
// Достаем для проверки тип меню |
|
|
|
|
$sql = " |
|
|
|
|
SELECT |
|
|
|
|
# NAVIGATION = $navi_id |
|
|
|
|
expand_ext |
|
|
|
|
* |
|
|
|
|
FROM |
|
|
|
|
" . PREFIX . "_navigation |
|
|
|
|
WHERE |
|
|
|
@ -39,38 +34,39 @@
|
|
|
|
|
alias = '" . $navi_id . "' |
|
|
|
|
"; |
|
|
|
|
|
|
|
|
|
$expnad_ext = $AVE_DB->Query($sql, -1, 'nav_' . $navi_id, true, '.naviagtion')->GetCell(); |
|
|
|
|
$navigation = $AVE_DB->Query($sql, -1, 'nav_' . $navi_id, true, '.navigation')->FetchRow(); |
|
|
|
|
|
|
|
|
|
// извлекаем level из аргумента |
|
|
|
|
$navi_print_level = (! empty($navi_tag[2])) |
|
|
|
|
? $navi_tag[2] |
|
|
|
|
: ''; |
|
|
|
|
$navigation->user_group = explode(',',$navigation->user_group); |
|
|
|
|
|
|
|
|
|
$navi = ''; |
|
|
|
|
return $navigation; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$cache_file = BASE_DIR . '/tmp/cache/sql/navigations/' . $navi_id . '/template.cache'; |
|
|
|
|
|
|
|
|
|
// Если включен DEV MODE, то отключаем кеширование запросов |
|
|
|
|
if (defined('DEV_MODE') AND DEV_MODE || $expnad_ext != 1) |
|
|
|
|
$cache_file = null; |
|
|
|
|
/** |
|
|
|
|
* Функция обработки навигации |
|
|
|
|
* |
|
|
|
|
* @param int $navi_tag - идентификатор меню навигации |
|
|
|
|
* @return mixed|string |
|
|
|
|
*/ |
|
|
|
|
function parse_navigation($navi_tag) |
|
|
|
|
{ |
|
|
|
|
global $AVE_DB, $AVE_Core; |
|
|
|
|
|
|
|
|
|
if (! is_dir(dirname($cache_file))) |
|
|
|
|
mkdir(dirname($cache_file), 0766, true); |
|
|
|
|
// Извлекаем id из аргумента |
|
|
|
|
$navi_id = $navi_tag[1]; |
|
|
|
|
|
|
|
|
|
// получаем меню навигации по id, |
|
|
|
|
// и если такой не существует, выводим сообщение |
|
|
|
|
Debug::startTime('NAVIAGTION_' . $navi_id); |
|
|
|
|
|
|
|
|
|
if (file_exists($cache_file)) |
|
|
|
|
{ |
|
|
|
|
$navi_menu = unserialize(file_get_contents($cache_file)); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
$navi_menu = get_navigations($navi_id); |
|
|
|
|
|
|
|
|
|
if ($cache_file) |
|
|
|
|
file_put_contents($cache_file, serialize($navi_menu)); |
|
|
|
|
} |
|
|
|
|
$expnad_ext = $navi_menu->expand_ext; |
|
|
|
|
|
|
|
|
|
// извлекаем level из аргумента |
|
|
|
|
$navi_print_level = (! empty($navi_tag[2])) |
|
|
|
|
? $navi_tag[2] |
|
|
|
|
: ''; |
|
|
|
|
|
|
|
|
|
$navi = ''; |
|
|
|
|
|
|
|
|
|
if (! $navi_menu) |
|
|
|
|
{ |
|
|
|
@ -214,7 +210,7 @@
|
|
|
|
|
|
|
|
|
|
$cache_items = BASE_DIR . '/tmp/cache/sql/navigations/' . $navi_id . '/items.cache'; |
|
|
|
|
|
|
|
|
|
$navi_items = array(); |
|
|
|
|
$navi_items = []; |
|
|
|
|
|
|
|
|
|
// Если включен DEV MODE, то отключаем кеширование запросов |
|
|
|
|
if (defined('DEV_MODE') AND DEV_MODE || $expnad_ext != 1) |
|
|
|
@ -499,56 +495,6 @@
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Возвращает меню навигации |
|
|
|
|
* |
|
|
|
|
* @param int $id идентификатор меню навигации |
|
|
|
|
* @return string|mixed объект с навигацией по id, либо массив всех навигаций |
|
|
|
|
*/ |
|
|
|
|
function get_navigations($id = null) |
|
|
|
|
{ |
|
|
|
|
global $AVE_DB; |
|
|
|
|
|
|
|
|
|
$navigations = array(); |
|
|
|
|
|
|
|
|
|
if ($id) |
|
|
|
|
{ |
|
|
|
|
$sql = $AVE_DB->Query(" |
|
|
|
|
SELECT |
|
|
|
|
* |
|
|
|
|
FROM |
|
|
|
|
" . PREFIX . "_navigation |
|
|
|
|
WHERE |
|
|
|
|
" . (is_numeric($id) ? 'navigation_id' : 'alias') . " = '" . $id . "' |
|
|
|
|
"); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
$sql = $AVE_DB->Query(" |
|
|
|
|
SELECT |
|
|
|
|
* |
|
|
|
|
FROM |
|
|
|
|
" . PREFIX . "_navigation |
|
|
|
|
"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
while ($row = $sql->FetchRow()) |
|
|
|
|
{ |
|
|
|
|
$row->user_group = explode(',', $row->user_group); |
|
|
|
|
|
|
|
|
|
if ($id) |
|
|
|
|
$navigations[$id] = $row; |
|
|
|
|
else |
|
|
|
|
$navigations[$row->navigation_id] = $row; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($id) |
|
|
|
|
return $navigations[$id]; |
|
|
|
|
else |
|
|
|
|
return $navigations; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Проверка прав доступа к навигации по группе пользователя |
|
|
|
|
* |
|
|
|
|