diff --git a/ajax/getClientLogForEventsNew.php b/ajax/getClientLogForEventsNew.php index 6823525..893962d 100644 --- a/ajax/getClientLogForEventsNew.php +++ b/ajax/getClientLogForEventsNew.php @@ -1186,7 +1186,7 @@ ORDER BY date_sort ASC"; $sql_objs = "SELECT id, nazv, adres FROM objects WHERE id IN (" . implode(',', $obj_ids) . ")"; $rez_objs = mysql_query($sql_objs); if ($rez_objs && mysql_num_rows($rez_objs) > 0) { - echo '
Объекты:
'; + echo '
Объекты:
'; while ($obj_row = mysql_fetch_assoc($rez_objs)) { echo '' . htmlspecialchars($obj_row['nazv']) . ' (' . htmlspecialchars($obj_row['adres']) . ')
'; } @@ -1197,25 +1197,25 @@ ORDER BY date_sort ASC"; $sql_inner_docs = "SELECT d.id, d.name FROM inner_docs d JOIN deal_inner_doc did ON did.inner_doc_id = d.id WHERE did.deal_id = " . intval($deal_id_for_edit); $rez_inner_docs = mysql_query($sql_inner_docs); if ($rez_inner_docs && mysql_num_rows($rez_inner_docs) > 0) { - echo '
Документы:'; + echo '
Документы:'; while ($doc_row = mysql_fetch_assoc($rez_inner_docs)) { echo '
'; - echo ''; + echo ''; echo ''; echo ''; echo ''; echo ''; diff --git a/ajax/getLogForEvents.php b/ajax/getLogForEvents.php index 8f5d683..f0bfdb3 100644 --- a/ajax/getLogForEvents.php +++ b/ajax/getLogForEvents.php @@ -1,14 +1,25 @@ query($sql); -if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { +// Offset-free: object_id приходит ЛИБО числовым (+src=ext для листинга от openEventsWindow), ЛИБО витринным EXT-{el.id} +// (reload панели задач после правки/коммента в crm.js гоняет именно EXT-id — единственный носитель листинг-ности в editEventObj→changeEventsObj). +// Принимаем оба: иначе is_numeric отбивал EXT-id → пустой ответ → белая модалка задач (повторное открытие через openEventsWindow слало числовой id и работало). +$objIdRaw = isset($_GET['object_id']) ? trim($_GET['object_id']) : ''; +$isExtId = (preg_match('/^EXT-?(\d+)$/i', $objIdRaw, $mEl) === 1); +$objIdNum = $isExtId ? (int)$mEl[1] : (is_numeric($objIdRaw) ? (int)$objIdRaw : 0); +if ($_SESSION['id'] && $objIdNum) { + + // Снимаем лок файла сессии (ниже сессия только читается) — чтобы парный AJAX getObjectInfoForEvents + // грузился параллельно, а не ждал освобождения сессии (PHP держит её эксклюзивно на время запроса). + session_write_close(); $gmtmsk = get_time_zone_user(); - + $time_zone = ''; if($gmtmsk >= 0){ @@ -19,6 +30,10 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { $get = clearInputData($_GET); + // Offset-free: листинг определяем по явному маркеру src=ext (openEventsWindow добавляет его листингам), а не + // по диапазону id — после снятия смещения el.id коллизит с objects.id. $get['object_id'] == реальный el.id. + $is_listing = $isExtId || (isset($_GET['src']) && $_GET['src'] === 'ext'); + // обновляем метку у меню календаря // считаем события объектов $sql = "SELECT count(id) FROM user_object_events WHERE user_id = $_SESSION[id] and calendar_view = 0 @@ -33,17 +48,35 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { $clientEventCount = mysql_result($rez,0); // суммарное количество событий по объектам и пользователям - $sumCount = intval($objectEventCount) + intval($clientEventCount); + $sumCount = intval($objectEventCount) + intval($clientEventCount) + get_user_listing_tasks_count($_SESSION['id']); echo ""; + // Сделка недоступна на найденном листинге (read-only; сервер addObjectDeal тоже отбивает) — прячем пункт + // меню «+»; для обычного объекта возвращаем. Грузится при каждом открытии модалки задач объекта. + echo ""; - $sqlObj = "SELECT objects.*, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add + // «Файл» (вложение к задаче) на найденном листинге не поддержан (clients_files привязывается только к + // событиям обычных объектов) — прячем пункт меню «+» для листингов, как «Сделку». + echo ""; + + + // Витринный id для onclick-редактирования: у листинга — EXT-{el.id}. Offset-free: crm.js (editEventObj) гоняет + // object_id через getEventForObjId→changeEventsObj без отдельного флага; единственный сквозной носитель — + // само значение object_id. EXT-{n} различает листинг без диапазона id (el.id коллизит с objects.id). + $objectIdForEdit = $is_listing ? ('EXT-' . $objIdNum) : $objIdNum; + + // Сводку по objects тянем ТОЛЬКО для своих объектов — у листинга строки в objects нет, а el.id коллизит + // с objects.id, поэтому без гарда подтянулся бы чужой одноимённый объект. + $obj = array(); + if (!$is_listing) { + $sqlObj = "SELECT objects.*, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add FROM objects - WHERE objects.id=$_GET[object_id]"; + WHERE objects.id=$objIdNum"; - $rezObj = mysql_query($sqlObj); - $obj = mysql_fetch_assoc($rezObj); + $rezObj = mysql_query($sqlObj); + $obj = mysql_fetch_assoc($rezObj); + } $user = new User; $user->get($_SESSION['id']); @@ -62,7 +95,7 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { $usersIds = array_unique($usersIds); $sql_users2 = "SELECT id, user_logo, CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id in (".implode(',',$usersIds).")"; - + $q_users2 = mysql_query($sql_users2); while($r_users2 = mysql_fetch_assoc($q_users2)){ $users[$r_users2['id']] = $r_users2; @@ -80,7 +113,7 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { var_dump($usersCanEdit); }*/ - + if ($_SESSION['agency'] or $_SESSION['manager'] or $_SESSION['users_admin'] or $obj['id_add_user'] == $_SESSION['id']) { @@ -89,7 +122,7 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { $agentIds = array(); if ($_SESSION['users_admin'] or $obj['id_add_user'] == $_SESSION['id']) { - + $searchUserId = $user->agencyId; $agentIds[] = $user->agencyId; } @@ -128,7 +161,7 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { ) as sub_comment_user_for FROM user_object_events AS e LEFT JOIN user_sub_comments AS s ON s.event_id = e.id AND s.section_id = 1 - WHERE (e.user_id IN (" . implode(",", $agentIds) . ") or e.from_id IN (" . implode(",", $agentIds) . ")) AND e.object_id = '$get[object_id]' + WHERE (e.user_id IN (" . implode(",", $agentIds) . ") or e.from_id IN (" . implode(",", $agentIds) . ")) AND e.object_id = '$objIdNum' GROUP BY e.id ORDER BY e.create_date ASC;"; //echo $sql; @@ -149,15 +182,59 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { ) as sub_comment_user_for FROM user_object_events AS e LEFT JOIN user_sub_comments AS s ON s.event_id = e.id AND s.section_id = 1 - WHERE (e.user_id = '$_SESSION[id]' or e.from_id = '$_SESSION[id]') AND e.object_id = '$get[object_id]' + WHERE (e.user_id = '$_SESSION[id]' or e.from_id = '$_SESSION[id]') AND e.object_id = '$objIdNum' GROUP BY e.id ORDER BY e.create_date ASC;"; } + + // Найденный листинг парсера: история событий из таблицы событий листинга. + // Offset-free: листинг определяем по явному маркеру src=ext (openEventsWindow добавляет его листингам), а не по + // диапазону id — после снятия смещения el.id коллизит с objects.id. object_id == реальный el.id. + // Шейп e.* близок к user_object_events; полей sum/req_id у листинга нет — рендер читает их через проверку > 0, отсутствие колонки безвредно. + // Суб-комменты листинг-событий — в общей user_sub_comments, но со СВОИМ section_id=4: + // id события листинга и id user_object_events — разные нумерации, общий section_id=1 дал бы коллизию строк. + // Доступ — свои события (e.user_id = me ИЛИ e.from_id = me): у листинга нет владельца id_add_user. + if ($is_listing) { + $external_listing_id = $objIdNum; + // Видимость как у своих объектов: руководитель/агентство/админ видят события агентства и подчинённых + // ($agentIds построен выше по роли — листинг id_add_user=0, поэтому в ветку agentIds входим именно по роли), + // обычный агент — только свои. Изоляция между агентствами: $agentIds = только пользователи СВОЕГО агентства, + // поэтому события чужих агентств на ОБЩЕМ листинге не видны. + if ($_SESSION['agency'] or $_SESSION['manager'] or $_SESSION['users_admin']) { + $listingEventScope = "(e.user_id IN (" . implode(",", $agentIds) . ") or e.from_id IN (" . implode(",", $agentIds) . "))"; + } else { + $listingEventScope = "(e.user_id = '$_SESSION[id]' or e.from_id = '$_SESSION[id]')"; + } + $sql = "SELECT e.*, + e.external_listing_id AS object_id, + IF(IFNULL(s.id, '') = '', 0, s.id) AS sub_id, + IF(IFNULL(s.sub_comment, '') = '', NULL, s.sub_comment) AS sub_comment, + IF(s.created_by <> 0, ( + SELECT CONCAT(u.last_name, ' ', u.first_name, ' ', u.middle_name) + FROM users as u WHERE u.id = s.created_by + ), NULL + ) as sub_comment_author, + IF(s.user_for <> 0, ( + SELECT CONCAT(u.last_name, ' ', u.first_name, ' ', u.middle_name) + FROM users as u WHERE u.id = s.user_for + ), NULL + ) as sub_comment_user_for + FROM external_listing_events AS e + LEFT JOIN user_sub_comments AS s ON s.event_id = e.id AND s.section_id = 4 + WHERE $listingEventScope AND e.external_listing_id = '$external_listing_id' + GROUP BY e.id + ORDER BY e.create_date ASC;"; + } + + // Контекст событий для onclick-хендлеров (deleteEvent/addEventSubComment/…): + // у листинга СВОЯ таблица событий — передача 'objects' удаляла/писала бы по чужому id в user_object_events/user_sub_comments. + $events_from = $is_listing ? 'listing' : 'objects'; + //echo $sql; $rez = mysql_query($sql); $date = null; - $is_who_work = false; + $is_who_work = false; $createDate = null; @@ -168,9 +245,9 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { while ($event = mysql_fetch_assoc($rez)) { if ($obj['id_add_user'] == $_SESSION['id'] || in_array($_SESSION['id'], $agentIds)) - $is_who_work = true; + $is_who_work = true; - // $event['user_fio'] = trim($event['last_name'] . ' ' . $event['first_name'] . ' ' . $event['middle_name']); + // $event['user_fio'] = trim($event['last_name'] . ' ' . $event['first_name'] . ' ' . $event['middle_name']); if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) { @@ -190,11 +267,14 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { $class_ev = " is__left"; } + // Бейдж «Перенесено из Поиска»: событие перенесено в объект при копировании найденного (листинг/старый парсер), исходная дата сохранена + $movedBadge = !empty($event['moved_on_copy']) ? '' : ''; + $sql_user = "SELECT user_logo, CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id = {$from_id} UNION SELECT user_logo, CONCAT(last_name, ' ', first_name, ' ', middle_name, ' (удален)') as user_fio FROM users_delete WHERE user_id = {$from_id}"; - + $from_user = mysql_fetch_assoc(mysql_query($sql_user)); - + $event['user_logo'] = $from_user['user_logo']; $event['user_fio'] = $from_user['user_fio']; @@ -205,12 +285,12 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { while ($file = mysql_fetch_assoc($docs_q)) { if($file['name_id'] > 0 && $name_files == ''){ - $sql_n = "SELECT * FROM names_client_files WHERE id={$file['name_id']}"; - $q_n = mysql_query($sql_n); - if(mysql_num_rows($q_n) > 0){ - $r_n = mysql_fetch_assoc($q_n); - $name_files = $r_n['name']; - } + $sql_n = "SELECT * FROM names_client_files WHERE id={$file['name_id']}"; + $q_n = mysql_query($sql_n); + if(mysql_num_rows($q_n) > 0){ + $r_n = mysql_fetch_assoc($q_n); + $name_files = $r_n['name']; + } } $name_doc = $_SERVER['DOCUMENT_ROOT'].'/upload/objects/'.$file['object_id'].'/'.$file['guid'].'.'.$file['type']; @@ -227,40 +307,40 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { ' . $file['name'] . ' '; - } + } } if (!empty($file_list)) { ?> -
-
-
- - - - - -
+
+
+
+ + + + + +
+
-
-
-
-
Примечание
-
    ' . $file_list . '
' : ''; ?>
- - -
- - - - + + + +
+
-
+
-
-
">
-
+
@@ -306,24 +386,24 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) {
Мероприятие состоится в
- 0 && isset($users[$event['user_id']])){?>
- - -
- + @@ -336,116 +416,116 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { } if ($event['type'] == 'comment') { - ?> + ?> -
-
+
+
- - -
-
-
+ ?> +
+
+
-
Примечание
+
Примечание
- -
-
+
+
- - +
-
- - - - - -
-
-
-
-
-
Модератор подтвердил рекламу
-
- - -
-
-
-
- -
-
- - + ?> +
+
+
+
+
+
Модератор подтвердил рекламу
+
+ + +
+
+
+
+ +
+
+
+ + + + +
-
+
-
+
@@ -458,97 +538,97 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) {
-
Звонок
+
Звонок
Позвонить - в + в
-
Комментарий:
+
Комментарий:
- +
Комментарий к задаче: - () - + () + - +
- - + 0 && isset($users[$event['user_id']])){?>
- - -
+
- + - + - + - +
-
-
-
- +
+
+ + ?>
-
+
- - -
+ ?> +
-
+
-
+
@@ -561,96 +641,96 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) {
-
Встреча
+
Встреча
Встреча будет в
-
Адрес:
+
Адрес:
-
Комментарий:
+
Комментарий:
- +
Комментарий к задаче: - () - + () + - +
- - + 0 && isset($users[$event['user_id']])){?>
- - -
+
- + - + - - + + - +
-
-
+
+
- + ?>
-
+
- - -
+ ?> +
-
+
-
+
@@ -663,141 +743,141 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) {
-
Отправлен на модерацию
+
Отправлен на модерацию
Ответственный:
- - +
Провести модерацию в
+ if(!empty($event['platforms_advert'])){ + $platforms_advert = json_decode($event['platforms_advert']); + //var_dump($platforms_advert); + ?> -
Выбранные площадки: +
Выбранные площадки: platform); + // var_dump($p_a->platform); if($p_a->platform == 'add_to_yandex_feed'){ ?> - -
Бесплатные - - days) echo ' '.$p_a->days; + +
Бесплатные + + days) echo ' '.$p_a->days; } - + if($p_a->platform == 'add_to_avito_feed'){ ?>
Авито - days) echo ' '.$p_a->days; + days) echo ' '.$p_a->days; } if($p_a->platform == 'add_to_cian_feed'){ ?>
Циан - days) echo ' '.$p_a->days; + days) echo ' '.$p_a->days; } if($p_a->platform == 'add_to_domclick_feed'){ ?>
ДомКлик - days) echo ' '.$p_a->days; + days) echo ' '.$p_a->days; } if($p_a->platform == 'add_to_emls_feed'){ ?>
Jcat - days) echo ' '.$p_a->days; + days) echo ' '.$p_a->days; } if($p_a->platform == 'add_to_bn_feed'){ ?>
Яндекс - days) echo ' '.$p_a->days; + days) echo ' '.$p_a->days; } } ?> - +
+ } else { + $sql_moderation = "SELECT * FROM objects_moderation_advert WHERE object_id = {$event['object_id']}"; + $q_moderation = mysql_query($sql_moderation); + $r_moderation = mysql_fetch_assoc($q_moderation); + if(!empty($r_moderation)){?>
Выбранные площадки:
+ 0){ ?> + + Бесплатные. + + 0){ ?> + Авито. + 0){ ?> + Циан. + 0){ ?> + ДомКлик. + 0){ ?> + Jcat. + 0){ ?> + Яндекс. + + +
+
0){ ?> - - Бесплатные. - - 0){ ?> - Авито. - 0){ ?> - Циан. - 0){ ?> - ДомКлик. - 0){ ?> - Jcat. - 0){ ?> - Яндекс. - - -
-
- -
Комментарий:
+
Комментарий:
- +
Комментарий к задаче: - () + () - Ответственный: () - + Ответственный: () + - + - +
- 0, ( @@ -812,64 +892,64 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) { ) as sub_comment_user_for FROM user_sub_comments as s WHERE event_id = {$event['id']} AND section_id = 1 AND id != {$event['sub_id']}"; - + $q_sub = mysql_query($sql_sub); while($sub_comment = mysql_fetch_assoc($q_sub)){ ?>
Комментарий к задаче: - () - () + Ответственный: () - - - - - - - - -
+ ?> + + + + + + + + +
-
+
- + - + - - + + - +
-
-
+
+
- 0){ $name_req = $pdo->result($pdo->query("SELECT name FROM requisitions WHERE id = {$event['req_id']}")); } - ?> + ?>
-
+
- - -
+ ?> +
-
+
-
+
@@ -915,367 +995,367 @@ if ($_SESSION['id'] && $_GET['object_id'] && is_numeric($_GET['object_id'])) {
-
Показ
+
Показ
Показ будет в
-
Адрес:
+
Адрес:
0 && isset($name_req)){ ?>
Подключена заявка:
-
Комментарий:
+
Комментарий:
- +
Комментарий к задаче: ()
- - + 0 && isset($users[$event['user_id']])){?>
- - -
+
- + - + - + - +
-
-
+
+
- + ?>
-
+
- - -
+ ?> +
-
-
- -
-
- -
- - +
+
+ +
+
+ +
+ + +
+
-
-
- -
-
Сделка
-
Запланирована сделка на в
- - -
- -
Сумма в договоре: руб.
- - -
Комиссия агента: руб.
- -
- Стороны сделки:
- 0) { - $row_req1 = mysql_fetch_assoc($rez_req1); - $side1_text .= ': Заявка «' . htmlspecialchars($row_req1['name']) . '»'; - if (!empty($row_req1['client_id'])) { - $sql_cl1 = "SELECT id, fio FROM clients WHERE id = " . intval($row_req1['client_id']) . " LIMIT 1"; - $rez_cl1 = mysql_query($sql_cl1); - if ($rez_cl1 && mysql_num_rows($rez_cl1) > 0) { - $row_cl1 = mysql_fetch_assoc($rez_cl1); - $side1_text .= ' — ' . htmlspecialchars($row_cl1['fio']) . ''; - } - } - } - } - echo '' . $side1_text . '
'; - - $side2_text = htmlspecialchars($deal_data['side_two']); - if (!empty($deal_data['side_two_requisition_id'])) { - $sql_req2 = "SELECT name, client_id FROM requisitions WHERE id = " . intval($deal_data['side_two_requisition_id']) . " LIMIT 1"; - $rez_req2 = mysql_query($sql_req2); - if ($rez_req2 && mysql_num_rows($rez_req2) > 0) { - $row_req2 = mysql_fetch_assoc($rez_req2); - $side2_text .= ': Заявка «' . htmlspecialchars($row_req2['name']) . '»'; - if (!empty($row_req2['client_id'])) { - $sql_cl2 = "SELECT id, fio FROM clients WHERE id = " . intval($row_req2['client_id']) . " LIMIT 1"; - $rez_cl2 = mysql_query($sql_cl2); - if ($rez_cl2 && mysql_num_rows($rez_cl2) > 0) { - $row_cl2 = mysql_fetch_assoc($rez_cl2); - $side2_text .= ' — ' . htmlspecialchars($row_cl2['fio']) . ''; - } - } - } - } - echo '' . $side2_text . ''; - ?> -
+ +
+
Сделка
+
Запланирована сделка на в
0) { - echo '
Объекты:
'; - while ($obj_row = mysql_fetch_assoc($rez_objs)) { - echo '' . htmlspecialchars($obj_row['nazv']) . ' (' . htmlspecialchars($obj_row['adres']) . ')
'; + if ($deal_id_for_edit) { + $sql_deal_data = "SELECT * FROM deals WHERE id = " . intval($deal_id_for_edit) . " LIMIT 1"; + $rez_deal_data = mysql_query($sql_deal_data); + $deal_data = mysql_fetch_assoc($rez_deal_data); + } + ?> + +
+ +
Сумма в договоре: руб.
+ + +
Комиссия агента: руб.
+ +
+ Стороны сделки:
+ 0) { + $row_req1 = mysql_fetch_assoc($rez_req1); + $side1_text .= ': Заявка «' . htmlspecialchars($row_req1['name']) . '»'; + if (!empty($row_req1['client_id'])) { + $sql_cl1 = "SELECT id, fio FROM clients WHERE id = " . intval($row_req1['client_id']) . " LIMIT 1"; + $rez_cl1 = mysql_query($sql_cl1); + if ($rez_cl1 && mysql_num_rows($rez_cl1) > 0) { + $row_cl1 = mysql_fetch_assoc($rez_cl1); + $side1_text .= ' — ' . htmlspecialchars($row_cl1['fio']) . ''; + } + } + } + } + echo '' . $side1_text . '
'; + + $side2_text = htmlspecialchars($deal_data['side_two']); + if (!empty($deal_data['side_two_requisition_id'])) { + $sql_req2 = "SELECT name, client_id FROM requisitions WHERE id = " . intval($deal_data['side_two_requisition_id']) . " LIMIT 1"; + $rez_req2 = mysql_query($sql_req2); + if ($rez_req2 && mysql_num_rows($rez_req2) > 0) { + $row_req2 = mysql_fetch_assoc($rez_req2); + $side2_text .= ': Заявка «' . htmlspecialchars($row_req2['name']) . '»'; + if (!empty($row_req2['client_id'])) { + $sql_cl2 = "SELECT id, fio FROM clients WHERE id = " . intval($row_req2['client_id']) . " LIMIT 1"; + $rez_cl2 = mysql_query($sql_cl2); + if ($rez_cl2 && mysql_num_rows($rez_cl2) > 0) { + $row_cl2 = mysql_fetch_assoc($rez_cl2); + $side2_text .= ' — ' . htmlspecialchars($row_cl2['fio']) . ''; + } + } + } + } + echo '' . $side2_text . ''; + ?> +
+ 0) { + echo '
Объекты:
'; + while ($obj_row = mysql_fetch_assoc($rez_objs)) { + echo '' . htmlspecialchars($obj_row['nazv']) . ' (' . htmlspecialchars($obj_row['adres']) . ')
'; + } + echo '
'; + } + } + $sql_inner_docs = "SELECT d.id, d.name FROM inner_docs d JOIN deal_inner_doc did ON did.inner_doc_id = d.id WHERE did.deal_id = " . intval($deal_id_for_edit); + $rez_inner_docs = mysql_query($sql_inner_docs); + if ($rez_inner_docs && mysql_num_rows($rez_inner_docs) > 0) { + echo '
Документы:
'; + while ($doc_row = mysql_fetch_assoc($rez_inner_docs)) { + echo '' . htmlspecialchars($doc_row['name']) . '
'; } echo '
'; } - } - $sql_inner_docs = "SELECT d.id, d.name FROM inner_docs d JOIN deal_inner_doc did ON did.inner_doc_id = d.id WHERE did.deal_id = " . intval($deal_id_for_edit); - $rez_inner_docs = mysql_query($sql_inner_docs); - if ($rez_inner_docs && mysql_num_rows($rez_inner_docs) > 0) { - echo '
Документы:
'; - while ($doc_row = mysql_fetch_assoc($rez_inner_docs)) { - echo '' . htmlspecialchars($doc_row['name']) . '
'; - } - echo '
'; - } - ?> - - - - - -
Сумма сделки: p
- - -
Комментарий:
- -
Комментарий к задаче: - () - - - - - - - + ?> + + -
- + +
Сумма сделки: p
+ + +
Комментарий:
+ +
Комментарий к задаче: + () + + + + + + + + +
+ Клиент: '.$doc_cls['fio'] . ((!empty($cls_contacts)) ? ' (' . implode(', ', $cls_contacts) . ')' : '') . '
  • '; + if ($doc_cls['email']) + $cls_contacts[] = $doc_cls['email']; + + if ($doc_cl['phone']) + $cls_contacts[] = $doc_cls['phone']; + + $doc_parties .= '
  • Клиент: '.$doc_cls['fio'] . ((!empty($cls_contacts)) ? ' (' . implode(', ', $cls_contacts) . ')' : '') . '
  • '; + } } - } - if (isset($params['client_id']) && (!isset($client_ids) || empty($client_ids))) { - $sql_cl = "SELECT id, fio, phone, email FROM `clients` WHERE `id` = '$params[client_id]' LIMIT 1"; - $rez_cl = mysql_query($sql_cl); - if ($doc_cl = mysql_fetch_assoc($rez_cl)) { - mask_client_contacts_inplace($doc_cl); - $cl_contacts = []; + if (isset($params['client_id']) && (!isset($client_ids) || empty($client_ids))) { + $sql_cl = "SELECT id, fio, phone, email FROM `clients` WHERE `id` = '$params[client_id]' LIMIT 1"; + $rez_cl = mysql_query($sql_cl); + if ($doc_cl = mysql_fetch_assoc($rez_cl)) { + mask_client_contacts_inplace($doc_cl); + $cl_contacts = []; - if ($doc_cl['email']) - $cl_contacts[] = $doc_cl['email']; + if ($doc_cl['email']) + $cl_contacts[] = $doc_cl['email']; - if ($doc_cl['phone']) - $cl_contacts[] = $doc_cl['phone']; + if ($doc_cl['phone']) + $cl_contacts[] = $doc_cl['phone']; - $doc_parties .= '
  • Клиент: '.$doc_cl['fio'] . ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : '') . '
  • '; + $doc_parties .= '
  • Клиент: '.$doc_cl['fio'] . ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : '') . '
  • '; + } } + + + if (isset($params['object_id'])) { + $sql_obj = "SELECT id, nazv, adres FROM `objects` WHERE `id` = '$params[object_id]' LIMIT 1"; + $rez_obj = mysql_query($sql_obj); + if ($doc_obj = mysql_fetch_assoc($rez_obj)) { + $doc_parties .= '
  • Объект: '.$doc_obj['nazv'].' ('.$doc_obj['adres'].')
  • '; + } + } + + if (!empty($doc_parties)) { ?> +
    Стороны сделки:
    + Объект: '.$doc_obj['nazv'].' ('.$doc_obj['adres'].')
  • '; - } - } - - if (!empty($doc_parties)) { ?> -
    Стороны сделки:
    - -
    - Документ: - - - + + 0 && isset($users[$event['user_id']])){?>
    - - - -
    - - - - - - - - - - - - - + +
    + + + + + + + + + + + + + +
    +
  • -
    -
    - -
    - - - +