die("нет данных"); } $uid = intval($_POST["uid"]); $date = intval($_POST["date"]); if ($uid == 0) { if (!isset($_POST["ml"])) { die("нет данных"); } $_users = explode(":", $_POST["ml"]); if (!count($_users)) { die("1"); } $users = array(); // получить все встречи всех манагеров foreach ($_users as $u) { $employer = Employee::find($u); $users[$u] = array(); $users[$u]['fio'] = $employer['fio']; $users[$u]["visits"] = array(); $users[$u]["visits_sum"] = 0; foreach (db::get_arrays("SELECT tm_start, tm_finish FROM " . TABLE_VISITS . " WHERE user_id=" . $u . " AND date=" . $date) as $r) { $users[$u]["visits"][] = $r; $users[$u]["visits_sum"] += $r["tm_finish"] - $r["tm_start"]; } } print "<div style='overflow:auto; background:white; border: 1px solid gray; height: 78px'>" . "<table cellpadding=0 cellspacing=0 style='font-size:8pt; margin-left:2px;'>" . "<tr style='color:gray'><td>Сотрудник</td><td style='width:10px' nowrap></td><td>Занятость</td></tr>"; // Филиал сотрудника. Если нет филиала, то используем 8 часов раб день $worklong = 0; if ($_SESSION["user"]["data"]["filial_id"]) { $fil = fils_get($_SESSION["user"]["data"]["filial_id"]); $dweek = date("w", $date) - 1;
$data = array('change_date' => time(), 'change_user_id' => $_SESSION['user']['data']['id'], 'order_id' => $order_id, 'filial_id_new' => $order_info['filial_id'], 'klient_id_new' => $order_info['klient_id'], 'vuz_id_new' => $order_info['vuz_id'], 'vuz_user_new' => $order_info['vuz_user'], 'type_id_new' => $order_info['type_id'], 'type_user_new' => $order_info['type_user'], 'napr_id_new' => $order_info['napr_id'], 'disc_id_new' => $order_info['disc_id'], 'disc_user_new' => $order_info['disc_user'], 'time_kln_new' => $order_info['time_kln'], 'cost_kln_new' => $order_info['cost_kln'], 'payment_id_new' => $order_info['payment_id'], 'subject_new' => $order_info['subject'], 'about_kln_new' => $order_info['about_kln'], 'about_mng_new' => $order_info['about_mng'], 'kurs_new' => $order_info['kurs'], 'prakt_pc_new' => $order_info['prakt_pc'], 'pages_min_new' => $order_info['pages_min'], 'pages_max_new' => $order_info['pages_max'], 'src_min_new' => $order_info['src_min'], 'src_max_new' => $order_info['src_max'], 'from_id_new' => $order_info['from_id'], 'oform_new' => $order_info['oform'], 'next_rel_date_new' => $order_info['next_rel_date'], 'status_id_new' => $order_info['status_id'], 'ok_comment_new' => $order_info['ok_comment'], 'ok_comment_date_new' => $order_info['ok_comment_date'], 'payment_comment_new' => $order_info['payment_comment'], 'cost_auth_new' => $order_info['cost_auth'], 'time_auth_new' => $order_info['time_auth'], 'oplata_kln_new' => $order_info['oplata_kln'], 'author_paid_new' => $order_info['author_paid'], 'company_paid_new' => $company_paid, 'filial_id_old' => $order_info['filial_id'], 'klient_id_old' => $order_info['klient_id'], 'vuz_id_old' => $order_info['vuz_id'], 'vuz_user_old' => $order_info['vuz_user'], 'type_id_old' => $order_info['type_id'], 'type_user_old' => $order_info['type_user'], 'napr_id_old' => $order_info['napr_id'], 'disc_id_old' => $order_info['disc_id'], 'disc_user_old' => $order_info['disc_user'], 'time_kln_old' => $order_info['time_kln'], 'cost_kln_old' => $order_info['cost_kln'], 'payment_id_old' => $order_info['payment_id'], 'subject_old' => $order_info['subject'], 'about_kln_old' => $order_info['about_kln'], 'about_mng_old' => $order_info['about_mng'], 'kurs_old' => $order_info['kurs'], 'prakt_pc_old' => $order_info['prakt_pc'], 'pages_min_old' => $order_info['pages_min'], 'pages_max_old' => $order_info['pages_max'], 'src_min_old' => $order_info['src_min'], 'src_max_old' => $order_info['src_max'], 'from_id_old' => $order_info['from_id'], 'oform_old' => $order_info['oform'], 'next_rel_date_old' => $order_info['next_rel_date'], 'status_id_old' => $order_info['status_id'], 'ok_comment_old' => $order_info['ok_comment'], 'ok_comment_date_old' => $order_info['ok_comment_date'], 'payment_comment_old' => $order_info['payment_comment'], 'cost_auth_old' => $order_info['cost_auth'], 'time_auth_old' => $order_info['time_auth'], 'oplata_kln_old' => $order_info['oplata_kln'], 'author_paid_old' => $order_info['author_paid'], 'company_paid_old' => $order_info['company_paid']); OrderHistory::create($data); } $result[] = 0; break; case 'color': $bDoUpdate = false; $currentColors = db::get_single_value("SELECT conf_ord_colors FROM " . TBL_PREF . "data_users WHERE id = " . $_SESSION['user']['data']['id']); if (empty($currentColors)) { $currentColors = array(); } else { $currentColors = unserialize($currentColors); } $currentColors[$_GET['order_id']] = $_GET['value']; $currentColors = serialize($currentColors); Employee::update($_SESSION['user']['data']['id'], array('conf_ord_colors' => $currentColors)); $_SESSION['user']['data']['conf_ord_colors'] = $currentColors; break; case 'referrer_payment_status_all': $bDoUpdate = false; $orders = explode(',', $_GET['order_id']); foreach ($orders as $order_id) { $order_id = trim($order_id); if (empty($order_id)) { continue; } $order_info = get_order_info($order_id); if ($order_info['referrer_payment_status'] == 0) { Order::update($order_id, array('referrer_payment_status' => 1, 'referrer_payment_date' => date('Y-m-d H:i:s'))); } }
function loginform_exec($Frm, $Err) { if ($Err) { $Frm->_gui->Vars["login_message"] = "Ошибки при заполнении формы"; return; } // clr db::delete(TABLE_LOGIN_HOST, "time < " . (time() - 900)); $last_login_time = db::get_arrays("SELECT time FROM " . TABLE_LOGIN_HOST . " WHERE ip = '" . db::input($_SERVER["REMOTE_ADDR"]) . "' ORDER BY time"); $cnt = count($last_login_time); $rowx["time"] = 0; if ($cnt) { $rowx = $last_login_time[0]; } $user = Employee::findOneBy(array('email' => strtolower($Frm->GetValue(0)), 'hpwd' => md5($Frm->GetValue(1) . $Frm->GetValue(0)))); if (!$user || $cnt > 2) { if ($cnt > 1) { $t = 900 - time() + $rowx["time"]; if ($t > 60) { $w = floor($t / 60) . " мин."; } else { $w = " минуту"; } $Frm->_gui->Vars["login_message"] = "Попытки исчерпаны. Подождите " . $w; } else { $Frm->_gui->Vars["login_message"] = "Ошибка. Осталось попыток: " . (2 - $cnt); db::insert(TABLE_LOGIN_HOST, array('ip' => $_SERVER['REMOTE_ADDR'], 'time' => time())); } return; } else { // ok if ($user["blocked"] || $user["black_list"]) { $Frm->_gui->Vars["login_message"] = "Доступ запрещен"; return; } $ll = array(); if ($user["last_login"]) { $ll = unserialize($user["last_login"]); while (count($ll) > 99) { array_shift($ll); } } $ll[] = array("ip" => $_SERVER['REMOTE_ADDR'], "time" => time()); Employee::update($user['id'], array('last_act' => time(), 'last_login' => serialize($ll))); unset($user["last_act"]); unset($user["last_login"]); $_SESSION["user"]["auth"] = true; $_SESSION["user"]["data"] = $user; page_reload(); } }
<?php use Components\Classes\db; use Components\Entity\Employee; $id = intval($_REQUEST["zan"]); $order_fields = array('id', 'klient_id', 'created', 'time_kln'); $order_by = ' ORDER BY id ASC'; if (isset($_REQUEST['sort_cgui_table_id_usotr_orders2'])) { $order_by = ' ORDER BY ' . $order_fields[$_REQUEST['sort_cgui_table_id_usotr_orders2']] . ' ASC'; } elseif (isset($_REQUEST['sort_cgui_table_id_usotr_orders2_up'])) { $order_by = ' ORDER BY ' . $order_fields[$_REQUEST['sort_cgui_table_id_usotr_orders2_up']] . ' DESC'; } if (Employee::find($id)) { $orders = db::get_assoc_arrays("SELECT " . join(", ", $order_fields) . " FROM " . TABLE_ORDERS . " WHERE manager_id = " . $id . " OR author_id = " . $id . $order_by); $tbl = $GUI->Table("sotr_orders" . $n); $tbl->Width = "50%"; $tbl->RowEvent2 = "document.location.href=\"?section=ord&subsection=2&order=%var%&p=1\""; $r = $tbl->NewColumn(); $r->Caption = "Номер заказа"; $r->DoSort = true; $r->Key = "id"; $r = $tbl->NewColumn(); $r->Caption = "Клиент"; $r->DoSort = true; $r->Key = "klient_id"; $r->Align = "left"; $r->Process = "get_client_name"; $r = $tbl->NewColumn(); $r->Caption = "Принят"; $r->DoSort = true; $r->Key = "created";
<?php use Components\Entity\Employee; use Components\Classes\db; use Components\Classes\Roles; page_ScriptNeed("scripts.js", "modules/finances/referrer_system"); page_ScriptNeed("instant_edit.js", "js"); global $GUI; if (isset($_REQUEST["ref_system_flds_cfg"])) { if (isset($_POST["flds"])) { $_SESSION["user"]["data"]["conf_ref_system_fld"] = serialize($_POST["flds"]); } else { $_SESSION["user"]["data"]["conf_ref_system_fld"] = serialize(array()); } Employee::update($_SESSION["user"]["data"]["id"], array('conf_ref_system_fld' => $_SESSION["user"]["data"]["conf_ref_system_fld"])); $_SESSION["ref_system_flds_cfg"] = true; $GUI->OK("Выполнено"); die(""); } $temp_table = 'referrer_system_' . $_SESSION["user"]["data"]["id"]; $query = "\n SELECT o.*, ref.id AS referrer_id, ref.fio AS referrer_fio, ref.email AS referrer_email, ref.telnum AS referrer_phone, ref.city AS referrer_city, ref.referrer_code\n FROM " . TBL_PREF . "orders o\n JOIN " . TBL_PREF . "clients c ON c.id = o.klient_id\n JOIN " . TBL_PREF . "clients ref ON ref.id = c.ref_id\n WHERE c.ref_id != 0\n ORDER BY o.id ASC\n"; db::query("CREATE TEMPORARY TABLE " . TBL_PREF . $temp_table . " AS (" . $query . ")"); //Search panel $sp = $GUI->UPanel(); $sp->Caption = "Поиск партнера"; $searchWhere = ''; if (!empty($_REQUEST["kln_search"])) { $sp->defOpen = true; if (!empty($_REQUEST['search_id'])) { if (!empty($searchWhere)) { $searchWhere .= ' OR';
<?php use Components\Classes\db; use Components\Classes\Roles; use Components\Entity\Order; use Components\Entity\Employee; use Components\Entity\OrderStatus; if (isset($_REQUEST["ordfldscfg"])) { if (isset($_POST["flds"])) { $_SESSION["user"]["data"]["conf_ordfld"] = serialize($_POST["flds"]); } else { $_SESSION["user"]["data"]["conf_ordfld"] = serialize(array()); } Employee::update($_SESSION["user"]["data"]["id"], array('conf_ordfld' => $_SESSION["user"]["data"]["conf_ordfld"])); $_SESSION["ordfldscfg"] = true; $GUI->OK("Выполнено"); die(""); } page_scriptNeed('instant_edit.js', '/js/'); page_scriptNeed('color_picker.js', '/js/'); page_scriptNeed('jquery.colorPicker.js', '/js/simpleColorPicker/'); page_styleNeed('colorPicker.css', '/js/simpleColorPicker/'); global $data_users, $data_filials, $data_vuz, $data_payments, $data_napravl, $data_worktypes, $data_discip; //////////// Filters $Filter = $GUI->FltrCol("ord", "data_users:conf_ordfltr"); $Filter->SrcTable = TABLE_ORDERS; $Filter->DstTable = "orders_tmp_" . $_SESSION["user"]["data"]["id"]; // Добавляем фильтры if (!is_author($_SESSION['user']['data']['id'])) { $f = $Filter->AddFilter("CGUI_FilterSelect"); $f->name = "Клиент";
/** * @deprecated * @param $group_id * @param null $filial_id * @return array */ function get_users_by_group($group_id, $filial_id = null) { return Employee::findBy(array('group_id' => $group_id, 'filial_id' => $filial_id), array('fio' => 'ASC')); }
public static function enqueue_message_to_email($message_id, $authors_ids, $notification_type = EmailNotification::TO_AUTHOR_ON_ASSIGN) { if (empty($message_id) || !is_numeric($message_id)) { return false; } assert(in_array($notification_type, EmailNotification::$NOTIFICATION_TYPES)); // Если не надо уведомлять - выходим типа все ок if (!EmailNotificationType::isSendable($notification_type)) { return array(); } $result = array(); if (!is_array($authors_ids) && is_numeric($authors_ids)) { $authors_ids = array($authors_ids); } foreach ($authors_ids as $id) { if (is_numeric($id)) { try { $author = Employee::find($id); } catch (Exception $e) { $result['error'][] = $id; continue; } $notification_id = EmailNotification::create(array('message_id' => $message_id, 'receiver_email' => $author['email'], 'type' => $notification_type)); if ($notification_id) { $result['success'][] = $id; } } else { $ids = explode(', ', $id); $temp_result = self::enqueue_message_to_email($message_id, $ids, $notification_type); if (count($temp_result['success'])) { array_push($result['success'], $temp_result['success']); } if (count($temp_result['error'])) { array_push($result['error'], $temp_result['error']); } } } return $result; }
<?php use Components\Exceptions\Exception; use Components\Entity\Employee; use Components\Classes\db; use Components\Entity\Message; if (!is_client_logged() || $_SESSION["frame"]["client"]["blocked"]) { echo 'Доступ запрещен.'; } else { if (!empty($_REQUEST['new']) && !empty($_REQUEST['r'])) { try { $receiver = Employee::find($_REQUEST['r']); } catch (Exception $e) { redirect("?type=cabinet&messages"); } if (!empty($_REQUEST['send'])) { if ($receiver['id'] != $_REQUEST['receiver']) { redirect("?type=cabinet&messages"); } $message_id = mls_Send('u' . $receiver['id'], 'k' . $_SESSION['frame']['client']['id'], $_REQUEST['subject'], $_REQUEST['text'], 1, 0); \Components\Classes\Author::enqueue_message_to_email($message_id, array($receiver['id']), \Components\Entity\EmailNotificationType::TO_RECEIVER_ON_MESSAGE_COMMON); redirect("?type=cabinet&messages"); } $receiver_full_name = db::get_single_value("SELECT sname FROM " . TABLE_ROLES . " WHERE id = " . $receiver['group_id']) . ' ' . $receiver['fio']; $subject = ''; if (!empty($_REQUEST['o'])) { $subject = 'Вопрос по заказу №' . $_REQUEST['o']; } echo "<div style='margin-bottom: 5px'><a href='?type=cabinet&messages'><< к списку сообщений</a></div>"; echo <<<HTML <div id="cgui_form_0" class="cgui_form_box" style="width:600px; height: 270px; margin: 0 auto;">
$clients = Client::findBy(array('filial_id' => $_SESSION["user"]["data"]["filial_id"])); } $export->setData($clients); $export->writeData(); $export->getOutput('Клиенты'); die; break; case 'users': if (!Roles::isActionAllowed($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Скачать базу сотрудников")) { $GUI->ERR('У вас нету прав'); page_reloadSubSec(); } $export = new MysqlToExcel(); $export->setWorkSheetName('База сотрудников'); $export->setModuleName('sotr'); $export->setSubModuleName('Список'); if (is_director($_SESSION["user"]["data"]["id"])) { $employers = Employee::findAll(); } else { $employers = Employee::findBy(array('filial_id' => $_SESSION["user"]["data"]["filial_id"])); } $export->setData($employers); $export->writeData(); $export->getOutput('Сотрудники'); die; break; default: $GUI->ERR('У вас нету прав'); page_reloadSubSec(); } }
<?php use Components\Entity\Employee; use Components\Entity\EmployeeBlack; use Components\Classes\Author; if (!user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Редактировать")) { $GUI->informer->ERR(PERMISSION_DENIED); page_ReloadSubSec(); } $id = intval($_REQUEST["edit"]); $employer = Employee::find($id); if (!$employer) { $GUI->informer->ERR("Запись не найдена"); page_ReloadSubSec(); } need_data('data_napravl'); if (user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Удалить")) { if ($_SESSION["user"]["data"]["id"] != $id) { $GUI->cmdmenu->AddItem("Удалить", "?section=sotr&subsection=2&del=" . $id); } } if (user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Написать")) { $GUI->cmdmenu->AddItem("Написать", "?section=mls&subsection=1&_to=u" . $id); } if (user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "История переписки")) { $GUI->cmdmenu->AddItem("История переписки", "?section=sotr&subsection=2&msgs=" . $id); } if (user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Занятость")) { $GUI->cmdmenu->AddItem("Занятость", "?section=sotr&subsection=2&zan=" . $id); } $c = text_lines_count($employer["comments"]);
function tp_author_notification($value, $row, $table, &$info) { global $GUI; try { $author = Employee::find($row['author_id']); $icon = '<div>'; $icon .= $GUI->getIcon("?section=ord&subsection=2&order=" . $row['id'] . "&p=7&t=1", "msg", "Отправить напоминание"); $icon .= '<span style="color:blue; position: relative; top: -2px;left:5px;">' . count(AuthorNotification::findBy(array('author_id' => $author['id'], 'order_id' => $row['id'], 'type' => 1))) . '</span>'; $icon .= '</div>'; $icon .= '<div>'; $icon .= $GUI->getIcon("?section=ord&subsection=2&order=" . $row['id'] . "&p=7&t=2", "msg_red", "Отправить гневное напоминание"); $icon .= '<span style="color:red; position: relative; top: -2px;left:5px;">' . count(AuthorNotification::findBy(array('author_id' => $author['id'], 'order_id' => $row['id'], 'type' => 2))) . '</span>'; $icon .= '</div>'; } catch (Exception $e) { $icon = '<div style="height: 20px;"></div>'; } $offers_qt = ''; if (!empty($row['manager_id']) && !empty($row['status_id'])) { $offers_qt = count(AuthorOffer::findBy(array('order_id' => $row['id']))); } return $icon . '<span style="color:red; position: relative; top: -26px;left:50px;">' . $offers_qt . '</span>'; }
function deluser_exec($Frm, $Err) { if (!$Err) { if (is_director($_SESSION["user"]['data']['id'])) { $id = $Frm->GetNmValueI('id'); if (count(Order::findBy(array('manager_id' => $id)))) { $Frm->_gui->informer->ERR("У сотрудника есть назначенные заказы"); return; } if (db::get_single_value("SELECT COUNT(id) FROM " . TBL_PREF . "data_visits WHERE user_id = '" . $id . "' AND status <> 1")) { $Frm->_gui->informer->ERR("У сотрудника есть назначенные встречи"); return; } $resone = $Frm->GetNmValueH('reason'); db::query("insert into " . TABLE_USERS_BLACK . " select * from " . TABLE_USERS . " where id= " . $id); EmployeeBlack::update($id, array('comments' => $resone, 'blocked' => 1, 'black_list' => 1, 'removed_by' => $_SESSION['user']['data']['id'], 'removed_time' => time())); Employee::delete($id); $Frm->_gui->informer->OK("Сотрудник перенесен в черный список"); } else { $Frm->_gui->informer->ERR("Перемещать сотрудников в черный список может только руководитель"); } page_reloadSec(); } }