function get_justification_item($desks_array, $no_buttons = '') { global $systems, $db_rs, $elements; $html = ''; write_log(print_r($desks_array, true), 'desk_array'); foreach ($desks_array as $desk) { // ID образения; $desk_id = $desk['id']; // Получаем нормальную дату; $date_create = date('d.m.Y H:i:s', strtotime($desk['date_create'])); $date_update = date('d.m.Y H:i:s', strtotime($desk['date_last_update'])); // Получаем имя автора; $author = $systems->get_user_avatar_and_full_name($desk['author_id']); /* $sql = "SELECT CONCAT(`fam`, ' ', `name`) as `name` FROM `users` WHERE `login` = '".$author_id."';"; $author = $db->one($sql); */ // Текст обращения; $desk_message = str_replace("\n", '<br>', $desk['text']); // Статус обращения; $status = $desk['status']; if ($status == '1') { $status_text = 'Новоя апелляция'; } if ($status == '2') { $status_text = 'Утвержденная апелляция'; } if ($status == '3') { $status_text = 'Не утвержденная апелляция'; } // Желтый if ($status == '1') { $move_color = 4; } // Зеленый цвет; if ($status == '2') { $move_color = 3; } // Красный свет if ($status == '3') { $move_color = 2; } $html .= '<div class="desk_item notification_type_' . $move_color . '" id="' . $desk_id . '" style="min-height: 478px;font-size: 0.85em; padding: 10px 10px 10px 10px; vertical-align:top;">'; $html .= '<div id="hidden_justification_window_id_' . $desk_id . '" window_id="" style="display: none;"></div>'; $html .= '<table style="border: none;" cellspacing="0" cellpadding="0">'; $html .= '<tr>'; $html .= '<td style="text-align: right">Номер апелляции:</td>'; $html .= '<td><b>' . $desk_id . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td style="text-align: right">Автор:</td>'; $html .= '<td style="width: 398px;font-size: 0.9em;"><b>' . $author . '</b></td>'; $html .= '<td style="text-align: right">Кто рассматривал апелляцию:</td>'; $html .= '<td style="width: 398px;font-size: 0.9em;"><b>' . $systems->get_user_avatar_and_full_name($desk['accepter_id']) . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td style="text-align: right">Раздел подачи апелляции:</td>'; $html .= '<td><b>' . $systems->get_menu_parent_name($desk['parent_id']) . '</b></td>'; $html .= '<td style="text-align: right">Когда создано:</td>'; $html .= '<td><b>' . $date_create . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td style="text-align: right; vertical-align: top;">Статус:</td>'; $html .= '<td><b>' . $status_text . '</b></td>'; $html .= '<td style="text-align: right">Последнее обновление:</td>'; $html .= '<td><b>' . $date_update . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td style="text-align: right; vertical-align: top;">Текст апелляции:</td>'; if ($desk_message == '') { $desk_message = 'Новая апелляция требует ввода текста. Кликните два раза здесь - что бы ввести текст апелляции.'; $html .= '<script>$(\'.justification_mess\').editable({ callback : function( data ) { if(data.content != false){ // Были изменения надо сохранить; save_justification_text(' . $desk_id . ', data.content); } } });</script>'; } $html .= '<td colspan="4" width="200px" class="justification_mess" style="font-weight: bold; -ms-word-break: break-all;word-break: break-all;word-break: break-word;-webkit-hyphens: auto;-moz-hyphens: auto;hyphens: auto;">' . $desk_message . '</td>'; $html .= '</tr>'; $html .= '</table>'; //$html .= //$html .= '<div>'; if ($no_buttons == '') { // Здесь мы выводим операционные кнопки для управления состоянием обращения, в зависимости от статуса обращения и пользователя, кнопки мгут быть разными; $html .= '<div id="desk_buttons">'; // Важно, что работать с наблюдателями может только либо автор заявки, либо реководитель отдела на который создана заявка; $boss_array = get_department_boss(get_desk_department($desk_id)); $boss = 0; foreach ($boss_array as $boss) { if ($boss == $_SESSION['user_id']) { $boss = 1; break; } } // Всякие другие кнопки чисто для заявок; $boss = 0; // Боги могу утрвеждать любую апелляцию; if ($_SESSION['department_id'] == 2) { $boss = 1; } else { // Проверяем кто может утверждать данную апелляцию; $sql = "SELECT * FROM `justifications_respons` WHERE `user_id` = '" . $_SESSION['user_id'] . "' AND `parent_id` = '" . $desk['parent_id'] . "';"; $boss_array = $db_rs->all($sql); foreach ($boss_array as $boss) { if ($boss['user_id'] == $_SESSION['user_id']) { $boss = 1; } } } // Только руководитель отдела может одобрить заявку на выполнение; if ($boss == 1 && $status != '3' && $status != '2') { $html .= '<div class="menu_button" onclick="justification_set_status_new(' . $desk_id . ', 0);">Удалить апелляцию</div>'; } if ($boss == 1 && $status == '1') { $html .= '<div class="menu_button" onclick="justification_set_status_new(' . $desk_id . ', 2);">Утвердить апелляцию</div>'; $html .= '<div class="menu_button" onclick="justification_set_status_new(' . $desk_id . ', 3);">Не утвердить апелляцию</div>'; } if ($boss == 1 && $status == '2') { $html .= '<div class="menu_button" onclick="justification_set_status_new(' . $desk_id . ', 3);">Отменить утверждение апелляции</div>'; } if ($boss == 1 && $status == '3') { $html .= '<div class="menu_button" onclick="justification_set_status_new(' . $desk_id . ', 2);">Утвердить апелляцию</div>'; } $html .= '</div>'; } $html .= '<div style="margin-top: 5px; margin-bottom: 5px; margin-right: 10px; font-size: 0.9em;" align="center"><div class="menu_button" onclick="view_justification_dialog(' . $desk_id . ');">Показать диалог</div></div>'; $html .= '<div class="dialog_' . $desk_id . '" style="margin-top: 0.5em;" hidden>'; // Написать сообщение к обращению; //$html .= $elements->button(); $html .= '<div style="display: inline-block;"><input style="width: 46.9em;" type="text" justification_id="' . $desk_id . '" id="justification_message_text_' . $desk_id . '" value="" onkeydown = "if(event.which == 13) add_new_justification_chat_message(this, ' . $desk_id . ')">'; $html .= '</div>'; $html .= get_justification_chat($desk_id); $html .= '</div>'; $html .= '</div>'; } return $html; }
$sql = "SELECT `user_id` FROM `justifications_respons` WHERE `parent_id` = '" . $just_data['parent_id'] . "';"; write_log($sql, 'justification_status'); $boss = $db_rs->all($sql); foreach ($boss as $item) { if ($item['user_id'] != $_SESSION['user_id']) { send_notification($item['user_id'], 'В апелляции №' . $just_id . ' произошли новые события<br>Нажмите для перехода в список апелляций.', 'black_journal', '', '1', $just_id); } } $sql = "UPDATE `justifications` SET " . ($new_status == 2 ? "`accepter_id` = '" . $_SESSION['user_id'] . "', " : '') . " `status` = '" . $new_status . "' WHERE `id` = '" . $just_id . "';"; write_log($sql, 'justification_status'); $db_rs->query($sql); echo 'OK'; } // Передаем чат апелляции; if (isset($_POST['get_messages']) && $_POST['get_messages'] != '') { echo get_justification_chat($_POST['get_messages']); } // Добавление нового сообщения; if (isset($_POST['add_message']) && $_POST['add_message'] != '') { $just_id = $_POST['justification_id']; // Получаем ID пользователя; $sql = "SELECT `id` FROM `users_apps` WHERE `user_name` = '" . $_SESSION['user_login'] . "';"; write_log($sql, 'add_justification_chat_message'); $author_id = $db_rs->one($sql); // Добвляем сообщение и обновляем дату в обращении; $sql = "INSERT INTO `justifications_chat` (`justification_id`, `author_user_id`, `mess_text`, `date_create`, `status`) VALUES('" . $_POST['justification_id'] . "', '" . $author_id . "', '" . $_POST['add_message'] . "', NOW(), '1');"; write_log($sql, 'add_justification_chat_message'); $db_rs->query($sql); // Обновляем обращение; $sql = "UPDATE `justifications` SET `date_last_update` = NOW() WHERE `id` = '" . $_POST['justification_id'] . "';"; write_log($sql, 'add_justification_chat_message');