Пример #1
0
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;
}
Пример #2
0
     $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');