Предисловие. Занимаюсь самообучением, поэтому буду рад любой помощи.
Достался недописанный сервис для обработки заявок. Пытаюсь разобраться и сам дописать (как раз начал изучать php). Эта часть формирует меню навигации.
<ul class="mn-nav">
<?
require_once 'helpers/menu.php';
if(isset($_GET['p'])) $p = $_GET['p']; else $p = $nullpages[$row['type']]['p'];
foreach($pages[$row['type']] as $key => $value){
if($p==$key) $active = 'class="active"'; else $active = '';
echo '<li '.$active.'><a href="?p='.$key.'&t='.$tabs[$row['type']][$key][0][0].'">'.$value.'</a></li>'."\n";
}
?></ul>
Пытаюсь разобраться как формируется вывод всего этого добра. Поэтому разбор по строчкам идет и сразу самообучение.
1. require_once 'helpers/menu.php'; // Подключение файла массивов с данными.
Файл:
<?
// Администраторы
$pages[0] = array(
'categories' => 'Категории',
'requests' => 'Заявки',
'crm' => 'CRM',
'settings' => 'Настройки',
);
$tabs[0] = array(
'categories' => array(
array('all','Все категории'),
array('create','На создание')
)
);
$nullpages = array(
'0' => array(
'p' => 'requests',
't' => 'evaluation'
),
'2' => array(
'p' => 'crm',
't' => 'clients'
),
'1' => array(
'p' => 'tasks',
't' => 'all'
)
);
2.
if(isset($_GET['p'])) $p = $_GET['p']; else $p = $nullpages[$row['type']]['p'];
Запрос гет. Проверка задали ли переменную, иначе $p присвоить по умолчанию(для разных видов пользователей 0-админ,1 -менеджеры и так далее). Части с [$row['type']]['p'] мне не понятны.
3.
foreach($pages[$row['type']] as $key => $value){
- цикл перебора. открыть массив $pages и каждому индексу присвоить переменную $key, а каждому значению присвоить переменную $value.
И снова не понимаю, что значит [$row['type']]. Как я понимаю он должен тут читать индекс массива "0 - Администраторы, 1- менеджеры и так далее".
4. i
f($p==$key) $active = 'class="active"'; else $active = '';
echo '<li '.$active.'><a href="?p='.$key.'&t='.$tabs[$row['type']][$key][0][0].'">'.$value.'</a></li>'."\n";
Сравниваем две переменных $p и $key, и смотря от этого будем подставлять значения в верстку (вкладка будет или не будет активной).
Вывод тега с предыдущими переменными для построения, и это же будет гет запрос для вывода следующих страниц.
Построение урла: 1)?p= переменная $key,
2)&t= переменная из массива $tabs.
3)['type']][$key][0][0] часть не очень понятна.
4)$value плюс переменная взятая из массива.
Получилось слишком много букв. Вдруг найдутся люди со свободным временем, что бы помочь объяснить.
UPD
$worktime = $mysqli->query("SELECT * FROM ".$prefix."worktime");
while ($row = mysqli_fetch_assoc($worktime))
{
if (strstr($row['type'], 'utc'))
{
if (!empty($row['params']))
{
$times[str_replace('utc_', '', $row['type'])] = explode(',', $row['params']);
}
}
else
{
$work_time = explode(',', $row['params']);
}
}
Отсюда берется переменная $row. Этот код входит в часть авторизации.