278 lines
8.4 KiB
PHP
278 lines
8.4 KiB
PHP
<?
|
||
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/header.php');
|
||
|
||
function Http404()
|
||
{
|
||
CHTTP::SetStatus('404 Not Found');
|
||
@define('ERROR_404','Y');
|
||
|
||
$rsSites = CSite::GetByID(SITE_ID);
|
||
$arSite = $rsSites->Fetch();
|
||
include($arSite['DOC_ROOT'].'/404.php');
|
||
return;
|
||
}
|
||
|
||
function getAddress($arUser)
|
||
{
|
||
$arAddress = array();
|
||
foreach (array($arUser['WORK_ZIP'], $arUser['WORK_CITY'], $arUser['WORK_STREET']) as $part) {
|
||
if ($part) {
|
||
$arAddress[] = $part;
|
||
}
|
||
}
|
||
return implode(',', $arAddress);
|
||
}
|
||
|
||
function getFullName($name, $name_second, $name_last)
|
||
{
|
||
$name_full = ($name_last) ? $name_last.' ' : '' ;
|
||
$name_full .= $name;
|
||
$name_full .= ($name_second) ? ' '.$name_second : '' ;
|
||
return $name_full;
|
||
}
|
||
|
||
function getUserRows($arUser, $arFieldsBefore = array(), $arFieldsAfter = array())
|
||
{
|
||
$arFieldsBase = array(
|
||
'UF_TRAINING_DIRECTIO' => array(
|
||
'title' => 'Наименование направления подготовки и (или) специальности',
|
||
'list' => false
|
||
),
|
||
'UF_TOTAL_WORK_EXPERI' => array(
|
||
'title' => 'Общий стаж работы',
|
||
'list' => false
|
||
),
|
||
'UF_PROF_EXP' => array(
|
||
'title' => 'Стаж работы по специальности',
|
||
'list' => false
|
||
),
|
||
'UF_ADVANCED_TRAINING' => array(
|
||
'title' => 'Повышение квалификации',
|
||
'list' => true
|
||
),
|
||
'UF_QUALIFICATION' => array(
|
||
'title' => 'Квалификация',
|
||
'list' => false
|
||
),
|
||
'UF_EDUCATION_LEVEL' => array(
|
||
'title' => 'Уровень образования',
|
||
'list' => false
|
||
),
|
||
);
|
||
$arFields = array_merge($arFieldsBefore, $arFieldsBase, $arFieldsAfter);
|
||
|
||
$arUserRows = array();
|
||
foreach ($arFields as $field => $data) {
|
||
$value = $arUser[$field];
|
||
if ($value) {
|
||
if ($data['list']) {
|
||
$value = renderList($value);
|
||
}
|
||
$arUserRows[] = '<tr>
|
||
<td>'.$data['title'].':</td>
|
||
<td>'.$value.'</td>
|
||
</tr>';
|
||
}
|
||
}
|
||
|
||
$address = getAddress($arUser);
|
||
if ($address) {
|
||
$arUserRows[] = '<tr>
|
||
<td>Адрес:</td>
|
||
<td>'.$address.'</a></td>
|
||
</tr>';
|
||
}
|
||
|
||
return $arUserRows;
|
||
}
|
||
|
||
function renderList($data)
|
||
{
|
||
$list = array();
|
||
foreach (explode(';', $data) as $item) {
|
||
$item = trim($item);
|
||
if ($item) {
|
||
$list[] = $item;
|
||
}
|
||
}
|
||
|
||
if (count($list) == 1) {
|
||
return $data;
|
||
}
|
||
|
||
return '<ul class="staff-info"><li>'.implode('</li><li>', $list).'</li></ul>';
|
||
}
|
||
|
||
$title = 'О руководстве';
|
||
$style = '.cont1 td,th {
|
||
font-size: 12px;
|
||
}
|
||
.staff-info {
|
||
padding-left: 10px;
|
||
}';
|
||
$script = '';
|
||
|
||
$groupsAllowed = array(14);
|
||
$id = htmlspecialcharsEx($_REQUEST['id']);
|
||
if ($id) {
|
||
$arGroups = CUser::GetUserGroup($id);
|
||
$result_intersect = array_intersect($groupsAllowed, $arGroups);
|
||
if (empty($result_intersect)) {
|
||
return Http404();
|
||
}
|
||
|
||
$rsUser = CUser::GetByID($id);
|
||
if (!$rsUser) {
|
||
return Http404();
|
||
}
|
||
|
||
$arUser = $rsUser->Fetch();
|
||
|
||
$style .= '.staff-detail-table {
|
||
border-collapse: collapse;
|
||
}
|
||
.staff-detail-table tr:nth-child(2n) {
|
||
background-color: rgba(24, 24, 24, 0.1);
|
||
}
|
||
.staff-detail-table h1 {
|
||
font-size: 16px;
|
||
}
|
||
';
|
||
|
||
$content = '<a href="/uisi/general/bosses.php"><- '.$title.'</a>';
|
||
|
||
$name_full = getFullName($arUser['NAME'], $arUser['SECOND_NAME'], $arUser['LAST_NAME']);
|
||
$title .= ' - '.$name_full;
|
||
|
||
$content .= '<table class="staff-detail-table"><tbody>';
|
||
|
||
$photo_path = '/uisi/media/staff/'.$arUser['LOGIN'].'-w';
|
||
$photo = CFile::Show2Images($photo_path.'-pre.png', $photo_path.'.png', 256, 256);
|
||
$content .= '<tr>
|
||
<td style="padding: 10px;">'.$photo.'</td>
|
||
<td><h1>'.$name_full.'</h1></td>
|
||
</tr>';
|
||
|
||
$arFieldsBefore = array(
|
||
'WORK_POSITION' => array(
|
||
'title' => 'Должность',
|
||
'list' => false
|
||
),
|
||
'WORK_PHONE' => array(
|
||
'title' => 'Телефон',
|
||
'list' => false
|
||
),
|
||
);
|
||
$arUserRows = getUserRows($arUser, $arFieldsBefore);
|
||
$content .= implode($arUserRows);
|
||
|
||
$email = $arUser['UF_EMAIL'];
|
||
if ($email) {
|
||
$content .= '<tr>
|
||
<td>Электронный адрес:</td>
|
||
<td><a href="mailto:'.$email.'">'.$email.'</a></td>
|
||
</tr>';
|
||
}
|
||
|
||
$content .= '</tbody></table>';
|
||
} else {
|
||
$rsUsers = CUser::GetList(($by='UF_SORT'), ($order='asc'), array('GROUPS_ID'=>$groupsAllowed), array('SELECT'=>array('UF_*')));
|
||
|
||
// разбиваем постранично по 50 записей
|
||
// $rsUsers->NavStart(50);
|
||
|
||
// печатаем постраничную навигацию
|
||
// echo $rsUsers->NavPrint(GetMessage('PAGES'));
|
||
|
||
$style .= '.staff-list-item-preview {
|
||
display: none;
|
||
border-top: 1px dotted #828282;
|
||
}
|
||
.staff-list-item-preview-link {
|
||
display: inline-block;
|
||
margin-left: 0.255em;
|
||
vertical-align: 0.255em;
|
||
content: "";
|
||
border-top: 0.3em solid;
|
||
border-right: 0.3em solid transparent;
|
||
border-bottom: 0;
|
||
border-left: 0.3em solid transparent;
|
||
font-size: 20px !important;
|
||
}
|
||
.staff-list-item-preview-table {
|
||
width: 90%;
|
||
}
|
||
.staff-list-item-preview-table td:first-child {
|
||
width: 30%;
|
||
}';
|
||
|
||
$content = '<h1>Педагогический состав</h1>';
|
||
|
||
$content = '<a href="/uisi/general/rukovodstvo.php"><- Руководство. Педагогический состав</a>';
|
||
|
||
$content .= '<table style="border-collapse: collapse;">
|
||
<thead>
|
||
<tr>
|
||
<th></th>
|
||
<th colspan="2" style="text-align: left;">ФИО</th>
|
||
<th style="text-align: left;">Должность</th>
|
||
<th style="text-align: left;">Телефон</th>
|
||
<th style="text-align: left;">Почта</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>';
|
||
|
||
while ($arUser = $rsUsers->GetNext()) {
|
||
|
||
$arPreviewRows = getUserRows($arUser);
|
||
|
||
$content .= '<tr style="border-top: 1px solid #828282;">';
|
||
|
||
$url_detail = '?id='.$arUser['ID'];
|
||
|
||
$photo = CFile::ShowImage('/uisi/media/staff/'.$arUser['LOGIN'].'-w.png', 100, 100, 'border=0', $url_detail);
|
||
$content .= '<td style="padding: 10px;">'.$photo.'</td>';
|
||
|
||
$name_full = getFullName($arUser['NAME'], $arUser['SECOND_NAME'], $arUser['LAST_NAME']);
|
||
$content .= '<td><a href="'.$url_detail.'" title="полные сведения">'.$name_full.'</a></td>';
|
||
|
||
$content .= '<td style="padding: 15px;">';
|
||
if ($arPreviewRows) {
|
||
$content .= '<a class="staff-list-item-preview-link" href="#"></a>';
|
||
}
|
||
$content .= '</td>';
|
||
|
||
$content .= '<td>'.$arUser['WORK_POSITION'].'</td>';
|
||
$content .= '<td style="padding: 5px;">'.$arUser['WORK_PHONE'].'</td>';
|
||
|
||
$content .= '<td style="padding: 5px;">';
|
||
$email = $arUser['UF_EMAIL'];
|
||
if ($email) {
|
||
$content .= '<a href="mailto:'.$email.'">'.$email.'</a>';
|
||
}
|
||
$content .= '</td>';
|
||
|
||
$content .= '</tr>';
|
||
|
||
if ($arPreviewRows) {
|
||
$content .= '<tr><td class="staff-list-item-preview" colspan="6"><table class="staff-list-item-preview-table"><tbody>';
|
||
$content .= implode($arPreviewRows);
|
||
$content .= '</tbody></table></td></tr>';
|
||
}
|
||
}
|
||
|
||
$content .= '</tbody></table>';
|
||
|
||
$script .= '$(".staff-list-item-preview-link").on("click", function() {
|
||
$(this).closest("tr").next("tr").find(".staff-list-item-preview").toggle();
|
||
return false;
|
||
});';
|
||
}
|
||
|
||
$APPLICATION->SetTitle($title);
|
||
|
||
echo '<style>'.$style.'</style>';
|
||
echo $content;
|
||
echo '<script>$( function() { '.$script.' } );</script>';
|
||
|
||
?><?require($_SERVER['DOCUMENT_ROOT'].'/bitrix/footer.php');?>
|