diff --git a/api/v2/app/src/controllers/AdvertsController.php b/api/v2/app/src/controllers/AdvertsController.php
index 2a98374..a43ae71 100644
--- a/api/v2/app/src/controllers/AdvertsController.php
+++ b/api/v2/app/src/controllers/AdvertsController.php
@@ -6,6 +6,25 @@ use Complex\Exception;
class AdvertsController extends ApiController
{
+ // Найденный листинг парсера read-only: рекламные действия недоступны
+ // (паритет с десктопом, где switchAdvert*/addPromotion и т.п. отбивают листинг). Вернёт true + 403, если листинг.
+ // Offset-free: после снятия смещения id листинга (= реальный external_listings.id) коллизит с objects.id,
+ // поэтому различить листинг по id нельзя. Признак приходит явным флагом is_external из запроса
+ // (фронт знает, что действие над найденным листингом). Сервер по id отличить листинг уже не может.
+ private function _rejectIfExternalListing($app, $is_external)
+ {
+ if (!empty($is_external)) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(403);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'errors' => ['Действие недоступно для найденного листинга. Скопируйте объект в свои, чтобы управлять им.'],
+ ], JSON_UNESCAPED_UNICODE));
+ return true;
+ }
+ return false;
+ }
+
public function getPublishedPackages($app, $get, $post) {
$error = false;
@@ -90,6 +109,9 @@ class AdvertsController extends ApiController
if (isset($data['object_id']))
$object_id = $data['object_id'];
+ // Признак найденного листинга — явный флаг из запроса (offset-free: id листинга коллизит с objects.id)
+ if ($this->_rejectIfExternalListing($app, isset($data['is_external']) ? $data['is_external'] : null)) return;
+
$service = null;
if (isset($data['service']))
$service = $data['service'];
@@ -1814,6 +1836,9 @@ class AdvertsController extends ApiController
if (isset($get['object_id']))
$object_id = $get['object_id'];
+ // Признак найденного листинга — явный флаг из запроса (offset-free: id листинга коллизит с objects.id)
+ if ($this->_rejectIfExternalListing($app, isset($get['is_external']) ? $get['is_external'] : null)) return;
+
if (($user_id = $_SESSION['id']) && !is_null($object_id)) {
// Открываем соединение с БД
@@ -1867,6 +1892,9 @@ class AdvertsController extends ApiController
if (isset($data['object_id']))
$object_id = $data['object_id'];
+ // Признак найденного листинга — явный флаг из запроса (offset-free: id листинга коллизит с objects.id)
+ if ($this->_rejectIfExternalListing($app, isset($data['is_external']) ? $data['is_external'] : null)) return;
+
$packages = null;
if (isset($data['packages']))
$packages = $data['packages'];
@@ -2036,6 +2064,9 @@ class AdvertsController extends ApiController
if (isset($data['object_id']))
$object_id = $data['object_id'];
+ // Признак найденного листинга — явный флаг из запроса (offset-free: id листинга коллизит с objects.id)
+ if ($this->_rejectIfExternalListing($app, isset($data['is_external']) ? $data['is_external'] : null)) return;
+
$price = null;
if (isset($data['price']))
$price = $data['price'];
@@ -2131,6 +2162,9 @@ class AdvertsController extends ApiController
if (isset($data['object_id']))
$object_id = $data['object_id'];
+ // Признак найденного листинга — явный флаг из запроса (offset-free: id листинга коллизит с objects.id)
+ if ($this->_rejectIfExternalListing($app, isset($data['is_external']) ? $data['is_external'] : null)) return;
+
$price = null;
if (isset($data['price']))
$price = $data['price'];
@@ -2597,6 +2631,9 @@ class AdvertsController extends ApiController
if (isset($data['object_id']))
$object_id = $data['object_id'];
+ // Признак найденного листинга — явный флаг из запроса (offset-free: id листинга коллизит с objects.id)
+ if ($this->_rejectIfExternalListing($app, isset($data['is_external']) ? $data['is_external'] : null)) return;
+
$services = null;
if (isset($data['services']))
$services = $data['services'];
@@ -2647,6 +2684,9 @@ class AdvertsController extends ApiController
if (isset($data['object_id']))
$object_id = $data['object_id'];
+ // Признак найденного листинга — явный флаг из запроса (offset-free: id листинга коллизит с objects.id)
+ if ($this->_rejectIfExternalListing($app, isset($data['is_external']) ? $data['is_external'] : null)) return;
+
$employee_ids = null;
if (isset($data['employee_ids']))
$employee_ids = $data['employee_ids'];
diff --git a/api/v2/app/src/controllers/ClientsController.php b/api/v2/app/src/controllers/ClientsController.php
index cbce10a..1c00f21 100644
--- a/api/v2/app/src/controllers/ClientsController.php
+++ b/api/v2/app/src/controllers/ClientsController.php
@@ -25,6 +25,16 @@ class ClientsController extends ApiController
$menuPermissions = $user->checkMenuPermissions();
$agency_id = $_SESSION['agency_id'];
+ // Наполняем new_transfers для is_new здесь, не полагаясь на getFunnels
+ $nt_agency_id = \User::getUserAgencyID($user_id);
+ $nt_ids = [];
+ $nt_sql = "SELECT DISTINCT `clients`.`id` FROM `events_clients` AS `events` LEFT JOIN `clients` AS `clients` ON `clients`.`id` = `events`.`client_id` LEFT JOIN `funnel` AS `funnel` ON `funnel`.`id` = `clients`.`funnel_id` WHERE (`events`.`user_id` = '$user_id' AND `events`.`from_id` = '$user_id') AND (`events`.`event` = 'accepted' OR `events`.`event` = 'accepted_doer') AND `events`.`viewed` = 0 AND `events`.`read` = 1 AND (`clients`.`confirm` = 1 OR `clients`.`doers_confirm` = 1) AND `events`.`req_id` = 0 AND `clients`.`deleted` <> '1' AND (`clients`.`who_work` = '$user_id' OR `clients`.`doers` LIKE '%"{$user_id}":1%') AND (`clients`.`funnel_id` = 0 OR (`funnel`.`agency_id` = '$nt_agency_id' AND `funnel`.`deleted` = 0))";
+ if ($nt_q = mysql_query($nt_sql)) {
+ while ($nt_row = mysql_fetch_assoc($nt_q))
+ $nt_ids[] = $nt_row['id'];
+ }
+ $_SESSION['new_transfers']['clients'] = $nt_ids;
+
$clients = [];
$pagination = null;
@@ -1092,7 +1102,7 @@ class ClientsController extends ApiController
if (isset($users[$client['id_agent']])) {
if ($user_who = $users[$client['id_agent']]) {
if ($user_who['agency']) {
- $who_added['name'] = "Агентство {$user_who['agency_name']}";
+ $who_added['name'] = trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']) ?: "Агентство {$user_who['agency_name']}";
} else if ($user_who['manager']) {
$who_added['name'] = "Менеджер " . trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']);
if ($user_who['role_id'] > 0)
@@ -1117,7 +1127,7 @@ class ClientsController extends ApiController
if ($user_who = $users[$client['who_delete']]) {
if ($user_who['agency']) {
- $who_delete['name'] = "Агентство {$user_who['agency_name']}";
+ $who_delete['name'] = trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']) ?: "Агентство {$user_who['agency_name']}";
} else if ($user_who['manager']) {
$who_delete['name'] = "Менеджер " . trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']);
} else {
@@ -1151,7 +1161,7 @@ class ClientsController extends ApiController
if ($user_who = $users[$client['who_work']]) {
if ($user_who['agency']) {
- $who_work['name'] = "Агентство {$user_who['agency_name']}";
+ $who_work['name'] = trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']) ?: "Агентство {$user_who['agency_name']}";
} else if ($user_who['manager']) {
if ($user_who['role_id'] > 0) {
$who_work['name'] = $departments[$user_who['role_id']]['role_name'] . ' ' . trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']);
@@ -1197,7 +1207,7 @@ class ClientsController extends ApiController
$user_who = $users[$id];
if ($status == 0) {
if ($user_who['agency']) {
- $doers_request['name'] = "Агентство {$user_who['agency_name']}";
+ $doers_request['name'] = trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']) ?: "Агентство {$user_who['agency_name']}";
} else if ($user_who['manager']) {
$doers_request['name'] = "Менеджер " . trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']);
} else {
@@ -1208,7 +1218,7 @@ class ClientsController extends ApiController
}
if ($status == 1) {
if ($user_who['agency']) {
- $doers_accept['name'] = "Агентство {$user_who['agency_name']}";
+ $doers_accept['name'] = trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']) ?: "Агентство {$user_who['agency_name']}";
} else if ($user_who['manager']) {
$doers_accept['name'] = "Менеджер " . trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']);
} else {
@@ -1886,7 +1896,7 @@ class ClientsController extends ApiController
if (isset($users[$data['id_agent']])) {
if ($user_who = $users[$data['id_agent']]) {
if ($user_who['agency']) {
- $who_added['name'] = "Агентство {$user_who['agency_name']}";
+ $who_added['name'] = trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']) ?: "Агентство {$user_who['agency_name']}";
} else if ($user_who['manager']) {
$who_added['name'] = "Менеджер " . trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']);
if ($user_who['role_id'] > 0)
@@ -1911,7 +1921,7 @@ class ClientsController extends ApiController
if ($user_who = $users[$data['who_delete']]) {
if ($user_who['agency']) {
- $who_delete['name'] = "Агентство {$user_who['agency_name']}";
+ $who_delete['name'] = trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']) ?: "Агентство {$user_who['agency_name']}";
} else if ($user_who['manager']) {
$who_delete['name'] = "Менеджер " . trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']);
} else {
@@ -1945,7 +1955,7 @@ class ClientsController extends ApiController
if ($user_who = $users[$data['who_work']]) {
if ($user_who['agency']) {
- $who_work['name'] = "Агентство {$user_who['agency_name']}";
+ $who_work['name'] = trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']) ?: "Агентство {$user_who['agency_name']}";
} else if ($user_who['manager']) {
if ($user_who['role_id'] > 0) {
$who_work['name'] = $departments[$user_who['role_id']]['role_name'] . ' ' . trim($user_who['last_name'] . ' ' . $user_who['first_name'] . ' ' . $user_who['middle_name']);
@@ -2446,33 +2456,64 @@ class ClientsController extends ApiController
$variants = [];
- $sql = "SELECT `sended_pdf`.*,
- 0 AS `close_contact`,
- 0 AS `new_price`,
- DATE_FORMAT(`sended_pdf`.`date_send`, '%d.%m.%Y') AS `date_f`,
- DATE_FORMAT(`sended_pdf`.`date_send`, '%H:%i') AS `time_f`,
- `archive`.`phone`,
- `archive`.`sobstv`,
- `archive`.`id` as `object_id`,
- `archive`.`nazv` as `object_title`,
- `archive`.`adres` as `object_address`,
- 0 as `newbild`
- FROM `sended_pdf`, `archive`
- WHERE `sended_pdf`.`id_client` = '$client_id' AND
- `archive`.`id_obj`=`sended_pdf`.`id_object`
- UNION ALL SELECT `sended_pdf_newbuildings`.*,
- 0 AS `close_contact`,
- 0 AS `new_price`,
- DATE_FORMAT(`sended_pdf_newbuildings`.`date_send`, '%d.%m.%Y') AS `date_f`,
- DATE_FORMAT(`sended_pdf_newbuildings`.`date_send`, '%H:%i') AS `time_f`,
- null as `phone`,
- null as `sobstv`,
- null as `object_id`,
- null as `object_title`,
- null as `object_address`,
- 1 as `newbild`
- FROM `sended_pdf_newbuildings`
- WHERE `sended_pdf_newbuildings`.`id_client` = '$client_id'
+ // Распознавание найденных листингов парсера и витринный EXT-id.
+ // Offset-free: id_object для листинга = реальный external_listings.id,
+ // он коллизит с objects.id. Листинг различаем по флагу sended_pdf.is_external;
+ // витринный id собираем как 'EXT-{el.id}' напрямую (listing_guard.php тут больше не нужен).
+ $ext_variant_rows = []; // позиция в $variants => реальный el.id листинга
+ $ext_title_fallback = []; // позиция в $variants => запасной заголовок из снапшота отправки
+
+ // Три ветки UNION:
+ // 1) свои объекты (is_external=0) — INNER JOIN archive по id_object (даёт телефон/собственника/адрес снапшота);
+ // 2) найденные листинги (is_external=1) — БЕЗ join к archive: id_object = реальный el.id коллизит с
+ // objects.id, join к archive подцепил бы чужой одноимённый снапшот; адрес/заголовок добиваются батчем
+ // из external_listings после цикла;
+ // 3) новостройки (sended_pdf_newbuildings) — листингами никогда не бывают.
+ $sql = "SELECT `sended_pdf`.`id`, `sended_pdf`.`id_agent`, `sended_pdf`.`id_object`, `sended_pdf`.`date_send`, `sended_pdf`.`id_client`, `sended_pdf`.`nazv`, `sended_pdf`.`path`, `sended_pdf`.`send_type`, `sended_pdf`.`close_contact`, `sended_pdf`.`hide_address`, `sended_pdf`.`new_price`, `sended_pdf`.`description`, `sended_pdf`.`token`, `sended_pdf`.`id_request`, `sended_pdf`.`sent_catalog_id`, `sended_pdf`.`is_favorite`,
+ 0 AS `close_contact`,
+ 0 AS `new_price`,
+ DATE_FORMAT(`sended_pdf`.`date_send`, '%d.%m.%Y') AS `date_f`,
+ DATE_FORMAT(`sended_pdf`.`date_send`, '%H:%i') AS `time_f`,
+ `archive`.`phone`,
+ `archive`.`sobstv`,
+ `archive`.`id` as `object_id`,
+ `archive`.`nazv` as `object_title`,
+ `archive`.`adres` as `object_address`,
+ 0 as `newbild`,
+ 0 as `is_external`
+ FROM `sended_pdf`, `archive`
+ WHERE `sended_pdf`.`id_client` = '$client_id' AND
+ `sended_pdf`.`is_external` = 0 AND
+ `archive`.`id_obj`=`sended_pdf`.`id_object`
+ UNION ALL SELECT `sended_pdf`.`id`, `sended_pdf`.`id_agent`, `sended_pdf`.`id_object`, `sended_pdf`.`date_send`, `sended_pdf`.`id_client`, `sended_pdf`.`nazv`, `sended_pdf`.`path`, `sended_pdf`.`send_type`, `sended_pdf`.`close_contact`, `sended_pdf`.`hide_address`, `sended_pdf`.`new_price`, `sended_pdf`.`description`, `sended_pdf`.`token`, `sended_pdf`.`id_request`, `sended_pdf`.`sent_catalog_id`, `sended_pdf`.`is_favorite`,
+ 0 AS `close_contact`,
+ 0 AS `new_price`,
+ DATE_FORMAT(`sended_pdf`.`date_send`, '%d.%m.%Y') AS `date_f`,
+ DATE_FORMAT(`sended_pdf`.`date_send`, '%H:%i') AS `time_f`,
+ null as `phone`,
+ null as `sobstv`,
+ null as `object_id`,
+ null as `object_title`,
+ null as `object_address`,
+ 0 as `newbild`,
+ 1 as `is_external`
+ FROM `sended_pdf`
+ WHERE `sended_pdf`.`id_client` = '$client_id' AND
+ `sended_pdf`.`is_external` = 1
+ UNION ALL SELECT `sended_pdf_newbuildings`.`id`, `sended_pdf_newbuildings`.`id_agent`, `sended_pdf_newbuildings`.`id_object`, `sended_pdf_newbuildings`.`date_send`, `sended_pdf_newbuildings`.`id_client`, `sended_pdf_newbuildings`.`nazv`, `sended_pdf_newbuildings`.`path`, `sended_pdf_newbuildings`.`send_type`, `sended_pdf_newbuildings`.`close_contact`, `sended_pdf_newbuildings`.`hide_address`, `sended_pdf_newbuildings`.`new_price`, null as `description`, `sended_pdf_newbuildings`.`token`, `sended_pdf_newbuildings`.`id_request`, `sended_pdf_newbuildings`.`sent_catalog_id`, `sended_pdf_newbuildings`.`is_favorite`,
+ 0 AS `close_contact`,
+ 0 AS `new_price`,
+ DATE_FORMAT(`sended_pdf_newbuildings`.`date_send`, '%d.%m.%Y') AS `date_f`,
+ DATE_FORMAT(`sended_pdf_newbuildings`.`date_send`, '%H:%i') AS `time_f`,
+ null as `phone`,
+ null as `sobstv`,
+ null as `object_id`,
+ null as `object_title`,
+ null as `object_address`,
+ 1 as `newbild`,
+ 0 as `is_external`
+ FROM `sended_pdf_newbuildings`
+ WHERE `sended_pdf_newbuildings`.`id_client` = '$client_id'
ORDER BY `date_send` DESC";
if ($query = mysql_query($sql)) {
@@ -2513,6 +2554,58 @@ class ClientsController extends ApiController
'is_sended' => in_array($pdf['id_object'], $toSend),
'is_new' => $new_date,
];
+
+ // Найденный листинг парсера: строки в objects нет, помечаем элемент и
+ // запоминаем позицию — дообогащение из external_listings батчем после цикла.
+ // Offset-free: листинг различаем по флагу is_external (Sphinx/БД-атрибут), id_object —
+ // уже реальный external_listings.id, его и кладём как ключ дообогащения.
+ if ((int)$pdf['is_external'] === 1) {
+ $ext_idx = count($variants) - 1;
+ $ext_real_id = (int)$pdf['id_object'];
+ $variants[$ext_idx]['is_external'] = true;
+ $variants[$ext_idx]['display_id'] = 'EXT-' . $ext_real_id;
+ $variants[$ext_idx]['is_removed'] = false;
+ $ext_variant_rows[$ext_idx] = $ext_real_id;
+ $ext_title_fallback[$ext_idx] = trim($pdf['nazv']);
+ }
+ }
+
+ // Дообогащение строк-листингов: заголовок/адрес берём из external_listings одним батчем.
+ // Offset-free: ключ — реальный external_listings.id (без смещения), запрашиваем и индексируем по нему.
+ if (!empty($ext_variant_rows)) {
+ // мягкая деградация: проблема с external_listings не должна валить историю отправок
+ try {
+ $pdo = $app->container->get('pdo');
+ $ext_real_ids = array_map('intval', array_values($ext_variant_rows));
+
+ $ext_sth = $pdo->prepare("SELECT id, address_text, price FROM external_listings WHERE id IN (" . implode(',', array_unique($ext_real_ids)) . ")");
+ if ($ext_sth->execute()) {
+
+ // Мапа листингов ключуется на реальный el.id и держится ОТДЕЛЬНО от objects —
+ // одноимённый objects.id сюда не попадает (запрос только по external_listings).
+ $ext_by_id = [];
+ while ($ext_row = $ext_sth->fetch(\PDO::FETCH_ASSOC))
+ $ext_by_id[(int)$ext_row['id']] = $ext_row;
+
+ foreach ($ext_variant_rows as $ext_idx => $ext_real_id) {
+ if (isset($ext_by_id[$ext_real_id])) {
+ // живой листинг: пустые заголовок/адрес добиваем адресом первоисточника
+ $ext_address = trim($ext_by_id[$ext_real_id]['address_text']);
+ if ($variants[$ext_idx]['object_title'] === '')
+ $variants[$ext_idx]['object_title'] = $ext_address;
+ if ($variants[$ext_idx]['object_address'] === '')
+ $variants[$ext_idx]['object_address'] = $ext_address;
+ } else {
+ // объявление снято с публикации: остаётся nazv-снапшот из истории отправки
+ $variants[$ext_idx]['is_removed'] = true;
+ if ($variants[$ext_idx]['object_title'] === '')
+ $variants[$ext_idx]['object_title'] = $ext_title_fallback[$ext_idx];
+ }
+ }
+ }
+ } catch (\Exception $e) {
+ // данных по листингам нет — строки остаются с пометкой is_external без дообогащения
+ }
}
} else {
$error = true;
@@ -2579,6 +2672,7 @@ class ClientsController extends ApiController
$history = [];
+ // copy_created / copy_from — лейбл пустой: текст идёт в dop_text, иначе в истории двоится.
$array_ev = [
'add'=>'Добавлен',
'transmitted' => 'Передан',
@@ -2590,7 +2684,10 @@ class ClientsController extends ApiController
'notadopted_doer' => 'Приглашение не принято',
'stageedit' => 'Изменен этап',
'delete' => 'Закрыт',
- 'double_client' => 'Повторное обращение'
+ 'double_client' => 'Повторное обращение',
+ // copy_* — плейсхолдер {N} подменяется ниже на кликабельный ID из dop_text.
+ 'copy_created' => 'Создана копия → ID {N}',
+ 'copy_from' => 'Создана как копия заявки ID {N}'
];
$sql = "(SELECT id, client_id, user_id, from_id, `event`, `date`, `dop_text`, 0 as `of_objects` FROM events_clients WHERE client_id = $client_id)
@@ -2614,7 +2711,7 @@ class ClientsController extends ApiController
$mstr = mysql_fetch_assoc($q_m);
if ($mstr['agency'])
- $master = "Агентство $mstr[agency_name]";
+ $master = trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']) ?: "Агентство {$mstr['agency_name']}";
else if ($mstr['manager'])
$master = "Менеджер " . trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']);
else
@@ -2634,7 +2731,7 @@ class ClientsController extends ApiController
$mstr = mysql_fetch_assoc($q_m);
if ($mstr['agency'])
- $from_master = "агентство $mstr[agency_name]";
+ $from_master = trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']) ?: "агентство {$mstr['agency_name']}";
else if($mstr['manager'])
$from_master = "менеджер " . trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']);
else
@@ -2676,13 +2773,23 @@ class ClientsController extends ApiController
$dop_text .= ' по звонку по объекту '.$name;
}
+ // copy_* — рендерим label-шаблон, подставляя int-id из dop_text.
+ $event_label = $array_ev[$r_ev['event']];
+ if (in_array($r_ev['event'], ['copy_from', 'copy_created'], true)) {
+ $linkId = (int)$r_ev['dop_text'];
+ if ($linkId > 0) {
+ $event_label = str_replace('{N}', (string)$linkId, $event_label);
+ $r_ev['dop_text'] = ''; // весь текст уже в label
+ }
+ }
+
$history[] = [
'datetime' => date('Y-m-d H:i:s', $udate),
'date_string' => $date_row,
'time_string' => date('H:i:s', $udate),
'to_user' => $master,
'from_user' => $from_master,
- 'event' => $array_ev[$r_ev['event']] ." ". (function_exists('mask_text_for_hide_user') ? mask_text_for_hide_user($dop_text . $r_ev['dop_text']) : ($dop_text . $r_ev['dop_text'])) ." ". $from_master,
+ 'event' => $event_label ." ". (function_exists('mask_text_for_hide_user') ? mask_text_for_hide_user($dop_text . $r_ev['dop_text']) : ($dop_text . $r_ev['dop_text'])) ." ". $from_master,
];
}
} else {
diff --git a/api/v2/app/src/controllers/CommonController.php b/api/v2/app/src/controllers/CommonController.php
old mode 100644
new mode 100755
index 7669984..cc9b062
--- a/api/v2/app/src/controllers/CommonController.php
+++ b/api/v2/app/src/controllers/CommonController.php
@@ -3,70 +3,70 @@
namespace App\v2\Controller;
class CommonController extends ApiController
- {
+{
- // Offset-free: листинг парсера (external_listings) различается по ЯВНОМУ флагу из запроса.
- // Реальный el.id листинга коллизит с objects.id, поэтому различить его по id нельзя.
- // Канон полей: is_external — объект-листинг; is_external_listing_event — событие листинга (echo'ит mJW обратно).
- // Хелпер приводит присланный флаг (1 / '1' / true / 'true') к булеву признаку.
- private static function _request_flag($src, $key) {
- if (!is_array($src) || !isset($src[$key]))
- return false;
- $v = $src[$key];
- return ($v === true || $v === 1 || $v === '1' || $v === 'true');
- }
+ // Offset-free: листинг парсера (external_listings) различается по ЯВНОМУ флагу из запроса.
+ // Реальный el.id листинга коллизит с objects.id, поэтому различить его по id нельзя.
+ // Канон полей: is_external — объект-листинг; is_external_listing_event — событие листинга (echo'ит mJW обратно).
+ // Хелпер приводит присланный флаг (1 / '1' / true / 'true') к булеву признаку.
+ private static function _request_flag($src, $key) {
+ if (!is_array($src) || !isset($src[$key]))
+ return false;
+ $v = $src[$key];
+ return ($v === true || $v === 1 || $v === '1' || $v === 'true');
+ }
- public function getEmployees($app, $get = null, $post = null) {
+ public function getEmployees($app, $get = null, $post = null) {
- $error = false;
- if ($user_id = $_SESSION['id']) {
+ $error = false;
+ if ($user_id = $_SESSION['id']) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $manager_agents = null;
- $agency_managers = [];
- $department_managers = [];
+ $manager_agents = null;
+ $agency_managers = [];
+ $department_managers = [];
- $groups = [];
- $employees = [];
+ $groups = [];
+ $employees = [];
- // Текущий пользователь
- $user = new \User;
- $user->get($user_id);
- $user->checkPermissions($user_id, false);
+ // Текущий пользователь
+ $user = new \User;
+ $user->get($user_id);
+ $user->checkPermissions($user_id, false);
- // Получаем список отделов
- $dep = new \Department;
- $departments = $dep->getDepartment($user_id);
- $searchUserId = $user_id;
+ // Получаем список отделов
+ $dep = new \Department;
+ $departments = $dep->getDepartment($user_id);
+ $searchUserId = $user_id;
- $list_type = '';
- if(isset($get['list_type'])){
- $list_type = $get['list_type'];
- }
- $onlyActive = true;
- if (isset($get['active']))
- $onlyActive = ($get['active'] == 'true');
+ $list_type = '';
+ if(isset($get['list_type'])){
+ $list_type = $get['list_type'];
+ }
+ $onlyActive = true;
+ if (isset($get['active']))
+ $onlyActive = ($get['active'] == 'true');
- $showBlocked = false;
- if (isset($get['blocked']))
- $showBlocked = ($get['blocked'] == 'true');
+ $showBlocked = false;
+ if (isset($get['blocked']))
+ $showBlocked = ($get['blocked'] == 'true');
- $selfExclude = false;
- if (isset($get['self_exclude']))
- $selfExclude = ($get['self_exclude'] == 'true');
+ $selfExclude = false;
+ if (isset($get['self_exclude']))
+ $selfExclude = ($get['self_exclude'] == 'true');
- $addGroups = false;
- if (isset($get['add_groups']))
- $addGroups = ($get['add_groups'] == 'true');
+ $addGroups = false;
+ if (isset($get['add_groups']))
+ $addGroups = ($get['add_groups'] == 'true');
- $includeIds = false;
- if (isset($get['include_ids'])) {
- if (count($get['include_ids'])) {
- $includeIds = $get['include_ids'];
- }
- }
+ $includeIds = false;
+ if (isset($get['include_ids'])) {
+ if (count($get['include_ids'])) {
+ $includeIds = $get['include_ids'];
+ }
+ }
$list_type = 'clients';
if (isset($get['list_type'])) {
@@ -74,24 +74,24 @@ class CommonController extends ApiController
}
- if ($showBlocked)
- $onlyActive = false;
+ if ($showBlocked)
+ $onlyActive = false;
- if (!$selfExclude && (!$includeIds || in_array($user_id, $includeIds))) {
+ if (!$selfExclude && (!$includeIds || in_array($user_id, $includeIds))) {
- $group_id = null;
- if ($user->blocked)
- $group_id = -1;
+ $group_id = null;
+ if ($user->blocked)
+ $group_id = -1;
- $employees[] = [
- 'id' => intval($user_id),
- 'name' => 'Я',
- 'department' => null,
- 'group_id' => $group_id,
- 'is_agent' => boolval($_SESSION['agent']),
- 'is_manager' => boolval($_SESSION['manager']),
- ];
- }
+ $employees[] = [
+ 'id' => intval($user_id),
+ 'name' => 'Я',
+ 'department' => null,
+ 'group_id' => $group_id,
+ 'is_agent' => boolval($_SESSION['agent']),
+ 'is_manager' => boolval($_SESSION['manager']),
+ ];
+ }
$menuPermissions = $user->checkMenuPermissions();
if (($_SESSION['agency'] || $_SESSION['users_admin'] || $menuPermissions['menu_can_transfer_to_common'] == 1) && $list_type != 'objects') {
@@ -122,671 +122,671 @@ class CommonController extends ApiController
}
}
- if ($user_id != $user->agencyId || $list_type == 'objects') {
- $agency = $user->get($user->agencyId);
+ if ($user_id != $user->agencyId || $list_type == 'objects') {
+ $agency = $user->get($user->agencyId);
- $group_id = null;
- if ($agency->blocked)
- $group_id = -1;
+ $group_id = null;
+ if ($agency->blocked)
+ $group_id = -1;
- $employees[] = [
- 'id' => intval($user->agencyId),
- 'name' => $user->agencyName,
- 'department' => null,
- 'group_id' => $group_id,
- 'is_agent' => boolval($agency->agent),
- 'is_manager' => boolval($agency->manager),
- ];
- }
+ $employees[] = [
+ 'id' => intval($user->agencyId),
+ 'name' => $user->agencyName,
+ 'department' => null,
+ 'group_id' => $group_id,
+ 'is_agent' => boolval($agency->agent),
+ 'is_manager' => boolval($agency->manager),
+ ];
+ }
- $agentsOfManager = \User::getAllManagers($user->agencyId, $onlyActive);
- if (isset($agentsOfManager)) {
- foreach($agentsOfManager as $agent) {
+ $agentsOfManager = \User::getAllManagers($user->agencyId, $onlyActive);
+ if (isset($agentsOfManager)) {
+ foreach($agentsOfManager as $agent) {
- $agent_id = (int)$agent['id'];
- if ($user_id == $agent_id)
- continue;
+ $agent_id = (int)$agent['id'];
+ if ($user_id == $agent_id)
+ continue;
- $role_id = $agent['role'];
+ $role_id = $agent['role'];
- $group_id = null;
- if ($agent['blocked'])
- $group_id = -1;
+ $group_id = null;
+ if ($agent['blocked'])
+ $group_id = -1;
- $employees[] = [
- 'id' => $agent_id,
- 'name' => trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']),
- 'department' => ($role_id > 0)
- ? $departments[$role_id]['role_name']
- : null,
- 'group_id' => $group_id,
- 'is_agent' => boolval($agent['agent']),
- 'is_manager' => boolval($agent['manager']),
- ];
- }
- }
+ $employees[] = [
+ 'id' => $agent_id,
+ 'name' => trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']),
+ 'department' => ($role_id > 0)
+ ? $departments[$role_id]['role_name']
+ : null,
+ 'group_id' => $group_id,
+ 'is_agent' => boolval($agent['agent']),
+ 'is_manager' => boolval($agent['manager']),
+ ];
+ }
+ }
- $agentsOfAgency = \User::getAllAgents($user->agencyId, $onlyActive);
- if (isset($agentsOfAgency)) {
- foreach($agentsOfAgency as $agent) {
+ $agentsOfAgency = \User::getAllAgents($user->agencyId, $onlyActive);
+ if (isset($agentsOfAgency)) {
+ foreach($agentsOfAgency as $agent) {
- $agent_id = (int)$agent['id'];
- if ($user_id == $agent_id)
- continue;
+ $agent_id = (int)$agent['id'];
+ if ($user_id == $agent_id)
+ continue;
- $role_id = $agent['role'];
+ $role_id = $agent['role'];
- $group_id = null;
- if ($agent['blocked'])
- $group_id = -1;
+ $group_id = null;
+ if ($agent['blocked'])
+ $group_id = -1;
- $employees[] = [
- 'id' => $agent_id,
- 'name' => trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']),
- 'department' => ($role_id > 0)
- ? $departments[$role_id]['role_name']
- : null,
- 'group_id' => $group_id,
- 'is_agent' => boolval($agent['agent']),
- 'is_manager' => boolval($agent['manager']),
- ];
- }
- }
+ $employees[] = [
+ 'id' => $agent_id,
+ 'name' => trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']),
+ 'department' => ($role_id > 0)
+ ? $departments[$role_id]['role_name']
+ : null,
+ 'group_id' => $group_id,
+ 'is_agent' => boolval($agent['agent']),
+ 'is_manager' => boolval($agent['manager']),
+ ];
+ }
+ }
- if (!$onlyActive || $showBlocked)
- $groups[(int)'-1'] = 'Заблокированные/удаленные';
+ if (!$onlyActive || $showBlocked)
+ $groups[(int)'-1'] = 'Заблокированные/удаленные';
- if (!$error && count($employees)) {
+ if (!$error && count($employees)) {
$app->response->header('Content-Type', 'application/json');
$app->response->setStatus(200);
- $sources = [
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'list' => $employees
- ];
+ $sources = [
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'list' => $employees
+ ];
- if ($addGroups)
- $sources['groups'] = $groups;
+ if ($addGroups)
+ $sources['groups'] = $groups;
$app->response->setBody(json_encode($sources, JSON_UNESCAPED_UNICODE));
$app->stop();
}
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function getResponsibles($app, $get = null, $post = null) {
- $userIds = array();
- $userId = $_SESSION['id'];
- $mdb = $app->container->get('mysql');
- $result = array();
- $responsibles = array();
+ public function getResponsibles($app, $get = null, $post = null) {
+ $userIds = array();
+ $userId = $_SESSION['id'];
+ $mdb = $app->container->get('mysql');
+ $result = array();
+ $responsibles = array();
- // Текущий пользователь
- $user = new \User;
- $user->get($userId);
-
- $id = (int)$get['id'];
- $section = $get['section'];
- $userIds[] = $userId;
- $who_work = 0;
- if($id > 0){
+ // Текущий пользователь
+ $user = new \User;
+ $user->get($userId);
- // Найденный листинг парсера (offset-free): строки в objects нет — ни владельца, ни doers.
- // Признак листинга — явный флаг is_external из запроса (id больше не диапазонный: el.id коллизит с objects.id).
- // Ответственного выбираем по той же иерархии видимости, что и раздел «Задачи» (как на десктопе
- // select_form_who_work_tasks.php): getUsersFilter вернёт подчинённых по правам (рядовой агент — только себя).
- if($section == 'objects' && self::_request_flag($get, 'is_external')){
- $cl = new \Clients();
- $hierarchyIds = $cl->getUsersFilter(array(), $_SESSION['id'], $_SESSION['users_admin']);
- if(is_array($hierarchyIds)){
- foreach($hierarchyIds as $hid){
- $userIds[] = (int)$hid;
- }
- }
- } else {
- $sql = "SELECT * FROM clients where id = {$id}";
- if($section == 'requisitions'){
- $sql = "SELECT * FROM requisitions where id = {$id}";
- }
- if($section == 'objects'){
- $sql = "SELECT id, id_add_user as who_work FROM objects WHERE id = {$id}";
- }
- //echo $sql;
- $q = mysql_query($sql);
- $r = mysql_fetch_assoc($q);
+ $id = (int)$get['id'];
+ $section = $get['section'];
+ $userIds[] = $userId;
+ $who_work = 0;
+ if($id > 0){
- if (isset($r['doers']) && !empty($r['doers'])) {
- $doers = json_decode(html_entity_decode($r['doers']), true);
+ // Найденный листинг парсера (offset-free): строки в objects нет — ни владельца, ни doers.
+ // Признак листинга — явный флаг is_external из запроса (id больше не диапазонный: el.id коллизит с objects.id).
+ // Ответственного выбираем по той же иерархии видимости, что и раздел «Задачи» (как на десктопе
+ // select_form_who_work_tasks.php): getUsersFilter вернёт подчинённых по правам (рядовой агент — только себя).
+ if($section == 'objects' && self::_request_flag($get, 'is_external')){
+ $cl = new \Clients();
+ $hierarchyIds = $cl->getUsersFilter(array(), $_SESSION['id'], $_SESSION['users_admin']);
+ if(is_array($hierarchyIds)){
+ foreach($hierarchyIds as $hid){
+ $userIds[] = (int)$hid;
+ }
+ }
+ } else {
+ $sql = "SELECT * FROM clients where id = {$id}";
+ if($section == 'requisitions'){
+ $sql = "SELECT * FROM requisitions where id = {$id}";
+ }
+ if($section == 'objects'){
+ $sql = "SELECT id, id_add_user as who_work FROM objects WHERE id = {$id}";
+ }
+ //echo $sql;
+ $q = mysql_query($sql);
+ $r = mysql_fetch_assoc($q);
- foreach ($doers as $user_id => $d){
- if ($d == 1){
- $userIds[] = (int)$user_id;
- }
- }
- }
- if($r['who_work'] > 0){
- $userIds[] = (int)$r['who_work'];
- $who_work = (int)$r['who_work'];
- }
- }
+ if (isset($r['doers']) && !empty($r['doers'])) {
+ $doers = json_decode(html_entity_decode($r['doers']), true);
- }
+ foreach ($doers as $user_id => $d){
+ if ($d == 1){
+ $userIds[] = (int)$user_id;
+ }
+ }
+ }
+ if($r['who_work'] > 0){
+ $userIds[] = (int)$r['who_work'];
+ $who_work = (int)$r['who_work'];
+ }
+ }
- //Определение отделов
- $sql_d = "SELECT d.name as dep_name, r.name as role_name, r.role, r.department_id, r.id FROM departments as d left join roles as r on d.id = r.department_id WHERE d.agency_id = ".$user->agencyId;
+ }
- $q_d = mysql_query($sql_d);
- $departments = array();
- while($r_d = mysql_fetch_assoc($q_d)){
- $departments[$r_d['id']] = $r_d;
- }
- $selected = '';
+ //Определение отделов
+ $sql_d = "SELECT d.name as dep_name, r.name as role_name, r.role, r.department_id, r.id FROM departments as d left join roles as r on d.id = r.department_id WHERE d.agency_id = ".$user->agencyId;
- $userIds = array_unique($userIds);
- $sql_users = "SELECT * FROM users WHERE id in (".implode(',',$userIds).") AND blocked = 0";
- //echo $sql_users;
- $q_users = mysql_query($sql_users);
- while($r_user = mysql_fetch_assoc($q_users)){
- $name = trim($r_user['last_name'] . ' ' . $r_user['first_name'] . ' ' . $r_user['middle_name']);
+ $q_d = mysql_query($sql_d);
+ $departments = array();
+ while($r_d = mysql_fetch_assoc($q_d)){
+ $departments[$r_d['id']] = $r_d;
+ }
+ $selected = '';
- if($r_user['role_id'] > 0){
- $name .= ' ('.$departments[$r_user['role_id']]['role_name']. ' ' . $departments[$r_user['role_id']]['dep_name'].')';
- }
- $responsibles[] = [
- 'id' => $r_user['id'],
- 'name' => $name,
-
- ];
- }
+ $userIds = array_unique($userIds);
+ $sql_users = "SELECT * FROM users WHERE id in (".implode(',',$userIds).") AND blocked = 0";
+ //echo $sql_users;
+ $q_users = mysql_query($sql_users);
+ while($r_user = mysql_fetch_assoc($q_users)){
+ $name = trim($r_user['last_name'] . ' ' . $r_user['first_name'] . ' ' . $r_user['middle_name']);
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$userId,
- 'responsibles' => $responsibles,
- 'who_work' => $who_work,
- 'sql' => $sql,
- ], JSON_UNESCAPED_UNICODE));
+ if($r_user['role_id'] > 0){
+ $name .= ' ('.$departments[$r_user['role_id']]['role_name']. ' ' . $departments[$r_user['role_id']]['dep_name'].')';
+ }
+ $responsibles[] = [
+ 'id' => $r_user['id'],
+ 'name' => $name,
+
+ ];
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$userId,
+ 'responsibles' => $responsibles,
+ 'who_work' => $who_work,
+ 'sql' => $sql,
+ ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->stop();
+ }
- public function getTypes($app, $get = null, $post = null, $need_return = false) {
+ public function getTypes($app, $get = null, $post = null, $need_return = false) {
- global $OBJECT_TYPES;
- global $WORK_TYPES;
- global $REQ_TYPES;
- global $SEARCH_TARGETS;
- global $etaz_first_types;
- global $TYPE_NEDV2_SORT;
- global $BANK_PRODUKT;
+ global $OBJECT_TYPES;
+ global $WORK_TYPES;
+ global $REQ_TYPES;
+ global $SEARCH_TARGETS;
+ global $etaz_first_types;
+ global $TYPE_NEDV2_SORT;
+ global $BANK_PRODUKT;
- $error = false;
- $section = $get['section'];
- if ($section && ($user_id = $_SESSION['id'])) {
+ $error = false;
+ $section = $get['section'];
+ if ($section && ($user_id = $_SESSION['id'])) {
- $types = [];
- switch ($section) {
- case 'objects' :
- foreach($OBJECT_TYPES as $key => $val) {
- if (intval($key) > 0 && $key != 6) {
- $types[] = ['id' => intval($key), 'name' => $val];
- }
- }
+ $types = [];
+ switch ($section) {
+ case 'objects' :
+ foreach($OBJECT_TYPES as $key => $val) {
+ if (intval($key) > 0 && $key != 6) {
+ $types[] = ['id' => intval($key), 'name' => $val];
+ }
+ }
- break;
+ break;
- case 'clients' :
- foreach($WORK_TYPES as $key => $val) {
- if (intval($key) > 0) {
- $types[] = ['id' => intval($key), 'name' => $val];
- }
- }
+ case 'clients' :
+ foreach($WORK_TYPES as $key => $val) {
+ if (intval($key) > 0) {
+ $types[] = ['id' => intval($key), 'name' => $val];
+ }
+ }
- break;
+ break;
- case 'search' :
- case 'autosearch' :
- foreach($SEARCH_TARGETS as $key => $val) {
+ case 'search' :
+ case 'autosearch' :
+ foreach($SEARCH_TARGETS as $key => $val) {
- if ($key == 4)
- continue;
+ if ($key == 4)
+ continue;
- if (intval($key) > 0) {
- $types[] = ['id' => intval($key), 'name' => $val];
- }
- }
+ if (intval($key) > 0) {
+ $types[] = ['id' => intval($key), 'name' => $val];
+ }
+ }
- $types[] = ['id' => 5, 'name' => 'Архив компании'];
+ $types[] = ['id' => 5, 'name' => 'Архив компании'];
- if ($section == 'autosearch')
- $types[] = ['id' => 6, 'name' => 'Собственники и объекты компании'];
+ if ($section == 'autosearch')
+ $types[] = ['id' => 6, 'name' => 'Собственники и объекты компании'];
- break;
+ break;
- case 'requisitions' :
+ case 'requisitions' :
- /*foreach($REQ_TYPES as $key => $val) {
+ /*foreach($REQ_TYPES as $key => $val) {
if (intval($key) > 0) {
$types[] = ['id' => intval($key), 'name' => $val];
}
}*/
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
- $pdo = $app->container->get('mypdo');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+ $pdo = $app->container->get('mypdo');
- $requisitions_inst = new \Requisitions($pdo);
+ $requisitions_inst = new \Requisitions($pdo);
- $users_inst = new \User();
- $agency_id = $users_inst->getAgencyIdForUser($user_id);
- $requisitions_inst->set_agencyId($agency_id);
- $results = $requisitions_inst->get_type(false, true);
- //var_dump($results);
- //$types = $results['type'];
- if (!empty($results['type'])) {
- foreach ($results['type'] as $result) {
- if ($result['order'] != -1 && $result['code'] != '-1' && !empty($result['name'])) {
- $name_type = $result['name'];
- if($result['archive'] == 1){
- $name_type = $result['name']." (архивный)";
- }
- $types[] = [
- 'id' => intval($result['code']),
- 'heir' => intval($result['heir']),
- 'name' => $name_type,
- 'archive'=>$result['archive']
- ];
- }
- }
- }
+ $users_inst = new \User();
+ $agency_id = $users_inst->getAgencyIdForUser($user_id);
+ $requisitions_inst->set_agencyId($agency_id);
+ $results = $requisitions_inst->get_type(false, true);
+ //var_dump($results);
+ //$types = $results['type'];
+ if (!empty($results['type'])) {
+ foreach ($results['type'] as $result) {
+ if ($result['order'] != -1 && $result['code'] != '-1' && !empty($result['name'])) {
+ $name_type = $result['name'];
+ if($result['archive'] == 1){
+ $name_type = $result['name']." (архивный)";
+ }
+ $types[] = [
+ 'id' => intval($result['code']),
+ 'heir' => intval($result['heir']),
+ 'name' => $name_type,
+ 'archive'=>$result['archive']
+ ];
+ }
+ }
+ }
- break;
+ break;
- case 'contract_types' :
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ case 'contract_types' :
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $user = new \User;
- $user->get($user_id);
- $agency_id = $user->getUserAgencyID();
+ $user = new \User;
+ $user->get($user_id);
+ $agency_id = $user->getUserAgencyID();
- $contracts = new \Contract();
- $contracts->setAgencyId($agency_id);
+ $contracts = new \Contract();
+ $contracts->setAgencyId($agency_id);
- $list = $contracts->getTypesName();
- foreach($list as $item) {
- $types[] = [
- 'id' => (int)$item['id'],
- 'name' => $item['type'],
- 'heir' => intval($item['heir']),
- ];
- }
- break;
+ $list = $contracts->getTypesName();
+ foreach($list as $item) {
+ $types[] = [
+ 'id' => (int)$item['id'],
+ 'name' => $item['type'],
+ 'heir' => intval($item['heir']),
+ ];
+ }
+ break;
- case 'bank_products' :
- foreach($BANK_PRODUKT as $key => $val) {
- if (intval($key) > 0) {
- $types[] = ['id' => intval($key), 'name' => $val];
- }
- }
+ case 'bank_products' :
+ foreach($BANK_PRODUKT as $key => $val) {
+ if (intval($key) > 0) {
+ $types[] = ['id' => intval($key), 'name' => $val];
+ }
+ }
- break;
+ break;
- case 'operations' :
- $types = [
- [
- 'id' => 1,
- 'name' => 'Аренда'
- ], [
- 'id' => 2,
- 'name' => 'Продажа'
- ],
- ];
+ case 'operations' :
+ $types = [
+ [
+ 'id' => 1,
+ 'name' => 'Аренда'
+ ], [
+ 'id' => 2,
+ 'name' => 'Продажа'
+ ],
+ ];
- break;
+ break;
- case 'to_metro' :
- $types = [
- [
- 'id' => 1,
- 'name' => 'Пешком'
- ], [
- 'id' => 2,
- 'name' => 'На транспорте'
- ],
- ];
+ case 'to_metro' :
+ $types = [
+ [
+ 'id' => 1,
+ 'name' => 'Пешком'
+ ], [
+ 'id' => 2,
+ 'name' => 'На транспорте'
+ ],
+ ];
- break;
+ break;
- case 'lease' :
- $types = [
- [
- 'id' => 2,
- 'name' => 'Длительно'
- ], [
- 'id' => 3,
- 'name' => 'Несколько месяцев'
- ], [
- 'id' => 1,
- 'name' => 'Посуточно'
- ],
- ];
+ case 'lease' :
+ $types = [
+ [
+ 'id' => 2,
+ 'name' => 'Длительно'
+ ], [
+ 'id' => 3,
+ 'name' => 'Несколько месяцев'
+ ], [
+ 'id' => 1,
+ 'name' => 'Посуточно'
+ ],
+ ];
- break;
+ break;
- case 'first_floor' :
+ case 'first_floor' :
- foreach($etaz_first_types as $key => $val) {
- if (intval($key) > 0) {
- $types[] = ['id' => intval($key), 'name' => $val];
- }
- }
+ foreach($etaz_first_types as $key => $val) {
+ if (intval($key) > 0) {
+ $types[] = ['id' => intval($key), 'name' => $val];
+ }
+ }
- break;
+ break;
- case 'estate_types' :
+ case 'estate_types' :
- $index = 1;
- foreach($TYPE_NEDV2_SORT as $key => $val) {
- if (!empty($key)) {
- $types[] = [
- 'id' => $index,
- 'name' => $val
- ];
- }
- $index++;
- }
+ $index = 1;
+ foreach($TYPE_NEDV2_SORT as $key => $val) {
+ if (!empty($key)) {
+ $types[] = [
+ 'id' => $index,
+ 'name' => $val
+ ];
+ }
+ $index++;
+ }
- break;
+ break;
- case 'avito_room' :
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
- $sql = "SELECT * FROM avito_room_types ORDER BY name";
- $rez = mysql_query($sql);
- while($row = mysql_fetch_assoc($rez)) {
- $types[] = [
- 'id' => (int)$row['id'],
- 'name' => $row['name']
- ];
- }
+ case 'avito_room' :
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+ $sql = "SELECT * FROM avito_room_types ORDER BY name";
+ $rez = mysql_query($sql);
+ while($row = mysql_fetch_assoc($rez)) {
+ $types[] = [
+ 'id' => (int)$row['id'],
+ 'name' => $row['name']
+ ];
+ }
- break;
+ break;
- case 'deal_type' :
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
- $sql = "SELECT * FROM deal_type ORDER BY name";
- $rez = mysql_query($sql);
- while($row = mysql_fetch_assoc($rez)) {
- $types[] = [
- 'id' => (int)$row['id'],
- 'name' => $row['name']
- ];
- }
+ case 'deal_type' :
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+ $sql = "SELECT * FROM deal_type ORDER BY name";
+ $rez = mysql_query($sql);
+ while($row = mysql_fetch_assoc($rez)) {
+ $types[] = [
+ 'id' => (int)$row['id'],
+ 'name' => $row['name']
+ ];
+ }
- break;
+ break;
- case 'house_types' :
- $mdb = $app->container->get('mysql');
- $sql = "SELECT * FROM house_type ORDER BY name";
- $rez = mysql_query($sql);
- while($row = mysql_fetch_assoc($rez)) {
- $types[] = [
- 'id' => (int)$row['id'],
- 'name' => $row['name']
- ];
- }
+ case 'house_types' :
+ $mdb = $app->container->get('mysql');
+ $sql = "SELECT * FROM house_type ORDER BY name";
+ $rez = mysql_query($sql);
+ while($row = mysql_fetch_assoc($rez)) {
+ $types[] = [
+ 'id' => (int)$row['id'],
+ 'name' => $row['name']
+ ];
+ }
- break;
+ break;
- case 'house_materials' :
- $mdb = $app->container->get('mysql');
- $sql = "SELECT * FROM house_material ORDER BY name";
- $rez = mysql_query($sql);
- while($row = mysql_fetch_assoc($rez)) {
- $types[] = [
- 'id' => (int)$row['id'],
- 'name' => $row['name']
- ];
- }
+ case 'house_materials' :
+ $mdb = $app->container->get('mysql');
+ $sql = "SELECT * FROM house_material ORDER BY name";
+ $rez = mysql_query($sql);
+ while($row = mysql_fetch_assoc($rez)) {
+ $types[] = [
+ 'id' => (int)$row['id'],
+ 'name' => $row['name']
+ ];
+ }
- break;
- }
+ break;
+ }
- if (count($types)) {
- if ($need_return) {
- return $types;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'list' => $types
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ if (count($types)) {
+ if ($need_return) {
+ return $types;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'list' => $types
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
}
}
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function getStatus($app, $get = null, $post = null) {
+ public function getStatus($app, $get = null, $post = null) {
- $errors = [];
- $status = false;
- $service = $get['service'];
- if ($service) {
+ $errors = [];
+ $status = false;
+ $service = $get['service'];
+ if ($service) {
- switch ($service) {
- case 'api' :
+ switch ($service) {
+ case 'api' :
- $status = true;
+ $status = true;
- /*if ($_SESSION['id'] == 5427)
+ /*if ($_SESSION['id'] == 5427)
$_SESSION['id'] = 5427;*/
- break;
+ break;
- case 'mysql' :
+ case 'mysql' :
- try {
- $pdo = $app->container->get('pdo');
- $mdb = $app->container->get('mysql');
- if ($pdo && $mdb)
- $status = true;
+ try {
+ $pdo = $app->container->get('pdo');
+ $mdb = $app->container->get('mysql');
+ if ($pdo && $mdb)
+ $status = true;
- } catch (Exception $e) {
- $errors[] = $e;
- }
+ } catch (Exception $e) {
+ $errors[] = $e;
+ }
- break;
+ break;
- case 'sphinx' :
+ case 'sphinx' :
- try {
- $sphinx = $app->container->get('sphinx');
- if ($sphinx)
- $status = true;
+ try {
+ $sphinx = $app->container->get('sphinx');
+ if ($sphinx)
+ $status = true;
- } catch (Exception $e) {
- $errors[] = $e;
- }
+ } catch (Exception $e) {
+ $errors[] = $e;
+ }
- $status = true;
- break;
+ $status = true;
+ break;
- case 'sphinx2' :
+ case 'sphinx2' :
- try {
- $sphinx2 = $app->container->get('sphinx2');
- if ($sphinx2)
- $status = true;
+ try {
+ $sphinx2 = $app->container->get('sphinx2');
+ if ($sphinx2)
+ $status = true;
- } catch (Exception $e) {
- $errors[] = $e;
- }
+ } catch (Exception $e) {
+ $errors[] = $e;
+ }
- $status = true;
- break;
+ $status = true;
+ break;
- }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'status' => ($status) ? 'up' : 'down',
- 'service' => $service,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'status' => ($status) ? 'up' : 'down',
+ 'service' => $service,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'service' => $service,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'service' => $service,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function getTags($app, $get = null, $post = null, $need_return = false) {
+ public function getTags($app, $get = null, $post = null, $need_return = false) {
- $error = false;
- if ($user_id = $_SESSION['id']) {
+ $error = false;
+ if ($user_id = $_SESSION['id']) {
- $pdo = $app->container->get('pdo');
- $mdb = $app->container->get('mysql');
+ $pdo = $app->container->get('pdo');
+ $mdb = $app->container->get('mysql');
- $list = [];
- $user = new \User();
- $user->get($user_id);
- //$user->checkPermissions($user_id, false);
- $agency_id = $user->getUserAgencyID();
+ $list = [];
+ $user = new \User();
+ $user->get($user_id);
+ //$user->checkPermissions($user_id, false);
+ $agency_id = $user->getUserAgencyID();
- if (boolval($get['with_managers'])) {
+ if (boolval($get['with_managers'])) {
- $sql = "SELECT * FROM `activities`
+ $sql = "SELECT * FROM `activities`
WHERE `user_id` = '".$user->id."' OR `manager_id` = '".$user->id."'";
- if ($user->id_manager)
- $sql .= " OR `manager_id` = '".$user->id_manager."' OR `user_id` = '".$user->id_manager."'";
+ if ($user->id_manager)
+ $sql .= " OR `manager_id` = '".$user->id_manager."' OR `user_id` = '".$user->id_manager."'";
- if ($user->agencyId)
- $sql .= " OR `manager_id` = '".$user->agencyId."' OR `user_id` = '".$user->agencyId."'";
+ if ($user->agencyId)
+ $sql .= " OR `manager_id` = '".$user->agencyId."' OR `user_id` = '".$user->agencyId."'";
- } else {
- $sql = "SELECT * FROM `activities` WHERE `user_id` = '".$user_id."' OR `manager_id` = '".$user_id."'";
+ } else {
+ $sql = "SELECT * FROM `activities` WHERE `user_id` = '".$user_id."' OR `manager_id` = '".$user_id."'";
- if ($agency_id)
- $sql .= " OR `manager_id` = '".$agency_id."' OR `user_id` = '".$agency_id."'";
- }
+ if ($agency_id)
+ $sql .= " OR `manager_id` = '".$agency_id."' OR `user_id` = '".$agency_id."'";
+ }
- $sql .= ' GROUP BY `id` ORDER BY `name`';
+ $sql .= ' GROUP BY `id` ORDER BY `name`';
- $sth = $pdo->prepare($sql);
- if ($sth->execute()) {
- while($row = $sth->fetch(\PDO::FETCH_BOTH)) {
- if (intval($row["id"]) && !empty($row["name"])) {
- $list[] = [
- 'id' => intval($row["id"]),
- 'name' => $row["name"],
- 'color' => $row["color"]
- ];
- }
- }
- } else {
- $error = true;
- }
+ $sth = $pdo->prepare($sql);
+ if ($sth->execute()) {
+ while($row = $sth->fetch(\PDO::FETCH_BOTH)) {
+ if (intval($row["id"]) && !empty($row["name"])) {
+ $list[] = [
+ 'id' => intval($row["id"]),
+ 'name' => $row["name"],
+ 'color' => $row["color"]
+ ];
+ }
+ }
+ } else {
+ $error = true;
+ }
- if (!$error) {
- if ($need_return) {
- return $list;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'count' => count($list),
- //'$sql' => $sql,
- 'list' => $list
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ if (!$error) {
+ if ($need_return) {
+ return $list;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'count' => count($list),
+ //'$sql' => $sql,
+ 'list' => $list
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
}
}
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function getClients($app, $get = null, $post = null, $need_return = false) {
+ public function getClients($app, $get = null, $post = null, $need_return = false) {
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $user = new \User();
- $user->checkPermissions($user_id, false);
- $agency_id = $_SESSION['agency_id'];
+ $user = new \User();
+ $user->checkPermissions($user_id, false);
+ $agency_id = $_SESSION['agency_id'];
- $menuPermissions = $user->checkMenuPermissions();
+ $menuPermissions = $user->checkMenuPermissions();
- $clients = [];
- $filters = [];
- if (isset($get['filters']))
- $filters = json_decode($get['filters'], true);
+ $clients = [];
+ $filters = [];
+ if (isset($get['filters']))
+ $filters = json_decode($get['filters'], true);
- $only_active = true;
- if (isset($get['only_active']))
- $only_active = ($get['only_active'] == 'true');
+ $only_active = true;
+ if (isset($get['only_active']))
+ $only_active = ($get['only_active'] == 'true');
- $offset = null;
- if (isset($get['offset']))
- $offset = intval($get['offset']);
+ $offset = null;
+ if (isset($get['offset']))
+ $offset = intval($get['offset']);
- $search_query = '';
- if (isset($get['search_query']))
- $search_query = trim($get['search_query']);
+ $search_query = '';
+ if (isset($get['search_query']))
+ $search_query = trim($get['search_query']);
// Проверяем точное совпадение по телефону (без учета иерархии)
if(!empty($search_query)) {
@@ -802,13 +802,13 @@ class CommonController extends ApiController
$exact_match = mysql_fetch_assoc($rez);
if($exact_match) {
$phones = [];
- $phones_dop = [];
+ $phones_dop = [];
if (!empty($exact_match['phone']))
$phones[] = $exact_match['phone'];
if (!empty($exact_match['phone2']))
$phones = array_merge($phones, json_decode(html_entity_decode($exact_match['phone2'], ENT_QUOTES), true));
- if (!empty($exact_match['phone2']))
- $phones_dop = array_merge($phones_dop, json_decode(html_entity_decode($exact_match['phone2'], ENT_QUOTES), true));
+ if (!empty($exact_match['phone2']))
+ $phones_dop = array_merge($phones_dop, json_decode(html_entity_decode($exact_match['phone2'], ENT_QUOTES), true));
// Маскируем телефоны клиента в массиве phones_dop до implode,
// если у текущего пользователя включено `hide_client_contacts`.
@@ -853,13 +853,13 @@ class CommonController extends ApiController
}
- $users = [(int)$user_id];
- $managers = [(int)$agency_id];
+ $users = [(int)$user_id];
+ $managers = [(int)$agency_id];
- $bd_usl = " AND cancel = 0";
- $clients_ids = [];
- $bd_managers = '';
- $bd_user_j = '';
+ $bd_usl = " AND cancel = 0";
+ $clients_ids = [];
+ $bd_managers = '';
+ $bd_user_j = '';
$searchUserId = $_SESSION['id'];
$adminDep = false;
@@ -905,100 +905,100 @@ class CommonController extends ApiController
$users = array_unique($users);
}
- $bd_user = " (`who_work` IN (". implode(',', $users) .") or `id_agent` IN (". implode(',', $users) ."))";
+ $bd_user = " (`who_work` IN (". implode(',', $users) .") or `id_agent` IN (". implode(',', $users) ."))";
- if (!empty($filters['employees'])) {
+ if (!empty($filters['employees'])) {
- $users = [];
- $managers = [];
- $employees = array_unique($filters['employees']);
- foreach ($employees as $employee) {
+ $users = [];
+ $managers = [];
+ $employees = array_unique($filters['employees']);
+ foreach ($employees as $employee) {
- if (strripos($employee, 'u'))
- $users[] = preg_replace('/[^0-9]/', '', $employee);
+ if (strripos($employee, 'u'))
+ $users[] = preg_replace('/[^0-9]/', '', $employee);
- if (strripos($employee, 'm'))
- $managers[] = preg_replace('/[^0-9]/', '', $employee);
+ if (strripos($employee, 'm'))
+ $managers[] = preg_replace('/[^0-9]/', '', $employee);
- }
+ }
- if ($managers) {
- /*$bd_managers_j = " AND id_agent IN (SELECT id FROM `users` WHERE id IN (". implode(',', $managers) .") OR
+ if ($managers) {
+ /*$bd_managers_j = " AND id_agent IN (SELECT id FROM `users` WHERE id IN (". implode(',', $managers) .") OR
id_manager IN (". implode(',', $managers) .") OR
id_manager IN (SELECT id FROM users WHERE id_manager IN (". implode(',', $managers) .")))";*/
- $bd_managers = " IN (". implode(',', $managers) .")";
- }
+ $bd_managers = " IN (". implode(',', $managers) .")";
+ }
- if ($users) {
- $bd_user_j = " `who_work` IN (". implode(',', $users) .") OR
+ if ($users) {
+ $bd_user_j = " `who_work` IN (". implode(',', $users) .") OR
`id_agent` IN (SELECT `id` FROM `users` WHERE `id` IN (". implode(',', $users) .") OR
`id_manager` IN (". implode(',', $users) .") OR
`id_manager` IN (SELECT `id` FROM `users` WHERE `id_manager` IN (". implode(',', $users) .")))";
- }
+ }
- } else {
- if ($menuPermissions['menu_all_clients'] == 1 ) {
+ } else {
+ if ($menuPermissions['menu_all_clients'] == 1 ) {
$users[] = $agency_id;
}
- $bd_user_j = " (`who_work` IN (". implode(',', $users) .") or `id_agent` IN (". implode(',', $users) ."))";
+ $bd_user_j = " (`who_work` IN (". implode(',', $users) .") or `id_agent` IN (". implode(',', $users) ."))";
- if (isset($get['client_id']))
- $clients_ids[] = $get['client_id'];
- elseif (isset($get['clients_ids']))
- $clients_ids = (array)$get['clients_ids'];
+ if (isset($get['client_id']))
+ $clients_ids[] = $get['client_id'];
+ elseif (isset($get['clients_ids']))
+ $clients_ids = (array)$get['clients_ids'];
- if (count($clients_ids) > 0) {
- $bd_usl = " `id` IN (" . implode(',', $clients_ids) . ") ";
- $bd_user_j = '';
- }
- }
+ if (count($clients_ids) > 0) {
+ $bd_usl = " `id` IN (" . implode(',', $clients_ids) . ") ";
+ $bd_user_j = '';
+ }
+ }
- if (!empty($filters['types'])) {
- $where = [];
- $types = $filters['types'];
- foreach ($types as $type) {
- $where[] = "`work_type` LIKE '%" {$type}"%'";
- }
- $bd_usl .= " AND (".implode(" OR ",$where).")";
- }
+ if (!empty($filters['types'])) {
+ $where = [];
+ $types = $filters['types'];
+ foreach ($types as $type) {
+ $where[] = "`work_type` LIKE '%" {$type}"%'";
+ }
+ $bd_usl .= " AND (".implode(" OR ",$where).")";
+ }
- if (!empty($filters['tags'])) {
- $tags_ids = $filters['tags'];
- $bd_usl .= " AND `id` IN (
+ if (!empty($filters['tags'])) {
+ $tags_ids = $filters['tags'];
+ $bd_usl .= " AND `id` IN (
SELECT `client_id` FROM `clients_activities`
WHERE `activity_id` IN (" . implode(", ", $tags_ids) . ")
)";
- }
+ }
- if (!empty($filters['source'])) {
- $sources = $filters['source'];
- $where = [];
- foreach ($sources as $source) {
- if ($source == 0) {
- $where[] = "`source` IS NULL";
- $where[] = "`source` = ''";
- $where[] = "`source` = 'null'";
- } else {
- $where[] = "`source` = ' {$source}'";
- }
- }
- $bd_usl .= " AND (" . implode(" OR ", $where) . ")";
- }
+ if (!empty($filters['source'])) {
+ $sources = $filters['source'];
+ $where = [];
+ foreach ($sources as $source) {
+ if ($source == 0) {
+ $where[] = "`source` IS NULL";
+ $where[] = "`source` = ''";
+ $where[] = "`source` = 'null'";
+ } else {
+ $where[] = "`source` = ' {$source}'";
+ }
+ }
+ $bd_usl .= " AND (" . implode(" OR ", $where) . ")";
+ }
- if (!empty($filters['clients_ids'])) {
- $clients_ids = $filters['clients_ids'];
- $bd_usl .= " AND `id` IN (" . implode(", ", $clients_ids) . ")";
- }
+ if (!empty($filters['clients_ids'])) {
+ $clients_ids = $filters['clients_ids'];
+ $bd_usl .= " AND `id` IN (" . implode(", ", $clients_ids) . ")";
+ }
- if (!empty($filters['is_deleted']))
- $bd_usl .= " AND `confirm` > 0 AND `deleted` = 1 ";
- else if (empty($clients_ids))
- $bd_usl .= " AND `confirm` > 0 ";
- else if ($only_active)
- $bd_usl .= " AND `deleted` <> 1 ";
+ if (!empty($filters['is_deleted']))
+ $bd_usl .= " AND `confirm` > 0 AND `deleted` = 1 ";
+ else if (empty($clients_ids))
+ $bd_usl .= " AND `confirm` > 0 ";
+ else if ($only_active)
+ $bd_usl .= " AND `deleted` <> 1 ";
- if (in_array(6358, $managers) || in_array(93, $managers)) {
- $sql = "SELECT `id`, `email`, `fio`, `phone`, `phone2`, DATE_FORMAT(`date_add`, '%d.%m.%Y') AS `date_add`, `objects`, `deleted`, `confirm`
+ if (in_array(6358, $managers) || in_array(93, $managers)) {
+ $sql = "SELECT `id`, `email`, `fio`, `phone`, `phone2`, DATE_FORMAT(`date_add`, '%d.%m.%Y') AS `date_add`, `objects`, `deleted`, `confirm`
FROM `clients`
WHERE (
(true $bd_user) OR
@@ -1008,130 +1008,130 @@ class CommonController extends ApiController
)
) $bd_usl
ORDER BY `clients`.`id` DESC";
- } else {
- $sql = "SELECT `id`, `email`, `fio`, `phone`, `phone2`, DATE_FORMAT(`date_add`, '%d.%m.%Y') AS `date_add`, `objects`, `deleted`, `confirm`
+ } else {
+ $sql = "SELECT `id`, `email`, `fio`, `phone`, `phone2`, DATE_FORMAT(`date_add`, '%d.%m.%Y') AS `date_add`, `objects`, `deleted`, `confirm`
FROM `clients`
WHERE $bd_user_j $bd_usl
ORDER BY `clients`.`id` DESC";
- }
+ }
- if ($offset)
- $sql .= " LIMIT $offset, 10";
- else if ($offset == 0)
- $sql .= " LIMIT 0, 10";
- else
- $sql .= " LIMIT 100";
+ if ($offset)
+ $sql .= " LIMIT $offset, 10";
+ else if ($offset == 0)
+ $sql .= " LIMIT 0, 10";
+ else
+ $sql .= " LIMIT 100";
- if ($rez = mysql_query($sql)) {
- while($client = mysql_fetch_assoc($rez)) {
+ if ($rez = mysql_query($sql)) {
+ while($client = mysql_fetch_assoc($rez)) {
- // Телефоны клиента
- $phones = [];
- $phones_dop = [];
- if (!empty($client['phone']))
- $phones[] = $client['phone'];
+ // Телефоны клиента
+ $phones = [];
+ $phones_dop = [];
+ if (!empty($client['phone']))
+ $phones[] = $client['phone'];
- if (!empty($client['phone2']))
- $phones = array_merge($phones, json_decode(html_entity_decode($client['phone2'], ENT_QUOTES), true));
+ if (!empty($client['phone2']))
+ $phones = array_merge($phones, json_decode(html_entity_decode($client['phone2'], ENT_QUOTES), true));
- if (!empty($client['phone2']))
- $phones_dop = array_merge($phones_dop, json_decode(html_entity_decode($client['phone2'], ENT_QUOTES), true));
+ if (!empty($client['phone2']))
+ $phones_dop = array_merge($phones_dop, json_decode(html_entity_decode($client['phone2'], ENT_QUOTES), true));
- if (empty($phones))
- $phones = null;
+ if (empty($phones))
+ $phones = null;
- // Маскируем телефоны клиента в массиве phones_dop до implode,
- // если у текущего пользователя включено `hide_client_contacts`.
- if (!empty($phones_dop)) {
- foreach ($phones_dop as &$_pdop) {
- $_pdop = mask_phone_value_if_needed($_pdop);
- }
- unset($_pdop);
- }
+ // Маскируем телефоны клиента в массиве phones_dop до implode,
+ // если у текущего пользователя включено `hide_client_contacts`.
+ if (!empty($phones_dop)) {
+ foreach ($phones_dop as &$_pdop) {
+ $_pdop = mask_phone_value_if_needed($_pdop);
+ }
+ unset($_pdop);
+ }
- $clientItem = [
- 'id' => (int)$client['id'],
- 'name' => $client['fio'],
- 'phone' => $client['phone'],
- 'phones' => $phones,
- 'phones_dop' => (!empty($phones_dop)) ? implode(', ', $phones_dop) : '',
- 'email' => (!empty($client['email'])) ? $client['email'] : null,
- 'date_add' => $client['date_add'],
- /*'objects' => $client['objects'],
+ $clientItem = [
+ 'id' => (int)$client['id'],
+ 'name' => $client['fio'],
+ 'phone' => $client['phone'],
+ 'phones' => $phones,
+ 'phones_dop' => (!empty($phones_dop)) ? implode(', ', $phones_dop) : '',
+ 'email' => (!empty($client['email'])) ? $client['email'] : null,
+ 'date_add' => $client['date_add'],
+ /*'objects' => $client['objects'],
'is_deleted' => boolval($client['deleted']),
'is_confirm' => boolval($client['confirm']),
'id_agent' => $client['id_agent'],
'who_work' => $client['who_work'],
'source' => $client['source'],*/
- ];
- // Маскируем phone/email/имя клиента, если у текущего пользователя
- // включено право `user_permissions.hide_client_contacts`.
- // Helper сам проверяет право — если выключено, ничего не делает.
- mask_client_contacts_inplace($clientItem);
- $clients[] = $clientItem;
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ ];
+ // Маскируем phone/email/имя клиента, если у текущего пользователя
+ // включено право `user_permissions.hide_client_contacts`.
+ // Helper сам проверяет право — если выключено, ничего не делает.
+ mask_client_contacts_inplace($clientItem);
+ $clients[] = $clientItem;
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if (!$error) {
+ if (!$error) {
- $sources = [
- 'success' => true,
- 'user_id' => $user_id,
- 'count' => count($clients),
- 'list' => $clients,
- '$sql' => $sql,
- '$get' => $get,
- ];
+ $sources = [
+ 'success' => true,
+ 'user_id' => $user_id,
+ 'count' => count($clients),
+ 'list' => $clients,
+ '$sql' => $sql,
+ '$get' => $get,
+ ];
- if ($need_return) {
- return $sources;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode($sources, JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
+ if ($need_return) {
+ return $sources;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode($sources, JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $user_id,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $user_id,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function getСommercialTypes($app, $get = null, $post = null) {
+ public function getСommercialTypes($app, $get = null, $post = null) {
- $error = false;
- if ($user_id = $_SESSION['id']) {
+ $error = false;
+ if ($user_id = $_SESSION['id']) {
- $pdo = $app->container->get('pdo');
+ $pdo = $app->container->get('pdo');
- $list = [];
- $sql = "SELECT * FROM commercial_object";
- $sql .= ' GROUP BY `id` ORDER BY `name`';
+ $list = [];
+ $sql = "SELECT * FROM commercial_object";
+ $sql .= ' GROUP BY `id` ORDER BY `name`';
- $sth = $pdo->prepare($sql);
- if ($sth->execute()) {
- while($row = $sth->fetch(\PDO::FETCH_BOTH)) {
- $list[] = ['id' => intval($row["id"]), 'name' => $row["name"]];
- }
- } else {
- $error = true;
- }
+ $sth = $pdo->prepare($sql);
+ if ($sth->execute()) {
+ while($row = $sth->fetch(\PDO::FETCH_BOTH)) {
+ $list[] = ['id' => intval($row["id"]), 'name' => $row["name"]];
+ }
+ } else {
+ $error = true;
+ }
- if (!$error && count($list)) {
+ if (!$error && count($list)) {
$app->response->header('Content-Type', 'application/json');
$app->response->setStatus(200);
$app->response->setBody(json_encode([
@@ -1143,75 +1143,75 @@ class CommonController extends ApiController
}
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function getRegions($app, $get = null, $post = null) {
+ public function getRegions($app, $get = null, $post = null) {
- $error = false;
+ $error = false;
- $sub_regions = false;
- if (isset($get['sub_regions']))
- $sub_regions = true;
+ $sub_regions = false;
+ if (isset($get['sub_regions']))
+ $sub_regions = true;
- if ($user_id = $_SESSION['id']) {
+ if ($user_id = $_SESSION['id']) {
- $pdo = $app->container->get('pdo');
+ $pdo = $app->container->get('pdo');
- $list = [];
+ $list = [];
- if ($sub_regions)
- $sql = "SELECT * FROM rf_regions ";
- else
- $sql = "SELECT * FROM rf_regions WHERE parent = 0";
+ if ($sub_regions)
+ $sql = "SELECT * FROM rf_regions ";
+ else
+ $sql = "SELECT * FROM rf_regions WHERE parent = 0";
- $sql .= ' GROUP BY `id` ORDER BY `id`, `name`';
+ $sql .= ' GROUP BY `id` ORDER BY `id`, `name`';
- $sth = $pdo->prepare($sql);
- if ($sth->execute()) {
- while($row = $sth->fetch(\PDO::FETCH_BOTH)) {
+ $sth = $pdo->prepare($sql);
+ if ($sth->execute()) {
+ while($row = $sth->fetch(\PDO::FETCH_BOTH)) {
- $kladr = [];
- if (intval($row["kladr"])) {
- $kladr[] = $row["kladr"];
- } else {
- if (intval($row["id"]) == 1) { // Москва и Московская область
- $kladr = [
- '7700000000000',
- '5000000000000'
- ];
- } else if (intval($row["id"]) == 2) { // Санкт-Петербург и Ленинградская обл
- $kladr = [
- '7800000000000',
- '4700000000000'
- ];
- } else if (intval($row["id"]) == 3) { // Крым и Севастополь
- $kladr = [
- '9100000000000',
- '9200000000000'
- ];
- }
- }
+ $kladr = [];
+ if (intval($row["kladr"])) {
+ $kladr[] = $row["kladr"];
+ } else {
+ if (intval($row["id"]) == 1) { // Москва и Московская область
+ $kladr = [
+ '7700000000000',
+ '5000000000000'
+ ];
+ } else if (intval($row["id"]) == 2) { // Санкт-Петербург и Ленинградская обл
+ $kladr = [
+ '7800000000000',
+ '4700000000000'
+ ];
+ } else if (intval($row["id"]) == 3) { // Крым и Севастополь
+ $kladr = [
+ '9100000000000',
+ '9200000000000'
+ ];
+ }
+ }
- $list[] = [
- 'id' => intval($row["id"]),
- 'name' => $row["name"],
- 'kladr' => $kladr,
- 'code_id' => intval($row["code"]),
- 'parent_id' => intval($row["parent"]),
- ];
- }
- } else {
- $error = true;
- }
+ $list[] = [
+ 'id' => intval($row["id"]),
+ 'name' => $row["name"],
+ 'kladr' => $kladr,
+ 'code_id' => intval($row["code"]),
+ 'parent_id' => intval($row["parent"]),
+ ];
+ }
+ } else {
+ $error = true;
+ }
- if (!$error && count($list)) {
+ if (!$error && count($list)) {
$app->response->header('Content-Type', 'application/json');
$app->response->setStatus(200);
$app->response->setBody(json_encode([
@@ -1223,275 +1223,275 @@ class CommonController extends ApiController
}
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function getDistricts($app, $get = null, $post = null) {
+ public function getDistricts($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
- $region_rf_id = null;
- if (isset($get['region_id']))
- $region_rf_id = $get['region_id'];
+ $region_rf_id = null;
+ if (isset($get['region_id']))
+ $region_rf_id = $get['region_id'];
- $list = [];
- $groups = [];
+ $list = [];
+ $groups = [];
- $mdb = $app->container->get('mysql');
+ $mdb = $app->container->get('mysql');
- $region = [];
- if ($region_rf_id) {
- if (is_array($region_rf_id)) {
+ $region = [];
+ if ($region_rf_id) {
+ if (is_array($region_rf_id)) {
- if (in_array(80, $region_rf_id))
- $region_rf_id[] = 1;
+ if (in_array(80, $region_rf_id))
+ $region_rf_id[] = 1;
- if (in_array(81, $region_rf_id))
- $region_rf_id[] = 2;
+ if (in_array(81, $region_rf_id))
+ $region_rf_id[] = 2;
- $sql = "SELECT rf_regions.* FROM rf_regions AS parent
+ $sql = "SELECT rf_regions.* FROM rf_regions AS parent
JOIN rf_regions ON rf_regions.parent = parent.id
WHERE parent.id IN (" . implode(',', $region_rf_id) . ") ORDER BY id ASC";
- } else {
- $sql = "SELECT rf_regions.* FROM rf_regions AS parent
+ } else {
+ $sql = "SELECT rf_regions.* FROM rf_regions AS parent
JOIN rf_regions ON rf_regions.parent = parent.id
WHERE parent.id = $region_rf_id ORDER BY id ASC";
- }
- } else {
- $sql = "SELECT rf_regions.* FROM rf_regions AS parent
+ }
+ } else {
+ $sql = "SELECT rf_regions.* FROM rf_regions AS parent
JOIN rf_regions ON rf_regions.parent = parent.id
LEFT JOIN users ON users.region_rf_id = parent.id
WHERE users.id = $user_id ORDER BY id ASC";
- }
+ }
- if ($rez = mysql_query($sql)) {
- while($row = mysql_fetch_assoc($rez)) {
- $region[] = $row;
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ if ($rez = mysql_query($sql)) {
+ while($row = mysql_fetch_assoc($rez)) {
+ $region[] = $row;
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if (empty($region)) {
- $region = [
- [
- 'id' => 47,
- 'name' => 'Ленинградская обл',
- 'kladr' => '4700000000000',
- 'parent' => 94,
- 'code' => 47
- ], [
- 'id' => 78,
- 'name' => 'Санкт-Петербург',
- 'kladr' => '7800000000000',
- 'parent' => 94,
- 'code' => 78
- ]
- ];
- }
+ if (empty($region)) {
+ $region = [
+ [
+ 'id' => 47,
+ 'name' => 'Ленинградская обл',
+ 'kladr' => '4700000000000',
+ 'parent' => 94,
+ 'code' => 47
+ ], [
+ 'id' => 78,
+ 'name' => 'Санкт-Петербург',
+ 'kladr' => '7800000000000',
+ 'parent' => 94,
+ 'code' => 78
+ ]
+ ];
+ }
- if ($region[1]['code'] == 78) {
+ if ($region[1]['code'] == 78) {
- $sql = "SELECT * FROM rayon WHERE id IN (15,3,6,7,1,23,13,22,33,25,11,10,8,26,12,27,5,2,28,9) OR is_lo = 1 ORDER BY is_lo, rayon";
- if ($rez = mysql_query($sql)) {
- $group_id = (int)$region[1]['id'];
- $group_name = 'Санкт-Петербург';
+ $sql = "SELECT * FROM rayon WHERE id IN (15,3,6,7,1,23,13,22,33,25,11,10,8,26,12,27,5,2,28,9) OR is_lo = 1 ORDER BY is_lo, rayon";
+ if ($rez = mysql_query($sql)) {
+ $group_id = (int)$region[1]['id'];
+ $group_name = 'Санкт-Петербург';
- while($rayon = mysql_fetch_assoc($rez)) {
- if ($rayon['is_lo'] == 1)
- $group_name = 'Ленинградская область';
+ while($rayon = mysql_fetch_assoc($rez)) {
+ if ($rayon['is_lo'] == 1)
+ $group_name = 'Ленинградская область';
- $list[] = ['id' => (int)$rayon['id'], 'name' => $rayon['rayon'], 'group_id' => (int)$group_id];
- }
+ $list[] = ['id' => (int)$rayon['id'], 'name' => $rayon['rayon'], 'group_id' => (int)$group_id];
+ }
- $groups[] = ['id' => $group_id, 'name' => $group_name];
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else if ($region[1]['code'] == 77) {
+ $groups[] = ['id' => $group_id, 'name' => $group_name];
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else if ($region[1]['code'] == 77) {
- $group_id = (int)$region[1]['id'];
- $groups[] = ['id' => $group_id, 'name' => $region[1]['name']];
+ $group_id = (int)$region[1]['id'];
+ $groups[] = ['id' => $group_id, 'name' => $region[1]['name']];
- $sql = "SELECT * FROM rf_regions WHERE parent = $group_id";
- if ($rez = mysql_query($sql)) {
- if (mysql_num_rows($rez) > 0) {
- while($sub_region = mysql_fetch_assoc($rez)) {
+ $sql = "SELECT * FROM rf_regions WHERE parent = $group_id";
+ if ($rez = mysql_query($sql)) {
+ if (mysql_num_rows($rez) > 0) {
+ while($sub_region = mysql_fetch_assoc($rez)) {
- $group_id = $sub_region['id'];
- $groups[] = ['id' => $group_id, 'name' => $sub_region['name']];
+ $group_id = $sub_region['id'];
+ $groups[] = ['id' => $group_id, 'name' => $sub_region['name']];
- $sql = "SELECT * FROM rayon WHERE id IN (SELECT rayon_id FROM rf_region_rayons WHERE rf_region_id = $group_id)";
- $rez_rayon = mysql_query($sql);
- while ($rayon = mysql_fetch_assoc($rez_rayon)) {
- $list[] = ['id' => (int)$rayon['id'], 'name' => $rayon['rayon'], 'group_id' => (int)$group_id];
- }
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
+ $sql = "SELECT * FROM rayon WHERE id IN (SELECT rayon_id FROM rf_region_rayons WHERE rf_region_id = $group_id)";
+ $rez_rayon = mysql_query($sql);
+ while ($rayon = mysql_fetch_assoc($rez_rayon)) {
+ $list[] = ['id' => (int)$rayon['id'], 'name' => $rayon['rayon'], 'group_id' => (int)$group_id];
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
- $group_id = (int)$region[1]['id'];
- $groups[] = ['id' => $group_id, 'name' => $region[1]['name']];
+ $group_id = (int)$region[1]['id'];
+ $groups[] = ['id' => $group_id, 'name' => $region[1]['name']];
- $sql = "SELECT * FROM rayon WHERE id IN (SELECT rayon_id FROM rf_region_rayons WHERE rf_region_id = $group_id)";
- if ($rez = mysql_query($sql)) {
- if (mysql_num_rows($rez) > 0) {
- while($rayon = mysql_fetch_assoc($rez)) {
- $list[] = ['id' => (int)$rayon['id'], 'name' => $rayon['rayon'], 'group_id' => (int)$group_id];
- }
- } else {
- $list[] = ['id' => 0, 'name' => 'Весь город', 'group_id' => (int)$group_id];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ $sql = "SELECT * FROM rayon WHERE id IN (SELECT rayon_id FROM rf_region_rayons WHERE rf_region_id = $group_id)";
+ if ($rez = mysql_query($sql)) {
+ if (mysql_num_rows($rez) > 0) {
+ while($rayon = mysql_fetch_assoc($rez)) {
+ $list[] = ['id' => (int)$rayon['id'], 'name' => $rayon['rayon'], 'group_id' => (int)$group_id];
+ }
+ } else {
+ $list[] = ['id' => 0, 'name' => 'Весь город', 'group_id' => (int)$group_id];
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- if (!empty($region[0]['id']) && isset($group_id)) {
- $sql = "SELECT * FROM rayon where id in (SELECT rayon_id FROM rf_region_rayons WHERE rf_region_id = ".$region[0]['id'].")";
- if ($rez = mysql_query($sql)) {
- if (mysql_num_rows($rez) > 0) {
- while($rayon = mysql_fetch_assoc($rez)) {
- $list[] = ['id' => (int)$rayon['id'], 'name' => $rayon['rayon'], 'group_id' => (int)$group_id];
- }
- } else {
- $list[] = ['id' => 0, 'name' => 'Весь город', 'group_id' => (int)$group_id];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if (!empty($region[0]['id']) && isset($group_id)) {
+ $sql = "SELECT * FROM rayon where id in (SELECT rayon_id FROM rf_region_rayons WHERE rf_region_id = ".$region[0]['id'].")";
+ if ($rez = mysql_query($sql)) {
+ if (mysql_num_rows($rez) > 0) {
+ while($rayon = mysql_fetch_assoc($rez)) {
+ $list[] = ['id' => (int)$rayon['id'], 'name' => $rayon['rayon'], 'group_id' => (int)$group_id];
+ }
+ } else {
+ $list[] = ['id' => 0, 'name' => 'Весь город', 'group_id' => (int)$group_id];
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- if (!$error) {
+ if (!$error) {
$app->response->header('Content-Type', 'application/json');
$app->response->setStatus(200);
- if (!is_array($region_rf_id)) {
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'count' => count($list),
- 'list' => $list,
- 'groups' => $groups,
- 'parent_region' => (int)$region[1]['parent'],
- 'region_type' => (int)$region[1]['id'],
- ], JSON_UNESCAPED_UNICODE));
- } else {
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'count' => count($list),
- 'list' => $list,
- 'groups' => $groups,
- 'sql' => $sql,
- ], JSON_UNESCAPED_UNICODE));
- }
+ if (!is_array($region_rf_id)) {
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'count' => count($list),
+ 'list' => $list,
+ 'groups' => $groups,
+ 'parent_region' => (int)$region[1]['parent'],
+ 'region_type' => (int)$region[1]['id'],
+ ], JSON_UNESCAPED_UNICODE));
+ } else {
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'count' => count($list),
+ 'list' => $list,
+ 'groups' => $groups,
+ 'sql' => $sql,
+ ], JSON_UNESCAPED_UNICODE));
+ }
$app->stop();
}
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function getMetro($app, $get = null, $post = null) {
+ public function getMetro($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
- $region_rf_id = null;
- if (isset($get['region_id']))
- $region_rf_id = $get['region_id'];
+ $region_rf_id = null;
+ if (isset($get['region_id']))
+ $region_rf_id = $get['region_id'];
- $list = [];
- $mdb = $app->container->get('mysql');
+ $list = [];
+ $mdb = $app->container->get('mysql');
- $region = [];
- if ($region_rf_id) {
- if (is_array($region_rf_id)) {
- $sql = "SELECT rf_regions.* FROM rf_regions AS parent
+ $region = [];
+ if ($region_rf_id) {
+ if (is_array($region_rf_id)) {
+ $sql = "SELECT rf_regions.* FROM rf_regions AS parent
JOIN rf_regions ON rf_regions.parent = parent.id
WHERE parent.id IN (" . implode(',', $region_rf_id) . ") ORDER BY id ASC";
- } else {
- $sql = "SELECT rf_regions.* FROM rf_regions AS parent
+ } else {
+ $sql = "SELECT rf_regions.* FROM rf_regions AS parent
JOIN rf_regions ON rf_regions.parent = parent.id
WHERE parent.id = $region_rf_id ORDER BY id ASC";
- }
- } else {
- $sql = "SELECT rf_regions.* FROM rf_regions AS parent
+ }
+ } else {
+ $sql = "SELECT rf_regions.* FROM rf_regions AS parent
JOIN rf_regions ON rf_regions.parent = parent.id
LEFT JOIN users ON users.region_rf_id = parent.id
WHERE users.id = $user_id ORDER BY id ASC";
- }
+ }
- if ($rez = mysql_query($sql)) {
- while($row = mysql_fetch_assoc($rez)) {
- $region[] = $row;
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ if ($rez = mysql_query($sql)) {
+ while($row = mysql_fetch_assoc($rez)) {
+ $region[] = $row;
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if (empty($region)) {
- $region[0] = array(
- 'id' => 47,
- 'name' => 'Ленинградская обл',
- 'kladr' => '4700000000000',
- 'parent' => 94,
- 'code' => 47
- );
- $region[1] = array(
- 'id' => 78,
- 'name' => 'Санкт-Петербург',
- 'kladr' => '7800000000000',
- 'parent' => 94,
- 'code' => 78
- );
- }
+ if (empty($region)) {
+ $region[0] = array(
+ 'id' => 47,
+ 'name' => 'Ленинградская обл',
+ 'kladr' => '4700000000000',
+ 'parent' => 94,
+ 'code' => 47
+ );
+ $region[1] = array(
+ 'id' => 78,
+ 'name' => 'Санкт-Петербург',
+ 'kladr' => '7800000000000',
+ 'parent' => 94,
+ 'code' => 78
+ );
+ }
- $sql = "SELECT * FROM metro WHERE region_rf_id = ".$region[0]['id'];
+ $sql = "SELECT * FROM metro WHERE region_rf_id = ".$region[0]['id'];
- if (isset($region[1]))
- $sql .=" OR region_rf_id = ".$region[1]['id'];
+ if (isset($region[1]))
+ $sql .=" OR region_rf_id = ".$region[1]['id'];
- if ($rez = mysql_query($sql)) {
- if (mysql_num_rows($rez) > 0) {
- if ($region[1]['code'] !== 78) {
- while ($metro = mysql_fetch_assoc($rez)) {
- $list[] = ['id' => (int)$metro['id'], 'name' => $metro['metro']];
- }
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ if ($rez = mysql_query($sql)) {
+ if (mysql_num_rows($rez) > 0) {
+ if ($region[1]['code'] !== 78) {
+ while ($metro = mysql_fetch_assoc($rez)) {
+ $list[] = ['id' => (int)$metro['id'], 'name' => $metro['metro']];
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if (!$error) {
+ if (!$error) {
$app->response->header('Content-Type', 'application/json');
$app->response->setStatus(200);
$app->response->setBody(json_encode([
@@ -1505,56 +1505,56 @@ class CommonController extends ApiController
}
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
-
- public function getHighway($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
+ public function getHighway($app, $get = null, $post = null) {
- $region_rf_id = null;
- if (isset($get['region_id']))
- $region_rf_id = $get['region_id'];
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
- $list = [];
- $mdb = $app->container->get('mysql');
+ $region_rf_id = null;
+ if (isset($get['region_id']))
+ $region_rf_id = $get['region_id'];
- $region = [];
- if ($region_rf_id) {
-
- $sql = "SELECT highways.* FROM highways
+ $list = [];
+ $mdb = $app->container->get('mysql');
+
+ $region = [];
+ if ($region_rf_id) {
+
+ $sql = "SELECT highways.* FROM highways
WHERE highways.region_id = $region_rf_id";
-
- } else {
- $sql = "SELECT highways.* FROM highways AS h
+
+ } else {
+ $sql = "SELECT highways.* FROM highways AS h
LEFT JOIN users ON users.region_rf_id = h.region_id
WHERE users.id = $user_id AND h.region_id=users.region_rf_id ORDER BY id ASC";
- }
+ }
- if ($rez = mysql_query($sql)) {
- if (mysql_num_rows($rez) > 0) {
-
- while ($highway = mysql_fetch_assoc($rez)) {
- $list[] = ['id' => (int)$highway['cian_id'], 'name' => $highway['name']];
- }
-
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ if ($rez = mysql_query($sql)) {
+ if (mysql_num_rows($rez) > 0) {
- if (!$error) {
+ while ($highway = mysql_fetch_assoc($rez)) {
+ $list[] = ['id' => (int)$highway['cian_id'], 'name' => $highway['name']];
+ }
+
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+
+ if (!$error) {
$app->response->header('Content-Type', 'application/json');
$app->response->setStatus(200);
$app->response->setBody(json_encode([
@@ -1568,37 +1568,37 @@ class CommonController extends ApiController
}
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function getLayouts($app, $get = null, $post = null) {
+ public function getLayouts($app, $get = null, $post = null) {
- $error = false;
- if ($user_id = $_SESSION['id']) {
+ $error = false;
+ if ($user_id = $_SESSION['id']) {
- $pdo = $app->container->get('pdo');
+ $pdo = $app->container->get('pdo');
- $list = [];
- $sql = "SELECT * FROM layout_object";
- $sql .= ' GROUP BY `id` ORDER BY `name`';
+ $list = [];
+ $sql = "SELECT * FROM layout_object";
+ $sql .= ' GROUP BY `id` ORDER BY `name`';
- $sth = $pdo->prepare($sql);
- if ($sth->execute()) {
- while($row = $sth->fetch(\PDO::FETCH_BOTH)) {
- $list[] = ['id' => intval($row["id"]), 'name' => $row["name"]];
- }
- } else {
- $error = true;
- }
+ $sth = $pdo->prepare($sql);
+ if ($sth->execute()) {
+ while($row = $sth->fetch(\PDO::FETCH_BOTH)) {
+ $list[] = ['id' => intval($row["id"]), 'name' => $row["name"]];
+ }
+ } else {
+ $error = true;
+ }
- if (!$error && count($list)) {
+ if (!$error && count($list)) {
$app->response->header('Content-Type', 'application/json');
$app->response->setStatus(200);
$app->response->setBody(json_encode([
@@ -1610,392 +1610,392 @@ class CommonController extends ApiController
}
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function is_see($app, $is_no_see, $users_no_see){
- $mdb = $app->container->get('mysql');
- $is_see = true;
- $tempArrNoSee = json_decode($users_no_see, true);
- if($is_no_see == 1 && !empty($users_no_see) && !empty($tempArrNoSee)){
- $is_see = false;
- $arrNoSeeUsers = array();
-
- foreach($tempArrNoSee as $u){
- if(strpos($u, 'all_') !== false){
- $manId = str_replace('all_', '', $u);
- $sql_u = "SELECT id FROM `users`
+ public function is_see($app, $is_no_see, $users_no_see){
+ $mdb = $app->container->get('mysql');
+ $is_see = true;
+ $tempArrNoSee = json_decode($users_no_see, true);
+ if($is_no_see == 1 && !empty($users_no_see) && !empty($tempArrNoSee)){
+ $is_see = false;
+ $arrNoSeeUsers = array();
+
+ foreach($tempArrNoSee as $u){
+ if(strpos($u, 'all_') !== false){
+ $manId = str_replace('all_', '', $u);
+ $sql_u = "SELECT id FROM `users`
WHERE id = $manId OR
id_manager = $manId OR
id_manager IN (SELECT id FROM users WHERE id_manager = $manId)";
- $q_u = mysql_query($sql_u);
- while($r_u = mysql_fetch_row($q_u)){
- $arrNoSeeUsers[] = (int)$r_u[0];
- }
- } else {
- $arrNoSeeUsers[] = (int)$u;
- }
- }
-
- if(in_array($_SESSION['id'], $arrNoSeeUsers)){
- $is_see = true;
- }
- }
-
- return $is_see;
- }
+ $q_u = mysql_query($sql_u);
+ while($r_u = mysql_fetch_row($q_u)){
+ $arrNoSeeUsers[] = (int)$r_u[0];
+ }
+ } else {
+ $arrNoSeeUsers[] = (int)$u;
+ }
+ }
- public function getRoles($app, $get = null, $post = null) {
+ if(in_array($_SESSION['id'], $arrNoSeeUsers)){
+ $is_see = true;
+ }
+ }
- global $ROLES_CLIENTS;
- $error = false;
- $section = $get['section'];
- if ($section && ($user_id = $_SESSION['id'])) {
+ return $is_see;
+ }
- $roles = [];
- switch ($section) {
- case 'clients' :
+ public function getRoles($app, $get = null, $post = null) {
- if ($_SESSION['agency_id'] == 7911 && !in_array("Страхование", $ROLES_CLIENTS))
- $ROLES_CLIENTS[] = "Страхование";
+ global $ROLES_CLIENTS;
+ $error = false;
+ $section = $get['section'];
+ if ($section && ($user_id = $_SESSION['id'])) {
- if ($_SESSION['agency_id'] == 7911 && !in_array("Путевки", $ROLES_CLIENTS))
- $ROLES_CLIENTS[] = "Путевки";
+ $roles = [];
+ switch ($section) {
+ case 'clients' :
- if ($_SESSION['agency_id'] == 7911 && !in_array("Юр.услуги", $ROLES_CLIENTS))
- $ROLES_CLIENTS[] = "Юр.услуги";
+ if ($_SESSION['agency_id'] == 7911 && !in_array("Страхование", $ROLES_CLIENTS))
+ $ROLES_CLIENTS[] = "Страхование";
- foreach($ROLES_CLIENTS as $key => $val) {
- if (intval($key) > 0) {
- $roles[] = ['id' => intval($key), 'name' => $val];
- }
- }
+ if ($_SESSION['agency_id'] == 7911 && !in_array("Путевки", $ROLES_CLIENTS))
+ $ROLES_CLIENTS[] = "Путевки";
- break;
- }
+ if ($_SESSION['agency_id'] == 7911 && !in_array("Юр.услуги", $ROLES_CLIENTS))
+ $ROLES_CLIENTS[] = "Юр.услуги";
- if (count($roles)) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'list' => $roles
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ foreach($ROLES_CLIENTS as $key => $val) {
+ if (intval($key) > 0) {
+ $roles[] = ['id' => intval($key), 'name' => $val];
+ }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ break;
+ }
- public function getRequisitions($app, $get = null, $post = null) {
+ if (count($roles)) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'list' => $roles
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- $error = false;
- $errors = [];
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- if ($user_id = $_SESSION['id']) {
+ public function getRequisitions($app, $get = null, $post = null) {
- $requisitions = [];
- $mdb = $app->container->get('mysql');
- $users_ids[] = (int)$user_id;
+ $error = false;
+ $errors = [];
- $user = new \User();
- $user->get($user_id);
- if ($_SESSION['users_admin'])
- $user_id = $user->getUserAgencyID();
+ if ($user_id = $_SESSION['id']) {
- $users_ids[] = $user_id;
- if ($user->get($user_id)) {
- if ($user->agency) {
- if ($query = mysql_query("SELECT `id` FROM `users` WHERE `id_manager`='$user_id' AND `manager`=1")) {
- while ($row = mysql_fetch_row($query)) {
- if (!empty($row[0])) {
- $users_ids[] = $row[0];
+ $requisitions = [];
+ $mdb = $app->container->get('mysql');
+ $users_ids[] = (int)$user_id;
- if ($query2 = mysql_query("SELECT `id` FROM `users` WHERE `id_manager`='$row[0]'")) {
- while ($row2 = mysql_fetch_row($query2)) {
+ $user = new \User();
+ $user->get($user_id);
+ if ($_SESSION['users_admin'])
+ $user_id = $user->getUserAgencyID();
- if (!empty($row[0]))
- $users_ids[] = $row2[0];
+ $users_ids[] = $user_id;
+ if ($user->get($user_id)) {
+ if ($user->agency) {
+ if ($query = mysql_query("SELECT `id` FROM `users` WHERE `id_manager`='$user_id' AND `manager`=1")) {
+ while ($row = mysql_fetch_row($query)) {
+ if (!empty($row[0])) {
+ $users_ids[] = $row[0];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else if ($user->manager) {
- if ($query = mysql_query("SELECT `id` FROM `users` WHERE `id_manager`='$user_id'")) {
- while ($row = mysql_fetch_row($query)) {
+ if ($query2 = mysql_query("SELECT `id` FROM `users` WHERE `id_manager`='$row[0]'")) {
+ while ($row2 = mysql_fetch_row($query2)) {
- if (!empty($row[0]))
- $users_ids[] = $row[0];
+ if (!empty($row[0]))
+ $users_ids[] = $row2[0];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else if ($user->manager) {
+ if ($query = mysql_query("SELECT `id` FROM `users` WHERE `id_manager`='$user_id'")) {
+ while ($row = mysql_fetch_row($query)) {
- $users_ids = array_unique($users_ids);
- $bd_usl_managers = " AND `user_id` IN (" . implode(',', $users_ids) . ")";
+ if (!empty($row[0]))
+ $users_ids[] = $row[0];
- $sql = "SELECT `id`, `name`, `client_id` FROM `requisitions` WHERE 1 $bd_usl_managers AND `deleted` <> 1";
- if (isset($post['ids']) && count($post['ids'])) {
- $sql = "SELECT `id`, `name`, `client_id` FROM `requisitions` WHERE `id` IN (" . implode(',', $post['ids']) . ")";
- }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
- if ($query = mysql_query($sql)) {
- while ($row = mysql_fetch_assoc($query)) {
- $requisitions[] = [
- 'id' => (int)$row['id'],
- 'name' => $row['name'],
- ];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $users_ids = array_unique($users_ids);
+ $bd_usl_managers = " AND `user_id` IN (" . implode(',', $users_ids) . ")";
- if (count($requisitions)) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'list' => $requisitions,
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ $sql = "SELECT `id`, `name`, `client_id` FROM `requisitions` WHERE 1 $bd_usl_managers AND `deleted` <> 1";
+ if (isset($post['ids']) && count($post['ids'])) {
+ $sql = "SELECT `id`, `name`, `client_id` FROM `requisitions` WHERE `id` IN (" . implode(',', $post['ids']) . ")";
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$_SESSION['id'],
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ if ($query = mysql_query($sql)) {
+ while ($row = mysql_fetch_assoc($query)) {
+ $requisitions[] = [
+ 'id' => (int)$row['id'],
+ 'name' => $row['name'],
+ ];
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- public function getSources($app, $get = null, $post = null) {
+ if (count($requisitions)) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'list' => $requisitions,
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- $error = false;
- if ($user_id = $_SESSION['id']) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$_SESSION['id'],
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- // Открываем соединение с БД
- $pdo = $app->container->get('pdo');
- $mdb = $app->container->get('mysql');
+ public function getSources($app, $get = null, $post = null) {
- $user = new \User;
- $user->get($user_id);
+ $error = false;
+ if ($user_id = $_SESSION['id']) {
- $sources = [];
- $search = null;
+ // Открываем соединение с БД
+ $pdo = $app->container->get('pdo');
+ $mdb = $app->container->get('mysql');
- $page = 1;
- if (isset($get['page']))
- $page = $get['page'];
+ $user = new \User;
+ $user->get($user_id);
- // Number of records fetch
- $numberOfRecords = 1000;
+ $sources = [];
+ $search = null;
- if (isset($get['searchTerm']))
- $search = $get['searchTerm']; // Search text
+ $page = 1;
+ if (isset($get['page']))
+ $page = $get['page'];
- if ($search == null || strpos("объекты нашей компании", strtolower($search)) !== false) {
- $sources[] = array(
- "id" => 10000,
- "name" => "Объекты нашей компании",
- "source_see" => 1
- );
- $numberOfRecords--;
- }
+ // Number of records fetch
+ $numberOfRecords = 1000;
- $list = [];
+ if (isset($get['searchTerm']))
+ $search = $get['searchTerm']; // Search text
- $sql_where = " `user_id` = '".$user->id."' or `manager_id` = '".$user->id."'";
- if ($user->id_manager)
- $sql_where .= " or `manager_id` = '".$user->id_manager."' or `user_id` = '".$user->id_manager."'";
+ if ($search == null || strpos("объекты нашей компании", strtolower($search)) !== false) {
+ $sources[] = array(
+ "id" => 10000,
+ "name" => "Объекты нашей компании",
+ "source_see" => 1
+ );
+ $numberOfRecords--;
+ }
- if ($user -> agencyId)
- $sql_where .= " or `manager_id` = '".$user -> agencyId."' or `user_id` = '".$user -> agencyId."'";
+ $list = [];
- if ($search == null)
- $sqlCount = "SELECT COUNT(id) FROM `advertising_sources` WHERE $sql_where";
- else
- $sqlCount = "SELECT COUNT(id) FROM `advertising_sources` WHERE ($sql_where) AND source LIKE '%" . trim($search) . "%'";
+ $sql_where = " `user_id` = '".$user->id."' or `manager_id` = '".$user->id."'";
+ if ($user->id_manager)
+ $sql_where .= " or `manager_id` = '".$user->id_manager."' or `user_id` = '".$user->id_manager."'";
- $rez = mysql_query($sqlCount); // @todo: implement to PDO
- $all_count = mysql_result($rez, 0);
- $all_pages = ceil($all_count / $numberOfRecords);
- $limit = ($page - 1) * $numberOfRecords;
+ if ($user -> agencyId)
+ $sql_where .= " or `manager_id` = '".$user -> agencyId."' or `user_id` = '".$user -> agencyId."'";
- if ($search == null) {
- $sql = "SELECT *
+ if ($search == null)
+ $sqlCount = "SELECT COUNT(id) FROM `advertising_sources` WHERE $sql_where";
+ else
+ $sqlCount = "SELECT COUNT(id) FROM `advertising_sources` WHERE ($sql_where) AND source LIKE '%" . trim($search) . "%'";
+
+ $rez = mysql_query($sqlCount); // @todo: implement to PDO
+ $all_count = mysql_result($rez, 0);
+ $all_pages = ceil($all_count / $numberOfRecords);
+ $limit = ($page - 1) * $numberOfRecords;
+
+ if ($search == null) {
+ $sql = "SELECT *
FROM `advertising_sources`
WHERE $sql_where ORDER BY source, id
LIMIT $limit, $numberOfRecords";
- } else {
- $sql = "SELECT *
+ } else {
+ $sql = "SELECT *
FROM `advertising_sources`
WHERE ($sql_where) AND source LIKE '%" . trim($search) . "%'
ORDER BY source, id LIMIT $limit, $numberOfRecords";
- }
+ }
- if ($rez = mysql_query($sql)) { // @todo: implement to PDO
- while ($block = mysql_fetch_assoc($rez)) {
- $block['source_see'] = 1;
+ if ($rez = mysql_query($sql)) { // @todo: implement to PDO
+ while ($block = mysql_fetch_assoc($rez)) {
+ $block['source_see'] = 1;
if($this->is_see($app, $block['is_no_see'], $block['users_no_see']) === false){
$block['source_see'] = 0;
-
+
}
- $list[] = $block;
-
-
- }
- } else {
- $error = true;
- }
+ $list[] = $block;
- // Read Data
- foreach ($list as $item) {
- $sources[] = [
- "id" => intval($item['id']),
- "name" => $item['source'],
- "source_see" => $item['source_see']
- ];
- }
- if ($search == null || strpos("источник не выбран", strtolower($search)) !== false) {
- $sources[] = [
- "id" => 0,
- "name" => "Источник не выбран",
- "source_see" => 1
- ];
- }
+ }
+ } else {
+ $error = true;
+ }
- if (count($sources)) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'total_count' => $all_count,
- 'list' => $sources
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ // Read Data
+ foreach ($list as $item) {
+ $sources[] = [
+ "id" => intval($item['id']),
+ "name" => $item['source'],
+ "source_see" => $item['source_see']
+ ];
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ if ($search == null || strpos("источник не выбран", strtolower($search)) !== false) {
+ $sources[] = [
+ "id" => 0,
+ "name" => "Источник не выбран",
+ "source_see" => 1
+ ];
+ }
- public function getFunnels($app, $get = null, $post = null, $need_return = false) {
+ if (count($sources)) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'total_count' => $all_count,
+ 'list' => $sources
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ public function getFunnels($app, $get = null, $post = null, $need_return = false) {
- $user = new \User();
- $user->get($user_id);
- $agency_id = $user->agencyId;
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
- $funnels = [];
- $section = $get['section']; // requisitions, clients
- $filters = $get['filters'];
- $use_counters = $get['use_counters'] || null;
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- if (!in_array($agency_id, [6841, 6426, 7384, 7478, 8353, 8867, 9588]))
- $use_custom = true;
- else
- $use_custom = false;
+ $user = new \User();
+ $user->get($user_id);
+ $agency_id = $user->agencyId;
- $default = "Обычные";
- $sql = "SELECT * FROM `funnel_default` WHERE `agency_id` = '$agency_id'";
+ $funnels = [];
+ $section = $get['section']; // requisitions, clients
+ $filters = $get['filters'];
+ $use_counters = $get['use_counters'] || null;
- if ($section == 'requisitions')
- $sql = "SELECT * FROM `funnel_default` WHERE `agency_id` = '$agency_id'";
+ if (!in_array($agency_id, [6841, 6426, 7384, 7478, 8353, 8867, 9588]))
+ $use_custom = true;
+ else
+ $use_custom = false;
- if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query) > 0) {
+ $default = "Обычные";
+ $sql = "SELECT * FROM `funnel_default` WHERE `agency_id` = '$agency_id'";
- $row = mysql_fetch_assoc($query);
- if (!empty($row['name']))
- $default = $row['name'];
+ if ($section == 'requisitions')
+ $sql = "SELECT * FROM `funnel_default` WHERE `agency_id` = '$agency_id'";
- if ($section == 'clients' && $row['is_client'] == 0)
- $use_custom = false;
+ if ($query = mysql_query($sql)) {
+ if (mysql_num_rows($query) > 0) {
- if ($section == 'requisitions' && $row['is_req'] == 0)
- $use_custom = false;
+ $row = mysql_fetch_assoc($query);
+ if (!empty($row['name']))
+ $default = $row['name'];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ if ($section == 'clients' && $row['is_client'] == 0)
+ $use_custom = false;
- $new_ids = [];
- $funnelCounts = [];
+ if ($section == 'requisitions' && $row['is_req'] == 0)
+ $use_custom = false;
- // Счётчики в воронках
- if ($use_counters) {
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if ($section == 'clients')
- $_SESSION['new_transfers']['clients'] = null;
- else if ($section == 'requisitions')
- $_SESSION['new_transfers']['requisitions'] = null;
+ $new_ids = [];
+ $funnelCounts = [];
- if ($section == 'clients') {
+ // Счётчики в воронках
+ if ($use_counters) {
- $bd_stage = "";
- if ($filters['filter_stage_work']) {
- if ($filters['is_confirm'] || $filters['stage_send']) {
- $bd_stage = " AND `clients`.`deleted` <> '1'";
- } else {
- $bd_stage = " AND `clients`.`deleted` <> '1' AND `clients`.`confirm` > 0";
- }
- }
+ if ($section == 'clients')
+ $_SESSION['new_transfers']['clients'] = null;
+ else if ($section == 'requisitions')
+ $_SESSION['new_transfers']['requisitions'] = null;
- if ($filters['is_hot'])
- $bd_stage .= " AND `clients`.`hot` = 1";
+ if ($section == 'clients') {
- if (empty($bd_stage))
- $bd_stage = " AND `clients`.`deleted` = '0'";
+ $bd_stage = "";
+ if ($filters['filter_stage_work']) {
+ if ($filters['is_confirm'] || $filters['stage_send']) {
+ $bd_stage = " AND `clients`.`deleted` <> '1'";
+ } else {
+ $bd_stage = " AND `clients`.`deleted` <> '1' AND `clients`.`confirm` > 0";
+ }
+ }
- $sql1 = "SELECT `clients`.`funnel_id`, COUNT(DISTINCT `clients`.`id`) AS `count`
+ if ($filters['is_hot'])
+ $bd_stage .= " AND `clients`.`hot` = 1";
+
+ if (empty($bd_stage))
+ $bd_stage = " AND `clients`.`deleted` = '0'";
+
+ $sql1 = "SELECT `clients`.`funnel_id`, COUNT(DISTINCT `clients`.`id`) AS `count`
FROM `events_clients` AS `events`
LEFT JOIN `clients` AS `clients` ON `clients`.`id` = `events`.`client_id`
WHERE (`events`.`user_id` = '$user_id' AND `events`.`from_id` = '$user_id') AND
@@ -2007,7 +2007,7 @@ class CommonController extends ApiController
`clients`.`funnel_id` = 0
GROUP BY `clients`.`funnel_id`";
- $sql1_list = "SELECT `clients`.`funnel_id`, `clients`.`id`
+ $sql1_list = "SELECT `clients`.`funnel_id`, `clients`.`id`
FROM `events_clients` AS `events`
LEFT JOIN `clients` AS `clients` ON `clients`.`id` = `events`.`client_id`
WHERE (`events`.`user_id` = '$user_id' AND `events`.`from_id` = '$user_id') AND
@@ -2018,7 +2018,7 @@ class CommonController extends ApiController
(`clients`.`who_work` = '$user_id' OR `clients`.`doers` LIKE '%"".$user_id."":1%') AND
`clients`.`funnel_id` = 0";
- $sql2 = "SELECT `clients`.`funnel_id`, COUNT(DISTINCT `clients`.`id`) AS `count`
+ $sql2 = "SELECT `clients`.`funnel_id`, COUNT(DISTINCT `clients`.`id`) AS `count`
FROM `events_clients` AS `events`
LEFT JOIN `clients` AS `clients` ON `clients`.`id` = `events`.`client_id`
JOIN `funnel` AS `funnel`
@@ -2032,7 +2032,7 @@ class CommonController extends ApiController
`funnel`.`agency_id` = '$agency_id' AND `funnel`.`deleted` = 0
GROUP BY `clients`.`funnel_id`";
- $sql2_list = "SELECT `clients`.`funnel_id`, `clients`.`id`
+ $sql2_list = "SELECT `clients`.`funnel_id`, `clients`.`id`
FROM `events_clients` AS `events`
LEFT JOIN `clients` AS `clients` ON `clients`.`id` = `events`.`client_id`
JOIN `funnel` AS `funnel`
@@ -2045,8 +2045,8 @@ class CommonController extends ApiController
`clients`.`funnel_id` = `funnel`.`id` AND
`funnel`.`agency_id` = '$agency_id' AND `funnel`.`deleted` = 0";
- } else if ($section == 'requisitions') {
- $sql1 = "SELECT `req`.`funnel_id`, COUNT(DISTINCT `req`.`id`) AS `count`
+ } else if ($section == 'requisitions') {
+ $sql1 = "SELECT `req`.`funnel_id`, COUNT(DISTINCT `req`.`id`) AS `count`
FROM `events_clients` AS `events`
LEFT JOIN `requisitions` AS `req` ON `req`.`id` = `events`.`req_id`
WHERE (`events`.`user_id` = '$user_id' AND `events`.`from_id` = '$user_id') AND
@@ -2058,7 +2058,7 @@ class CommonController extends ApiController
`req`.`funnel_id` = 0
GROUP BY `req`.`funnel_id`";
- $sql1_list = "SELECT `req`.`funnel_id`, `req`.`id`
+ $sql1_list = "SELECT `req`.`funnel_id`, `req`.`id`
FROM `events_clients` AS `events`
LEFT JOIN `requisitions` AS `req` ON `req`.`id` = `events`.`req_id`
WHERE (`events`.`user_id` = '$user_id' AND `events`.`from_id` = '$user_id') AND
@@ -2069,7 +2069,7 @@ class CommonController extends ApiController
(`req`.`who_work` = '$user_id' OR `req`.`doers` LIKE '%"".$user_id."":1%') AND
`req`.`funnel_id` = 0";
- $sql2 = "SELECT `req`.`funnel_id`, COUNT(DISTINCT `req`.`id`) AS `count`
+ $sql2 = "SELECT `req`.`funnel_id`, COUNT(DISTINCT `req`.`id`) AS `count`
FROM `events_clients` AS `events`
LEFT JOIN `requisitions` AS `req` ON `req`.`id` = `events`.`req_id`
JOIN `funnel` AS `funnel`
@@ -2083,7 +2083,7 @@ class CommonController extends ApiController
`funnel`.`agency_id` = '$agency_id' AND `funnel`.`deleted` = 0
GROUP BY `req`.`funnel_id`";
- $sql2_list = "SELECT `req`.`funnel_id`, `req`.`id`
+ $sql2_list = "SELECT `req`.`funnel_id`, `req`.`id`
FROM `events_clients` AS `events`
LEFT JOIN `requisitions` AS `req` ON `req`.`id` = `events`.`req_id`
JOIN `funnel` AS `funnel`
@@ -2096,46 +2096,46 @@ class CommonController extends ApiController
`req`.`funnel_id` = `funnel`.`id` AND
`funnel`.`agency_id` = '$agency_id' AND `funnel`.`deleted` = 0";
- }
+ }
- $res1 = mysql_query($sql1);
- if (mysql_num_rows($res1)) {
- while($counter = mysql_fetch_assoc($res1)) {
- $funnelCounts[$counter['funnel_id']] = $counter['count'];
- }
- }
+ $res1 = mysql_query($sql1);
+ if (mysql_num_rows($res1)) {
+ while($counter = mysql_fetch_assoc($res1)) {
+ $funnelCounts[$counter['funnel_id']] = $counter['count'];
+ }
+ }
- $res1_list = mysql_query($sql1_list);
- if (mysql_num_rows($res1_list)) {
- while($row = mysql_fetch_assoc($res1_list)) {
- $new_ids[] = $row['id'];
- }
- }
+ $res1_list = mysql_query($sql1_list);
+ if (mysql_num_rows($res1_list)) {
+ while($row = mysql_fetch_assoc($res1_list)) {
+ $new_ids[] = $row['id'];
+ }
+ }
- $res2 = mysql_query($sql2);
- if (mysql_num_rows($res2)) {
- while($counter = mysql_fetch_assoc($res2)) {
- $funnelCounts[$counter['funnel_id']] = $counter['count'];
- }
- }
+ $res2 = mysql_query($sql2);
+ if (mysql_num_rows($res2)) {
+ while($counter = mysql_fetch_assoc($res2)) {
+ $funnelCounts[$counter['funnel_id']] = $counter['count'];
+ }
+ }
- $res2_list = mysql_query($sql2_list);
- if (mysql_num_rows($res2_list)) {
- while($row = mysql_fetch_assoc($res2_list)) {
- $new_ids[] = $row['id'];
- }
- }
+ $res2_list = mysql_query($sql2_list);
+ if (mysql_num_rows($res2_list)) {
+ while($row = mysql_fetch_assoc($res2_list)) {
+ $new_ids[] = $row['id'];
+ }
+ }
- if (count($new_ids) > 0) {
- if (($section == 'clients'))
- $_SESSION['new_transfers']['clients'] = $new_ids;
- else if (($section == 'requisitions'))
- $_SESSION['new_transfers']['requisitions'] = $new_ids;
- }
- }
+ if (count($new_ids) > 0) {
+ if (($section == 'clients'))
+ $_SESSION['new_transfers']['clients'] = $new_ids;
+ else if (($section == 'requisitions'))
+ $_SESSION['new_transfers']['requisitions'] = $new_ids;
+ }
+ }
- $is_default = false;
- /*if ($use_custom) {
+ $is_default = false;
+ /*if ($use_custom) {
$is_default = true;
$funnels[] = [
'id' => 0,
@@ -2181,1565 +2181,1565 @@ class CommonController extends ApiController
$errors[] = mysql_error();
}*/
- $funnelClass = new \Funnel();
- $funnelClass->set_agency_id($agency_id);
- $funnelClass->set_user_id($user_id);
- $funnelsRaw = $funnelClass->get_funnels($section);
- $funnels = array();
- if (is_array($funnelsRaw)) {
- foreach ($funnelsRaw as $rF) {
- $is_default_custom = false;
- if (!$is_default && (int)$rF['$funnel'] == 0) {
- $is_default_custom = true;
- $is_default = true;
- }
- $funnels[] = array(
- 'id' => (int)$rF['id'],
- 'name' => (isset($rF['name']) && $rF['name'] !== null && $rF['name'] !== '')
- ? (string)$rF['name']
- : 'Обычные',
- 'count' => ($funnelCounts[intval($rF['id'])] > 0) ? intval($funnelCounts[intval($rF['id'])]) : null,
- 'is_default' => $is_default_custom
- );
- }
- }
+ $funnelClass = new \Funnel();
+ $funnelClass->set_agency_id($agency_id);
+ $funnelClass->set_user_id($user_id);
+ $funnelsRaw = $funnelClass->get_funnels($section);
+ $funnels = array();
+ if (is_array($funnelsRaw)) {
+ foreach ($funnelsRaw as $rF) {
+ $is_default_custom = false;
+ if (!$is_default && (int)$rF['$funnel'] == 0) {
+ $is_default_custom = true;
+ $is_default = true;
+ }
+ $funnels[] = array(
+ 'id' => (int)$rF['id'],
+ 'name' => (isset($rF['name']) && $rF['name'] !== null && $rF['name'] !== '')
+ ? (string)$rF['name']
+ : 'Обычные',
+ 'count' => ($funnelCounts[intval($rF['id'])] > 0) ? intval($funnelCounts[intval($rF['id'])]) : null,
+ 'is_default' => $is_default_custom
+ );
+ }
+ }
- if (!$error) {
- if ($need_return) {
- return $funnels;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'count' => count($funnels),
- 'list' => $funnels
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
+ if (!$error) {
+ if ($need_return) {
+ return $funnels;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'count' => count($funnels),
+ 'list' => $funnels
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function getAllFunnelsData($app, $get = null, $post = null, $need_return = false) {
+ public function getAllFunnelsData($app, $get = null, $post = null, $need_return = false) {
- $error = false;
- $errors = [];
+ $error = false;
+ $errors = [];
- $only_active = $get['only_active'] || true;
- $section = $get['section']; // requisitions, clients
+ $only_active = $get['only_active'] || true;
+ $section = $get['section']; // requisitions, clients
- if ($user_id = $_SESSION['id']) {
+ if ($user_id = $_SESSION['id']) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
- $pdo = $app->container->get('mypdo');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+ $pdo = $app->container->get('mypdo');
- $users_inst = new \User();
- $agency_id = $users_inst->getAgencyIdForUser($user_id);
- /*error_reporting(E_ALL | E_STRICT);
+ $users_inst = new \User();
+ $agency_id = $users_inst->getAgencyIdForUser($user_id);
+ /*error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);*/
- $items = [];
- $response = [];
+ $items = [];
+ $response = [];
- // Нулевая воронка
- $sql = "SELECT * FROM `funnel_default` WHERE `agency_id` = {$agency_id}";
- if ($query = $pdo->query($sql)) {
+ // Нулевая воронка
+ $sql = "SELECT * FROM `funnel_default` WHERE `agency_id` = {$agency_id}";
+ if ($query = $pdo->query($sql)) {
- $default_steps = [
- 1 => [
- 'id' => 1,
- 'name' => 'Новый',
- ],
- 2 => [
- 'id' => 2,
- 'name' => 'В работе',
- ],
- 3 => [
- 'id' => 3,
- 'name' => 'Презентация',
- ],
- 4 => [
- 'id' => 4,
- 'name' => 'Показ',
- ],
- 5 => [
- 'id' => 5,
- 'name' => 'Бронь',
- ],
- 6 => [
- 'id' => 6,
- 'name' => 'Подаем на ипотеку',
- ],
- 7 => [
- 'id' => 7,
- 'name' => 'Сделка',
- ],
- 8 => [
- 'id' => 8,
- 'name' => 'Закрыт',
- ],
- ];
+ $default_steps = [
+ 1 => [
+ 'id' => 1,
+ 'name' => 'Новый',
+ ],
+ 2 => [
+ 'id' => 2,
+ 'name' => 'В работе',
+ ],
+ 3 => [
+ 'id' => 3,
+ 'name' => 'Презентация',
+ ],
+ 4 => [
+ 'id' => 4,
+ 'name' => 'Показ',
+ ],
+ 5 => [
+ 'id' => 5,
+ 'name' => 'Бронь',
+ ],
+ 6 => [
+ 'id' => 6,
+ 'name' => 'Подаем на ипотеку',
+ ],
+ 7 => [
+ 'id' => 7,
+ 'name' => 'Сделка',
+ ],
+ 8 => [
+ 'id' => 8,
+ 'name' => 'Закрыт',
+ ],
+ ];
- if ($pdo->num_rows($query)) {
+ if ($pdo->num_rows($query)) {
- $row = $pdo->fetch_assoc($query);
+ $row = $pdo->fetch_assoc($query);
- $name = 'Обычные';
- if (!empty($row['name']))
- $name = $row['name'];
+ $name = 'Обычные';
+ if (!empty($row['name']))
+ $name = $row['name'];
- $items[] = [
- 'id' => 0,
- 'name' => $name,
- 'is_default' => true,
- 'is_client' => (bool)$row['is_client'],
- 'is_req' => (bool)$row['is_req'],
- 'is_stage' => (bool)$row['is_stage'],
- 'is_show_funnels' => (bool)$row['is_show_funnels'],
- 'steps' => $default_steps,
- 'order' => 0,
- ];
- } else {
- $items[] = [
- 'id' => 0,
- 'name' => 'Обычные',
- 'is_default' => true,
- 'is_client' => true,
- 'is_req' => true,
- 'is_stage' => true,
- 'is_show_funnels' => true,
- 'steps' => $default_steps,
- 'order' => 0,
- ];
- }
- } else {
- $error = true;
- }
+ $items[] = [
+ 'id' => 0,
+ 'name' => $name,
+ 'is_default' => true,
+ 'is_client' => (bool)$row['is_client'],
+ 'is_req' => (bool)$row['is_req'],
+ 'is_stage' => (bool)$row['is_stage'],
+ 'is_show_funnels' => (bool)$row['is_show_funnels'],
+ 'steps' => $default_steps,
+ 'order' => 0,
+ ];
+ } else {
+ $items[] = [
+ 'id' => 0,
+ 'name' => 'Обычные',
+ 'is_default' => true,
+ 'is_client' => true,
+ 'is_req' => true,
+ 'is_stage' => true,
+ 'is_show_funnels' => true,
+ 'steps' => $default_steps,
+ 'order' => 0,
+ ];
+ }
+ } else {
+ $error = true;
+ }
- // Остальные (кастомные) воронки
- if ($only_active)
- $sql = "SELECT * FROM `funnel` WHERE `agency_id` = {$agency_id} AND `deleted` = 0";
- else
- $sql = "SELECT * FROM `funnel` WHERE `agency_id` = {$agency_id}";
+ // Остальные (кастомные) воронки
+ if ($only_active)
+ $sql = "SELECT * FROM `funnel` WHERE `agency_id` = {$agency_id} AND `deleted` = 0";
+ else
+ $sql = "SELECT * FROM `funnel` WHERE `agency_id` = {$agency_id}";
- if ($section == 'clients')
- $sql .= " AND `is_client` = 1";
- else if ($section == 'requisitions')
- $sql .= " AND `is_req` = 1";
+ if ($section == 'clients')
+ $sql .= " AND `is_client` = 1";
+ else if ($section == 'requisitions')
+ $sql .= " AND `is_req` = 1";
- $sql .= " ORDER BY `id`";
+ $sql .= " ORDER BY `id`";
- if ($query = $pdo->query($sql)) {
- if ($pdo->num_rows($query)) {
- while($row = $pdo->fetch_assoc($query)) {
+ if ($query = $pdo->query($sql)) {
+ if ($pdo->num_rows($query)) {
+ while($row = $pdo->fetch_assoc($query)) {
- $row['date'] = date('d.m.Y H:i:s', strtotime($row['date_create']));
- $row['role'] = htmlspecialchars_decode($row['role']);
- $row['client_type'] = htmlspecialchars_decode($row['client_type']);
- $row['main_step'] = '';
- $row['is_default'] = 0;
+ $row['date'] = date('d.m.Y H:i:s', strtotime($row['date_create']));
+ $row['role'] = htmlspecialchars_decode($row['role']);
+ $row['client_type'] = htmlspecialchars_decode($row['client_type']);
+ $row['main_step'] = '';
+ $row['is_default'] = 0;
- // Этапы по воронкам
- $sql = "SELECT * FROM `funnel_steps` WHERE `funnel_id` = ".$row['id']." AND deleted = 0 ORDER BY `main` DESC";
- if ($steps = $pdo->query($sql)) {
- if ($pdo->num_rows($steps)) {
+ // Этапы по воронкам
+ $sql = "SELECT * FROM `funnel_steps` WHERE `funnel_id` = ".$row['id']." AND deleted = 0 ORDER BY `main` DESC";
+ if ($steps = $pdo->query($sql)) {
+ if ($pdo->num_rows($steps)) {
- $prev_steps = [];
- $steps_data = [];
+ $prev_steps = [];
+ $steps_data = [];
- while($step = $pdo->fetch_assoc($steps)) {
- $steps_data[(int)$step['id']] = $step;
- }
+ while($step = $pdo->fetch_assoc($steps)) {
+ $steps_data[(int)$step['id']] = $step;
+ }
- foreach ($steps_data as $step_id => $step) {
+ foreach ($steps_data as $step_id => $step) {
- $step['name_number'] = $step['name'];
+ $step['name_number'] = $step['name'];
- if ($step['main'] == 1)
- $step['name_number'] = '1. '.$step['name'];
- else if ($step['order_number'] > 0)
- $step['name_number'] = $step['order_number'].'. '.$step['name'];
+ if ($step['main'] == 1)
+ $step['name_number'] = '1. '.$step['name'];
+ else if ($step['order_number'] > 0)
+ $step['name_number'] = $step['order_number'].'. '.$step['name'];
- if (!empty($step['next_step'])) {
- $next_steps_ids = json_decode(html_entity_decode($step['next_step']), ENT_QUOTES);
- foreach ($next_steps_ids as $next_step_id) {
- $prev_steps[(int)$next_step_id][] = ['id' => (int)$step['id'], 'name' => $step['name']];
- }
- }
+ if (!empty($step['next_step'])) {
+ $next_steps_ids = json_decode(html_entity_decode($step['next_step']), ENT_QUOTES);
+ foreach ($next_steps_ids as $next_step_id) {
+ $prev_steps[(int)$next_step_id][] = ['id' => (int)$step['id'], 'name' => $step['name']];
+ }
+ }
- $row['branches'][$step['branch']][$step['id']] = self::clearInputArray($step);
- $row['steps'][$step['id']] = self::clearInputArray($step);
+ $row['branches'][$step['branch']][$step['id']] = self::clearInputArray($step);
+ $row['steps'][$step['id']] = self::clearInputArray($step);
- if (!empty($row['steps'][$step['id']]['users_mes']))
- $row['steps'][$step['id']]['users_mes'] = json_decode($row['steps'][$step['id']]['users_mes'], true);
+ if (!empty($row['steps'][$step['id']]['users_mes']))
+ $row['steps'][$step['id']]['users_mes'] = json_decode($row['steps'][$step['id']]['users_mes'], true);
- if (!empty($row['steps'][$step['id']]['arr_next_steps'])) {
- $arr_next_steps = json_decode($row['steps'][$step['id']]['arr_next_steps'], true);
- $row['steps'][$step['id']]['arr_next_steps'] = [];
- if (is_array($arr_next_steps)) {
- foreach ($arr_next_steps as $arr_next_step) {
- if (!empty($arr_next_step['id'])) {
- $next_step = $arr_next_step['id'];
- $row['steps'][$step['id']]['arr_next_steps'][] = [
- 'id' => (int)$next_step['id'],
- 'name' => trim($next_step['name'])
- ];
- }
- }
- }
- } else {
- $row['steps'][$step['id']]['arr_next_steps'] = [];
- $next_steps_ids = json_decode(html_entity_decode($step['next_step']), ENT_QUOTES);
- foreach ($next_steps_ids as $next_step_id) {
- $next_step = $steps_data[$next_step_id];
- if (!empty($next_step)) {
- $row['steps'][$step['id']]['arr_next_steps'][] = ['id' => (int)$next_step['id'], 'name' => $next_step['name']];
- }
- }
- }
+ if (!empty($row['steps'][$step['id']]['arr_next_steps'])) {
+ $arr_next_steps = json_decode($row['steps'][$step['id']]['arr_next_steps'], true);
+ $row['steps'][$step['id']]['arr_next_steps'] = [];
+ if (is_array($arr_next_steps)) {
+ foreach ($arr_next_steps as $arr_next_step) {
+ if (!empty($arr_next_step['id'])) {
+ $next_step = $arr_next_step['id'];
+ $row['steps'][$step['id']]['arr_next_steps'][] = [
+ 'id' => (int)$next_step['id'],
+ 'name' => trim($next_step['name'])
+ ];
+ }
+ }
+ }
+ } else {
+ $row['steps'][$step['id']]['arr_next_steps'] = [];
+ $next_steps_ids = json_decode(html_entity_decode($step['next_step']), ENT_QUOTES);
+ foreach ($next_steps_ids as $next_step_id) {
+ $next_step = $steps_data[$next_step_id];
+ if (!empty($next_step)) {
+ $row['steps'][$step['id']]['arr_next_steps'][] = ['id' => (int)$next_step['id'], 'name' => $next_step['name']];
+ }
+ }
+ }
- if (!empty($prev_steps[(int)$step['id']]))
- $row['steps'][$step['id']]['arr_prev_steps'] = $prev_steps[(int)$step['id']];
- else
- $row['steps'][$step['id']]['arr_prev_steps'] = [];
+ if (!empty($prev_steps[(int)$step['id']]))
+ $row['steps'][$step['id']]['arr_prev_steps'] = $prev_steps[(int)$step['id']];
+ else
+ $row['steps'][$step['id']]['arr_prev_steps'] = [];
- $files = [];
- $sql = "SELECT * FROM `funnel_files` WHERE `etap_id` = '".$step['id']."' AND `funnel_id` = ".$row['id'];
- if ($query_files = $pdo->query($sql)) {
- if ($pdo->num_rows($query_files)) {
- while($file_row = $pdo->fetch_assoc($query_files)) {
- $path = "https://uf.joywork.ru/upload/funnels/".$row['id']."/".$file_row['guid'].".".$file_row['type'];
+ $files = [];
+ $sql = "SELECT * FROM `funnel_files` WHERE `etap_id` = '".$step['id']."' AND `funnel_id` = ".$row['id'];
+ if ($query_files = $pdo->query($sql)) {
+ if ($pdo->num_rows($query_files)) {
+ while($file_row = $pdo->fetch_assoc($query_files)) {
+ $path = "https://uf.joywork.ru/upload/funnels/".$row['id']."/".$file_row['guid'].".".$file_row['type'];
$files[] = ['guid' => $file_row['guid'], 'isUpload' => true, 'uploads' => false, 'name' => $file_row['name']];
}
- }
- }
+ }
+ }
- $row['steps'][$step['id']]['files'] = $files;
- $row['main_steps'][] = ['id' => $step['id'], 'name' => $step['name']];
+ $row['steps'][$step['id']]['files'] = $files;
+ $row['main_steps'][] = ['id' => $step['id'], 'name' => $step['name']];
- if ($step['main'] == 1)
- $row['main_step'] = ['id' => $step['id'], 'name' => $step['name']];
+ if ($step['main'] == 1)
+ $row['main_step'] = ['id' => $step['id'], 'name' => $step['name']];
- }
- }
- } else {
- $error = true;
- }
+ }
+ }
+ } else {
+ $error = true;
+ }
- $items[] = $row;
- }
- }
- } else {
- $error = true;
- }
+ $items[] = $row;
+ }
+ }
+ } else {
+ $error = true;
+ }
- if (!empty($items)) {
- foreach($items as $item) {
+ if (!empty($items)) {
+ foreach($items as $item) {
- $steps = [];
- foreach($item['steps'] as $step_id => $step) {
- $steps[] = [
- 'id' => (int)$step_id,
- 'name' => $step['name'],
- 'prev_steps' => (!empty($step['arr_prev_steps'])) ? $step['arr_prev_steps'] : ((!empty($default_steps[(int)$step_id-1]) && $item['is_default']) ? [$default_steps[(int)$step_id-1]] : null),
- 'next_steps' => (!empty($step['arr_next_steps'])) ? $step['arr_next_steps'] : ((!empty($default_steps[(int)$step_id+1]) && $item['is_default']) ? [$default_steps[(int)$step_id+1]] : null),
- 'files' => (!empty($step['files'])) ? $step['files'] : [],
- 'tasks' => (!empty($step['tasks_list'])) ? json_decode($step['tasks_list']) : null,
- 'fields' => (!empty($step['pole_end_list'])) ? json_decode($step['pole_end_list']) : null,
- 'doers' => (!empty($step['doers'])) ? json_decode($step['doers']) : [null],
- 'is_next_variable' => ($step['next_step_change'] === "Зависит от поля Ветвление этапов"),
- ];
- }
+ $steps = [];
+ foreach($item['steps'] as $step_id => $step) {
+ $steps[] = [
+ 'id' => (int)$step_id,
+ 'name' => $step['name'],
+ 'prev_steps' => (!empty($step['arr_prev_steps'])) ? $step['arr_prev_steps'] : ((!empty($default_steps[(int)$step_id-1]) && $item['is_default']) ? [$default_steps[(int)$step_id-1]] : null),
+ 'next_steps' => (!empty($step['arr_next_steps'])) ? $step['arr_next_steps'] : ((!empty($default_steps[(int)$step_id+1]) && $item['is_default']) ? [$default_steps[(int)$step_id+1]] : null),
+ 'files' => (!empty($step['files'])) ? $step['files'] : [],
+ 'tasks' => (!empty($step['tasks_list'])) ? json_decode($step['tasks_list']) : null,
+ 'fields' => (!empty($step['pole_end_list'])) ? json_decode($step['pole_end_list']) : null,
+ 'doers' => (!empty($step['doers'])) ? json_decode($step['doers']) : [null],
+ 'is_next_variable' => ($step['next_step_change'] === "Зависит от поля Ветвление этапов"),
+ ];
+ }
- $response[] = [
- 'id' => (int)$item['id'],
- 'name' => trim($item['name']),
- 'order' => (!empty($item['order_number'])) ? (int)$item['order_number'] : 0,
- 'is_client' => (bool)$item['is_client'],
- 'is_default' => (bool)$item['is_default'],
- 'is_deleted' => (bool)$item['deleted'],
- 'is_req' => (bool)$item['is_req'],
- 'steps' => $steps,
- 'client_types' => (!empty($item['client_type'])) ? json_decode($item['client_type']) : null,
- 'roles' => (!empty($item['role'])) ? json_decode($item['role']) : null,
- 'agency_id' => (int)$item['agency_id'],
- 'created_by' => (int)$item['user_id'],
- 'created_at' => $item['date_create'],
- ];
- }
- }
+ $response[] = [
+ 'id' => (int)$item['id'],
+ 'name' => trim($item['name']),
+ 'order' => (!empty($item['order_number'])) ? (int)$item['order_number'] : 0,
+ 'is_client' => (bool)$item['is_client'],
+ 'is_default' => (bool)$item['is_default'],
+ 'is_deleted' => (bool)$item['deleted'],
+ 'is_req' => (bool)$item['is_req'],
+ 'steps' => $steps,
+ 'client_types' => (!empty($item['client_type'])) ? json_decode($item['client_type']) : null,
+ 'roles' => (!empty($item['role'])) ? json_decode($item['role']) : null,
+ 'agency_id' => (int)$item['agency_id'],
+ 'created_by' => (int)$item['user_id'],
+ 'created_at' => $item['date_create'],
+ ];
+ }
+ }
- if (!$error) {
- if ($need_return) {
- return $response;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'list' => $response,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
+ if (!$error) {
+ if ($need_return) {
+ return $response;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'list' => $response,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function getList($app, $get = null, $post = null, $need_return = false) {
+ public function getList($app, $get = null, $post = null, $need_return = false) {
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $sql = "";
- $list = [];
- $section = $get['section'];
- switch ($section) {
+ $sql = "";
+ $list = [];
+ $section = $get['section'];
+ switch ($section) {
- case 'rooms_count' :
+ case 'rooms_count' :
- $ROOMS_COUNT = [
- 1 => "1 комн.",
- 2 => "2 комн.",
- 3 => "3 комн.",
- 4 => "4+ комн.",
- 5 => "Студия",
- ];
+ $ROOMS_COUNT = [
+ 1 => "1 комн.",
+ 2 => "2 комн.",
+ 3 => "3 комн.",
+ 4 => "4+ комн.",
+ 5 => "Студия",
+ ];
- $list = [];
- foreach($ROOMS_COUNT as $key => $value) {
- $list[$key] = [
- 'id' => $key,
- 'name' => $value
- ];
- }
+ $list = [];
+ foreach($ROOMS_COUNT as $key => $value) {
+ $list[$key] = [
+ 'id' => $key,
+ 'name' => $value
+ ];
+ }
- break;
+ break;
- case 'complexes':
- $sql = "SELECT `id`, `name` FROM `blocks` ORDER BY `name`";
- break;
+ case 'complexes':
+ $sql = "SELECT `id`, `name` FROM `blocks` ORDER BY `name`";
+ break;
- case 'banks_list':
- $sql = "SELECT `id`, `name` FROM `banks` ORDER BY `name`";
- break;
+ case 'banks_list':
+ $sql = "SELECT `id`, `name` FROM `banks` ORDER BY `name`";
+ break;
- case 'denial_work':
- {
- $user = new \User;
- $user->get($user_id);
- $agency_id = $user->agencyId;
- $sql = "SELECT `id`, `name` FROM `denial_work` WHERE (agency_id = 0 or agency_id={$agency_id}) and del = 0";
+ case 'denial_work':
+ {
+ $user = new \User;
+ $user->get($user_id);
+ $agency_id = $user->agencyId;
+ $sql = "SELECT `id`, `name` FROM `denial_work` WHERE (agency_id = 0 or agency_id={$agency_id}) and del = 0";
- }
- break;
+ }
+ break;
- case 'floor_materials':
- $sql = "SELECT `id`, `name` FROM `floor_material`";
- break;
+ case 'floor_materials':
+ $sql = "SELECT `id`, `name` FROM `floor_material`";
+ break;
- case 'house_categories':
- $sql = "SELECT `id`, `name` FROM `house_category`";
- break;
+ case 'house_categories':
+ $sql = "SELECT `id`, `name` FROM `house_category`";
+ break;
- case 'commerce_portal':
- $sql = "SELECT `id`, `name` FROM `commerc_portal`";
- break;
+ case 'commerce_portal':
+ $sql = "SELECT `id`, `name` FROM `commerc_portal`";
+ break;
- case 'commerce_purpose':
- $sql = "SELECT `id`, `name` FROM `commerc_purpose`";
- break;
+ case 'commerce_purpose':
+ $sql = "SELECT `id`, `name` FROM `commerc_purpose`";
+ break;
- case 'commerce_land_categories':
- $sql = "SELECT `id`, `name` FROM `commerc_land_category`";
- break;
+ case 'commerce_land_categories':
+ $sql = "SELECT `id`, `name` FROM `commerc_land_category`";
+ break;
- case 'commerce_permitted_use':
- $sql = "SELECT `id`, `name` FROM `commerc_permitted_use`";
- break;
+ case 'commerce_permitted_use':
+ $sql = "SELECT `id`, `name` FROM `commerc_permitted_use`";
+ break;
- case 'commerce_electricity':
- $sql = "SELECT `id`, `name` FROM `commerc_electricity`";
- break;
+ case 'commerce_electricity':
+ $sql = "SELECT `id`, `name` FROM `commerc_electricity`";
+ break;
case 'electricity_types':
$sql = "SELECT `id`, `name` FROM `electricity_type` order by `id`";
break;
- case 'commerce_gas':
- $sql = "SELECT `id`, `name` FROM `commerc_gas`";
- break;
+ case 'commerce_gas':
+ $sql = "SELECT `id`, `name` FROM `commerc_gas`";
+ break;
case 'gas_types':
$sql = "SELECT `id`, `name` FROM `gas_type` order by `id`";
break;
- case 'commerce_water':
- $sql = "SELECT `id`, `name` FROM `commerc_gas`";
- break;
+ case 'commerce_water':
+ $sql = "SELECT `id`, `name` FROM `commerc_gas`";
+ break;
- case 'commerce_sewage':
- $sql = "SELECT `id`, `name` FROM `commerc_gas`";
- break;
+ case 'commerce_sewage':
+ $sql = "SELECT `id`, `name` FROM `commerc_gas`";
+ break;
case 'sewerage_types':
$sql = "SELECT `id`, `name` FROM `sewerage_type` order by `id`";
break;
- case 'commerce_driveways':
- $sql = "SELECT `id`, `name` FROM `commerc_driveways`";
- break;
+ case 'commerce_driveways':
+ $sql = "SELECT `id`, `name` FROM `commerc_driveways`";
+ break;
- case 'commerce_services':
- $sql = "SELECT `id`, `name` FROM `commerc_services`";
- break;
+ case 'commerce_services':
+ $sql = "SELECT `id`, `name` FROM `commerc_services`";
+ break;
- case 'building_types' :
- $sql = "SELECT `id`, `name` FROM `commerc_building_type`";
- break;
+ case 'building_types' :
+ $sql = "SELECT `id`, `name` FROM `commerc_building_type`";
+ break;
- case 'building_classes' :
- $sql = "SELECT `id`, `name` FROM `commerc_building_class`";
- break;
+ case 'building_classes' :
+ $sql = "SELECT `id`, `name` FROM `commerc_building_class`";
+ break;
- case 'houseline_types' :
- $sql = "SELECT `id`, `name` FROM `commerc_houselinetype`";
- break;
+ case 'houseline_types' :
+ $sql = "SELECT `id`, `name` FROM `commerc_houselinetype`";
+ break;
- case 'building_categories' :
- $sql = "SELECT `id`, `name` FROM `commerc_building_category`";
- break;
+ case 'building_categories' :
+ $sql = "SELECT `id`, `name` FROM `commerc_building_category`";
+ break;
- case 'entrance_types' :
- $sql = "SELECT `id`, `name` FROM `commerc_opened`";
- break;
+ case 'entrance_types' :
+ $sql = "SELECT `id`, `name` FROM `commerc_opened`";
+ break;
- case 'building_ventilations' :
- $list = [
- [
- 'id' => 0,
- 'name' => 'Нет',
- ], [
- 'id' => 1,
- 'name' => 'Естественная',
- ], [
- 'id' => 2,
- 'name' => 'Приточная',
- ],
- ];
- break;
+ case 'building_ventilations' :
+ $list = [
+ [
+ 'id' => 0,
+ 'name' => 'Нет',
+ ], [
+ 'id' => 1,
+ 'name' => 'Естественная',
+ ], [
+ 'id' => 2,
+ 'name' => 'Приточная',
+ ],
+ ];
+ break;
- case 'periods' :
- $list = [
- [
- 'id' => 1,
- 'name' => 'Сегодня',
- ], [
- 'id' => 2,
- 'name' => 'Неделя',
- ], [
- 'id' => 3,
- 'name' => 'Месяц',
- ], [
- 'id' => 4,
- 'name' => 'Последние 30 дней',
- ], [
- 'id' => 5,
- 'name' => 'Квартал',
- ], [
- 'id' => 6,
- 'name' => 'Последние 90 дней',
- ], [
- 'id' => 7,
- 'name' => 'Год',
- ], [
- 'id' => 8,
- 'name' => 'Все время',
- ], [
- 'id' => 9,
- 'name' => 'Период',
- ],
- ];
- break;
+ case 'periods' :
+ $list = [
+ [
+ 'id' => 1,
+ 'name' => 'Сегодня',
+ ], [
+ 'id' => 2,
+ 'name' => 'Неделя',
+ ], [
+ 'id' => 3,
+ 'name' => 'Месяц',
+ ], [
+ 'id' => 4,
+ 'name' => 'Последние 30 дней',
+ ], [
+ 'id' => 5,
+ 'name' => 'Квартал',
+ ], [
+ 'id' => 6,
+ 'name' => 'Последние 90 дней',
+ ], [
+ 'id' => 7,
+ 'name' => 'Год',
+ ], [
+ 'id' => 8,
+ 'name' => 'Все время',
+ ], [
+ 'id' => 9,
+ 'name' => 'Период',
+ ],
+ ];
+ break;
- case 'building_conditioning' :
- $list = [
- [
- 'id' => 0,
- 'name' => 'Нет',
- ], [
- 'id' => 1,
- 'name' => 'Местное',
- ], [
- 'id' => 2,
- 'name' => 'Центральное',
- ],
- ];
- break;
+ case 'building_conditioning' :
+ $list = [
+ [
+ 'id' => 0,
+ 'name' => 'Нет',
+ ], [
+ 'id' => 1,
+ 'name' => 'Местное',
+ ], [
+ 'id' => 2,
+ 'name' => 'Центральное',
+ ],
+ ];
+ break;
- case 'building_heating' :
- $list = [
- [
- 'id' => 0,
- 'name' => 'Нет',
- ], [
- 'id' => 1,
- 'name' => 'Автономное',
- ], [
- 'id' => 2,
- 'name' => 'Центральное',
- ],
- ];
- break;
+ case 'building_heating' :
+ $list = [
+ [
+ 'id' => 0,
+ 'name' => 'Нет',
+ ], [
+ 'id' => 1,
+ 'name' => 'Автономное',
+ ], [
+ 'id' => 2,
+ 'name' => 'Центральное',
+ ],
+ ];
+ break;
- case 'building_firefighting' :
- $list = [
- [
- 'id' => 0,
- 'name' => 'Нет',
- ], [
- 'id' => 1,
- 'name' => 'Гидрантная',
- ], [
- 'id' => 2,
- 'name' => 'Спринклерная',
- ], [
- 'id' => 3,
- 'name' => 'Порошковая',
- ], [
- 'id' => 4,
- 'name' => 'Газовая',
- ], [
- 'id' => 5,
- 'name' => 'Сигнализация',
- ],
- ];
- break;
+ case 'building_firefighting' :
+ $list = [
+ [
+ 'id' => 0,
+ 'name' => 'Нет',
+ ], [
+ 'id' => 1,
+ 'name' => 'Гидрантная',
+ ], [
+ 'id' => 2,
+ 'name' => 'Спринклерная',
+ ], [
+ 'id' => 3,
+ 'name' => 'Порошковая',
+ ], [
+ 'id' => 4,
+ 'name' => 'Газовая',
+ ], [
+ 'id' => 5,
+ 'name' => 'Сигнализация',
+ ],
+ ];
+ break;
- case 'garages' :
- $sql = "SELECT `id`, `name` FROM `garage_type`";
- break;
+ case 'garages' :
+ $sql = "SELECT `id`, `name` FROM `garage_type`";
+ break;
- case 'garages_types' :
- $sql = "SELECT `id`, `name` FROM `garage_vid`";
- break;
+ case 'garages_types' :
+ $sql = "SELECT `id`, `name` FROM `garage_vid`";
+ break;
- case 'boxes_types' :
- $list = [
- [
- 'id' => 1,
- 'name' => 'Кирпичный',
- ], [
- 'id' => 2,
- 'name' => 'Металлический',
- ], [
- 'id' => 3,
- 'name' => 'Железобетонный',
- ],
- ];
- break;
+ case 'boxes_types' :
+ $list = [
+ [
+ 'id' => 1,
+ 'name' => 'Кирпичный',
+ ], [
+ 'id' => 2,
+ 'name' => 'Металлический',
+ ], [
+ 'id' => 3,
+ 'name' => 'Железобетонный',
+ ],
+ ];
+ break;
- case 'commerce_status' :
- $sql = "SELECT `id`, `name` FROM `commerc_status`";
- break;
+ case 'commerce_status' :
+ $sql = "SELECT `id`, `name` FROM `commerc_status`";
+ break;
- case 'commerce_specifications' :
- $sql = "SELECT `id`, `name` FROM `commerc_specifications`";
- break;
+ case 'commerce_specifications' :
+ $sql = "SELECT `id`, `name` FROM `commerc_specifications`";
+ break;
- case 'commerce_infrastructures' :
- $sql = "SELECT `id`, `name` FROM `commerc_infrastructure` WHERE id < 27";
- break;
+ case 'commerce_infrastructures' :
+ $sql = "SELECT `id`, `name` FROM `commerc_infrastructure` WHERE id < 27";
+ break;
- case 'commerce_infrastructures2' :
- $sql = "SELECT `id`, `name` FROM `commerc_infrastructure` WHERE `vid` = 1";
- break;
+ case 'commerce_infrastructures2' :
+ $sql = "SELECT `id`, `name` FROM `commerc_infrastructure` WHERE `vid` = 1";
+ break;
- case 'commerce_infrastructures3' :
- $sql = "SELECT `id`, `name` FROM `commerc_infrastructure` WHERE `vid1` = 1";
- break;
+ case 'commerce_infrastructures3' :
+ $sql = "SELECT `id`, `name` FROM `commerc_infrastructure` WHERE `vid1` = 1";
+ break;
- case 'sale_types' :
- $list = [
- [
- 'id' => 1,
- 'name' => 'Договор уступки права требования',
- ], [
- 'id' => 2,
- 'name' => 'Договор ЖСК',
- ], [
- 'id' => 3,
- 'name' => 'Свободная продажа',
- ], [
- 'id' => 4,
- 'name' => '214-ФЗ',
- ], [
- 'id' => 5,
- 'name' => 'Договор инвестирования',
- ], [
- 'id' => 6,
- 'name' => 'Предварительный договор купли-продажи',
- ],
- ];
- break;
+ case 'sale_types' :
+ $list = [
+ [
+ 'id' => 1,
+ 'name' => 'Договор уступки права требования',
+ ], [
+ 'id' => 2,
+ 'name' => 'Договор ЖСК',
+ ], [
+ 'id' => 3,
+ 'name' => 'Свободная продажа',
+ ], [
+ 'id' => 4,
+ 'name' => '214-ФЗ',
+ ], [
+ 'id' => 5,
+ 'name' => 'Договор инвестирования',
+ ], [
+ 'id' => 6,
+ 'name' => 'Предварительный договор купли-продажи',
+ ],
+ ];
+ break;
- case 'legal_address' :
- $list = [
- [
- 'id' => 1,
- 'name' => 'Предоставляется',
- ], [
- 'id' => 2,
- 'name' => 'Не предоставляется',
- ],
- ];
- break;
+ case 'legal_address' :
+ $list = [
+ [
+ 'id' => 1,
+ 'name' => 'Предоставляется',
+ ], [
+ 'id' => 2,
+ 'name' => 'Не предоставляется',
+ ],
+ ];
+ break;
- case 'decoration_types' :
- $sql = "SELECT `id`, `name` FROM `avito_decoration_types` ORDER BY `id`";
- break;
+ case 'decoration_types' :
+ $sql = "SELECT `id`, `name` FROM `avito_decoration_types` ORDER BY `id`";
+ break;
- case 'flat_types' :
- $sql = "SELECT `id`, `name` FROM `zipal_new_flat_type` ORDER BY `id`";
- break;
+ case 'flat_types' :
+ $sql = "SELECT `id`, `name` FROM `zipal_new_flat_type` ORDER BY `id`";
+ break;
- case 'investor_types' :
- $sql = "SELECT `id`, `name` FROM `investor_type` ORDER BY `id`";
- break;
+ case 'investor_types' :
+ $sql = "SELECT `id`, `name` FROM `investor_type` ORDER BY `id`";
+ break;
- case 'access' :
- $list = [
- [
- 'id' => 1,
- 'name' => 'Свободный',
- ], [
- 'id' => 2,
- 'name' => 'Пропускная система',
- ],
- ];
- break;
+ case 'access' :
+ $list = [
+ [
+ 'id' => 1,
+ 'name' => 'Свободный',
+ ], [
+ 'id' => 2,
+ 'name' => 'Пропускная система',
+ ],
+ ];
+ break;
- case 'conditions' :
- $sql = "SELECT `id`, `name` FROM `commer_condition` ORDER BY `id`";
- break;
+ case 'conditions' :
+ $sql = "SELECT `id`, `name` FROM `commer_condition` ORDER BY `id`";
+ break;
- case 'furnitures' :
- $list = [
- [
- 'id' => 1,
- 'name' => 'Нет',
- ], [
- 'id' => 2,
- 'name' => 'Есть',
- ],
- ];
- break;
+ case 'furnitures' :
+ $list = [
+ [
+ 'id' => 1,
+ 'name' => 'Нет',
+ ], [
+ 'id' => 2,
+ 'name' => 'Есть',
+ ],
+ ];
+ break;
- case 'layouts' :
- $sql = "SELECT `id`, `name` FROM `layout_object` ORDER BY `id`";
- break;
+ case 'layouts' :
+ $sql = "SELECT `id`, `name` FROM `layout_object` ORDER BY `id`";
+ break;
- case 'occupieds' :
- $list = [
- [
- 'id' => 1,
- 'name' => 'Не занято',
- ], [
- 'id' => 2,
- 'name' => 'Занято',
- ],
- ];
- break;
+ case 'occupieds' :
+ $list = [
+ [
+ 'id' => 1,
+ 'name' => 'Не занято',
+ ], [
+ 'id' => 2,
+ 'name' => 'Занято',
+ ],
+ ];
+ break;
- case 'property_types' :
- $sql = "SELECT `id`, `name` FROM `property_type` ORDER BY `id`";
- break;
+ case 'property_types' :
+ $sql = "SELECT `id`, `name` FROM `property_type` ORDER BY `id`";
+ break;
- case 'rent_house_types' :
- $sql = "SELECT `id`, `name` FROM `house_type` ORDER BY `id`";
- break;
+ case 'rent_house_types' :
+ $sql = "SELECT `id`, `name` FROM `house_type` ORDER BY `id`";
+ break;
- case 'wall_types' :
- $sql = "SELECT `id`, `name` FROM `wall_type` ORDER BY `id`";
- break;
+ case 'wall_types' :
+ $sql = "SELECT `id`, `name` FROM `wall_type` ORDER BY `id`";
+ break;
- case 'house_wcs_types' :
- $sql = "SELECT `id`, `name` FROM `house_wcs_type` ORDER BY `id`";
- break;
+ case 'house_wcs_types' :
+ $sql = "SELECT `id`, `name` FROM `house_wcs_type` ORDER BY `id`";
+ break;
- case 'land_purposes_types' :
- $sql = "SELECT `id`, `name` FROM `land_purpose` ORDER BY `id`";
- break;
+ case 'land_purposes_types' :
+ $sql = "SELECT `id`, `name` FROM `land_purpose` ORDER BY `id`";
+ break;
- case 'shape_types' :
- $sql = "SELECT `id`, `name` FROM `shape_type` ORDER BY `id`";
- break;
+ case 'shape_types' :
+ $sql = "SELECT `id`, `name` FROM `shape_type` ORDER BY `id`";
+ break;
- case 'plumbing_types' :
- $sql = "SELECT `id`, `name` FROM `plumbing_type` ORDER BY `id`";
- break;
+ case 'plumbing_types' :
+ $sql = "SELECT `id`, `name` FROM `plumbing_type` ORDER BY `id`";
+ break;
- case 'relief_types' :
- $sql = "SELECT `id`, `name` FROM `relief_type` ORDER BY `id`";
- break;
+ case 'relief_types' :
+ $sql = "SELECT `id`, `name` FROM `relief_type` ORDER BY `id`";
+ break;
- case 'land_usage_types' :
- $sql = "SELECT `id`, `name` FROM `land_usage_type` ORDER BY `id`";
- break;
+ case 'land_usage_types' :
+ $sql = "SELECT `id`, `name` FROM `land_usage_type` ORDER BY `id`";
+ break;
- case 'lease_deposit_types' :
- $sql = "SELECT `id`, `name` FROM `lease_deposit` ORDER BY `id`";
- break;
+ case 'lease_deposit_types' :
+ $sql = "SELECT `id`, `name` FROM `lease_deposit` ORDER BY `id`";
+ break;
- case 'window_view_types' :
- $sql = "SELECT `id`, `name` FROM `window_view` ORDER BY `id`";
- break;
+ case 'window_view_types' :
+ $sql = "SELECT `id`, `name` FROM `window_view` ORDER BY `id`";
+ break;
- case 'renovation_types' :
- $sql = "SELECT `id`, `name` FROM `renovation` ORDER BY `id`";
- break;
+ case 'renovation_types' :
+ $sql = "SELECT `id`, `name` FROM `renovation` ORDER BY `id`";
+ break;
- case 'bathroom_types' :
- $sql = "SELECT `id`, `name` FROM `bath_type` ORDER BY `id`";
- break;
+ case 'bathroom_types' :
+ $sql = "SELECT `id`, `name` FROM `bath_type` ORDER BY `id`";
+ break;
- case 'hot_water_types' :
- $sql = "SELECT `id`, `name` FROM `hot_water` ORDER BY `id`";
- break;
+ case 'hot_water_types' :
+ $sql = "SELECT `id`, `name` FROM `hot_water` ORDER BY `id`";
+ break;
- case 'parking_types' :
- $sql = "SELECT `id`, `name` FROM `parking_type` ORDER BY `id`";
- break;
+ case 'parking_types' :
+ $sql = "SELECT `id`, `name` FROM `parking_type` ORDER BY `id`";
+ break;
- case 'parking_types1' :
- $sql = "SELECT * FROM parking_type where vid = 0 ORDER BY id";
- break;
+ case 'parking_types1' :
+ $sql = "SELECT * FROM parking_type where vid = 0 ORDER BY id";
+ break;
- case 'parking_types2' :
- $sql = "SELECT * FROM parking_type where vid1 = 1 ORDER BY id";
- break;
+ case 'parking_types2' :
+ $sql = "SELECT * FROM parking_type where vid1 = 1 ORDER BY id";
+ break;
- case 'parking_types3' :
- $sql = "SELECT * FROM parking_type where vid = 1 ORDER BY id";
- break;
+ case 'parking_types3' :
+ $sql = "SELECT * FROM parking_type where vid = 1 ORDER BY id";
+ break;
- case 'vat_types' :
- $sql = "SELECT `id`, `name` FROM `vat_type` ORDER BY `id`";
- break;
+ case 'vat_types' :
+ $sql = "SELECT `id`, `name` FROM `vat_type` ORDER BY `id`";
+ break;
- case 'wet_spots' :
- $list = [
- [
- 'id' => 1,
- 'name' => '1',
- ], [
- 'id' => 2,
- 'name' => '2',
- ], [
- 'id' => 3,
- 'name' => '3',
- ], [
- 'id' => 4,
- 'name' => '4',
- ], [
- 'id' => 5,
- 'name' => 'Нет',
- ],
- ];
- break;
+ case 'wet_spots' :
+ $list = [
+ [
+ 'id' => 1,
+ 'name' => '1',
+ ], [
+ 'id' => 2,
+ 'name' => '2',
+ ], [
+ 'id' => 3,
+ 'name' => '3',
+ ], [
+ 'id' => 4,
+ 'name' => '4',
+ ], [
+ 'id' => 5,
+ 'name' => 'Нет',
+ ],
+ ];
+ break;
- case 'countries' :
- $sql = "SELECT * FROM `country_list` WHERE `id` = 171 UNION SELECT * FROM `country_list` WHERE `id` <> 1 ORDER BY `id`";
- break;
- case 'cottage_village' :
- $sql = "SELECT * FROM cottage_village order by id";
+ case 'countries' :
+ $sql = "SELECT * FROM `country_list` WHERE `id` = 171 UNION SELECT * FROM `country_list` WHERE `id` <> 1 ORDER BY `id`";
+ break;
+ case 'cottage_village' :
+ $sql = "SELECT * FROM cottage_village order by id";
- }
+ }
if (!isset($list) || empty($list)) {
$list = array();
}
- if (!empty($sql)) {
- if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query) > 0) {
- while ($row = mysql_fetch_assoc($query)) {
- if($section == 'cottage_village') {
- if(!isset($list[$row['region_id']])) $list[$row['region_id']] = array();
- $list[$row['region_id']][] = [
- 'value' => (int)$row['id'],
- 'name' => trim($row['name']),
- ];
- } else
- $list[] = [
- 'id' => (int)$row['id'],
- 'name' => trim($row['name']),
- ];
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
-
- if (!$error) {
-
- if (count($list) && $section == 'denial_work') {
- $list[] = [
- 'id' => 0,
- 'name' => 'Другое',
- ];
- }
-
- if ($need_return) {
- return $list;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'count' => count($list),
- 'list' => $list
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
-
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
-
- public function getLists($app, $get = null, $post = null) {
-
- $lists = [];
- if ($user_id = $_SESSION['id']) {
-
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
-
- $sections = $get['sections'];
- foreach ($sections as $section) {
-
- $list = $this->getList($app, ['section' => $section], null, true);
- if ($list)
- $lists[$section] = $list;
- else
- $lists[$section] = false;
-
- }
- }
-
- if (count($lists)) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'lists' => $lists
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
-
- public function getFiles($app, $get = null, $post = null) {
-
- $error = false;
- $errors = [];
-
- $source_id = null;
- if (isset($get['source_id']))
- $source_id = (int)$get['source_id'];
-
- $section = null;
- if (isset($get['section']))
- $section = trim($get['section']);
-
- if (($user_id = $_SESSION['id']) && $source_id && $section) {
-
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
- $pdo = $app->container->get('mypdo');
-
- $list = [];
- $row = [];
-
- $field = '';
- $table = 'user_client_events';
- if ($section == 'clients') {
- $field = 'client_id';
- $table = 'user_client_events';
- } else if ($section == 'requisitions') {
- $field = 'req_id';
- $table = 'user_client_events';
- } else if ($section == 'objects') {
- $field = 'object_id';
- $table = 'user_object_events';
- }
-
- if (!empty($field) && !empty($table)) {
-
- $protocol = (self::is_ssl()) ? 'https://' : 'http://';
- $host = $protocol . $_SERVER['SERVER_NAME'];
-
- // Найденный листинг парсера (offset-free): событие-родитель файла лежит в external_listing_events,
- // event_id и object_id хранятся как РЕАЛЬНЫЕ el.id (без смещения) — валидируем владение по листинговой
- // таблице. Признак листинга — явный флаг is_external из запроса (id больше не диапазонный: коллизит с objects.id).
- if ($section == 'objects' && self::_request_flag($get, 'is_external')) {
- $sql = "SELECT * FROM clients_files as c
- WHERE object_id = {$source_id} AND event_id > 0 AND (SELECT id FROM external_listing_events WHERE id = c.event_id) > 0";
- } else {
- $sql = "SELECT * FROM clients_files as c
- WHERE {$field} = {$source_id} AND event_id > 0 AND (SELECT id from {$table} WHERE id = c.event_id) > 0";
- }
-
- if ($q = $pdo->query($sql)) {
- if ($pdo->num_rows($q) > 0) {
- while ($r = $pdo->fetch_assoc($q)) {
- if (!empty($r['name'])) {
-
- $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/";
- if ($r['client_id'] > 0)
- $file .= "clients/" . $r['client_id'] . "/";
- else if ($r['req_id'] > 0)
- $file .= "reqs/" . $r['req_id'] . "/";
- else if ($r['object_id'] > 0)
- $file .= "objects/" . $r['object_id'] . "/";
-
- $file .= $r['guid'] . '.' . $r['type'];
-
- $r['type'] = 'id';
- $r['link'] = $host . '/download_file.php?id=' . $r['id'];
-
- $unix_time = filemtime($file);
- $r['date'] = date('d.m.Y в H:i', $unix_time);
-
- if (!isset($list['names'][$r['name_id']]))
- $list['names'][$r['name_id']] = array('type' => 'id', 'from' => $section, 'from_id' => $source_id, 'id' => (int)$r['name_id']);
-
- if (file_exists($file))
- $row[$r['name_id']][] = $r;
-
- }
- }
- }
- } else {
- $error = true;
- $errors[] = $q->pdo->errorInfo();
- }
-
- if ($section == 'clients' || $section == 'requisitions' || $section == 'free') {
-
- $sql = "SELECT * FROM `funnel_files` WHERE {$field} = {$source_id}";
-
- if ($q = $pdo->query($sql)) {
- if ($pdo->num_rows($q) > 0) {
- while ($r = $pdo->fetch_assoc($q)) {
- if (!empty($r['name'])) {
- $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/funnels/";
-
- if ($r['client_id'] > 0)
- $file .= "clients/" . $r['client_id'] . "/";
- else if ($r['req_id'] > 0)
- $file .= "req/" . $r['req_id'] . "/";
-
- $file .= $r['guid'] . '.' . $r['type'];
-
- $r['type'] = 'guid';
- $r['link'] = $host . '/download_file.php?guid=' . $r['guid'];
-
- $unix_time = filemtime($file);
- $r['date'] = date('d.m.Y в H:i', $unix_time);
-
- if (!isset($list['names'][$r['etap_id']]))
- $list['names'][$r['etap_id']] = array('type' => 'guid', 'from' => $section, 'from_id' => $source_id, 'id' => (int)$r['etap_id']);
-
- if (file_exists($file))
- $row[$r['etap_id']][] = $r;
-
- }
- }
- }
- } else {
- $error = true;
- $errors[] = $q->pdo->errorInfo();
- }
- }
-
- if ($section == 'requisitions') {
-
- //поиск файлов по объекту
- $sql = "SELECT id, type_id, object_id FROM requisitions WHERE id = {$source_id}";
-
- if ($q = $pdo->query($sql)) {
- $r = $pdo->fetch_assoc($q);
- if ($r['type_id'] == 2 && $r['object_id'] > 0) {
-
- $sql = "SELECT * FROM `clients_files` as c WHERE object_id = {$r['object_id']} AND (SELECT id from user_object_events WHERE id=c.event_id)>0";
- if ($q = $pdo->query($sql)) {
- if ($pdo->num_rows($q) > 0) {
- while ($r = $pdo->fetch_assoc($q)) {
- if (!empty($r['name'])) {
-
- $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/";
- if ($r['object_id'] > 0)
- $file .= "objects/" . $r['object_id'] . "/";
-
- $file .= $r['guid'] . '.' . $r['type'];
-
- $r['type'] = 'id';
- $r['link'] = $host . '/download_file.php?id=' . $r['id'];
-
- $unix_time = filemtime($file);
- $r['date'] = date('d.m.Y в H:i', $unix_time);
- if (!isset($list['names'][$r['name_id']]))
- $list['names'][$r['name_id']] = array('type' => 'id', 'from' => 'object', 'from_id' => $r['object_id'], 'id' => (int)$r['name_id']);
-
- if (file_exists($file))
- $row[$r['name_id']][] = $r;
-
- }
- }
- }
- } else {
- $error = true;
- $errors[] = $q->pdo->errorInfo();
- }
- }
- } else {
- $error = true;
- $errors[] = $q->pdo->errorInfo();
- }
- }
-
- if ($section == 'objects') {
-
- //Поиск файлов по заявкам
- $sql_r = "SELECT id, type_id, object_id FROM requisitions WHERE object_id = {$source_id} AND type_id = 2 and deleted = 0";
-
- if ($q_r = $pdo->query($sql_r)) {
- if ($pdo->num_rows($q_r) > 0) {
- $req = $pdo->fetch_assoc($q_r);
-
- $sql = "SELECT * FROM `clients_files` as c WHERE req_id = {$req['id']} AND (SELECT id from user_client_events WHERE id=c.event_id)>0";
- if ($q = $pdo->query($sql)) {
- if ($pdo->num_rows($q) > 0) {
- while ($r = $pdo->fetch_assoc($q)) {
- if (!empty($r['name'])) {
-
- $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/";
- if ($r['req_id'] > 0)
- $file .= "reqs/" . $req['id'] . "/";
-
- $file .= $r['guid'] . '.' . $r['type'];
-
- $r['type'] = 'id';
- $r['link'] = $host . '/download_file.php?id=' . $r['id'];
-
- $unix_time = filemtime($file);
- $r['date'] = date('d.m.Y в H:i', $unix_time);
-
- if (!isset($list['names'][$r['name_id']]))
- $list['names'][$r['name_id']] = array('type' => 'id', 'from' => 'req', 'from_id' => $req['id'], 'id' => (int)$r['name_id']);
-
- if (file_exists($file))
- $row[$r['name_id']][] = $r;
-
- }
- }
- }
- } else {
- $error = true;
- $errors[] = $q->pdo->errorInfo();
- }
-
- $sql = "SELECT * FROM `funnel_files` WHERE req_id = {$req['id']}";
-
- $q = $pdo->query($sql);
- if ($pdo->num_rows($q) > 0) {
- while ($r = $pdo->fetch_assoc($q)) {
- if (!empty($r['name'])) {
- $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/funnels/";
- if ($r['req_id'] > 0) {
- $file .= "req/" . $r['req_id'] . "/";
- }
- $file .= $r['guid'] . '.' . $r['type'];
- $r['type'] = 'guid';
- $r['link'] = $host . '/download_file.php?guid=' . $r['guid'];
- $unix_time = filemtime($file);
- $r['date'] = date('d.m.Y в H:i', $unix_time);
- if (!isset($list['names'][$r['etap_id']])) {
-
- $list['names'][$r['etap_id']] = array('type' => 'guid', 'from' => 'req', 'from_id' => $req['id'], 'id' => (int)$r['etap_id']);
- }
- if (file_exists($file)) {
- $row[$r['etap_id']][] = $r;
- }
- }
- }
- }
- }
- } else {
- $error = true;
- $errors[] = $q_r->pdo->errorInfo();
- }
- }
-
- $list['files'] = $row;
- foreach ($list['names'] as $key => $res) {
-
- if ($res['type'] == 'id') {
- if ($key == 0) {
- $list['names'][$key]['name'] = "Без названия";
- } else {
-
- $sql_n = "SELECT * FROM names_client_files WHERE id={$key}";
-
- if ($q_n = $pdo->query($sql_n)) {
- $r_n = $pdo->fetch_assoc($q_n);
- $list['names'][$key]['name'] = $r_n['name'];
- } else {
- $error = true;
- $errors[] = $q_n->pdo->errorInfo();
- }
- }
- } else if ($res['type'] == 'guid') {
-
- $sql_n = "SELECT * FROM funnel_steps WHERE id={$key}";
-
- if ($q_n = $pdo->query($sql_n)) {
- $r_n = $pdo->fetch_assoc($q_n);
- $list['names'][$key]['name'] = $r_n['name'];
- } else {
- $error = true;
- $errors[] = $q_n->pdo->errorInfo();
- }
- }
- }
- }
-
- if (!empty($errors))
- $error = true;
-
- if (!$error) {
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => $user_id,
- 'section' => $section,
- 'list' => $list
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- public function getEvents($app, $get = null, $post = null) {
-
- $error = false;
- if ($user_id = $_SESSION['id']) {
-
- // Открываем соединение с БД
- $pdo = $app->container->get('pdo');
-
- $events = [];
-
- // Выборка событий о передачи объектов, объектов с клиентами
- $sth = $pdo->prepare("SELECT * FROM objects_to_send WHERE new_user_id = ".$user_id." AND `accept_state` = 'NEW'");
- if ($sth->execute()) {
- if ($sth->rowCount() > 0) {
- while($row = $sth->fetch(\PDO::FETCH_ASSOC)) {
-
- $sql_in = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `agency`, `manager` FROM `users` WHERE `id` = '".$row['sended_user_id']."'";
- $sth_in = $pdo->prepare($sql_in);
- if ($sth_in->execute()) {
- if ($r_in = $sth_in->fetch(\PDO::FETCH_ASSOC)) {
-
- $sender_name = trim($r_in['last_name'] . ' ' . $r_in['first_name'] . ' ' . $r_in['middle_name']);
- if ($r_in['agency'] == 1) {
- $sender_name = "Агентство " . $r_in['agency_name'];
- } else {
- if ($r_in['manager'] == 1) {
- $sender_name = "Менеджер " . trim($r_in['last_name'] . ' ' . $r_in['first_name'] . ' ' . $r_in['middle_name']);
- }
- }
-
- $clientsNum = 0;
- $clientsString = '';
- $sql_clients = "SELECT `id`, `fio`, `email` FROM `clients` WHERE `objects` LIKE '%"".$row['object_id'].""%'";
- $sth_clients = $pdo->prepare($sql_clients);
- if ($sth_clients->execute()) {
- if ($sth_clients->rowCount() > 0) {
- while($client = $sth_clients->fetch(\PDO::FETCH_ASSOC)) {
- $clientsNum++;
- $clientsString = $clientsString . ($clientsNum > 1 ? ", " : "") . $client['fio'];
- }
- }
- } else {
- $error = true;
- }
-
- $sql_obj = "SELECT nazv FROM `objects` WHERE id= $row[object_id]";
- $sth_obj = $pdo->prepare($sql_obj);
- if ($sth_obj->execute()) {
- if ($row_obj = $sth_obj->fetch(\PDO::FETCH_ASSOC)) {
- $first_line = "передал Вам объект `" . $row_obj['nazv'] . "`";
- $sec_line = "Взять ";
- $subject = "Передача объекта";
- if ($clientsNum > 0) {
- if ($clientsNum > 1) {
- $subject = "Передача объекта\клиентов";
- $first_line = $first_line . " и клиентов " . $clientsString . ".";
- $sec_line = $sec_line . " объект и клиентов в работу?";
- } else {
- $subject = "Передача объекта\клиента";
- $first_line = $first_line . " и клиента " . $clientsString . ".";
- $sec_line = $sec_line . " объект и клиента в работу?";
- }
- } else {
- $first_line = $first_line . ".";
- $sec_line = $sec_line . " в работу?";
- }
-
- $source_id = $row['id'];
- $events[] = [
- 'id' => $source_id,
- 'type' => 'transfer-object',
- 'object_id' => $row['object_id'],
- 'sender_id' => $row['sended_user_id'],
- 'datetime' => $row['create_date'],
- 'subject' => $subject,
- 'sender_name' => $sender_name,
- 'message' => $sender_name . ' ' .$first_line . '
' . $sec_line
- ];
- }
- } else {
- $error = true;
- }
- }
- } else {
- $error = true;
- }
- }
- }
- } else {
- $error = true;
- }
-
- // Выборка событий о передачи клиентов, заявок
- $sth = $pdo->prepare("SELECT * FROM events_clients WHERE from_id = ".$user_id." AND `read` = 0");
- if ($sth->execute()) {
- if ($sth->rowCount() > 0) {
- while($r = $sth->fetch(\PDO::FETCH_ASSOC)) {
- $sql_in = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `agency`, `manager` FROM `users` WHERE `id` = '".$r['user_id']."'";
- $sth_in = $pdo->prepare($sql_in);
- if ($sth_in->execute()) {
- if ($r_in = $sth_in->fetch(\PDO::FETCH_ASSOC)) {
-
- $sender_name = "Сотрудник ";
- if ($r_in['agency'] == 1)
- $sender_name = "Агентство ";
- else if ($r_in['manager'] == 1)
- $sender_name = "Менеджер ";
-
- $sql_cl = "SELECT `fio` FROM `clients` WHERE `id` = ".$r['client_id'];
- if ($r['req_id'] > 0)
- $sql_cl = "SELECT `name` as `fio`, object_id, type_id FROM `requisitions` WHERE `id` = ".$r['req_id'];
-
- $sth_cl = $pdo->prepare($sql_cl);
- if ($sth_cl->execute()) {
- if ($r_cl = $sth_cl->fetch(\PDO::FETCH_ASSOC)) {
-
- $tr = 0;
- $objectString = '';
- $objectNum = 0;
- $type_req = 0;
- if ($r['event'] == 'transmitted_parallel') {
- $tr = 1;
- } else {
- if ($r['req_id'] > 0 && $r_cl['object_id'] > 0) {
- $objectNum++;
- $sql_obj = "SELECT nazv FROM `objects` WHERE id= $r_cl[object_id]";
- $sth_obj = $pdo->prepare($sql_obj);
- if ($sth_obj->execute()) {
- if ($r_obj = $sth_obj->fetch(\PDO::FETCH_ASSOC)) {
- $type_req = $r_cl['type_id'];
- $objectString = $objectString . ($objectNum > 1 ? ", " : "") . $r_obj['nazv'];
- }
- } else {
- $error = true;
- }
- } else {
- $sql_client = "SELECT objects FROM clients WHERE id=$r[client_id]";
-
- $sth_client = $pdo->prepare($sql_client);
- if ($sth_client->execute()) {
- if ($r_client = $sth_client->fetch(\PDO::FETCH_ASSOC)) {
- $objects = json_decode(html_entity_decode($r_client['objects']), true);
- foreach ($objects as $object) {
- $objectNum++;
- $sql_obj = "SELECT nazv FROM `objects` WHERE id= $object";
- $sth_obj = $pdo->prepare($sql_obj);
- if ($sth_obj->execute()) {
- if ($r_obj = $sth_obj->fetch(\PDO::FETCH_ASSOC)) {
- $objectString = $objectString . ($objectNum > 1 ? ", " : "") . "`".$r_obj['nazv']."`";
- }
- } else {
- $error = true;
- }
- }
- }
- } else {
- $error = true;
- }
- }
- }
-
- if ($tr == 1) {
- $first_line = "приглашает Вас к совместной работе.";
- $subject = "Приглашение";
- } else {
- $first_line = "передал Вам";
- $subject = "Передача клиента";
- }
-
- $sec_line = "";
-
- if ($objectNum > 1) {
- if ($r['req_id'] > 0) {
-
- if ($tr != 1)
- $subject = 'Передача заявки/объектов';
-
- if (!empty($objectString)) {
-
- if ($tr != 1)
- $first_line .= ' заявку и объекты.';
-
- $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` и объекты ' . $objectString . ' в работу?';
- } else {
-
- if ($tr != 1)
- $first_line .= ' заявку.';
-
- $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` в работу?';
- }
- } else {
-
- if ($tr != 1)
- $subject = 'Передача клиента/объектов';
-
- if (!empty($objectString)) {
-
- if ($tr != 1)
- $first_line .= ' клиента и объекты.';
-
- $sec_line .= ' Взять клиента `' . $r_cl['fio'] . '` и объекты ' . $objectString . ' в работу?';
- } else {
-
- if ($tr != 1)
- $first_line .= ' клиента.';
-
- $sec_line .= ' Взять клиента `' . $r_cl['fio'] . '` в работу?';
- }
- }
- } else {
- if ($r['req_id'] > 0) {
-
- if ($tr != 1)
- $subject = 'Передача заявки/объекта';
-
- if (!empty($objectString)) {
-
- if ($tr != 1)
- $first_line .= ' заявку и объект.';
-
- $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` и объект ' . $objectString . ' в работу?';
- } else {
-
- if ($tr != 1)
- $first_line .= ' заявку.';
-
- $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` в работу?';
- }
- } else {
-
- if ($tr != 1)
- $subject = 'Передача клиента/объекта';
-
- if (!empty($objectString)) {
-
- if ($tr != 1)
- $first_line .= ' клиента и объект.';
-
- $sec_line .= ' Взять клиента `' . $r_cl['fio'] . '` и объект ' . $objectString . ' в работу?';
- } else {
-
- if ($tr != 1)
- $first_line .= ' клиента.';
-
- $sec_line .= ' Взять клиента `' . $r_cl['fio'] . '` в работу?';
- }
- }
- }
-
- if ($r['req_id'] > 0 && $type_req == 4) {
- $subject = 'Передача заявки';
- $first_line .= ' заявку.';
- if (!empty($objectString))
- $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` по объекту ' . $objectString . ' в работу?';
- else
- $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` по объекту в работу?';
- }
-
- $sender_name .= trim($r_in['last_name'] . ' ' . $r_in['first_name'] . ' ' . $r_in['middle_name']);
- if ($r_in['agency'] == 1)
- $sender_name .= $r_in['agency_name'];
-
- $source_id = $r['id'];
- $events[] = [
- 'id' => $source_id,
- 'type' => 'transfer-client',
- 'datetime' => $r['date'],
- 'subject' => $subject,
- 'sender_id' => $r['user_id'],
- 'sender_name' => $sender_name,
- 'client_id' => $r['client_id'],
- 'requisition_id' => $r['req_id'],
- 'tr' => $tr, // @todo: tr ??
- 'message' => $sender_name . ' ' . $first_line . '
' . $sec_line
- ];
- }
- } else {
- $error = true;
- }
- }
- } else {
- $error = true;
- }
- }
- }
- } else {
- $error = true;
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !($error),
- 'user_id' => (int)$user_id,
- 'count' => count($events),
- 'events' => $events,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- public function getObjectReasons($app, $get = null, $post = null) {
-
- $error = false;
- $reasons = [];
+ if (!empty($sql)) {
+ if ($query = mysql_query($sql)) {
+ if (mysql_num_rows($query) > 0) {
+ while ($row = mysql_fetch_assoc($query)) {
+ if($section == 'cottage_village') {
+ if(!isset($list[$row['region_id']])) $list[$row['region_id']] = array();
+ $list[$row['region_id']][] = [
+ 'value' => (int)$row['id'],
+ 'name' => trim($row['name']),
+ ];
+ } else
+ $list[] = [
+ 'id' => (int)$row['id'],
+ 'name' => trim($row['name']),
+ ];
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+
+ if (!$error) {
+
+ if (count($list) && $section == 'denial_work') {
+ $list[] = [
+ 'id' => 0,
+ 'name' => 'Другое',
+ ];
+ }
+
+ if ($need_return) {
+ return $list;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'count' => count($list),
+ 'list' => $list
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
+
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+
+ public function getLists($app, $get = null, $post = null) {
+
+ $lists = [];
if ($user_id = $_SESSION['id']) {
- // Открываем соединение с БД
- $pdo = $app->container->get('pdo');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+
+ $sections = $get['sections'];
+ foreach ($sections as $section) {
+
+ $list = $this->getList($app, ['section' => $section], null, true);
+ if ($list)
+ $lists[$section] = $list;
+ else
+ $lists[$section] = false;
+
+ }
+ }
+
+ if (count($lists)) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'lists' => $lists
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+
+ public function getFiles($app, $get = null, $post = null) {
+
+ $error = false;
+ $errors = [];
+
+ $source_id = null;
+ if (isset($get['source_id']))
+ $source_id = (int)$get['source_id'];
+
+ $section = null;
+ if (isset($get['section']))
+ $section = trim($get['section']);
+
+ if (($user_id = $_SESSION['id']) && $source_id && $section) {
+
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+ $pdo = $app->container->get('mypdo');
+
+ $list = [];
+ $row = [];
+
+ $field = '';
+ $table = 'user_client_events';
+ if ($section == 'clients') {
+ $field = 'client_id';
+ $table = 'user_client_events';
+ } else if ($section == 'requisitions') {
+ $field = 'req_id';
+ $table = 'user_client_events';
+ } else if ($section == 'objects') {
+ $field = 'object_id';
+ $table = 'user_object_events';
+ }
+
+ if (!empty($field) && !empty($table)) {
+
+ $protocol = (self::is_ssl()) ? 'https://' : 'http://';
+ $host = $protocol . $_SERVER['SERVER_NAME'];
+
+ // Найденный листинг парсера (offset-free): событие-родитель файла лежит в external_listing_events,
+ // event_id и object_id хранятся как РЕАЛЬНЫЕ el.id (без смещения) — валидируем владение по листинговой
+ // таблице. Признак листинга — явный флаг is_external из запроса (id больше не диапазонный: коллизит с objects.id).
+ if ($section == 'objects' && self::_request_flag($get, 'is_external')) {
+ $sql = "SELECT * FROM clients_files as c
+ WHERE object_id = {$source_id} AND event_id > 0 AND (SELECT id FROM external_listing_events WHERE id = c.event_id) > 0";
+ } else {
+ $sql = "SELECT * FROM clients_files as c
+ WHERE {$field} = {$source_id} AND event_id > 0 AND (SELECT id from {$table} WHERE id = c.event_id) > 0";
+ }
+
+ if ($q = $pdo->query($sql)) {
+ if ($pdo->num_rows($q) > 0) {
+ while ($r = $pdo->fetch_assoc($q)) {
+ if (!empty($r['name'])) {
+
+ $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/";
+ if ($r['client_id'] > 0)
+ $file .= "clients/" . $r['client_id'] . "/";
+ else if ($r['req_id'] > 0)
+ $file .= "reqs/" . $r['req_id'] . "/";
+ else if ($r['object_id'] > 0)
+ $file .= "objects/" . $r['object_id'] . "/";
+
+ $file .= $r['guid'] . '.' . $r['type'];
+
+ $r['type'] = 'id';
+ $r['link'] = $host . '/download_file.php?id=' . $r['id'];
+
+ $unix_time = !empty($r['created_at']) ? strtotime($r['created_at']) : @filemtime($file);
+ $r['date'] = date('d.m.Y в H:i', $unix_time);
+
+ if (!isset($list['names'][$r['name_id']]))
+ $list['names'][$r['name_id']] = array('type' => 'id', 'from' => $section, 'from_id' => $source_id, 'id' => (int)$r['name_id']);
+
+ if (!empty($r['guid']))
+ $row[$r['name_id']][] = $r;
+
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = $q->pdo->errorInfo();
+ }
+
+ if ($section == 'clients' || $section == 'requisitions' || $section == 'free') {
+
+ $sql = "SELECT * FROM `funnel_files` WHERE {$field} = {$source_id}";
+
+ if ($q = $pdo->query($sql)) {
+ if ($pdo->num_rows($q) > 0) {
+ while ($r = $pdo->fetch_assoc($q)) {
+ if (!empty($r['name'])) {
+ $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/funnels/";
+
+ if ($r['client_id'] > 0)
+ $file .= "clients/" . $r['client_id'] . "/";
+ else if ($r['req_id'] > 0)
+ $file .= "req/" . $r['req_id'] . "/";
+
+ $file .= $r['guid'] . '.' . $r['type'];
+
+ $r['type'] = 'guid';
+ $r['link'] = $host . '/download_file.php?guid=' . $r['guid'];
+
+ $unix_time = !empty($r['created_at']) ? strtotime($r['created_at']) : @filemtime($file);
+ $r['date'] = date('d.m.Y в H:i', $unix_time);
+
+ if (!isset($list['names'][$r['etap_id']]))
+ $list['names'][$r['etap_id']] = array('type' => 'guid', 'from' => $section, 'from_id' => $source_id, 'id' => (int)$r['etap_id']);
+
+ if (!empty($r['guid']))
+ $row[$r['etap_id']][] = $r;
+
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = $q->pdo->errorInfo();
+ }
+ }
+
+ if ($section == 'requisitions') {
+
+ //поиск файлов по объекту
+ $sql = "SELECT id, type_id, object_id FROM requisitions WHERE id = {$source_id}";
+
+ if ($q = $pdo->query($sql)) {
+ $r = $pdo->fetch_assoc($q);
+ if ($r['type_id'] == 2 && $r['object_id'] > 0) {
+
+ $sql = "SELECT * FROM `clients_files` as c WHERE object_id = {$r['object_id']} AND (SELECT id from user_object_events WHERE id=c.event_id)>0";
+ if ($q = $pdo->query($sql)) {
+ if ($pdo->num_rows($q) > 0) {
+ while ($r = $pdo->fetch_assoc($q)) {
+ if (!empty($r['name'])) {
+
+ $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/";
+ if ($r['object_id'] > 0)
+ $file .= "objects/" . $r['object_id'] . "/";
+
+ $file .= $r['guid'] . '.' . $r['type'];
+
+ $r['type'] = 'id';
+ $r['link'] = $host . '/download_file.php?id=' . $r['id'];
+
+ $unix_time = !empty($r['created_at']) ? strtotime($r['created_at']) : @filemtime($file);
+ $r['date'] = date('d.m.Y в H:i', $unix_time);
+ if (!isset($list['names'][$r['name_id']]))
+ $list['names'][$r['name_id']] = array('type' => 'id', 'from' => 'object', 'from_id' => $r['object_id'], 'id' => (int)$r['name_id']);
+
+ if (!empty($r['guid']))
+ $row[$r['name_id']][] = $r;
+
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = $q->pdo->errorInfo();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = $q->pdo->errorInfo();
+ }
+ }
+
+ if ($section == 'objects') {
+
+ //Поиск файлов по заявкам
+ $sql_r = "SELECT id, type_id, object_id FROM requisitions WHERE object_id = {$source_id} AND type_id = 2 and deleted = 0";
+
+ if ($q_r = $pdo->query($sql_r)) {
+ if ($pdo->num_rows($q_r) > 0) {
+ $req = $pdo->fetch_assoc($q_r);
+
+ $sql = "SELECT * FROM `clients_files` as c WHERE req_id = {$req['id']} AND (SELECT id from user_client_events WHERE id=c.event_id)>0";
+ if ($q = $pdo->query($sql)) {
+ if ($pdo->num_rows($q) > 0) {
+ while ($r = $pdo->fetch_assoc($q)) {
+ if (!empty($r['name'])) {
+
+ $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/";
+ if ($r['req_id'] > 0)
+ $file .= "reqs/" . $req['id'] . "/";
+
+ $file .= $r['guid'] . '.' . $r['type'];
+
+ $r['type'] = 'id';
+ $r['link'] = $host . '/download_file.php?id=' . $r['id'];
+
+ $unix_time = !empty($r['created_at']) ? strtotime($r['created_at']) : @filemtime($file);
+ $r['date'] = date('d.m.Y в H:i', $unix_time);
+
+ if (!isset($list['names'][$r['name_id']]))
+ $list['names'][$r['name_id']] = array('type' => 'id', 'from' => 'req', 'from_id' => $req['id'], 'id' => (int)$r['name_id']);
+
+ if (!empty($r['guid']))
+ $row[$r['name_id']][] = $r;
+
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = $q->pdo->errorInfo();
+ }
+
+ $sql = "SELECT * FROM `funnel_files` WHERE req_id = {$req['id']}";
+
+ $q = $pdo->query($sql);
+ if ($pdo->num_rows($q) > 0) {
+ while ($r = $pdo->fetch_assoc($q)) {
+ if (!empty($r['name'])) {
+ $file = $_SERVER['DOCUMENT_ROOT'] . "/upload/funnels/";
+ if ($r['req_id'] > 0) {
+ $file .= "req/" . $r['req_id'] . "/";
+ }
+ $file .= $r['guid'] . '.' . $r['type'];
+ $r['type'] = 'guid';
+ $r['link'] = $host . '/download_file.php?guid=' . $r['guid'];
+ $unix_time = !empty($r['created_at']) ? strtotime($r['created_at']) : @filemtime($file);
+ $r['date'] = date('d.m.Y в H:i', $unix_time);
+ if (!isset($list['names'][$r['etap_id']])) {
+
+ $list['names'][$r['etap_id']] = array('type' => 'guid', 'from' => 'req', 'from_id' => $req['id'], 'id' => (int)$r['etap_id']);
+ }
+ if (!empty($r['guid'])) {
+ $row[$r['etap_id']][] = $r;
+ }
+ }
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = $q_r->pdo->errorInfo();
+ }
+ }
+
+ $list['files'] = $row;
+ foreach ($list['names'] as $key => $res) {
+
+ if ($res['type'] == 'id') {
+ if ($key == 0) {
+ $list['names'][$key]['name'] = "Без названия";
+ } else {
+
+ $sql_n = "SELECT * FROM names_client_files WHERE id={$key}";
+
+ if ($q_n = $pdo->query($sql_n)) {
+ $r_n = $pdo->fetch_assoc($q_n);
+ $list['names'][$key]['name'] = $r_n['name'];
+ } else {
+ $error = true;
+ $errors[] = $q_n->pdo->errorInfo();
+ }
+ }
+ } else if ($res['type'] == 'guid') {
+
+ $sql_n = "SELECT * FROM funnel_steps WHERE id={$key}";
+
+ if ($q_n = $pdo->query($sql_n)) {
+ $r_n = $pdo->fetch_assoc($q_n);
+ $list['names'][$key]['name'] = $r_n['name'];
+ } else {
+ $error = true;
+ $errors[] = $q_n->pdo->errorInfo();
+ }
+ }
+ }
+ }
+
+ if (!empty($errors))
+ $error = true;
+
+ if (!$error) {
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => $user_id,
+ 'section' => $section,
+ 'list' => $list
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ public function getEvents($app, $get = null, $post = null) {
+
+ $error = false;
+ if ($user_id = $_SESSION['id']) {
+
+ // Открываем соединение с БД
+ $pdo = $app->container->get('pdo');
+
+ $events = [];
+
+ // Выборка событий о передачи объектов, объектов с клиентами
+ $sth = $pdo->prepare("SELECT * FROM objects_to_send WHERE new_user_id = ".$user_id." AND `accept_state` = 'NEW'");
+ if ($sth->execute()) {
+ if ($sth->rowCount() > 0) {
+ while($row = $sth->fetch(\PDO::FETCH_ASSOC)) {
+
+ $sql_in = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `agency`, `manager` FROM `users` WHERE `id` = '".$row['sended_user_id']."'";
+ $sth_in = $pdo->prepare($sql_in);
+ if ($sth_in->execute()) {
+ if ($r_in = $sth_in->fetch(\PDO::FETCH_ASSOC)) {
+
+ $sender_name = trim($r_in['last_name'] . ' ' . $r_in['first_name'] . ' ' . $r_in['middle_name']);
+ if ($r_in['agency'] == 1) {
+ $sender_name = "Агентство " . $r_in['agency_name'];
+ } else {
+ if ($r_in['manager'] == 1) {
+ $sender_name = "Менеджер " . trim($r_in['last_name'] . ' ' . $r_in['first_name'] . ' ' . $r_in['middle_name']);
+ }
+ }
+
+ $clientsNum = 0;
+ $clientsString = '';
+ $sql_clients = "SELECT `id`, `fio`, `email` FROM `clients` WHERE `objects` LIKE '%"".$row['object_id'].""%'";
+ $sth_clients = $pdo->prepare($sql_clients);
+ if ($sth_clients->execute()) {
+ if ($sth_clients->rowCount() > 0) {
+ while($client = $sth_clients->fetch(\PDO::FETCH_ASSOC)) {
+ $clientsNum++;
+ $clientsString = $clientsString . ($clientsNum > 1 ? ", " : "") . $client['fio'];
+ }
+ }
+ } else {
+ $error = true;
+ }
+
+ $sql_obj = "SELECT nazv FROM `objects` WHERE id= $row[object_id]";
+ $sth_obj = $pdo->prepare($sql_obj);
+ if ($sth_obj->execute()) {
+ if ($row_obj = $sth_obj->fetch(\PDO::FETCH_ASSOC)) {
+ $first_line = "передал Вам объект `" . $row_obj['nazv'] . "`";
+ $sec_line = "Взять ";
+ $subject = "Передача объекта";
+ if ($clientsNum > 0) {
+ if ($clientsNum > 1) {
+ $subject = "Передача объекта\клиентов";
+ $first_line = $first_line . " и клиентов " . $clientsString . ".";
+ $sec_line = $sec_line . " объект и клиентов в работу?";
+ } else {
+ $subject = "Передача объекта\клиента";
+ $first_line = $first_line . " и клиента " . $clientsString . ".";
+ $sec_line = $sec_line . " объект и клиента в работу?";
+ }
+ } else {
+ $first_line = $first_line . ".";
+ $sec_line = $sec_line . " в работу?";
+ }
+
+ $source_id = $row['id'];
+ $events[] = [
+ 'id' => $source_id,
+ 'type' => 'transfer-object',
+ 'object_id' => $row['object_id'],
+ 'sender_id' => $row['sended_user_id'],
+ 'datetime' => $row['create_date'],
+ 'subject' => $subject,
+ 'sender_name' => $sender_name,
+ 'message' => $sender_name . ' ' .$first_line . '
' . $sec_line
+ ];
+ }
+ } else {
+ $error = true;
+ }
+ }
+ } else {
+ $error = true;
+ }
+ }
+ }
+ } else {
+ $error = true;
+ }
+
+ // Выборка событий о передачи клиентов, заявок
+ $sth = $pdo->prepare("SELECT * FROM events_clients WHERE from_id = ".$user_id." AND `read` = 0");
+ if ($sth->execute()) {
+ if ($sth->rowCount() > 0) {
+ while($r = $sth->fetch(\PDO::FETCH_ASSOC)) {
+ $sql_in = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `agency`, `manager` FROM `users` WHERE `id` = '".$r['user_id']."'";
+ $sth_in = $pdo->prepare($sql_in);
+ if ($sth_in->execute()) {
+ if ($r_in = $sth_in->fetch(\PDO::FETCH_ASSOC)) {
+
+ $sender_name = "Сотрудник ";
+ if ($r_in['agency'] == 1)
+ $sender_name = "Агентство ";
+ else if ($r_in['manager'] == 1)
+ $sender_name = "Менеджер ";
+
+ $sql_cl = "SELECT `fio` FROM `clients` WHERE `id` = ".$r['client_id'];
+ if ($r['req_id'] > 0)
+ $sql_cl = "SELECT `name` as `fio`, object_id, type_id FROM `requisitions` WHERE `id` = ".$r['req_id'];
+
+ $sth_cl = $pdo->prepare($sql_cl);
+ if ($sth_cl->execute()) {
+ if ($r_cl = $sth_cl->fetch(\PDO::FETCH_ASSOC)) {
+
+ $tr = 0;
+ $objectString = '';
+ $objectNum = 0;
+ $type_req = 0;
+ if ($r['event'] == 'transmitted_parallel') {
+ $tr = 1;
+ } else {
+ if ($r['req_id'] > 0 && $r_cl['object_id'] > 0) {
+ $objectNum++;
+ $sql_obj = "SELECT nazv FROM `objects` WHERE id= $r_cl[object_id]";
+ $sth_obj = $pdo->prepare($sql_obj);
+ if ($sth_obj->execute()) {
+ if ($r_obj = $sth_obj->fetch(\PDO::FETCH_ASSOC)) {
+ $type_req = $r_cl['type_id'];
+ $objectString = $objectString . ($objectNum > 1 ? ", " : "") . $r_obj['nazv'];
+ }
+ } else {
+ $error = true;
+ }
+ } else {
+ $sql_client = "SELECT objects FROM clients WHERE id=$r[client_id]";
+
+ $sth_client = $pdo->prepare($sql_client);
+ if ($sth_client->execute()) {
+ if ($r_client = $sth_client->fetch(\PDO::FETCH_ASSOC)) {
+ $objects = json_decode(html_entity_decode($r_client['objects']), true);
+ foreach ($objects as $object) {
+ $objectNum++;
+ $sql_obj = "SELECT nazv FROM `objects` WHERE id= $object";
+ $sth_obj = $pdo->prepare($sql_obj);
+ if ($sth_obj->execute()) {
+ if ($r_obj = $sth_obj->fetch(\PDO::FETCH_ASSOC)) {
+ $objectString = $objectString . ($objectNum > 1 ? ", " : "") . "`".$r_obj['nazv']."`";
+ }
+ } else {
+ $error = true;
+ }
+ }
+ }
+ } else {
+ $error = true;
+ }
+ }
+ }
+
+ if ($tr == 1) {
+ $first_line = "приглашает Вас к совместной работе.";
+ $subject = "Приглашение";
+ } else {
+ $first_line = "передал Вам";
+ $subject = "Передача клиента";
+ }
+
+ $sec_line = "";
+
+ if ($objectNum > 1) {
+ if ($r['req_id'] > 0) {
+
+ if ($tr != 1)
+ $subject = 'Передача заявки/объектов';
+
+ if (!empty($objectString)) {
+
+ if ($tr != 1)
+ $first_line .= ' заявку и объекты.';
+
+ $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` и объекты ' . $objectString . ' в работу?';
+ } else {
+
+ if ($tr != 1)
+ $first_line .= ' заявку.';
+
+ $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` в работу?';
+ }
+ } else {
+
+ if ($tr != 1)
+ $subject = 'Передача клиента/объектов';
+
+ if (!empty($objectString)) {
+
+ if ($tr != 1)
+ $first_line .= ' клиента и объекты.';
+
+ $sec_line .= ' Взять клиента `' . $r_cl['fio'] . '` и объекты ' . $objectString . ' в работу?';
+ } else {
+
+ if ($tr != 1)
+ $first_line .= ' клиента.';
+
+ $sec_line .= ' Взять клиента `' . $r_cl['fio'] . '` в работу?';
+ }
+ }
+ } else {
+ if ($r['req_id'] > 0) {
+
+ if ($tr != 1)
+ $subject = 'Передача заявки/объекта';
+
+ if (!empty($objectString)) {
+
+ if ($tr != 1)
+ $first_line .= ' заявку и объект.';
+
+ $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` и объект ' . $objectString . ' в работу?';
+ } else {
+
+ if ($tr != 1)
+ $first_line .= ' заявку.';
+
+ $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` в работу?';
+ }
+ } else {
+
+ if ($tr != 1)
+ $subject = 'Передача клиента/объекта';
+
+ if (!empty($objectString)) {
+
+ if ($tr != 1)
+ $first_line .= ' клиента и объект.';
+
+ $sec_line .= ' Взять клиента `' . $r_cl['fio'] . '` и объект ' . $objectString . ' в работу?';
+ } else {
+
+ if ($tr != 1)
+ $first_line .= ' клиента.';
+
+ $sec_line .= ' Взять клиента `' . $r_cl['fio'] . '` в работу?';
+ }
+ }
+ }
+
+ if ($r['req_id'] > 0 && $type_req == 4) {
+ $subject = 'Передача заявки';
+ $first_line .= ' заявку.';
+ if (!empty($objectString))
+ $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` по объекту ' . $objectString . ' в работу?';
+ else
+ $sec_line .= ' Взять заявку `' . $r_cl['fio'] . '` по объекту в работу?';
+ }
+
+ $sender_name .= trim($r_in['last_name'] . ' ' . $r_in['first_name'] . ' ' . $r_in['middle_name']);
+ if ($r_in['agency'] == 1)
+ $sender_name .= $r_in['agency_name'];
+
+ $source_id = $r['id'];
+ $events[] = [
+ 'id' => $source_id,
+ 'type' => 'transfer-client',
+ 'datetime' => $r['date'],
+ 'subject' => $subject,
+ 'sender_id' => $r['user_id'],
+ 'sender_name' => $sender_name,
+ 'client_id' => $r['client_id'],
+ 'requisition_id' => $r['req_id'],
+ 'tr' => $tr, // @todo: tr ??
+ 'message' => $sender_name . ' ' . $first_line . '
' . $sec_line
+ ];
+ }
+ } else {
+ $error = true;
+ }
+ }
+ } else {
+ $error = true;
+ }
+ }
+ }
+ } else {
+ $error = true;
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !($error),
+ 'user_id' => (int)$user_id,
+ 'count' => count($events),
+ 'events' => $events,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ public function getObjectReasons($app, $get = null, $post = null) {
+
+ $error = false;
+ $reasons = [];
+ if ($user_id = $_SESSION['id']) {
+
+ // Открываем соединение с БД
+ $pdo = $app->container->get('pdo');
// Выборка событий о передачи объектов, объектов с клиентами
- $sth = $pdo->prepare("SELECT * FROM archive_object_reason order by id");
- if ($sth->execute()) {
- if ($sth->rowCount() > 0) {
- while($row = $sth->fetch(\PDO::FETCH_ASSOC)) {
+ $sth = $pdo->prepare("SELECT * FROM archive_object_reason order by id");
+ if ($sth->execute()) {
+ if ($sth->rowCount() > 0) {
+ while($row = $sth->fetch(\PDO::FETCH_ASSOC)) {
$reasons[] = $row;
- }
- }
- } else {
- $error = true;
- }
+ }
+ }
+ } else {
+ $error = true;
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !($error),
- 'user_id' => (int)$user_id,
- 'count' => count($reasons),
- 'list' => $reasons,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !($error),
+ 'user_id' => (int)$user_id,
+ 'count' => count($reasons),
+ 'list' => $reasons,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
public function getNewBuilding($app, $get = null, $post = null) {
$errors = [];
@@ -3792,242 +3792,242 @@ class CommonController extends ApiController
$app->stop();
}
- public function getNewBuildings($app, $get = null, $post = null) {
+ public function getNewBuildings($app, $get = null, $post = null) {
- $errors = [];
- if ($user_id = $_SESSION['id']) {
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $list = [];
- $where = '';
- $total = 0;
- $all_pages = 0;
+ $list = [];
+ $where = '';
+ $total = 0;
+ $all_pages = 0;
- $search = null;
- if (isset($get['search']))
- $search = trim($get['search']);
+ $search = null;
+ if (isset($get['search']))
+ $search = trim($get['search']);
- $page = 1;
- if (isset($get['page']))
- $page = (int)$get['page'];
+ $page = 1;
+ if (isset($get['page']))
+ $page = (int)$get['page'];
- $per_page = 10;
- if (isset($get['per_page']))
- $per_page = (int)$get['per_page'];
+ $per_page = 10;
+ if (isset($get['per_page']))
+ $per_page = (int)$get['per_page'];
- $region_id = null;
- if (isset($get['region_id']))
- $region_id = (int)$get['region_id'];
+ $region_id = null;
+ if (isset($get['region_id']))
+ $region_id = (int)$get['region_id'];
- if ($region_id == null) {
- $curUser = new \User();
- $curUser->get($user_id);
- $region_id = $curUser->region_rf_id;
- }
+ if ($region_id == null) {
+ $curUser = new \User();
+ $curUser->get($user_id);
+ $region_id = $curUser->region_rf_id;
+ }
- $where = '`rf_region_id` = ' . $region_id;
- if ($region_id == 1 || $region_id == 2 || $region_id == 3)
- $where = '(`rf_region_id` IN (SELECT `id` FROM `rf_regions` WHERE `parent` = ' . $region_id . '))';
+ $where = '`rf_region_id` = ' . $region_id;
+ if ($region_id == 1 || $region_id == 2 || $region_id == 3)
+ $where = '(`rf_region_id` IN (SELECT `id` FROM `rf_regions` WHERE `parent` = ' . $region_id . '))';
- $sql = "SELECT count(id) FROM `newbuildings` WHERE ". $where;
+ $sql = "SELECT count(id) FROM `newbuildings` WHERE ". $where;
- if ($search != null)
- $sql .= " AND `name` LIKE '%" . trim($search) . "%'";
+ if ($search != null)
+ $sql .= " AND `name` LIKE '%" . trim($search) . "%'";
- $sql .= " ORDER BY `name`, `id`";
+ $sql .= " ORDER BY `name`, `id`";
- if ($query = mysql_query($sql)) {
- $total = mysql_result($query, 0);
- $all_pages = ceil($total / $per_page);
- $offset = ($page - 1) * $per_page;
+ if ($query = mysql_query($sql)) {
+ $total = mysql_result($query, 0);
+ $all_pages = ceil($total / $per_page);
+ $offset = ($page - 1) * $per_page;
- $sql = "SELECT * FROM `newbuildings` WHERE ". $where;
+ $sql = "SELECT * FROM `newbuildings` WHERE ". $where;
- if ($search != null)
- $sql .= " AND `name` LIKE '%" . trim($search) . "%'";
+ if ($search != null)
+ $sql .= " AND `name` LIKE '%" . trim($search) . "%'";
- $sql .= " ORDER BY `name`, `id` LIMIT $offset, $per_page";
- if ($query = mysql_query($sql)) {
- while ($block = mysql_fetch_assoc($query)) {
- $list[] = $block;
- }
- } else {
- $errors[] = mysql_error();
- }
- } else {
- $errors[] = mysql_error();
- }
+ $sql .= " ORDER BY `name`, `id` LIMIT $offset, $per_page";
+ if ($query = mysql_query($sql)) {
+ while ($block = mysql_fetch_assoc($query)) {
+ $list[] = $block;
+ }
+ } else {
+ $errors[] = mysql_error();
+ }
+ } else {
+ $errors[] = mysql_error();
+ }
- if (!(count($errors))) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'list' => $list,
- 'total' => $total,
- 'page' => $page,
- 'all_pages' => $all_pages,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if (!(count($errors))) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'list' => $list,
+ 'total' => $total,
+ 'page' => $page,
+ 'all_pages' => $all_pages,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
public function setEventState($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
- $body = $app->request->getBody();
- $data = json_decode(stripcslashes($body), true);
+ $error = false;
+ $errors = [];
+ $body = $app->request->getBody();
+ $data = json_decode(stripcslashes($body), true);
- if (($user_id = $_SESSION['id']) && isset($data['type']) && isset($data['state']) && isset($data['event_id'])) {
+ if (($user_id = $_SESSION['id']) && isset($data['type']) && isset($data['state']) && isset($data['event_id'])) {
- $type = $data['type'];
- $state = $data['state'];
- $event_id = $data['event_id'];
+ $type = $data['type'];
+ $state = $data['state'];
+ $event_id = $data['event_id'];
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
- $db_sphinx = $app->container->get('sphinx2');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+ $db_sphinx = $app->container->get('sphinx2');
- if ($event_id && $type == 'transfer-object' && isset($data['object_id'])) {
+ if ($event_id && $type == 'transfer-object' && isset($data['object_id'])) {
- $object_id = (int)$data['object_id'];
+ $object_id = (int)$data['object_id'];
- // Защитный отказ — приём передачи владения на найденном листинге парсера недоступен (offset-free).
- // Признак листинга — явный флаг is_external из запроса. Передачи листинга быть не должно (инициация
- // загейчена), гейтим от рассинхрона. Делать ДО UPDATE objects.
- if (self::_request_flag($data, 'is_external')) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(403);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'errors' => ['Действие недоступно для найденного листинга. Скопируйте объект в свои, чтобы управлять им.'],
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ // Защитный отказ — приём передачи владения на найденном листинге парсера недоступен (offset-free).
+ // Признак листинга — явный флаг is_external из запроса. Передачи листинга быть не должно (инициация
+ // загейчена), гейтим от рассинхрона. Делать ДО UPDATE objects.
+ if (self::_request_flag($data, 'is_external')) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(403);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'errors' => ['Действие недоступно для найденного листинга. Скопируйте объект в свои, чтобы управлять им.'],
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- $sql = "SELECT * FROM objects_to_send WHERE id = $event_id AND object_id = $object_id";
- if ($rez = mysql_query($sql)) {
- $row = mysql_fetch_assoc($rez);
- $source_id = $row['id'];
+ $sql = "SELECT * FROM objects_to_send WHERE id = $event_id AND object_id = $object_id";
+ if ($rez = mysql_query($sql)) {
+ $row = mysql_fetch_assoc($rez);
+ $source_id = $row['id'];
- if ($source_id && $state == 'accepted') {
+ if ($source_id && $state == 'accepted') {
- $new_user_id = (int)$row['new_user_id'];
- $object_id = (int)$row['object_id'];
+ $new_user_id = (int)$row['new_user_id'];
+ $object_id = (int)$row['object_id'];
- $new_user = new \User;
- $new_user->get($new_user_id);
+ $new_user = new \User;
+ $new_user->get($new_user_id);
- if (!$new_user->agencyId)
- $new_user->agencyId = $new_user_id;
+ if (!$new_user->agencyId)
+ $new_user->agencyId = $new_user_id;
- $current_user = new \User;
- $current_user->get($user_id);
+ $current_user = new \User;
+ $current_user->get($user_id);
- if (!$current_user->agencyId)
- $current_user->agencyId = $user_id;
+ if (!$current_user->agencyId)
+ $current_user->agencyId = $user_id;
- $phone = $new_user->phone;
- $num_search = \User::num_search($phone);
- /*if(!empty($new_user->phone2)){
+ $phone = $new_user->phone;
+ $num_search = \User::num_search($phone);
+ /*if(!empty($new_user->phone2)){
$phone = $phone.' '.$new_user->phone2;
}*/
- $sobstv = trim($new_user->last_name . ' ' . $new_user->first_name . ' ' . $new_user->middle_name);
+ $sobstv = trim($new_user->last_name . ' ' . $new_user->first_name . ' ' . $new_user->middle_name);
- if ($new_user->agency == 0) {
- $sql = "SELECT * FROM users WHERE id=$new_user->id_manager";
- if ($rez = mysql_query($sql))
- $manager = mysql_fetch_assoc($rez);
- else
- $errors[] = mysql_error();
+ if ($new_user->agency == 0) {
+ $sql = "SELECT * FROM users WHERE id=$new_user->id_manager";
+ if ($rez = mysql_query($sql))
+ $manager = mysql_fetch_assoc($rez);
+ else
+ $errors[] = mysql_error();
- if ($manager['id_manager'])
- $agency = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id=$manager[id_manager]"));
- else
- $agency = $manager;
+ if ($manager['id_manager'])
+ $agency = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id=$manager[id_manager]"));
+ else
+ $agency = $manager;
- if ($agency)
- $sobstv = trim($current_user->last_name . ' ' . $current_user->first_name . ' ' . $current_user->middle_name) . ", агентство " . $agency['agency_name'];
+ if ($agency)
+ $sobstv = trim($current_user->last_name . ' ' . $current_user->first_name . ' ' . $current_user->middle_name) . ", агентство " . $agency['agency_name'];
- } else {
- $sobstv = $sobstv . ", агентство " . $new_user->agency_name;
- }
+ } else {
+ $sobstv = $sobstv . ", агентство " . $new_user->agency_name;
+ }
- // перенос всех объектов
- $sql = "UPDATE objects SET id_add_user = $new_user->id, phone = '$phone', phone_search = '$num_search', sobstv = '$sobstv' WHERE id=$object_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ // перенос всех объектов
+ $sql = "UPDATE objects SET id_add_user = $new_user->id, phone = '$phone', phone_search = '$num_search', sobstv = '$sobstv' WHERE id=$object_id";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- //Запись в сфинкс
- $sql_sph = "UPDATE objects SET id_add_user = $new_user->id, phone_search = '$num_search' WHERE id=$object_id";
- if (!$db_sphinx->query($sql_sph)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ //Запись в сфинкс
+ $sql_sph = "UPDATE objects SET id_add_user = $new_user->id, phone_search = '$num_search' WHERE id=$object_id";
+ if (!$db_sphinx->query($sql_sph)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- //перенос событий объектов
- $sql = "UPDATE user_object_events SET user_id = $new_user->id WHERE object_id = $object_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ //перенос событий объектов
+ $sql = "UPDATE user_object_events SET user_id = $new_user->id WHERE object_id = $object_id";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- //перенос комментариев объектов
- $sql = "UPDATE user_object_comments SET user_id = $new_user->id WHERE object_id = $object_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ //перенос комментариев объектов
+ $sql = "UPDATE user_object_comments SET user_id = $new_user->id WHERE object_id = $object_id";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- // перенос Зипал
- $sql = "UPDATE zipal_objects SET user_id = $new_user->id, send_to_update = 1 WHERE object_id = $object_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ // перенос Зипал
+ $sql = "UPDATE zipal_objects SET user_id = $new_user->id, send_to_update = 1 WHERE object_id = $object_id";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $sql = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id = $object_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ $sql = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id = $object_id";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- /**
- * Передача заявок Реализация
- */
- $sql_req = "SELECT id, `name`, object_id, type_id, who_work, funnel_id, confirm FROM `requisitions` WHERE object_id = {$object_id} AND cancel=0 AND deleted=0 AND (type_id = 2 or (SELECT heir FROM requisitions_type WHERE id = requisitions.type_id) = 2) AND who_work != '".$new_user->id."'";
- //echo $sql_req."\n";
- $q_req = mysql_query($sql_req);
- if(mysql_num_rows($q_req) > 0){
- while($r_req = mysql_fetch_assoc($q_req)){
- $sql_up = "UPDATE requisitions SET confirm=1, who_work={$new_user->id} WHERE id={$r_req['id']}";
- //echo $sql_up."\n";
- if(mysql_query($sql_up)){
- $sql_ev = "INSERT INTO `events_clients` (user_id, req_id, from_id, event, `read`, dop_text) VALUES ('".$user_id."', '{$r_req['id']}', '".$new_user->id."', 'update', '1', 'Переведена на ответственного при принятии объекта ID {$object_id}')";
- //file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_task_telega.txt", date('d.m.y H:i:s').' chat_id '.$chatId.' id:'.$event_id." ". $sql_ev."\n", FILE_APPEND);
- mysql_query($sql_ev);
- }
- }
- }
+ /**
+ * Передача заявок Реализация
+ */
+ $sql_req = "SELECT id, `name`, object_id, type_id, who_work, funnel_id, confirm FROM `requisitions` WHERE object_id = {$object_id} AND cancel=0 AND deleted=0 AND (type_id = 2 or (SELECT heir FROM requisitions_type WHERE id = requisitions.type_id) = 2) AND who_work != '".$new_user->id."'";
+ //echo $sql_req."\n";
+ $q_req = mysql_query($sql_req);
+ if(mysql_num_rows($q_req) > 0){
+ while($r_req = mysql_fetch_assoc($q_req)){
+ $sql_up = "UPDATE requisitions SET confirm=1, who_work={$new_user->id} WHERE id={$r_req['id']}";
+ //echo $sql_up."\n";
+ if(mysql_query($sql_up)){
+ $sql_ev = "INSERT INTO `events_clients` (user_id, req_id, from_id, event, `read`, dop_text) VALUES ('".$user_id."', '{$r_req['id']}', '".$new_user->id."', 'update', '1', 'Переведена на ответственного при принятии объекта ID {$object_id}')";
+ //file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_task_telega.txt", date('d.m.y H:i:s').' chat_id '.$chatId.' id:'.$event_id." ". $sql_ev."\n", FILE_APPEND);
+ mysql_query($sql_ev);
+ }
+ }
+ }
- //передаем клиентов
- /*$sql_clients = "SELECT `id`, `fio`, `email` FROM `clients` WHERE `objects` LIKE '%"".$object_id.""%'";
+ //передаем клиентов
+ /*$sql_clients = "SELECT `id`, `fio`, `email` FROM `clients` WHERE `objects` LIKE '%"".$object_id.""%'";
$q_client = mysql_query($sql_clients);
if (mysql_num_rows($q_client) > 0) {
while($client = mysql_fetch_assoc($q_client)) {
@@ -4057,41 +4057,41 @@ class CommonController extends ApiController
}
}*/
- $sql = "UPDATE objects_to_send SET accept_date = NOW(), accept_state='ACCEPTED' WHERE id = $source_id AND object_id=$object_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else if ($source_id && $state == 'rejected') {
- $sql = "UPDATE objects_to_send SET accept_date = NOW(), accept_state='REJECTED' WHERE id=$source_id AND object_id=$object_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $errors[] = mysql_error();
- }
- } else if ($type == 'transfer-client' && (isset($data['client_id']) || isset($data['req_id']))) {
+ $sql = "UPDATE objects_to_send SET accept_date = NOW(), accept_state='ACCEPTED' WHERE id = $source_id AND object_id=$object_id";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else if ($source_id && $state == 'rejected') {
+ $sql = "UPDATE objects_to_send SET accept_date = NOW(), accept_state='REJECTED' WHERE id=$source_id AND object_id=$object_id";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $errors[] = mysql_error();
+ }
+ } else if ($type == 'transfer-client' && (isset($data['client_id']) || isset($data['req_id']))) {
- $tr = $data['tr']; // @todo: `tr` ???
- $who_work = $user_id;
- $sender_id = (int)$data['sender_id'];
- $client_id = (int)$data['client_id'];
- $requisition_id = (int)$data['requisition_id'];
- if ($state == 'accepted') {
- if ($tr != 1) {
+ $tr = $data['tr']; // @todo: `tr` ???
+ $who_work = $user_id;
+ $sender_id = (int)$data['sender_id'];
+ $client_id = (int)$data['client_id'];
+ $requisition_id = (int)$data['requisition_id'];
+ if ($state == 'accepted') {
+ if ($tr != 1) {
- $sql = "UPDATE clients SET confirm=1, who_work=$who_work WHERE id=$client_id";
- if ($requisition_id > 0)
- $sql = "UPDATE requisitions SET confirm=1, who_work=$who_work WHERE id=$requisition_id";
+ $sql = "UPDATE clients SET confirm=1, who_work=$who_work WHERE id=$client_id";
+ if ($requisition_id > 0)
+ $sql = "UPDATE requisitions SET confirm=1, who_work=$who_work WHERE id=$requisition_id";
- if (mysql_query($sql)) {
+ if (mysql_query($sql)) {
- // Автопривязка ответственного по заявке к клиенту из заявки
- if ($requisition_id > 0) {
- $sql = "UPDATE `clients`
+ // Автопривязка ответственного по заявке к клиенту из заявки
+ if ($requisition_id > 0) {
+ $sql = "UPDATE `clients`
JOIN `requisitions` AS `req` ON
`clients`.`id` = `req`.`client_id` AND
`clients`.`who_work` = 0 AND
@@ -4102,1150 +4102,1150 @@ class CommonController extends ApiController
SET `clients`.`who_work` = '$who_work',
`clients`.`confirm` = 1";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $sql_client = "SELECT doers, who_work FROM clients WHERE id=$client_id";
- if ($requisition_id > 0)
- $sql_client = "SELECT doers, who_work FROM requisitions WHERE id=$requisition_id";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $sql_client = "SELECT doers, who_work FROM clients WHERE id=$client_id";
+ if ($requisition_id > 0)
+ $sql_client = "SELECT doers, who_work FROM requisitions WHERE id=$requisition_id";
- if ($q_client = mysql_query($sql_client)) {
- $r_client = mysql_fetch_assoc($q_client);
+ if ($q_client = mysql_query($sql_client)) {
+ $r_client = mysql_fetch_assoc($q_client);
- if (!empty($r_client['doers'])) {
- $confirm = 1;
- $doers = json_decode(html_entity_decode($r_client['doers']), true);
+ if (!empty($r_client['doers'])) {
+ $confirm = 1;
+ $doers = json_decode(html_entity_decode($r_client['doers']), true);
- $doers[$user_id] = 1;
- foreach($doers as $doer) {
- if ($doer == 0)
- $confirm = 0;
- }
+ $doers[$user_id] = 1;
+ foreach($doers as $doer) {
+ if ($doer == 0)
+ $confirm = 0;
+ }
- $sql = "UPDATE clients SET doers = '".self::clearInput(json_encode($doers))."', doers_confirm = $confirm WHERE id = $client_id";
- if ($requisition_id > 0)
- $sql = "UPDATE requisitions SET doers = '".self::clearInput(json_encode($doers))."', doers_confirm = $confirm WHERE id = $requisition_id";
+ $sql = "UPDATE clients SET doers = '".self::clearInput(json_encode($doers))."', doers_confirm = $confirm WHERE id = $client_id";
+ if ($requisition_id > 0)
+ $sql = "UPDATE requisitions SET doers = '".self::clearInput(json_encode($doers))."', doers_confirm = $confirm WHERE id = $requisition_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $sql = "UPDATE doers_emp_client SET confirm = 1 WHERE client_id = $client_id AND who_work = $r_client[who_work] AND doer_id = $user_id";
- if ($requisition_id > 0)
- $sql = "UPDATE doers_emp_client SET confirm = 1 WHERE req_id = $requisition_id AND who_work = $r_client[who_work] AND doer_id = $user_id";
+ $sql = "UPDATE doers_emp_client SET confirm = 1 WHERE client_id = $client_id AND who_work = $r_client[who_work] AND doer_id = $user_id";
+ if ($requisition_id > 0)
+ $sql = "UPDATE doers_emp_client SET confirm = 1 WHERE req_id = $requisition_id AND who_work = $r_client[who_work] AND doer_id = $user_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- // синкаем нормализованную таблицу, которую читает десктоп (Clients → clients_doers WHERE confirm=1)
- $sql = "UPDATE clients_doers SET confirm = 1 WHERE client_id = $client_id AND user_id = $user_id";
- if ($requisition_id > 0)
- $sql = "UPDATE requisition_doers SET confirm = 1 WHERE requisition_id = $requisition_id AND user_id = $user_id";
+ // синкаем нормализованную таблицу, которую читает десктоп (Clients → clients_doers WHERE confirm=1)
+ $sql = "UPDATE clients_doers SET confirm = 1 WHERE client_id = $client_id AND user_id = $user_id";
+ if ($requisition_id > 0)
+ $sql = "UPDATE requisition_doers SET confirm = 1 WHERE requisition_id = $requisition_id AND user_id = $user_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- if ($tr != 1) {
+ if ($tr != 1) {
- $sql = "UPDATE user_client_events SET user_id = $who_work WHERE client_id = $client_id AND type != 'step' AND type != 'file'";
- if ($requisition_id > 0)
- $sql = "UPDATE user_client_events SET user_id = $who_work WHERE req_id = $requisition_id AND type != 'step' AND type != 'file'";
+ $sql = "UPDATE user_client_events SET user_id = $who_work WHERE client_id = $client_id AND type != 'step' AND type != 'file'";
+ if ($requisition_id > 0)
+ $sql = "UPDATE user_client_events SET user_id = $who_work WHERE req_id = $requisition_id AND type != 'step' AND type != 'file'";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- $sql = "UPDATE `events_clients` SET `read` = 1, date_update = '".date('Y-m-d H:i:s')."' WHERE client_id = $client_id AND from_id = $user_id";
- if ($requisition_id > 0)
- $sql = "UPDATE `events_clients` SET `read` = 1, date_update = '".date('Y-m-d H:i:s')."' WHERE req_id = $requisition_id AND from_id = $user_id";
+ $sql = "UPDATE `events_clients` SET `read` = 1, date_update = '".date('Y-m-d H:i:s')."' WHERE client_id = $client_id AND from_id = $user_id";
+ if ($requisition_id > 0)
+ $sql = "UPDATE `events_clients` SET `read` = 1, date_update = '".date('Y-m-d H:i:s')."' WHERE req_id = $requisition_id AND from_id = $user_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $accepted = 'accepted';
- if ($tr == 1)
- $accepted = 'accepted_doer';
+ $accepted = 'accepted';
+ if ($tr == 1)
+ $accepted = 'accepted_doer';
- $sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$user_id."', '".$client_id."', '".$user_id."', '".$accepted."', '1')";
- if ($requisition_id > 0)
- $sql = "INSERT INTO `events_clients` (user_id, req_id, from_id, event, `read`) VALUES ('".$user_id."', '".$requisition_id."', '".$user_id."', '".$accepted."', '1')";
+ $sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$user_id."', '".$client_id."', '".$user_id."', '".$accepted."', '1')";
+ if ($requisition_id > 0)
+ $sql = "INSERT INTO `events_clients` (user_id, req_id, from_id, event, `read`) VALUES ('".$user_id."', '".$requisition_id."', '".$user_id."', '".$accepted."', '1')";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $rUser = null;
- $sobstv = '';
- $sqlUser = "SELECT `first_name`, `last_name`, `middle_name`, `phone` FROM `users` WHERE id=".$user_id;
- if ($qUser = mysql_query($sqlUser)) {
- $rUser = mysql_fetch_assoc($qUser);
- $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
- if ($_SESSION['agency']) {
- $sobstv = $sobstv . ", агентство " . $rUser['agency_name'];
- } else {
- $agency = new \User;
- if (isset($agency->agencyName)) {
- $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName;
- } else {
- $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $rUser = null;
+ $sobstv = '';
+ $sqlUser = "SELECT `first_name`, `last_name`, `middle_name`, `phone` FROM `users` WHERE id=".$user_id;
+ if ($qUser = mysql_query($sqlUser)) {
+ $rUser = mysql_fetch_assoc($qUser);
+ $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
+ if ($_SESSION['agency']) {
+ $sobstv = $sobstv . ", агентство " . $rUser['agency_name'];
+ } else {
+ $agency = new \User;
+ if (isset($agency->agencyName)) {
+ $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName;
+ } else {
+ $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if ($rUser && $tr != 1) {
+ if ($rUser && $tr != 1) {
- //$num_search = num_search($rUser['phone']);
+ //$num_search = num_search($rUser['phone']);
- //Передача объекта
- if ($requisition_id > 0) {
- $sql_cl = "SELECT `name` as `fio`, object_id, type_id FROM `requisitions` WHERE `id` = ".$requisition_id;
- $q_cl = mysql_query($sql_cl);
- $r_cl = mysql_fetch_assoc($q_cl);
- if ($r_cl['object_id'] && $r_cl['type_id'] != 4) {
- $sql = "UPDATE objects SET id_add_user = '".$user_id."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$r_cl['object_id'];
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $sql_client = "SELECT objects FROM clients WHERE id=$client_id";
- $q_client = mysql_query($sql_client);
- $r_client = mysql_fetch_assoc($q_client);
- $objects = json_decode(html_entity_decode($r_client['objects']), true);
- foreach($objects as $object) {
- $sql = "UPDATE objects SET id_add_user = '".$user_id."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object;
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
- }
- } else if ($state == 'rejected') {
+ //Передача объекта
+ if ($requisition_id > 0) {
+ $sql_cl = "SELECT `name` as `fio`, object_id, type_id FROM `requisitions` WHERE `id` = ".$requisition_id;
+ $q_cl = mysql_query($sql_cl);
+ $r_cl = mysql_fetch_assoc($q_cl);
+ if ($r_cl['object_id'] && $r_cl['type_id'] != 4) {
+ $sql = "UPDATE objects SET id_add_user = '".$user_id."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$r_cl['object_id'];
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $sql_client = "SELECT objects FROM clients WHERE id=$client_id";
+ $q_client = mysql_query($sql_client);
+ $r_client = mysql_fetch_assoc($q_client);
+ $objects = json_decode(html_entity_decode($r_client['objects']), true);
+ foreach($objects as $object) {
+ $sql = "UPDATE objects SET id_add_user = '".$user_id."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object;
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+ }
+ } else if ($state == 'rejected') {
- if ($tr != 1) {
+ if ($tr != 1) {
- $confirm = 0;
- if ($user_id == $who_work)
- $confirm = 1;
+ $confirm = 0;
+ if ($user_id == $who_work)
+ $confirm = 1;
- $sql = "UPDATE clients SET confirm=$confirm, who_work=$who_work WHERE id=$client_id";
- if ($requisition_id > 0)
- $sql = "UPDATE requisitions SET confirm=$confirm, who_work=$who_work WHERE id=$requisition_id";
+ $sql = "UPDATE clients SET confirm=$confirm, who_work=$who_work WHERE id=$client_id";
+ if ($requisition_id > 0)
+ $sql = "UPDATE requisitions SET confirm=$confirm, who_work=$who_work WHERE id=$requisition_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
- $sql_client = "SELECT doers, who_work FROM clients WHERE id=$client_id";
- if ($requisition_id > 0)
- $sql_client = "SELECT doers, who_work FROM requisitions WHERE id=$requisition_id";
+ $sql_client = "SELECT doers, who_work FROM clients WHERE id=$client_id";
+ if ($requisition_id > 0)
+ $sql_client = "SELECT doers, who_work FROM requisitions WHERE id=$requisition_id";
- if ($q_client = mysql_query($sql_client)) {
+ if ($q_client = mysql_query($sql_client)) {
- $r_client = mysql_fetch_assoc($q_client);
+ $r_client = mysql_fetch_assoc($q_client);
- $doer_clients = 0;
- if (!empty($r_client['doers'])) {
+ $doer_clients = 0;
+ if (!empty($r_client['doers'])) {
- $confirm = 1;
- $doers = json_decode(html_entity_decode($r_client['doers']), true);
- unset($doers[$user_id]);
+ $confirm = 1;
+ $doers = json_decode(html_entity_decode($r_client['doers']), true);
+ unset($doers[$user_id]);
- if (empty($doers)) {
- $confirm = 1;
- } else {
- foreach($doers as $id_user => $doer) {
+ if (empty($doers)) {
+ $confirm = 1;
+ } else {
+ foreach($doers as $id_user => $doer) {
- if ($doer == 0)
- $confirm = 0;
+ if ($doer == 0)
+ $confirm = 0;
- if ($id_user != $r_client['who_work'])
- $doer_clients = 1;
+ if ($id_user != $r_client['who_work'])
+ $doer_clients = 1;
- }
- }
+ }
+ }
- $sql = "UPDATE clients SET doers='".self::clearInput(json_encode($doers))."', doers_confirm=$confirm, doer_clients=$doer_clients WHERE id=$client_id";
- if ($requisition_id > 0)
- $sql = "UPDATE requisitions SET doers='".self::clearInput(json_encode($doers))."', doers_confirm=$confirm, doer_clients=$doer_clients WHERE id=$requisition_id";
+ $sql = "UPDATE clients SET doers='".self::clearInput(json_encode($doers))."', doers_confirm=$confirm, doer_clients=$doer_clients WHERE id=$client_id";
+ if ($requisition_id > 0)
+ $sql = "UPDATE requisitions SET doers='".self::clearInput(json_encode($doers))."', doers_confirm=$confirm, doer_clients=$doer_clients WHERE id=$requisition_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- $from = $user_id;
- if ($event_id) {
- $sql_from = "SELECT user_id FROM `events_clients` WHERE `id` = $event_id";
- if ($q_from = mysql_query($sql_from)) {
- $r_from = mysql_fetch_assoc($q_from);
- $from = $r_from['user_id'];
- $sql = "UPDATE `events_clients` set `read` = 1, `date_update`='".date('Y-m-d H:i:s')."' WHERE `id` = $event_id";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
+ $from = $user_id;
+ if ($event_id) {
+ $sql_from = "SELECT user_id FROM `events_clients` WHERE `id` = $event_id";
+ if ($q_from = mysql_query($sql_from)) {
+ $r_from = mysql_fetch_assoc($q_from);
+ $from = $r_from['user_id'];
+ $sql = "UPDATE `events_clients` set `read` = 1, `date_update`='".date('Y-m-d H:i:s')."' WHERE `id` = $event_id";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
- $sql_from = "SELECT id, user_id FROM `events_clients` WHERE `read` = 0 AND `client_id` = $client_id AND `from_id` = $from";
- if ($requisition_id > 0)
- $sql_from = "SELECT id, user_id FROM `events_clients` WHERE `read` = 0 AND `req_id` = $requisition_id AND `from_id` = $from";
+ $sql_from = "SELECT id, user_id FROM `events_clients` WHERE `read` = 0 AND `client_id` = $client_id AND `from_id` = $from";
+ if ($requisition_id > 0)
+ $sql_from = "SELECT id, user_id FROM `events_clients` WHERE `read` = 0 AND `req_id` = $requisition_id AND `from_id` = $from";
- if ($q_from = mysql_query($sql_from)) {
- $r_from = mysql_fetch_assoc($q_from);
- $from = $r_from['user_id'];
- $id_event = $r_from['id'];
- $sql = "UPDATE `events_clients` SET `read` = 1, `date_update`='".date('Y-m-d H:i:s')."' WHERE `id` = $id_event";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if ($q_from = mysql_query($sql_from)) {
+ $r_from = mysql_fetch_assoc($q_from);
+ $from = $r_from['user_id'];
+ $id_event = $r_from['id'];
+ $sql = "UPDATE `events_clients` SET `read` = 1, `date_update`='".date('Y-m-d H:i:s')."' WHERE `id` = $id_event";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- $read = 0;
- if ($from == $user_id || $tr == 1)
- $read = 1;
+ $read = 0;
+ if ($from == $user_id || $tr == 1)
+ $read = 1;
- $event = 'notadopted';
- if ($tr == 1) {
- $read = 1;
- $event = 'notadopted_doer';
- }
+ $event = 'notadopted';
+ if ($tr == 1) {
+ $read = 1;
+ $event = 'notadopted_doer';
+ }
- $sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`, send_telegramm) VALUES ('".$user_id."', '".$client_id."', '".$from."', '".$event."', '".$read."', '1')";
- if ($requisition_id > 0)
- $sql = "INSERT INTO `events_clients` (user_id, req_id, from_id, event, `read`, send_telegramm) VALUES ('".$user_id."', '".$requisition_id."', '".$from."', '".$event."', '".$read."', '1')";
+ $sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`, send_telegramm) VALUES ('".$user_id."', '".$client_id."', '".$from."', '".$event."', '".$read."', '1')";
+ if ($requisition_id > 0)
+ $sql = "INSERT INTO `events_clients` (user_id, req_id, from_id, event, `read`, send_telegramm) VALUES ('".$user_id."', '".$requisition_id."', '".$from."', '".$event."', '".$read."', '1')";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
- if (!$error) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if (!$error) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
public function setViewed($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
+ $error = false;
+ $errors = [];
- $body = $app->request->getBody();
- $data = json_decode(stripcslashes($body), true);
+ $body = $app->request->getBody();
+ $data = json_decode(stripcslashes($body), true);
- $object_id = null;
- if (isset($data['object_id']))
- $object_id = (int)$data['object_id'];
+ $object_id = null;
+ if (isset($data['object_id']))
+ $object_id = (int)$data['object_id'];
- $client_id = null;
- if (isset($data['client_id']))
- $client_id = (int)$data['client_id'];
+ $client_id = null;
+ if (isset($data['client_id']))
+ $client_id = (int)$data['client_id'];
- $requisition_id = null;
- if (isset($data['requisition_id']))
- $requisition_id = (int)$data['requisition_id'];
+ $requisition_id = null;
+ if (isset($data['requisition_id']))
+ $requisition_id = (int)$data['requisition_id'];
- if (($user_id = $_SESSION['id']) && ($object_id || $client_id || $requisition_id)) {
+ if (($user_id = $_SESSION['id']) && ($object_id || $client_id || $requisition_id)) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- if ($object_id && in_array($object_id, $_SESSION['new_transfers']['objects'])) {
- $key = array_search($object_id, $_SESSION['new_transfers']['objects']);
- if ($key !== false) {
- unset($_SESSION['new_transfers']['objects'][$key]);
- }
- }
+ if ($object_id && in_array($object_id, $_SESSION['new_transfers']['objects'])) {
+ $key = array_search($object_id, $_SESSION['new_transfers']['objects']);
+ if ($key !== false) {
+ unset($_SESSION['new_transfers']['objects'][$key]);
+ }
+ }
- if ($client_id && in_array($client_id, $_SESSION['new_transfers']['clients'])) {
- $key = array_search($client_id, $_SESSION['new_transfers']['clients']);
- if ($key !== false) {
- unset($_SESSION['new_transfers']['clients'][$key]);
- }
- }
+ if ($client_id && in_array($client_id, $_SESSION['new_transfers']['clients'])) {
+ $key = array_search($client_id, $_SESSION['new_transfers']['clients']);
+ if ($key !== false) {
+ unset($_SESSION['new_transfers']['clients'][$key]);
+ }
+ }
- if ($requisition_id && in_array($requisition_id, $_SESSION['new_transfers']['requisitions'])) {
- $key = array_search($requisition_id, $_SESSION['new_transfers']['requisitions']);
- if ($key !== false) {
- unset($_SESSION['new_transfers']['requisitions'][$key]);
- }
- }
+ if ($requisition_id && in_array($requisition_id, $_SESSION['new_transfers']['requisitions'])) {
+ $key = array_search($requisition_id, $_SESSION['new_transfers']['requisitions']);
+ if ($key !== false) {
+ unset($_SESSION['new_transfers']['requisitions'][$key]);
+ }
+ }
- // Обновление инфо о том, что клиент/заявка были просмотрены пользователем
- if ($client_id > 0) {
- $sql = "UPDATE `events_clients` SET `viewed` = 1
+ // Обновление инфо о том, что клиент/заявка были просмотрены пользователем
+ if ($client_id > 0) {
+ $sql = "UPDATE `events_clients` SET `viewed` = 1
WHERE `viewed` = 0 AND `read` = 1 AND
`user_id` = '$user_id' AND
`client_id` = '$client_id' AND
`from_id` = '$user_id' AND
(`event` = 'accepted' OR `event` = 'accepted_doer')";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- if ($requisition_id > 0) {
- $sql = "UPDATE `events_clients` SET `viewed` = 1
+ if ($requisition_id > 0) {
+ $sql = "UPDATE `events_clients` SET `viewed` = 1
WHERE `viewed` = 0 AND `read` = 1 AND
`user_id` = '$user_id' AND
`req_id` = '$requisition_id' AND
`from_id` = '$user_id' AND
(`event` = 'accepted' OR `event` = 'accepted_doer')";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- if (!$errors) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$errors,
- 'user_id' => (int)$user_id,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if (!$errors) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$errors,
+ 'user_id' => (int)$user_id,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
}
public function setFunnels($app, $get = null, $post = null) {
- $body = $app->request->getBody();
- $data = json_decode(stripcslashes($body), true);
+ $body = $app->request->getBody();
+ $data = json_decode(stripcslashes($body), true);
- $errors = [];
+ $errors = [];
- $section = null;
- if (isset($data['section']))
- $section = trim($data['section']);
+ $section = null;
+ if (isset($data['section']))
+ $section = trim($data['section']);
- $clients_ids = null;
- if (isset($data['sources_ids']) && $section == 'clients')
- $clients_ids = $data['sources_ids'];
+ $clients_ids = null;
+ if (isset($data['sources_ids']) && $section == 'clients')
+ $clients_ids = $data['sources_ids'];
- $req_ids = null;
- if (isset($data['sources_ids']) && $section == 'requisitions')
- $req_ids = $data['sources_ids'];
+ $req_ids = null;
+ if (isset($data['sources_ids']) && $section == 'requisitions')
+ $req_ids = $data['sources_ids'];
- $funnel_id = null;
- if (isset($data['funnel_id']))
- $funnel_id = (int)$data['funnel_id'];
+ $funnel_id = null;
+ if (isset($data['funnel_id']))
+ $funnel_id = (int)$data['funnel_id'];
- if (($user_id = $_SESSION['id']) && $section && !empty($funnel_id) && ($req_ids || $clients_ids)) {
+ if (($user_id = $_SESSION['id']) && $section && !empty($funnel_id) && ($req_ids || $clients_ids)) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- if ($clients_ids && $section == 'clients') {
+ if ($clients_ids && $section == 'clients') {
- if (!is_array($clients_ids))
- $clients_ids = [$clients_ids];
+ if (!is_array($clients_ids))
+ $clients_ids = [$clients_ids];
- $client_inst = new \Clients();
- foreach ($clients_ids as $client_id) {
+ $client_inst = new \Clients();
+ foreach ($clients_ids as $client_id) {
- $result = $client_inst->updateFunnel([
- 'id' => $client_id,
- 'new_funnel_id' => $funnel_id,
- ]);
+ $result = $client_inst->updateFunnel([
+ 'id' => $client_id,
+ 'new_funnel_id' => $funnel_id,
+ ]);
- if ($result !== true)
- $errors[] = $result;
+ if ($result !== true)
+ $errors[] = $result;
- }
- } else if ($req_ids && $section == 'requisitions') {
+ }
+ } else if ($req_ids && $section == 'requisitions') {
- if (!is_array($req_ids))
- $req_ids = [$req_ids];
+ if (!is_array($req_ids))
+ $req_ids = [$req_ids];
- // Открываем соединение с БД
- $pdo = $app->container->get('mypdo');
- $req_inst = new \Requisitions($pdo);
- foreach ($req_ids as $req_id) {
+ // Открываем соединение с БД
+ $pdo = $app->container->get('mypdo');
+ $req_inst = new \Requisitions($pdo);
+ foreach ($req_ids as $req_id) {
- $result = $req_inst->updateFunnel($funnel_id, $req_id);
- if ($result !== true)
- $errors[] = $result;
+ $result = $req_inst->updateFunnel($funnel_id, $req_id);
+ if ($result !== true)
+ $errors[] = $result;
- }
- }
+ }
+ }
- if (!count($errors)) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if (!count($errors)) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
}
public function setTags($app, $get = null, $post = null, $need_return = false) {
- if (!empty($post)) {
- $data = $post;
- } else {
- $body = $app->request->getBody();
- $data = json_decode(stripcslashes($body), true);
- }
+ if (!empty($post)) {
+ $data = $post;
+ } else {
+ $body = $app->request->getBody();
+ $data = json_decode(stripcslashes($body), true);
+ }
if (($user_id = $_SESSION['id']) && isset($data['section']) && isset($data['source_id']) && isset($data['tags_list'])) {
- // Открываем соединение с БД
- $pdo = $app->container->get('pdo');
+ // Открываем соединение с БД
+ $pdo = $app->container->get('pdo');
- $section = (string)$data['section'];
- $source_id = (int)$data['source_id'];
- $tags_list = (array)$data['tags_list'];
+ $section = (string)$data['section'];
+ $source_id = (int)$data['source_id'];
+ $tags_list = (array)$data['tags_list'];
- $set = [];
- $tags = [];
- foreach ($tags_list as $tag) {
- if (boolval($tag['isChecked'])) {
- $tag_id = (isset($tag['value'])) ? (int)$tag['value'] : (int)$tag['id'];
- $tags[] = $tag_id;
- $set[] = "('$source_id', '$tag_id')";
- }
- }
+ $set = [];
+ $tags = [];
+ foreach ($tags_list as $tag) {
+ if (boolval($tag['isChecked'])) {
+ $tag_id = (isset($tag['value'])) ? (int)$tag['value'] : (int)$tag['id'];
+ $tags[] = $tag_id;
+ $set[] = "('$source_id', '$tag_id')";
+ }
+ }
- list($sql, $sql2) = ['' , ''];
- switch ($section) {
- case 'objects' :
- $sql = "DELETE FROM `objects_activities` WHERE `object_id` = '".$source_id."'";
- if (count($set) > 0)
- $sql2 = "INSERT INTO `objects_activities` (`object_id`, `activity_id`) VALUES " . implode(', ', $set);
+ list($sql, $sql2) = ['' , ''];
+ switch ($section) {
+ case 'objects' :
+ $sql = "DELETE FROM `objects_activities` WHERE `object_id` = '".$source_id."'";
+ if (count($set) > 0)
+ $sql2 = "INSERT INTO `objects_activities` (`object_id`, `activity_id`) VALUES " . implode(', ', $set);
- break;
- case 'clients' :
- $sql = "DELETE FROM `clients_activities` WHERE `client_id` = '".$source_id."'";
- if (count($set) > 0)
- $sql2 = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES " . implode(', ', $set);
+ break;
+ case 'clients' :
+ $sql = "DELETE FROM `clients_activities` WHERE `client_id` = '".$source_id."'";
+ if (count($set) > 0)
+ $sql2 = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES " . implode(', ', $set);
- break;
- case 'requisitions' :
- $sql = "DELETE FROM `requisitions_activities` WHERE `req_id` = '".$source_id."'";
- if (count($set) > 0)
- $sql2 = "INSERT INTO `requisitions_activities` (`req_id`, `activity_id`) VALUES " . implode(', ', $set);
+ break;
+ case 'requisitions' :
+ $sql = "DELETE FROM `requisitions_activities` WHERE `req_id` = '".$source_id."'";
+ if (count($set) > 0)
+ $sql2 = "INSERT INTO `requisitions_activities` (`req_id`, `activity_id`) VALUES " . implode(', ', $set);
- break;
+ break;
- }
+ }
- $error = false;
- if (!empty($sql)) {
- if (!$pdo->query($sql))
- $error = true;
- }
- if (!empty($sql2)) {
- if (!$pdo->query($sql2))
- $error = true;
- }
+ $error = false;
+ if (!empty($sql)) {
+ if (!$pdo->query($sql))
+ $error = true;
+ }
+ if (!empty($sql2)) {
+ if (!$pdo->query($sql2))
+ $error = true;
+ }
- if ($need_return) {
- if (!empty($error))
- return false;
- else
- return $tags;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'tags_ids' => $tags,
- 'tags_list' => $tags_list
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ if ($need_return) {
+ if (!empty($error))
+ return false;
+ else
+ return $tags;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'tags_ids' => $tags,
+ 'tags_list' => $tags_list
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
}
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id']
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id']
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function getPresentationLink($app, $get = null, $post = null) {
+ public function getPresentationLink($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
+ $error = false;
+ $errors = [];
- $body = $app->request->getBody();
- $data = json_decode($body, true);
+ $body = $app->request->getBody();
+ $data = json_decode($body, true);
if (($user_id = $_SESSION['id']) && (isset($data['object_id']) || isset($data['newbuilding_id']))) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $object_id = null;
- if (isset($data['object_id']))
- $object_id = (int)$data['object_id'];
+ $object_id = null;
+ if (isset($data['object_id']))
+ $object_id = (int)$data['object_id'];
- $newbuilding_id = null;
- if (isset($data['newbuilding_id']))
- $newbuilding_id = (int)$data['newbuilding_id'];
+ $newbuilding_id = null;
+ if (isset($data['newbuilding_id']))
+ $newbuilding_id = (int)$data['newbuilding_id'];
- $client_id = null;
- if (isset($data['client_id']))
- $client_id = (int)$data['client_id'];
+ $client_id = null;
+ if (isset($data['client_id']))
+ $client_id = (int)$data['client_id'];
- $hide_contacts = [];
- if (isset($data['hide_contacts']))
- $hide_contacts = array_unique(array_map('intval', $data['hide_contacts']));
+ $hide_contacts = [];
+ if (isset($data['hide_contacts']))
+ $hide_contacts = array_unique(array_map('intval', $data['hide_contacts']));
- $send_type = null;
- if (isset($data['with']))
- $send_type = (int)$data['with'];
+ $send_type = null;
+ if (isset($data['with']))
+ $send_type = (int)$data['with'];
- $new_prices = [];
- $descriptions = [];
- if (isset($data['descriptions'])) {
- $array = (array)$data['descriptions'];
- foreach ($array as $object_id => $value) {
+ $new_prices = [];
+ $descriptions = [];
+ if (isset($data['descriptions'])) {
+ $array = (array)$data['descriptions'];
+ foreach ($array as $object_id => $value) {
- $object_id = str_replace('object_', '', $object_id);
- if (isset($value['description']))
- $descriptions[intval($object_id)] = $value['description'];
+ $object_id = str_replace('object_', '', $object_id);
+ if (isset($value['description']))
+ $descriptions[intval($object_id)] = $value['description'];
- if (isset($value['price']))
- $new_prices[intval($object_id)] = $value['price'];
+ if (isset($value['price']))
+ $new_prices[intval($object_id)] = $value['price'];
- };
- }
+ };
+ }
- $link = null;
- if (!is_null($object_id) || !is_null($newbuilding_id)) {
+ $link = null;
+ if (!is_null($object_id) || !is_null($newbuilding_id)) {
- /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
+ /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', 1);*/
- if (!is_null($object_id)) {
+ if (!is_null($object_id)) {
- // Найденный листинг парсера (offset-free): строки в objects нет, образ собираем из external_listings
- // по РЕАЛЬНОМУ el.id. Признак листинга — явный флаг is_external из запроса (id коллизит с objects.id).
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_legacy.php';
- $is_listing = self::_request_flag($data, 'is_external');
+ // Найденный листинг парсера (offset-free): строки в objects нет, образ собираем из external_listings
+ // по РЕАЛЬНОМУ el.id. Признак листинга — явный флаг is_external из запроса (id коллизит с objects.id).
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_legacy.php';
+ $is_listing = self::_request_flag($data, 'is_external');
- $obj = false;
- $obj_found = false;
- if ($is_listing) {
- $obj = \external_listing_object_row($object_id, false);
- if (is_null($obj)) {
- // Листинг удалён по TTL — отвечаем ошибкой, как для ненайденного объекта.
- $error = true;
- $errors[] = 'Объявление снято с публикации';
- } else {
- // Поля внешнего источника экранируем для прямой подстановки в SQL.
- $obj['nazv'] = mysql_real_escape_string($obj['nazv']);
- $obj['adres'] = mysql_real_escape_string($obj['adres']);
- $obj_found = true;
- }
- } else {
- $sql = "SELECT * FROM objects WHERE id=$object_id";
- if ($rez = mysql_query($sql)) {
- $obj = mysql_fetch_assoc($rez);
- $obj_found = true;
- }
- }
+ $obj = false;
+ $obj_found = false;
+ if ($is_listing) {
+ $obj = \external_listing_object_row($object_id, false);
+ if (is_null($obj)) {
+ // Листинг удалён по TTL — отвечаем ошибкой, как для ненайденного объекта.
+ $error = true;
+ $errors[] = 'Объявление снято с публикации';
+ } else {
+ // Поля внешнего источника экранируем для прямой подстановки в SQL.
+ $obj['nazv'] = mysql_real_escape_string($obj['nazv']);
+ $obj['adres'] = mysql_real_escape_string($obj['adres']);
+ $obj_found = true;
+ }
+ } else {
+ $sql = "SELECT * FROM objects WHERE id=$object_id";
+ if ($rez = mysql_query($sql)) {
+ $obj = mysql_fetch_assoc($rez);
+ $obj_found = true;
+ }
+ }
- if ($obj_found) {
+ if ($obj_found) {
- // Листинг адресуется явным маркером src=ext (bare id уже не различает листинг от своего объекта).
- $src_marker = $is_listing ? '&src=ext' : '';
+ // Листинг адресуется явным маркером src=ext (bare id уже не различает листинг от своего объекта).
+ $src_marker = $is_listing ? '&src=ext' : '';
- if ($send_type == 2) {
+ if ($send_type == 2) {
- $pdfs = $this->_getPDF([$object_id], $descriptions, $new_prices, $hide_contacts, $is_listing ? [$object_id] : []);
- if (isset($pdfs[$object_id]['link']))
- $linkUrl = $pdfs[$object_id]['link'];
+ $pdfs = $this->_getPDF([$object_id], $descriptions, $new_prices, $hide_contacts, $is_listing ? [$object_id] : []);
+ if (isset($pdfs[$object_id]['link']))
+ $linkUrl = $pdfs[$object_id]['link'];
- } else {
+ } else {
- if (self::is_ssl())
- $linkUrl = "https://joywork.ru/object-view.php?id=$object_id&token=" . md5($user_id) . $src_marker;
- else
- $linkUrl = "http://joywork.ru/object-view.php?id=$object_id&token=" . md5($user_id) . $src_marker;
+ if (self::is_ssl())
+ $linkUrl = "https://joywork.ru/object-view.php?id=$object_id&token=" . md5($user_id) . $src_marker;
+ else
+ $linkUrl = "http://joywork.ru/object-view.php?id=$object_id&token=" . md5($user_id) . $src_marker;
- }
+ }
- $new_price = 0;
- if (isset($new_prices[$object_id]))
- $new_price = $new_prices[$object_id];
+ $new_price = 0;
+ if (isset($new_prices[$object_id]))
+ $new_price = $new_prices[$object_id];
- if (!is_null($client_id))
- $linkUrl .= "&client=" . md5($client_id);
- else
- $client_id = "0";
+ if (!is_null($client_id))
+ $linkUrl .= "&client=" . md5($client_id);
+ else
+ $client_id = "0";
- $close_contact = 0;
- if (in_array($object_id, $hide_contacts))
- $close_contact = 1;
+ $close_contact = 0;
+ if (in_array($object_id, $hide_contacts))
+ $close_contact = 1;
- // Для найденного листинга флаг скрытия контакта не пишем — его контакт скрыт всегда.
- if (!$is_listing) {
- $sql_up = "INSERT INTO user_object_contact_close SET close={$close_contact}, user_id={$user_id}, object_id = {$object_id}, client_id = {$client_id}";
- if (!mysql_query($sql_up)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ // Для найденного листинга флаг скрытия контакта не пишем — его контакт скрыт всегда.
+ if (!$is_listing) {
+ $sql_up = "INSERT INTO user_object_contact_close SET close={$close_contact}, user_id={$user_id}, object_id = {$object_id}, client_id = {$client_id}";
+ if (!mysql_query($sql_up)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- $token = md5(microtime());
+ $token = md5(microtime());
- // Per-send описание, переданное mJW в POST-параметре `descriptions`.
- $descriptionForInsert = "NULL";
- if (isset($descriptions[intval($object_id)]) && $descriptions[intval($object_id)] !== '') {
- $cleanedDesc = cleanHtml($descriptions[intval($object_id)], '
') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' ') === false && strpos($cleanedDesc, ' '.$field_models['label'].': '.clearInputElement($val).' '.$field_models['label'].': ';
- $value = (int)$field_models['value'];
- if($value == 1){
- $text .= 'Да '.$field_models['label'].': '.clearInputElement($value).' '.$field_models['label'].': '.clearInputElement($val).' '.$field_models['label'].': ';
+ $value = (int)$field_models['value'];
+ if($value == 1){
+ $text .= 'Да '.$field_models['label'].': '.clearInputElement($value).' ' . $event['label'] . ': ' . date('d.m.Y', strtotime($event['value'])) . ' ' . $event['label'] . ': ' . date('d.m.Y', strtotime($event['value'])) . ' ' . $event['label'] . ': ' . $doc['name'] . ' ' . $event['label'] . ': ' . $doc['name'] . ' ' . $event['label'] . ': ' . self::clearInput($event['value']) . ' ' . $event['label'] . ': ' . self::clearInput($event['value']) . ' '.$event['label'].': '.trim($event['value']).' '.$event['label'].': '.$event['value']['summa'];
- if(!empty($event['value']['comment'])){
- $text .= ' Комментарий: '.clearInputElement($event['value']['comment']);
- }
- $sql_ex = "SELECT * FROM expenses_req WHERE req_id = {$requisition_id} AND funnel_id = {$funnel_id} AND step_id = {$step_id}";
- $q_ex = mysql_query($sql_ex);
- if(mysql_num_rows($q_ex) > 0){
- $r_ex = mysql_fetch_assoc($q_ex);
- $comment = mysql_real_escape_string($event['value']['comment']);
+ } else if ($event['type'] == 'commission' && (int)$event['value'] > 0 && $requisition_id > 0){ // Только для заявок
+ $text .= ' '.$event['label'].': '.trim($event['value']).' ' . $event['label'] . ': ' . trim($event['value']) . ' '.$event['label'].': '.$event['value']['summa'];
+ if(!empty($event['value']['comment'])){
+ $text .= ' Комментарий: '.clearInputElement($event['value']['comment']);
+ }
+ $sql_ex = "SELECT * FROM expenses_req WHERE req_id = {$requisition_id} AND funnel_id = {$funnel_id} AND step_id = {$step_id}";
+ $q_ex = mysql_query($sql_ex);
+ if(mysql_num_rows($q_ex) > 0){
+ $r_ex = mysql_fetch_assoc($q_ex);
+ $comment = mysql_real_escape_string($event['value']['comment']);
- if (empty($text))
- $text = '';
+ $sql_up = "UPDATE expenses_req SET amount = '{$event['value']['summa']}', comment = '{$comment}' where id = {$r_ex['id']}";
+ mysql_query($sql_up);
+ $amount = rtrim(rtrim((float)$r_ex['amount'], '0'), '.');
+ if($amount != (float)$event['value']['summa']){
+ $text_expenses = "Изменено: {$event['label']} с {$amount} на {$event['value']['summa']}";
+ if(!empty($event['value']['comment'])){
+ $text_expenses .= " Добавлен комментарий: ".$event['value']['comment'];
+ }
+ $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$user_id}, {$user_id}, {$requisition_id}, 'update', '{$text_expenses}', 1)";
- $sql = "INSERT INTO `user_client_events`
+ mysql_query($sql_event);
+ }
+ } else {
+ $comment = mysql_real_escape_string(trim($event['value']['comment']));
+
+ $sql_in = "INSERT INTO `expenses_req`(`user_id`, `req_id`, `amount`, `comment`, `funnel_id`, `step_id`) VALUES ({$userId}, {$requisition_id}, {$event['value']['summa']}, '{$comment}', {$funnel_id}, {$step_id})";
+ mysql_query($sql_in);
+ $text_expenses = "Добавлено: {$event['label']} - {$event['value']['summa']}";
+ if(!empty($event['value']['comment'])){
+ $text_expenses .= " Добавлен комментарий: ".$event['value']['comment'];
+ }
+ $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$user_id}, {$user_id}, {$requisition_id}, 'update', '{$text_expenses}', 1)";
+ mysql_query($sql_event);
+ }
+ } else if (!is_null($event['value'])) {
+ $text .= ' ' . $event['label'] . ': ' . trim($event['value']) . '
,
- // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
- if ($cleanedDesc !== '' && strpos($cleanedDesc, '
,
+ // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
+ if ($cleanedDesc !== '' && strpos($cleanedDesc, '
response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'link' => $link
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ if (!count($errors)) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'link' => $link
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function getCatalogLink($app, $get = null, $post = null, $need_return = false) {
+ public function getCatalogLink($app, $get = null, $post = null, $need_return = false) {
- $error = false;
- $errors = [];
+ $error = false;
+ $errors = [];
- $body = $app->request->getBody();
- $data = json_decode($body, true);
+ $body = $app->request->getBody();
+ $data = json_decode($body, true);
if (($user_id = $_SESSION['id']) && (isset($data['objects_ids']) || isset($data['external_objects_ids']) || isset($data['newbuildings_ids']))) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $objects_ids = [];
- if (isset($data['objects_ids']))
- $objects_ids = array_unique(array_map('intval', (array)$data['objects_ids']));
+ $objects_ids = [];
+ if (isset($data['objects_ids']))
+ $objects_ids = array_unique(array_map('intval', (array)$data['objects_ids']));
- // Offset-free: листинги парсера приходят ОТДЕЛЬНЫМ массивом реальных el.id (objects_ids — только свои объекты).
- // Разделить по диапазону id больше нельзя — el.id коллизит с objects.id.
- $external_objects_ids = [];
- if (isset($data['external_objects_ids']))
- $external_objects_ids = array_unique(array_map('intval', (array)$data['external_objects_ids']));
+ // Offset-free: листинги парсера приходят ОТДЕЛЬНЫМ массивом реальных el.id (objects_ids — только свои объекты).
+ // Разделить по диапазону id больше нельзя — el.id коллизит с objects.id.
+ $external_objects_ids = [];
+ if (isset($data['external_objects_ids']))
+ $external_objects_ids = array_unique(array_map('intval', (array)$data['external_objects_ids']));
- $newbuildings_ids = [];
- if (isset($data['newbuildings_ids']))
- $newbuildings_ids = array_unique(array_map('intval', (array)$data['newbuildings_ids']));
+ $newbuildings_ids = [];
+ if (isset($data['newbuildings_ids']))
+ $newbuildings_ids = array_unique(array_map('intval', (array)$data['newbuildings_ids']));
- $clients_ids = [];
- if (isset($data['clients_ids']))
- $clients_ids = array_unique(array_map('intval', (array)$data['clients_ids']));
+ $clients_ids = [];
+ if (isset($data['clients_ids']))
+ $clients_ids = array_unique(array_map('intval', (array)$data['clients_ids']));
- if (empty($clients_ids))
- $clients_ids = [0];
+ if (empty($clients_ids))
+ $clients_ids = [0];
- $catalog_id = null;
- if (isset($data['catalog_id']))
- $catalog_id = (int)$data['catalog_id'];
+ $catalog_id = null;
+ if (isset($data['catalog_id']))
+ $catalog_id = (int)$data['catalog_id'];
- $hide_contacts = [];
- if (isset($data['hide_contacts']))
- $hide_contacts = array_unique(array_map('intval', (array)$data['hide_contacts']));
+ $hide_contacts = [];
+ if (isset($data['hide_contacts']))
+ $hide_contacts = array_unique(array_map('intval', (array)$data['hide_contacts']));
- $hide_address = [];
- if (isset($data['hide_address']))
- $hide_address = array_unique(array_map('intval', (array)$data['hide_address']));
+ $hide_address = [];
+ if (isset($data['hide_address']))
+ $hide_address = array_unique(array_map('intval', (array)$data['hide_address']));
- $send_type = 0;
- if (isset($data['with']))
- $send_type = (int)$data['with'];
+ $send_type = 0;
+ if (isset($data['with']))
+ $send_type = (int)$data['with'];
- $new_prices = [];
- $descriptions = [];
- if (isset($data['descriptions'])) {
- $array = (array)$data['descriptions'];
- foreach ($array as $object_id => $value) {
+ $new_prices = [];
+ $descriptions = [];
+ if (isset($data['descriptions'])) {
+ $array = (array)$data['descriptions'];
+ foreach ($array as $object_id => $value) {
- $object_id = str_replace('object_', '', $object_id);
- if (isset($value['description']))
- $descriptions[intval($object_id)] = $value['description'];
+ $object_id = str_replace('object_', '', $object_id);
+ if (isset($value['description']))
+ $descriptions[intval($object_id)] = $value['description'];
- if (isset($value['price']))
- $new_prices[intval($object_id)] = $value['price'];
+ if (isset($value['price']))
+ $new_prices[intval($object_id)] = $value['price'];
- };
- }
+ };
+ }
- $link = null;
- if (!empty($objects_ids) || !empty($external_objects_ids) || !empty($newbuildings_ids)) {
+ $link = null;
+ if (!empty($objects_ids) || !empty($external_objects_ids) || !empty($newbuildings_ids)) {
- /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
+ /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', 1);*/
- $is_close_contacts = !empty($hide_contacts) ? 1 : 0;
+ $is_close_contacts = !empty($hide_contacts) ? 1 : 0;
- if (is_null($catalog_id)) {
+ if (is_null($catalog_id)) {
- $sql = "INSERT INTO sent_catalog(agent_id, close_contact, date_send) VALUES ('$user_id', '$is_close_contacts', NOW())";
+ $sql = "INSERT INTO sent_catalog(agent_id, close_contact, date_send) VALUES ('$user_id', '$is_close_contacts', NOW())";
- if (mysql_query($sql)) {
- $catalog_id = mysql_insert_id();
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
+ if (mysql_query($sql)) {
+ $catalog_id = mysql_insert_id();
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
- $sql1 = "UPDATE sent_catalog SET agent_id = '$user_id', close_contact = '$is_close_contacts', date_send = NOW() WHERE id = '$catalog_id'";
+ $sql1 = "UPDATE sent_catalog SET agent_id = '$user_id', close_contact = '$is_close_contacts', date_send = NOW() WHERE id = '$catalog_id'";
- $sql2 = "DELETE FROM sended_pdf WHERE sent_catalog_id = '$catalog_id'";
+ $sql2 = "DELETE FROM sended_pdf WHERE sent_catalog_id = '$catalog_id'";
- if (!mysql_query($sql1) || !mysql_query($sql2)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if (!mysql_query($sql1) || !mysql_query($sql2)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- if (!empty($objects_ids) || !empty($external_objects_ids)) {
+ if (!empty($objects_ids) || !empty($external_objects_ids)) {
- // Offset-free: свои объекты и найденные листинги парсера приходят РАЗНЫМИ массивами реальных id.
- // objects_ids — только свои (objects), external_objects_ids — листинги (external_listings, ключ = el.id).
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_legacy.php';
- $listing_ids = $external_objects_ids;
- $own_object_ids = $objects_ids;
+ // Offset-free: свои объекты и найденные листинги парсера приходят РАЗНЫМИ массивами реальных id.
+ // objects_ids — только свои (objects), external_objects_ids — листинги (external_listings, ключ = el.id).
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_legacy.php';
+ $listing_ids = $external_objects_ids;
+ $own_object_ids = $objects_ids;
- if (!empty($own_object_ids)) {
+ if (!empty($own_object_ids)) {
- $sql = "SELECT `id`, `nazv`, `adres`, `phone`, `sobstv` FROM `objects` WHERE `id` IN (".implode(',', $own_object_ids).")";
+ $sql = "SELECT `id`, `nazv`, `adres`, `phone`, `sobstv` FROM `objects` WHERE `id` IN (".implode(',', $own_object_ids).")";
- if ($query = mysql_query($sql)) {
+ if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query) > 0) {
+ if (mysql_num_rows($query) > 0) {
- while ($object = mysql_fetch_assoc($query)) {
+ while ($object = mysql_fetch_assoc($query)) {
- $object_id = (int)$object['id'];
+ $object_id = (int)$object['id'];
- foreach ($clients_ids as $client_id) {
+ foreach ($clients_ids as $client_id) {
- $new_price = isset($new_prices[$object_id]) ? $new_prices[$object_id] : 0;
- $is_hide_contacts = in_array($object_id, $hide_contacts) ? 1 : 0;
- $is_hide_address = in_array($object_id, $hide_address) ? 1 : 0;
+ $new_price = isset($new_prices[$object_id]) ? $new_prices[$object_id] : 0;
+ $is_hide_contacts = in_array($object_id, $hide_contacts) ? 1 : 0;
+ $is_hide_address = in_array($object_id, $hide_address) ? 1 : 0;
- if ($is_hide_contacts) {
+ if ($is_hide_contacts) {
- $sql = "INSERT INTO `user_object_contact_close` SET `close`='{$is_hide_contacts}', `user_id`='{$user_id}', `object_id` = '{$object_id}', `client_id` = '{$client_id}'";
+ $sql = "INSERT INTO `user_object_contact_close` SET `close`='{$is_hide_contacts}', `user_id`='{$user_id}', `object_id` = '{$object_id}', `client_id` = '{$client_id}'";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- // Per-send описание, переданное mJW в POST-параметре `descriptions`.
- $descriptionForInsert = "NULL";
- if (isset($descriptions[intval($object_id)]) && $descriptions[intval($object_id)] !== '') {
- $cleanedDesc = cleanHtml($descriptions[intval($object_id)], '
,
- // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
- if ($cleanedDesc !== '' && strpos($cleanedDesc, '
,
+ // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
+ if ($cleanedDesc !== '' && strpos($cleanedDesc, '
,
- // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
- if ($cleanedDesc !== '' && strpos($cleanedDesc, '
,
+ // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
+ if ($cleanedDesc !== '' && strpos($cleanedDesc, '
response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'link' => $link,
- 'catalog_id' => $catalog_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return $link;
+ } else {
+ if (!count($errors)) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'link' => $link,
+ 'catalog_id' => $catalog_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
}
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- // Образы строк найденных листингов парсера (offset-free, ключ = реальный el.id) для общего цикла сборки PDF-презентаций:
- // строк в objects нет, образ собирается из external_listings; фото подгружаются сразу (photo1..N — полные CDN-URL).
- // На вход — массив РЕАЛЬНЫХ el.id листингов (потребитель отделяет их от своих объектов на уровне запроса).
- // Дозаполняет поля, которых нет у листинга, и переводит код района в название (как ждёт сборка адреса).
- // Умерший по TTL листинг в выборку не попадает — вызывающий цикл пропустит его как ненайденный.
- private static function _listingRowsForPdf($external_objects_ids) {
+ // Образы строк найденных листингов парсера (offset-free, ключ = реальный el.id) для общего цикла сборки PDF-презентаций:
+ // строк в objects нет, образ собирается из external_listings; фото подгружаются сразу (photo1..N — полные CDN-URL).
+ // На вход — массив РЕАЛЬНЫХ el.id листингов (потребитель отделяет их от своих объектов на уровне запроса).
+ // Дозаполняет поля, которых нет у листинга, и переводит код района в название (как ждёт сборка адреса).
+ // Умерший по TTL листинг в выборку не попадает — вызывающий цикл пропустит его как ненайденный.
+ private static function _listingRowsForPdf($external_objects_ids) {
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_legacy.php';
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_legacy.php';
- $listing_ids = array_unique(array_map('intval', (array)$external_objects_ids));
+ $listing_ids = array_unique(array_map('intval', (array)$external_objects_ids));
- $rows = [];
- if (!count($listing_ids))
- return $rows;
+ $rows = [];
+ if (!count($listing_ids))
+ return $rows;
- foreach (\external_listing_object_rows($listing_ids, true) as $row) {
- // Полей метро/площади комнат у листинга нет — общий цикл сборки PDF читает эти ключи.
- $row['peshkom'] = 0;
- $row['transport'] = 0;
- $row['ploshad_komn'] = '';
- // район в образе листинга уже разрешён в название (external_listing_object_rows) — повторный резолв не нужен
- $rows[] = $row;
- }
+ foreach (\external_listing_object_rows($listing_ids, true) as $row) {
+ // Полей метро/площади комнат у листинга нет — общий цикл сборки PDF читает эти ключи.
+ $row['peshkom'] = 0;
+ $row['transport'] = 0;
+ $row['ploshad_komn'] = '';
+ // район в образе листинга уже разрешён в название (external_listing_object_rows) — повторный резолв не нужен
+ $rows[] = $row;
+ }
- return $rows;
- }
+ return $rows;
+ }
- private function _getPDF($objects_ids = [], $descriptions = [], $new_prices = [], $hide_contacts = false, $external_ids = []) {
+ private function _getPDF($objects_ids = [], $descriptions = [], $new_prices = [], $hide_contacts = false, $external_ids = []) {
- global $app;
- require_once ROOT_PATH . '/../../ajax/engine/pdf_functions.php';
- require_once ROOT_PATH . '/../../ajax/engine/props.php';
- global $SROK_ARENDY;
+ global $app;
+ require_once ROOT_PATH . '/../../ajax/engine/pdf_functions.php';
+ require_once ROOT_PATH . '/../../ajax/engine/props.php';
+ global $SROK_ARENDY;
- $error = false;
- $errors = [];
- $pdf_ready = [];
+ $error = false;
+ $errors = [];
+ $pdf_ready = [];
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
$result = \SelectelApi::getTokenAndUrl();
$token = $result[0];
$storageUrl = $result[1];
- if (($user_id = $_SESSION['id']) && count($objects_ids) > 0) {
+ if (($user_id = $_SESSION['id']) && count($objects_ids) > 0) {
- /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
+ /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', 1);*/
- // Offset-free: своё и листинг различаем по входному набору ($external_ids — реальные el.id листингов),
- // а НЕ по диапазону id (el.id коллизит с objects.id). Свои тянем из objects (только own-id, иначе листинг
- // со совпавшим id задвоился бы), листинги — из external_listings.
- $external_ids = array_values(array_unique(array_map('intval', (array)$external_ids)));
- $own_ids = array_values(array_diff(array_map('intval', (array)$objects_ids), $external_ids));
+ // Offset-free: своё и листинг различаем по входному набору ($external_ids — реальные el.id листингов),
+ // а НЕ по диапазону id (el.id коллизит с objects.id). Свои тянем из objects (только own-id, иначе листинг
+ // со совпавшим id задвоился бы), листинги — из external_listings.
+ $external_ids = array_values(array_unique(array_map('intval', (array)$external_ids)));
+ $own_ids = array_values(array_diff(array_map('intval', (array)$objects_ids), $external_ids));
- $pdf_rows = [];
- if (count($own_ids)) {
- $sql = "SELECT objects.id, objects.operation_type, objects.nazv, objects.etazh, objects.etazh_iz, objects.stoim,
+ $pdf_rows = [];
+ if (count($own_ids)) {
+ $sql = "SELECT objects.id, objects.operation_type, objects.nazv, objects.etazh, objects.etazh_iz, objects.stoim,
objects.peshkom, objects.transport, objects.adres, objects.dom, objects.korpus, objects.litera,
objects.id_rf_region, rayon.rayon, objects.ploshad, objects.ploshad_komn, objects.ploshad_k, objects.srok, objects.opis,
objects.type, objects.type_category
@@ -5253,522 +5253,522 @@ class CommonController extends ApiController
LEFT JOIN rayon rayon on objects.rayon = rayon.id
WHERE objects.id IN (".implode(',', $own_ids).")";
- if ($query = mysql_query($sql)) {
- while ($pdf_row = mysql_fetch_assoc($query))
- $pdf_rows[] = $pdf_row;
- } else {
- $error = true;
- $errors[] = $sql;
- $errors[] = mysql_error();
- }
- }
+ if ($query = mysql_query($sql)) {
+ while ($pdf_row = mysql_fetch_assoc($query))
+ $pdf_rows[] = $pdf_row;
+ } else {
+ $error = true;
+ $errors[] = $sql;
+ $errors[] = mysql_error();
+ }
+ }
- // Найденные листинги парсера: их нет в objects — добавляем образы строк из external_listings
- // (умерший по TTL листинг в выборку не попадает и пропускается как ненайденный).
- $pdf_rows = array_merge($pdf_rows, self::_listingRowsForPdf($external_ids));
+ // Найденные листинги парсера: их нет в objects — добавляем образы строк из external_listings
+ // (умерший по TTL листинг в выборку не попадает и пропускается как ненайденный).
+ $pdf_rows = array_merge($pdf_rows, self::_listingRowsForPdf($external_ids));
- foreach ($pdf_rows as $obj) {
+ foreach ($pdf_rows as $obj) {
- $id = $obj['id'];
- $object_id = $obj['id'];
- $arrTop = [];
- $arrTop['type'] = $obj['type'];
- $close_contacts = in_array($id, $hide_contacts);
+ $id = $obj['id'];
+ $object_id = $obj['id'];
+ $arrTop = [];
+ $arrTop['type'] = $obj['type'];
+ $close_contacts = in_array($id, $hide_contacts);
- if ($obj['type'] == 4) {
- $sqlCommerce = "SELECT * FROM commercial_object";
- $resultCommerce = mysql_query($sqlCommerce);
- $arrTypeCommerc = [];
- while ($rCommerc = mysql_fetch_assoc($resultCommerce)) {
- $arrTypeCommerc[$rCommerc['id']] = $rCommerc['name'];
- }
- if (isset($arrTypeCommerc[$obj['type_category']])) {
- $arrTop['commerce_type'] = $arrTypeCommerc[$obj['type_category']];
- }
- }
+ if ($obj['type'] == 4) {
+ $sqlCommerce = "SELECT * FROM commercial_object";
+ $resultCommerce = mysql_query($sqlCommerce);
+ $arrTypeCommerc = [];
+ while ($rCommerc = mysql_fetch_assoc($resultCommerce)) {
+ $arrTypeCommerc[$rCommerc['id']] = $rCommerc['name'];
+ }
+ if (isset($arrTypeCommerc[$obj['type_category']])) {
+ $arrTop['commerce_type'] = $arrTypeCommerc[$obj['type_category']];
+ }
+ }
- $arrTop['operation_type'] = $obj['operation_type'];
- $arrTop['nazv'] = \Filter::name($obj['nazv']);
+ $arrTop['operation_type'] = $obj['operation_type'];
+ $arrTop['nazv'] = \Filter::name($obj['nazv']);
- if ($obj['etazh']*1 != 0) {
- $arrTop['etazh'] = $obj['etazh'];
- }
+ if ($obj['etazh']*1 != 0) {
+ $arrTop['etazh'] = $obj['etazh'];
+ }
- if ($obj['etazh_iz']*1 != 0)
- $arrTop['etazh_iz'] = $obj['etazh_iz'];
+ if ($obj['etazh_iz']*1 != 0)
+ $arrTop['etazh_iz'] = $obj['etazh_iz'];
- if (!$obj['etazh'])
- $arrTop['etazh'] = \Filter::getFloorFromName($arrTop['nazv'],true);
- else
- \Filter::getFloorFromName($arrTop['nazv'],true);
+ if (!$obj['etazh'])
+ $arrTop['etazh'] = \Filter::getFloorFromName($arrTop['nazv'],true);
+ else
+ \Filter::getFloorFromName($arrTop['nazv'],true);
- if (!$obj['etazh_iz'])
- $arrTop['etazh_iz'] = \Filter::getMaxFloorFromName($arrTop['nazv'],true);
- else
- \Filter::getMaxFloorFromName($arrTop['nazv'],true);
+ if (!$obj['etazh_iz'])
+ $arrTop['etazh_iz'] = \Filter::getMaxFloorFromName($arrTop['nazv'],true);
+ else
+ \Filter::getMaxFloorFromName($arrTop['nazv'],true);
- \Filter::getSpaceFromName($arrTop['nazv'],true);
+ \Filter::getSpaceFromName($arrTop['nazv'],true);
- $new_price = 0;
- $arrTop['stoim'] = number_format($obj['stoim'], 0, ',', ' ');
- if (isset($new_prices[$object_id])) {
- $new_price = $new_prices[$object_id];
- $arrTop['stoim'] = number_format($new_price, 0, ',', ' ');
- }
+ $new_price = 0;
+ $arrTop['stoim'] = number_format($obj['stoim'], 0, ',', ' ');
+ if (isset($new_prices[$object_id])) {
+ $new_price = $new_prices[$object_id];
+ $arrTop['stoim'] = number_format($new_price, 0, ',', ' ');
+ }
- // Для листинга objects-only подзапросы (метро/локация/план/комментарий) по el.id коллизят с objects.id →
- // гейтим через $objSubId=-1 (пусто): адрес берётся из образа листинга, план — из первого фото, метро/коммент отсутствуют.
- $objSubId = empty($obj['is_external']) ? (int)$obj['id'] : -1;
- $mtr = [];
- $sql = "SELECT metro.metro FROM metro, sp_metro
+ // Для листинга objects-only подзапросы (метро/локация/план/комментарий) по el.id коллизят с objects.id →
+ // гейтим через $objSubId=-1 (пусто): адрес берётся из образа листинга, план — из первого фото, метро/коммент отсутствуют.
+ $objSubId = empty($obj['is_external']) ? (int)$obj['id'] : -1;
+ $mtr = [];
+ $sql = "SELECT metro.metro FROM metro, sp_metro
WHERE sp_metro.id_metro = metro.id AND sp_metro.id_obj = $objSubId";
- if ($result = mysql_query($sql)) {
- while($m = mysql_fetch_row($result)) $mtr[] = $m[0];
- $metro_str = implode(", ",$mtr);
- $do_metro = '';
- if ($obj['peshkom'])
- $do_metro = $obj['peshkom']." минут пешком";
- if ($obj['peshkom'] and $obj['transport'])
- $do_metro .= " или ";
- if ($obj['transport'])
- $do_metro .= $obj['transport']." минут на транспорте";
+ if ($result = mysql_query($sql)) {
+ while($m = mysql_fetch_row($result)) $mtr[] = $m[0];
+ $metro_str = implode(", ",$mtr);
+ $do_metro = '';
+ if ($obj['peshkom'])
+ $do_metro = $obj['peshkom']." минут пешком";
+ if ($obj['peshkom'] and $obj['transport'])
+ $do_metro .= " или ";
+ if ($obj['transport'])
+ $do_metro .= $obj['transport']." минут на транспорте";
- $arrTop['metrostr'] = $metro_str;
- $arrTop['way'] = $do_metro;
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $arrTop['metrostr'] = $metro_str;
+ $arrTop['way'] = $do_metro;
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $sqlLocationInfo = "SELECT * FROM object_location WHERE object_id=".$objSubId;
- if ($rezLocationInfo = mysql_query($sqlLocationInfo)) {
- if (mysql_num_rows($rezLocationInfo) > 0) {
- $objLocationInfo = mysql_fetch_assoc($rezLocationInfo);
- $adr = $objLocationInfo['address'];
- } else {
- $address = $obj['adres'];
+ $sqlLocationInfo = "SELECT * FROM object_location WHERE object_id=".$objSubId;
+ if ($rezLocationInfo = mysql_query($sqlLocationInfo)) {
+ if (mysql_num_rows($rezLocationInfo) > 0) {
+ $objLocationInfo = mysql_fetch_assoc($rezLocationInfo);
+ $adr = $objLocationInfo['address'];
+ } else {
+ $address = $obj['adres'];
- $adr = '';
- if ($obj['id_rf_region'] == 81) {
- if (strpos($address, "Санкт-Петербург") === false) {
- $adr .= "Санкт-Петербург, ";
- }
- if ($obj['rayon']) {
- $arrTop['rayon'] = str_replace([' район', 'район', ' р-н', 'р-н'], '', $obj['rayon']).' район';
- } else {
- $arrTop['rayon'] = '';
- }
- }
- $adr .= $address;
- }
- } else{
- $error = true;
- $errors[] = mysql_error();
- }
-
- $arrTop['address'] = $adr;
-
- if ($obj['ploshad']*1 != 0) {
- $obj['ploshad'] *= 1;
- $arrTop['ploshad'] = $obj['ploshad'];
- } else {
- $arrTop['ploshad'] = '';
- }
-
- if ($obj['ploshad_komn']*1 != 0) {
- if (stripos($obj['ploshad_komn'],"+") == false)
- $obj['ploshad_komn'] *= 1;
- $arrTop['ploshad_komn'] = $obj['ploshad_komn'];
- } else {
- $arrTop['ploshad_komn'] = '';
- }
-
- if ($obj['ploshad_k']*1 != 0) {
- $obj['ploshad_k'] *= 1;
- $arrTop['ploshad_k'] = $obj['ploshad_k'];
- } else {
- $arrTop['ploshad_k'] = '';
- }
-
- if ($obj['operation_type']==0) {
- $arrTop['sdelka'] = 'Сдается '.$SROK_ARENDY["$obj[srok]"];
- } else {
- $arrTop['sdelka'] = 'Продажа';
- }
-
- $useLocalPhoto = true;
-
- if ($useLocalPhoto) {
- $photos = [];
- $sqlPhotoInfo = "SELECT oop.sort_order, p.photo FROM objects_object_photo oop, object_photo p WHERE p.id = oop.object_photo_id AND oop.object_id = $id ORDER BY oop.sort_order";
- if (!empty($obj['is_external'])) {
- // Фото листинга — готовые CDN-URL (photo1..N из образа строки), mpdf скачает их по сети.
- for ($ph_i = 1; $ph_i <= 40; $ph_i++) {
- if (!empty($obj['photo' . $ph_i]))
- array_push($photos, $obj['photo' . $ph_i]);
- }
- } else if ($rezPhotoInfo = mysql_query($sqlPhotoInfo)) {
- if (mysql_num_rows($rezPhotoInfo) > 0) {
- while ($photoInfo = mysql_fetch_assoc($rezPhotoInfo)) {
- $p = $photoInfo['photo'];
- if (stripos($photoInfo['photo'], "http://") === false && stripos($photoInfo['photo'], "https://") === false) {
- $p = "https://joywork.ru/photos/" . $photoInfo['photo'];
- }
-
- array_push($photos, $p);
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
-
- $arrTop['replace_plan'] = false;
- $sql = "SELECT * FROM objects_plan WHERE object_id = $objSubId";
- if ($rez_plan = mysql_query($sql)) {
- if (mysql_num_rows($rez_plan) > 0) {
- $obj_plan = mysql_fetch_assoc($rez_plan);
- if ($obj_plan['img_plan'] != '') {
- if (stripos($obj_plan['img_plan'], "http://") === false && stripos($obj_plan['img_plan'], "https://") === false) {
-
- if (self::is_ssl())
- $obj_plan['img_plan'] = "https://joywork.ru/photos/" . $obj_plan['img_plan'];
- else
- $obj_plan['img_plan'] = "http://joywork.ru/photos/" . $obj_plan['img_plan'];
-
- }
-
- $arrTop['plan'] = $obj_plan['img_plan'];
- } else { // если все же там пусто
- if (is_array($photos) && count($photos) > 0) {
- $arrTop['replace_plan'] = true;
- $arrTop['plan'] = array_shift($photos); // вместо плана берем первую фотографию из всех фото
- }
- }
- } else {
- if (is_array($photos) && count($photos) > 0) {
- $arrTop['replace_plan'] = true;
- $arrTop['plan'] = array_shift($photos); // вместо плана берем первую фотографию из всех фото
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
-
- $sqlComment = "SELECT * FROM user_object_comments WHERE user_id = '$_SESSION[id]' AND object_id='$objSubId'";
- if ($rezComment = mysql_query($sqlComment)) {
- if (mysql_num_rows($rezComment) > 0) {
- $commentRow = mysql_fetch_assoc($rezComment);
- $obj['opis'] = $commentRow['comment'];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
-
- $opis = '';
- if (isset($descriptions[intval($obj['id'])]))
- $opis = cleanHtml($descriptions[intval($obj['id'])], '
", $data['message'] . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на ваши вопросы.
";
- }
+ $message = '';
+ if ($send_type == 1) {
+ $message = !empty($data['message']) ? str_replace("\n", "
", $data['message'] . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на ваши вопросы.
";
+ }
- if ($send_type == 1) {
- $message .= "Каталог объектов";
- } else {
- $message .= "Вы можете посмотреть каталог по ссылке " . $catalog_link . "\r\n";
- }
+ if ($send_type == 1) {
+ $message .= "Каталог объектов";
+ } else {
+ $message .= "Вы можете посмотреть каталог по ссылке " . $catalog_link . "\r\n";
+ }
- if ($send_type == 1) { // E-mail
- foreach ($clients_ids as $client_id) {
- $email = mysql_result(mysql_query("SELECT `email` FROM clients WHERE `deleted` <> 1 AND `id` = $client_id"),0);
- mailClientByIdWithConfirm($user_id, trim($email), $subject, $message, [], []);
- sleep(1);
- }
- } else if ($send_type == 2) { // WhatsApp
- foreach ($clients_ids as $client_id) {
- $phone = mysql_result(mysql_query("SELECT `phone` FROM `clients` WHERE `deleted` <> 1 AND `id` = '$client_id'"),0);
- $text = !empty($data['message']) ? str_replace("\n", "
", $data['message'] . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на ваши вопросы.
";
- $text = $text . " " . $message;
- $links[] = "whatsapp://send?text=" .
- urlencode(strip_tags(preg_replace('//', '$1', trim($text)))) . "&phone=+" . preg_replace("/[^,.0-9]/", '', $phone) . "";
+ if ($send_type == 1) { // E-mail
+ foreach ($clients_ids as $client_id) {
+ $email = mysql_result(mysql_query("SELECT `email` FROM clients WHERE `deleted` <> 1 AND `id` = $client_id"),0);
+ mailClientByIdWithConfirm($user_id, trim($email), $subject, $message, [], []);
+ sleep(1);
+ }
+ } else if ($send_type == 2) { // WhatsApp
+ foreach ($clients_ids as $client_id) {
+ $phone = mysql_result(mysql_query("SELECT `phone` FROM `clients` WHERE `deleted` <> 1 AND `id` = '$client_id'"),0);
+ $text = !empty($data['message']) ? str_replace("\n", "
", $data['message'] . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на ваши вопросы.
";
+ $text = $text . " " . $message;
+ $links[] = "whatsapp://send?text=" .
+ urlencode(strip_tags(preg_replace('//', '$1', trim($text)))) . "&phone=+" . preg_replace("/[^,.0-9]/", '', $phone) . "";
- }
- } else if ($send_type == 3) { // Telegram
- foreach ($clients_ids as $client_id) {
- $phone = mysql_result(mysql_query("SELECT `phone` FROM `clients` WHERE `deleted` <> 1 AND `id` = '$client_id'"),0);
- $text = !empty($data['message']) ? str_replace("\n", "
", $data['message'] . "\n") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости.\nС удовольствием отвечу на ваши вопросы.\n";
- $text = $text . " " . str_replace("
","\n", $message);
- $links[] = "tg://msg?text=" .
- urlencode(strip_tags(preg_replace('//', '$1', trim($text)))) . "&to=+" . preg_replace("/[^,.0-9]/", '', $phone) . "";
- }
- }
- }
+ }
+ } else if ($send_type == 3) { // Telegram
+ foreach ($clients_ids as $client_id) {
+ $phone = mysql_result(mysql_query("SELECT `phone` FROM `clients` WHERE `deleted` <> 1 AND `id` = '$client_id'"),0);
+ $text = !empty($data['message']) ? str_replace("\n", "
", $data['message'] . "\n") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости.\nС удовольствием отвечу на ваши вопросы.\n";
+ $text = $text . " " . str_replace("
","\n", $message);
+ $links[] = "tg://msg?text=" .
+ urlencode(strip_tags(preg_replace('//', '$1', trim($text)))) . "&to=+" . preg_replace("/[^,.0-9]/", '', $phone) . "";
+ }
+ }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'catalog_link' => $catalog_link,
- 'links' => $links
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'catalog_link' => $catalog_link,
+ 'links' => $links
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
- } else { // Отправка вложением pdf, списком ссылок на презентации
+ } else { // Отправка вложением pdf, списком ссылок на презентации
- // Хелперы найденных листингов парсера (offset-free): их нет в objects, образ строки берём из external_listings по реальному el.id.
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_legacy.php';
+ // Хелперы найденных листингов парсера (offset-free): их нет в objects, образ строки берём из external_listings по реальному el.id.
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_legacy.php';
- $pdf_ready = [];
- $token = md5(microtime());
- $theme = !empty($subject) ? $subject : "Презентации объектов недвижимости";
- if ($send_type == 1) {
- $message = !empty(trim($data['message'])) ? str_replace("\n", "
", trim($data['message']) . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на Ваши вопросы.
";
- }
+ $pdf_ready = [];
+ $token = md5(microtime());
+ $theme = !empty($subject) ? $subject : "Презентации объектов недвижимости";
+ if ($send_type == 1) {
+ $message = !empty(trim($data['message'])) ? str_replace("\n", "
", trim($data['message']) . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на Ваши вопросы.
";
+ }
- if (!empty(trim($message)) && $provide == 1)
- $message = $message . '
';
+ if (!empty(trim($message)) && $provide == 1)
+ $message = $message . '
';
- if (count($objects_ids) > 0 || count($external_objects_ids) > 0 || count($newbuildings_ids) > 0) {
+ if (count($objects_ids) > 0 || count($external_objects_ids) > 0 || count($newbuildings_ids) > 0) {
- /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
+ /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', 1);*/
- // Запрос objects — только по своим id (offset-free: листинги собираем отдельно из external_listings).
- // Гейт по непустому списку: IN() с пустым набором = синтаксическая ошибка SQL.
- $pdf_rows = [];
- if (count($objects_ids) > 0) {
- $sql = "SELECT objects.id, objects.operation_type, objects.nazv, objects.etazh, objects.etazh_iz, objects.stoim,
+ // Запрос objects — только по своим id (offset-free: листинги собираем отдельно из external_listings).
+ // Гейт по непустому списку: IN() с пустым набором = синтаксическая ошибка SQL.
+ $pdf_rows = [];
+ if (count($objects_ids) > 0) {
+ $sql = "SELECT objects.id, objects.operation_type, objects.nazv, objects.etazh, objects.etazh_iz, objects.stoim,
objects.peshkom, objects.transport, objects.adres, objects.dom, objects.korpus, objects.litera,
objects.id_rf_region, rayon.rayon, objects.ploshad, objects.ploshad_komn, objects.ploshad_k, objects.srok, objects.opis,
objects.type, objects.type_category
@@ -5776,338 +5776,338 @@ class CommonController extends ApiController
LEFT JOIN rayon rayon on objects.rayon = rayon.id
WHERE objects.id IN (".implode(',', $objects_ids).")";
- if ($query = mysql_query($sql)) {
- while ($pdf_row = mysql_fetch_assoc($query))
- $pdf_rows[] = $pdf_row;
- } else {
- $error = true;
- $errors[] = $sql;
- $errors[] = mysql_error();
- }
- }
+ if ($query = mysql_query($sql)) {
+ while ($pdf_row = mysql_fetch_assoc($query))
+ $pdf_rows[] = $pdf_row;
+ } else {
+ $error = true;
+ $errors[] = $sql;
+ $errors[] = mysql_error();
+ }
+ }
- // Найденные листинги парсера (offset-free): их нет в objects — добавляем образы строк
- // из external_listings по реальным el.id (умерший по TTL листинг в выборку не попадает и пропускается как ненайденный).
- $pdf_rows = array_merge($pdf_rows, self::_listingRowsForPdf($external_objects_ids));
+ // Найденные листинги парсера (offset-free): их нет в objects — добавляем образы строк
+ // из external_listings по реальным el.id (умерший по TTL листинг в выборку не попадает и пропускается как ненайденный).
+ $pdf_rows = array_merge($pdf_rows, self::_listingRowsForPdf($external_objects_ids));
- foreach ($pdf_rows as $obj) {
+ foreach ($pdf_rows as $obj) {
- $id = $obj['id'];
- $arrTop = [];
- $arrTop['type'] = $obj['type'];
- $close_contacts = in_array($id, $hide_contacts);
+ $id = $obj['id'];
+ $arrTop = [];
+ $arrTop['type'] = $obj['type'];
+ $close_contacts = in_array($id, $hide_contacts);
- if ($obj['type'] == 4) {
- $sqlCommerce = "SELECT * FROM commercial_object";
- $resultCommerce = mysql_query($sqlCommerce);
- $arrTypeCommerc = [];
- while ($rCommerc = mysql_fetch_assoc($resultCommerce)) {
- $arrTypeCommerc[$rCommerc['id']] = $rCommerc['name'];
- }
- if (isset($arrTypeCommerc[$obj['type_category']])) {
- $arrTop['commerce_type'] = $arrTypeCommerc[$obj['type_category']];
- }
- }
+ if ($obj['type'] == 4) {
+ $sqlCommerce = "SELECT * FROM commercial_object";
+ $resultCommerce = mysql_query($sqlCommerce);
+ $arrTypeCommerc = [];
+ while ($rCommerc = mysql_fetch_assoc($resultCommerce)) {
+ $arrTypeCommerc[$rCommerc['id']] = $rCommerc['name'];
+ }
+ if (isset($arrTypeCommerc[$obj['type_category']])) {
+ $arrTop['commerce_type'] = $arrTypeCommerc[$obj['type_category']];
+ }
+ }
- $arrTop['operation_type'] = $obj['operation_type'];
- $arrTop['nazv'] = \Filter::name($obj['nazv']);
+ $arrTop['operation_type'] = $obj['operation_type'];
+ $arrTop['nazv'] = \Filter::name($obj['nazv']);
- if ($obj['etazh']*1 != 0) {
- $arrTop['etazh'] = $obj['etazh'];
- }
+ if ($obj['etazh']*1 != 0) {
+ $arrTop['etazh'] = $obj['etazh'];
+ }
- if ($obj['etazh_iz']*1 != 0)
- $arrTop['etazh_iz'] = $obj['etazh_iz'];
+ if ($obj['etazh_iz']*1 != 0)
+ $arrTop['etazh_iz'] = $obj['etazh_iz'];
- if (!$obj['etazh'])
- $arrTop['etazh'] = \Filter::getFloorFromName($arrTop['nazv'],true);
- else
- \Filter::getFloorFromName($arrTop['nazv'],true);
+ if (!$obj['etazh'])
+ $arrTop['etazh'] = \Filter::getFloorFromName($arrTop['nazv'],true);
+ else
+ \Filter::getFloorFromName($arrTop['nazv'],true);
- if (!$obj['etazh_iz'])
- $arrTop['etazh_iz'] = \Filter::getMaxFloorFromName($arrTop['nazv'],true);
- else
- \Filter::getMaxFloorFromName($arrTop['nazv'],true);
+ if (!$obj['etazh_iz'])
+ $arrTop['etazh_iz'] = \Filter::getMaxFloorFromName($arrTop['nazv'],true);
+ else
+ \Filter::getMaxFloorFromName($arrTop['nazv'],true);
- \Filter::getSpaceFromName($arrTop['nazv'],true);
+ \Filter::getSpaceFromName($arrTop['nazv'],true);
- $new_price = 0;
- $arrTop['stoim'] = number_format($obj['stoim'], 0, ',', ' ');
- if (isset($new_prices[$object_id])) {
- $new_price = $new_prices[$object_id];
- $arrTop['stoim'] = number_format($new_price, 0, ',', ' ');
- }
+ $new_price = 0;
+ $arrTop['stoim'] = number_format($obj['stoim'], 0, ',', ' ');
+ if (isset($new_prices[$object_id])) {
+ $new_price = $new_prices[$object_id];
+ $arrTop['stoim'] = number_format($new_price, 0, ',', ' ');
+ }
- // Для листинга objects-only подзапросы (метро/локация/план/комментарий) по el.id коллизят с objects.id →
- // гейтим через $objSubId=-1 (пусто): адрес берётся из образа листинга, план — из первого фото, метро/коммент отсутствуют.
- $objSubId = empty($obj['is_external']) ? (int)$obj['id'] : -1;
- $mtr = [];
- $sql = "SELECT metro.metro FROM metro, sp_metro
+ // Для листинга objects-only подзапросы (метро/локация/план/комментарий) по el.id коллизят с objects.id →
+ // гейтим через $objSubId=-1 (пусто): адрес берётся из образа листинга, план — из первого фото, метро/коммент отсутствуют.
+ $objSubId = empty($obj['is_external']) ? (int)$obj['id'] : -1;
+ $mtr = [];
+ $sql = "SELECT metro.metro FROM metro, sp_metro
WHERE sp_metro.id_metro = metro.id AND sp_metro.id_obj = $objSubId";
- if ($result = mysql_query($sql)) {
- while($m = mysql_fetch_row($result)) $mtr[] = $m[0];
- $metro_str = implode(", ",$mtr);
- $do_metro = '';
- if ($obj['peshkom'])
- $do_metro = $obj['peshkom']." минут пешком";
- if ($obj['peshkom'] and $obj['transport'])
- $do_metro .= " или ";
- if ($obj['transport'])
- $do_metro .= $obj['transport']." минут на транспорте";
+ if ($result = mysql_query($sql)) {
+ while($m = mysql_fetch_row($result)) $mtr[] = $m[0];
+ $metro_str = implode(", ",$mtr);
+ $do_metro = '';
+ if ($obj['peshkom'])
+ $do_metro = $obj['peshkom']." минут пешком";
+ if ($obj['peshkom'] and $obj['transport'])
+ $do_metro .= " или ";
+ if ($obj['transport'])
+ $do_metro .= $obj['transport']." минут на транспорте";
- $arrTop['metrostr'] = $metro_str;
- $arrTop['way'] = $do_metro;
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $arrTop['metrostr'] = $metro_str;
+ $arrTop['way'] = $do_metro;
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $sqlLocationInfo = "SELECT * FROM object_location WHERE object_id=".$objSubId;
- if ($rezLocationInfo = mysql_query($sqlLocationInfo)) {
- if (mysql_num_rows($rezLocationInfo) > 0) {
- $objLocationInfo = mysql_fetch_assoc($rezLocationInfo);
- $adr = $objLocationInfo['address'];
- } else {
- $address = $obj['adres'];
+ $sqlLocationInfo = "SELECT * FROM object_location WHERE object_id=".$objSubId;
+ if ($rezLocationInfo = mysql_query($sqlLocationInfo)) {
+ if (mysql_num_rows($rezLocationInfo) > 0) {
+ $objLocationInfo = mysql_fetch_assoc($rezLocationInfo);
+ $adr = $objLocationInfo['address'];
+ } else {
+ $address = $obj['adres'];
- $adr = '';
- if ($obj['id_rf_region'] == 81) {
- if (strpos($address, "Санкт-Петербург") === false) {
- $adr .= "Санкт-Петербург, ";
- }
- if ($obj['rayon']) {
- $arrTop['rayon'] = str_replace([' район', 'район', ' р-н', 'р-н'], '', $obj['rayon']).' район';
- } else {
- $arrTop['rayon'] = '';
- }
- }
- $adr .= $address;
- }
- } else{
- $error = true;
- $errors[] = mysql_error();
- }
+ $adr = '';
+ if ($obj['id_rf_region'] == 81) {
+ if (strpos($address, "Санкт-Петербург") === false) {
+ $adr .= "Санкт-Петербург, ";
+ }
+ if ($obj['rayon']) {
+ $arrTop['rayon'] = str_replace([' район', 'район', ' р-н', 'р-н'], '', $obj['rayon']).' район';
+ } else {
+ $arrTop['rayon'] = '';
+ }
+ }
+ $adr .= $address;
+ }
+ } else{
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $arrTop['address'] = $adr;
+ $arrTop['address'] = $adr;
- if ($obj['ploshad']*1 != 0) {
- $obj['ploshad'] *= 1;
- $arrTop['ploshad'] = $obj['ploshad'];
- } else {
- $arrTop['ploshad'] = '';
- }
+ if ($obj['ploshad']*1 != 0) {
+ $obj['ploshad'] *= 1;
+ $arrTop['ploshad'] = $obj['ploshad'];
+ } else {
+ $arrTop['ploshad'] = '';
+ }
- if ($obj['ploshad_komn']*1 != 0) {
- if (stripos($obj['ploshad_komn'],"+") == false)
- $obj['ploshad_komn'] *= 1;
- $arrTop['ploshad_komn'] = $obj['ploshad_komn'];
- } else {
- $arrTop['ploshad_komn'] = '';
- }
+ if ($obj['ploshad_komn']*1 != 0) {
+ if (stripos($obj['ploshad_komn'],"+") == false)
+ $obj['ploshad_komn'] *= 1;
+ $arrTop['ploshad_komn'] = $obj['ploshad_komn'];
+ } else {
+ $arrTop['ploshad_komn'] = '';
+ }
- if ($obj['ploshad_k']*1 != 0) {
- $obj['ploshad_k'] *= 1;
- $arrTop['ploshad_k'] = $obj['ploshad_k'];
- } else {
- $arrTop['ploshad_k'] = '';
- }
+ if ($obj['ploshad_k']*1 != 0) {
+ $obj['ploshad_k'] *= 1;
+ $arrTop['ploshad_k'] = $obj['ploshad_k'];
+ } else {
+ $arrTop['ploshad_k'] = '';
+ }
- if ($obj['operation_type']==0) {
- $arrTop['sdelka'] = 'Сдается '.$SROK_ARENDY["$obj[srok]"];
- } else {
- $arrTop['sdelka'] = 'Продажа';
- }
+ if ($obj['operation_type']==0) {
+ $arrTop['sdelka'] = 'Сдается '.$SROK_ARENDY["$obj[srok]"];
+ } else {
+ $arrTop['sdelka'] = 'Продажа';
+ }
- $useLocalPhoto = true;
+ $useLocalPhoto = true;
- if ($useLocalPhoto) {
- $photos = [];
- $sqlPhotoInfo = "SELECT oop.sort_order, p.photo FROM objects_object_photo oop, object_photo p WHERE p.id = oop.object_photo_id AND oop.object_id = $id ORDER BY oop.sort_order";
- if (!empty($obj['is_external'])) {
- // Фото листинга — готовые CDN-URL (photo1..N из образа строки), mpdf скачает их по сети.
- for ($ph_i = 1; $ph_i <= 40; $ph_i++) {
- if (!empty($obj['photo' . $ph_i]))
- array_push($photos, $obj['photo' . $ph_i]);
- }
- } else if ($rezPhotoInfo = mysql_query($sqlPhotoInfo)) {
- if (mysql_num_rows($rezPhotoInfo) > 0) {
- while ($photoInfo = mysql_fetch_assoc($rezPhotoInfo)) {
- $p = $photoInfo['photo'];
- if (stripos($photoInfo['photo'], "http://") === false && stripos($photoInfo['photo'], "https://") === false) {
- $p = "https://joywork.ru/photos/" . $photoInfo['photo'];
- }
+ if ($useLocalPhoto) {
+ $photos = [];
+ $sqlPhotoInfo = "SELECT oop.sort_order, p.photo FROM objects_object_photo oop, object_photo p WHERE p.id = oop.object_photo_id AND oop.object_id = $id ORDER BY oop.sort_order";
+ if (!empty($obj['is_external'])) {
+ // Фото листинга — готовые CDN-URL (photo1..N из образа строки), mpdf скачает их по сети.
+ for ($ph_i = 1; $ph_i <= 40; $ph_i++) {
+ if (!empty($obj['photo' . $ph_i]))
+ array_push($photos, $obj['photo' . $ph_i]);
+ }
+ } else if ($rezPhotoInfo = mysql_query($sqlPhotoInfo)) {
+ if (mysql_num_rows($rezPhotoInfo) > 0) {
+ while ($photoInfo = mysql_fetch_assoc($rezPhotoInfo)) {
+ $p = $photoInfo['photo'];
+ if (stripos($photoInfo['photo'], "http://") === false && stripos($photoInfo['photo'], "https://") === false) {
+ $p = "https://joywork.ru/photos/" . $photoInfo['photo'];
+ }
- array_push($photos, $p);
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ array_push($photos, $p);
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- $arrTop['replace_plan'] = false;
- $sql = "SELECT * FROM objects_plan WHERE object_id = $objSubId";
- if ($rez_plan = mysql_query($sql)) {
- if (mysql_num_rows($rez_plan) > 0) {
- $obj_plan = mysql_fetch_assoc($rez_plan);
- if ($obj_plan['img_plan'] != '') {
- if (stripos($obj_plan['img_plan'], "http://") === false && stripos($obj_plan['img_plan'], "https://") === false) {
+ $arrTop['replace_plan'] = false;
+ $sql = "SELECT * FROM objects_plan WHERE object_id = $objSubId";
+ if ($rez_plan = mysql_query($sql)) {
+ if (mysql_num_rows($rez_plan) > 0) {
+ $obj_plan = mysql_fetch_assoc($rez_plan);
+ if ($obj_plan['img_plan'] != '') {
+ if (stripos($obj_plan['img_plan'], "http://") === false && stripos($obj_plan['img_plan'], "https://") === false) {
- if (self::is_ssl())
- $obj_plan['img_plan'] = "https://joywork.ru/photos/" . $obj_plan['img_plan'];
- else
- $obj_plan['img_plan'] = "http://joywork.ru/photos/" . $obj_plan['img_plan'];
+ if (self::is_ssl())
+ $obj_plan['img_plan'] = "https://joywork.ru/photos/" . $obj_plan['img_plan'];
+ else
+ $obj_plan['img_plan'] = "http://joywork.ru/photos/" . $obj_plan['img_plan'];
- }
+ }
- $arrTop['plan'] = $obj_plan['img_plan'];
- } else { // если все же там пусто
- if (is_array($photos) && count($photos) > 0) {
- $arrTop['replace_plan'] = true;
- $arrTop['plan'] = array_shift($photos); // вместо плана берем первую фотографию из всех фото
- }
- }
- } else {
- if (is_array($photos) && count($photos) > 0) {
- $arrTop['replace_plan'] = true;
- $arrTop['plan'] = array_shift($photos); // вместо плана берем первую фотографию из всех фото
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $arrTop['plan'] = $obj_plan['img_plan'];
+ } else { // если все же там пусто
+ if (is_array($photos) && count($photos) > 0) {
+ $arrTop['replace_plan'] = true;
+ $arrTop['plan'] = array_shift($photos); // вместо плана берем первую фотографию из всех фото
+ }
+ }
+ } else {
+ if (is_array($photos) && count($photos) > 0) {
+ $arrTop['replace_plan'] = true;
+ $arrTop['plan'] = array_shift($photos); // вместо плана берем первую фотографию из всех фото
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $sqlComment = "SELECT * FROM user_object_comments WHERE user_id = '$_SESSION[id]' AND object_id='$objSubId'";
- if ($rezComment = mysql_query($sqlComment)) {
- if (mysql_num_rows($rezComment) > 0) {
- $commentRow = mysql_fetch_assoc($rezComment);
- $obj['opis'] = $commentRow['comment'];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $sqlComment = "SELECT * FROM user_object_comments WHERE user_id = '$_SESSION[id]' AND object_id='$objSubId'";
+ if ($rezComment = mysql_query($sqlComment)) {
+ if (mysql_num_rows($rezComment) > 0) {
+ $commentRow = mysql_fetch_assoc($rezComment);
+ $obj['opis'] = $commentRow['comment'];
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $opis = '';
- if (isset($descriptions[intval($obj['id'])]))
- $opis = cleanHtml($descriptions[intval($obj['id'])], '
$manager
" . $user->phone . "
" . $user->email;
+ $txt = $message;
+ $footer = "
$manager
" . $user->phone . "
" . $user->email;
- if ($_SESSION['individual'] == 0)
- $footer .= "
$title
$phone";
+ if ($_SESSION['individual'] == 0)
+ $footer .= "
$title
$phone";
- $pdfs = $adresses = [];
+ $pdfs = $adresses = [];
- if (count($objects_ids) || count($external_objects_ids)) {
- // Offset-free: общий проход по своим объектам и листингам (объединённый список реальных id),
- // признак листинга — по сету external_objects_ids, а не по диапазону id (коллизия el.id == objects.id).
- foreach (array_merge($objects_ids, $external_objects_ids) as $object_id) {
+ if (count($objects_ids) || count($external_objects_ids)) {
+ // Offset-free: общий проход по своим объектам и листингам (объединённый список реальных id),
+ // признак листинга — по сету external_objects_ids, а не по диапазону id (коллизия el.id == objects.id).
+ foreach (array_merge($objects_ids, $external_objects_ids) as $object_id) {
- // Найденный листинг парсера: строки в objects нет, образ собираем из external_listings по реальному el.id.
- $listing_row = null;
- if (isset($listing_id_set[$object_id])) {
- $listing_row = \external_listing_object_row($object_id, false);
- // Листинг удалён по TTL — пропускаем до накопления вложений (pdfs/adresses идут парами).
- if (is_null($listing_row))
- continue;
- // Поля внешнего источника экранируем для прямой подстановки в SQL.
- $listing_row['nazv'] = mysql_real_escape_string($listing_row['nazv']);
- $listing_row['adres'] = mysql_real_escape_string($listing_row['adres']);
- }
+ // Найденный листинг парсера: строки в objects нет, образ собираем из external_listings по реальному el.id.
+ $listing_row = null;
+ if (isset($listing_id_set[$object_id])) {
+ $listing_row = \external_listing_object_row($object_id, false);
+ // Листинг удалён по TTL — пропускаем до накопления вложений (pdfs/adresses идут парами).
+ if (is_null($listing_row))
+ continue;
+ // Поля внешнего источника экранируем для прямой подстановки в SQL.
+ $listing_row['nazv'] = mysql_real_escape_string($listing_row['nazv']);
+ $listing_row['adres'] = mysql_real_escape_string($listing_row['adres']);
+ }
- $pdf_path = $_SERVER['DOCUMENT_ROOT'] . "/pdf/$object_id-$user_id.pdf";
- $pdfs[] = $pdf_path;
+ $pdf_path = $_SERVER['DOCUMENT_ROOT'] . "/pdf/$object_id-$user_id.pdf";
+ $pdfs[] = $pdf_path;
- if ($pdf_ready[$object_id] && file_exists($pdf_path)) {
+ if ($pdf_ready[$object_id] && file_exists($pdf_path)) {
$name = "$object_id-$user_id.pdf";
$x = mb_substr($name,0,1);
$y = mb_substr($name,1,1);
@@ -6123,236 +6123,236 @@ class CommonController extends ApiController
else
$pdfs_links[$object_id] = "http://joywork.ru/pdf/$object_id-$user_id.pdf";
}
- } else {
- $pdfs_links[$object_id] = null;
- }
+ } else {
+ $pdfs_links[$object_id] = null;
+ }
- // Найденный листинг парсера: пишем историю отправки и снапшот по реальному el.id, контакта нет.
- if (!is_null($listing_row)) {
+ // Найденный листинг парсера: пишем историю отправки и снапшот по реальному el.id, контакта нет.
+ if (!is_null($listing_row)) {
- $obj = $listing_row;
- $adresses[] = $obj['nazv'];
+ $obj = $listing_row;
+ $adresses[] = $obj['nazv'];
- // Снапшот листинга в archive: phone/sobstv пустые (контакт скрыт по 152-ФЗ).
- $sql = "SELECT * FROM `archive` WHERE `id_obj` = '$object_id'";
- if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query)) {
- $sql = "UPDATE `archive` SET `nazv`='$obj[nazv]', `adres`='$obj[adres]', `phone`='', `sobstv`='' WHERE `id_obj` = '$object_id'";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $sql = "INSERT INTO archive(nazv, adres, phone, sobstv, id_obj) VALUES('$obj[nazv]', '$obj[adres]', '', '', '$object_id')";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ // Снапшот листинга в archive: phone/sobstv пустые (контакт скрыт по 152-ФЗ).
+ $sql = "SELECT * FROM `archive` WHERE `id_obj` = '$object_id'";
+ if ($query = mysql_query($sql)) {
+ if (mysql_num_rows($query)) {
+ $sql = "UPDATE `archive` SET `nazv`='$obj[nazv]', `adres`='$obj[adres]', `phone`='', `sobstv`='' WHERE `id_obj` = '$object_id'";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $sql = "INSERT INTO archive(nazv, adres, phone, sobstv, id_obj) VALUES('$obj[nazv]', '$obj[adres]', '', '', '$object_id')";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $new_price = 0;
- if (isset($new_prices[$object_id])) {
- $new_price = $new_prices[$object_id];
- }
+ $new_price = 0;
+ if (isset($new_prices[$object_id])) {
+ $new_price = $new_prices[$object_id];
+ }
- foreach ($clients_ids as $client_id) {
- $lnk = $pdfs_links[$object_id];
-
- // Per-send описание, переданное mJW в POST-параметре `descriptions`.
- $descriptionForInsert = "NULL";
- if (isset($descriptions[intval($object_id)]) && $descriptions[intval($object_id)] !== '') {
- $cleanedDesc = cleanHtml($descriptions[intval($object_id)], '
,
- // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
- if ($cleanedDesc !== '' && strpos($cleanedDesc, '
0) {
- $asfilter = new \AutoSearch();
- foreach ($asfilter_objects as $filter_id => $object_id) {
- if (!is_null($filter_id) && !is_null($object_id))
- $asfilter->addObjectToSended($filter_id, $object_id);
- }
- }
-
- continue;
- }
-
- $sql = "SELECT * FROM objects WHERE id=$object_id";
- if ($rez = mysql_query($sql)) {
- $obj = mysql_fetch_assoc($rez);
-
- //Доп обработка
- if (!$obj['etazh'])
- $obj['etazh'] = \Filter::getFloorFromName($obj['nazv'], true);
- else
- \Filter::getFloorFromName($obj['nazv'], true);
-
- if (!$obj['etazh_iz'])
- $obj['etazh_iz'] = \Filter::getMaxFloorFromName($obj['nazv'], true);
- else
- \Filter::getMaxFloorFromName($obj['nazv'], true);
-
- \Filter::getSpaceFromName($obj['nazv'], true);
- $obj['nazv'] = \Filter::name($obj['nazv']);
- $adresses[] = $obj['nazv'];
-
- $sql = "SELECT * FROM `archive` WHERE `id_obj` = '$object_id'";
- if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query)) {
- $sql = "UPDATE `archive` SET `nazv`='$obj[nazv]', `adres`='$obj[adres]', `phone`='$obj[phone]', `sobstv`='$obj[sobstv]' WHERE `id_obj` = '$object_id'";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $sql = "INSERT INTO archive(nazv, adres, phone, sobstv, id_obj) VALUES('$obj[nazv]', '$obj[adres]', '$obj[phone]', '$obj[sobstv]', '$object_id')";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
-
- $new_price = 0;
- if (isset($new_prices[$object_id])) {
- $new_price = $new_prices[$object_id];
- }
-
- foreach ($clients_ids as $client_id) {
+ foreach ($clients_ids as $client_id) {
$lnk = $pdfs_links[$object_id];
// Per-send описание, переданное mJW в POST-параметре `descriptions`.
$descriptionForInsert = "NULL";
if (isset($descriptions[intval($object_id)]) && $descriptions[intval($object_id)] !== '') {
$cleanedDesc = cleanHtml($descriptions[intval($object_id)], '
,
- // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
- if ($cleanedDesc !== '' && strpos($cleanedDesc, '
,
+ // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
+ if ($cleanedDesc !== '' && strpos($cleanedDesc, '
0) {
- $asfilter = new AutoSearch();
- foreach ($asfilter_objects as $filter_id => $object_id) {
- if (!is_null($filter_id) && !is_null($object_id))
- $asfilter->addObjectToSended($filter_id, $object_id);
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ if (count($asfilter_objects) > 0) {
+ $asfilter = new \AutoSearch();
+ foreach ($asfilter_objects as $filter_id => $object_id) {
+ if (!is_null($filter_id) && !is_null($object_id))
+ $asfilter->addObjectToSended($filter_id, $object_id);
+ }
+ }
- if (count($newbuildings_ids)) {
- foreach ($newbuildings_ids as $object_id) {
+ continue;
+ }
- if (self::is_ssl())
- $linkUrl = "https://joywork.ru/newbuilding-view.php?id=$object_id&token=" . md5($user_id);
- else
- $linkUrl = "http://joywork.ru/newbuilding-view.php?id=$object_id&token=" . md5($user_id);
+ $sql = "SELECT * FROM objects WHERE id=$object_id";
+ if ($rez = mysql_query($sql)) {
+ $obj = mysql_fetch_assoc($rez);
- $sql = "SELECT a.id, a.number, b.name, b.address FROM apartments a, blocks b WHERE b.id = a.block_id AND a.id='$object_id'";
+ //Доп обработка
+ if (!$obj['etazh'])
+ $obj['etazh'] = \Filter::getFloorFromName($obj['nazv'], true);
+ else
+ \Filter::getFloorFromName($obj['nazv'], true);
- if ($rez = mysql_query($sql)) {
- if (mysql_num_rows($rez) > 0) {
+ if (!$obj['etazh_iz'])
+ $obj['etazh_iz'] = \Filter::getMaxFloorFromName($obj['nazv'], true);
+ else
+ \Filter::getMaxFloorFromName($obj['nazv'], true);
- $obj = mysql_fetch_assoc($rez);
+ \Filter::getSpaceFromName($obj['nazv'], true);
+ $obj['nazv'] = \Filter::name($obj['nazv']);
+ $adresses[] = $obj['nazv'];
- $nazv = "Квартира №$obj[number] в комплексе $obj[name]";
+ $sql = "SELECT * FROM `archive` WHERE `id_obj` = '$object_id'";
+ if ($query = mysql_query($sql)) {
+ if (mysql_num_rows($query)) {
+ $sql = "UPDATE `archive` SET `nazv`='$obj[nazv]', `adres`='$obj[adres]', `phone`='$obj[phone]', `sobstv`='$obj[sobstv]' WHERE `id_obj` = '$object_id'";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $sql = "INSERT INTO archive(nazv, adres, phone, sobstv, id_obj) VALUES('$obj[nazv]', '$obj[adres]', '$obj[phone]', '$obj[sobstv]', '$object_id')";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if ($send_type == 1) {
- $txt .= "
$nazv
";
- } else {
- $txt .= $nazv . " " . $linkUrl;
- }
+ $new_price = 0;
+ if (isset($new_prices[$object_id])) {
+ $new_price = $new_prices[$object_id];
+ }
- foreach ($clients_ids as $client_id) {
- $sql = "INSERT INTO sended_pdf_newbuildings(id_agent, id_object, date_send, id_client, nazv, path, send_type) VALUES('$user_id', '$object_id', NOW(), '$client_id', '$nazv $obj[address]', '$linkUrl', $send_type)";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ foreach ($clients_ids as $client_id) {
+ $lnk = $pdfs_links[$object_id];
- if (count($asfilter_objects) > 0) {
- $asfilter = new \AutoSearch();
- foreach ($asfilter_objects as $filter_id => $object_id) {
- if (!is_null($filter_id) && !is_null($object_id))
- $asfilter->addObjectToSended($filter_id, $object_id);
- }
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ // Per-send описание, переданное mJW в POST-параметре `descriptions`.
+ $descriptionForInsert = "NULL";
+ if (isset($descriptions[intval($object_id)]) && $descriptions[intval($object_id)] !== '') {
+ $cleanedDesc = cleanHtml($descriptions[intval($object_id)], '
,
+ // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
+ if ($cleanedDesc !== '' && strpos($cleanedDesc, '
0) {
+ $asfilter = new AutoSearch();
+ foreach ($asfilter_objects as $filter_id => $object_id) {
+ if (!is_null($filter_id) && !is_null($object_id))
+ $asfilter->addObjectToSended($filter_id, $object_id);
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
- try {
- foreach ($clients_ids as $client_id) {
- $email = mysql_result(mysql_query("SELECT email FROM clients WHERE deleted <> 1 AND id = $client_id"), 0);
- if (isset($attachments)) {
- foreach ($attachments as $x => $attachment) {
- mailClientByIdWithConfirm($user_id, trim($email), $theme, $txt, $attachment, $address[$x]);
+ if (count($newbuildings_ids)) {
+ foreach ($newbuildings_ids as $object_id) {
+
+ if (self::is_ssl())
+ $linkUrl = "https://joywork.ru/newbuilding-view.php?id=$object_id&token=" . md5($user_id);
+ else
+ $linkUrl = "http://joywork.ru/newbuilding-view.php?id=$object_id&token=" . md5($user_id);
+
+ $sql = "SELECT a.id, a.number, b.name, b.address FROM apartments a, blocks b WHERE b.id = a.block_id AND a.id='$object_id'";
+
+ if ($rez = mysql_query($sql)) {
+ if (mysql_num_rows($rez) > 0) {
+
+ $obj = mysql_fetch_assoc($rez);
+
+ $nazv = "Квартира №$obj[number] в комплексе $obj[name]";
+
+ if ($send_type == 1) {
+ $txt .= "
$nazv
";
+ } else {
+ $txt .= $nazv . " " . $linkUrl;
+ }
+
+ foreach ($clients_ids as $client_id) {
+ $sql = "INSERT INTO sended_pdf_newbuildings(id_agent, id_object, date_send, id_client, nazv, path, send_type) VALUES('$user_id', '$object_id', NOW(), '$client_id', '$nazv $obj[address]', '$linkUrl', $send_type)";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+
+ if (count($asfilter_objects) > 0) {
+ $asfilter = new \AutoSearch();
+ foreach ($asfilter_objects as $filter_id => $object_id) {
+ if (!is_null($filter_id) && !is_null($object_id))
+ $asfilter->addObjectToSended($filter_id, $object_id);
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+
+ $txt .= $footer;
+
+ $address = [];
+ $attachments = [];
+ for ($i = 0; $i < count($pdfs); $i++) {
+ $num = $i + 1;
+ $attachments[$x][] = $pdfs[$i];
+ $address[$x][] = $adresses[$i];
+
+ if ($num % 5 == 0)
+ $x++;
+ }
+
+ try {
+ foreach ($clients_ids as $client_id) {
+ $email = mysql_result(mysql_query("SELECT email FROM clients WHERE deleted <> 1 AND id = $client_id"), 0);
+ if (isset($attachments)) {
+ foreach ($attachments as $x => $attachment) {
+ mailClientByIdWithConfirm($user_id, trim($email), $theme, $txt, $attachment, $address[$x]);
if ($token && $storageUrl) {
foreach ($attachment as $i => $path) {
//удаляем файл с локального сервера
@@ -6360,432 +6360,432 @@ class CommonController extends ApiController
}
}
- sleep(1);
- }
- } else {
- mailClientByIdWithConfirm($user_id, trim($email), $theme, $txt, [], []);
- }
- }
- } catch (\Exception $e) {
- $error = true;
- $errors[] = $e;
- }
- } else if ($send_type && $provide == 1) { // send as links
-
- $txt = $message;
- $toSendASFilter = [];
- if (isset($_SESSION['to_send_asfilter']))
- $toSendASFilter = $_SESSION['to_send_asfilter'];
-
- $_SESSION['to_send'] = [];
- $_SESSION['to_send_newbuilding'] = [];
- $_SESSION['to_send_asfilter'] = [];
- // Сбрасываем черновики per-send описаний вместе с корзиной.
- $_SESSION['to_send_descriptions'] = [];
-
- if (count($objects_ids) || count($external_objects_ids)) {
-
- if ($send_type == 1)
- $txt .= '';
-
- // Offset-free: общий проход по своим объектам и листингам (объединённый список реальных id),
- // признак листинга — по сету external_objects_ids, а не по диапазону id (коллизия el.id == objects.id).
- foreach (array_merge($objects_ids, $external_objects_ids) as $object_id) {
-
- // Листинг адресуется явным маркером src=ext (bare id уже не различает листинг от своего объекта).
- // Для листинга эта ссылка всё равно перезаписывается токеновой ниже, но держим инвариант offset-free.
- $src_marker = isset($listing_id_set[$object_id]) ? '&src=ext' : '';
- if (self::is_ssl())
- $linkUrl = "https://joywork.ru/object-view.php?id=$object_id&token=" . md5($user_id) . $src_marker;
- else
- $linkUrl = "http://joywork.ru/object-view.php?id=$object_id&token=" . md5($user_id) . $src_marker;
-
- // Найденный листинг парсера: образ строки из external_listings по реальному el.id,
- // ссылка клиенту — по токену записи отправки (md5 от id строки sended_pdf).
- if (isset($listing_id_set[$object_id])) {
-
- $obj = \external_listing_object_row($object_id, false);
- if (is_null($obj)) {
- // Листинг удалён по TTL — пропускаем, в письмо и историю не попадает.
- continue;
- }
-
- // Поля внешнего источника экранируем для прямой подстановки в SQL.
- $obj['nazv'] = mysql_real_escape_string($obj['nazv']);
- $obj['adres'] = mysql_real_escape_string($obj['adres']);
-
- // Снапшот листинга в archive: phone/sobstv пустые (контакт скрыт по 152-ФЗ).
- $sql = "SELECT * FROM `archive` WHERE `id_obj` = '$object_id'";
- if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query)) {
- $sql = "UPDATE `archive` SET `nazv`='$obj[nazv]', `adres`='$obj[adres]', `phone`='', `sobstv`='' WHERE `id_obj` = '$object_id'";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $sql = "INSERT INTO archive(nazv, adres, phone, sobstv, id_obj) VALUES('$obj[nazv]', '$obj[adres]', '', '', '$object_id')";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
-
- foreach ($clients_ids as $client_id) {
-
- $linkUrl .= "&client=".md5($client_id);
-
- $close_contact = 0;
- if (in_array($object_id, $hide_contacts))
- $close_contact = 1;
-
- // user_object_contact_close для листинга не пишем — его контакт скрыт всегда.
-
- $new_price = 0;
- if (isset($new_prices[$object_id])) {
- $new_price = $new_prices[$object_id];
- }
-
- // Per-send описание, переданное mJW в POST-параметре `descriptions`.
- $descriptionForInsert = "NULL";
- if (isset($descriptions[intval($object_id)]) && $descriptions[intval($object_id)] !== '') {
- $cleanedDesc = cleanHtml($descriptions[intval($object_id)], '
,
- // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
- if ($cleanedDesc !== '' && strpos($cleanedDesc, '
0) {
- $asfilter = new \AutoSearch();
- foreach ($toSendASFilter as $filter_id => $object_id) {
- if (!is_null($filter_id) && !is_null($object_id))
- $asfilter->addObjectToSended($filter_id, $object_id);
- }
- }
-
- if ($send_type == 1) {
- $txt .= "
';
-
- }
-
- if (count($newbuildings_ids)) {
-
- if ($send_type == 1)
- $txt .= '
,
- // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
- if ($cleanedDesc !== '' && strpos($cleanedDesc, '
0) {
- $asfilter = new \AutoSearch();
- foreach ($toSendASFilter as $filter_id => $object_id) {
- if (!is_null($filter_id) && !is_null($object_id))
- $asfilter->addObjectToSended($filter_id, $object_id);
- }
- }
-
- if ($send_type == 1) {
- $txt .= "';
-
- foreach ($newbuildings_ids as $object_id) {
-
- if (self::is_ssl())
- $linkUrl = "https://joywork.ru/newbuilding-view.php?id=$object_id&token=" . md5($user_id);
- else
- $linkUrl = "http://joywork.ru/newbuilding-view.php?id=$object_id&token=" . md5($user_id);
-
- $sql = "SELECT a.id, a.number, b.name, b.address FROM apartments a, blocks b WHERE b.id = a.block_id AND a.id='$object_id'";
-
- if ($rez = mysql_query($sql)) {
- if (mysql_num_rows($rez) > 0) {
-
- $obj = mysql_fetch_assoc($rez);
- $nazv = "Квартира №$obj[number] в комплексе $obj[name]";
-
- foreach ($clients_ids as $client_id) {
-
- $linkUrl .= "&client=".md5($client_id);
-
- $close_contact = 0;
- if (in_array($object_id, $hide_contacts))
- $close_contact = 1;
-
- $sql_up = "INSERT INTO user_object_contact_close SET close={$close_contact}, user_id={$user_id}, object_id = {$object_id}, client_id = {$client_id}";
- if (!mysql_query($sql_up)) {
- $error = true;
- $errors[] = mysql_error();
- }
-
- // Per-send описание, переданное mJW в POST-параметре `descriptions`.
- $descriptionForInsert = "NULL";
- if (isset($descriptions[intval($object_id)]) && $descriptions[intval($object_id)] !== '') {
- $cleanedDesc = cleanHtml($descriptions[intval($object_id)], '
';
- }
-
- if ($send_type == 1) {
- if ($_SESSION['individual']) {
- $txt .= "
,
- // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
- if ($cleanedDesc !== '' && strpos($cleanedDesc, '
0) {
- $asfilter = new \AutoSearch();
- foreach ($toSendASFilter as $filter_id => $object_id) {
- if (!is_null($filter_id) && !is_null($object_id))
- $asfilter->addObjectToSended($filter_id, $object_id);
- }
- }
-
- if ($send_type == 1) {
- $txt .= "
$manager
".$user->phone."
".$user->email;
- } else {
- $txt .= "
$manager
".$user->phone."
".$user->email."
$title
$phone";
- }
- }
-
- if ($send_type == 1) {
- try {
- foreach ($clients_ids as $client_id) {
- $email = mysql_result(mysql_query("SELECT email FROM clients WHERE deleted <> 1 AND id = $client_id"), 0);
- mailClientByIdWithConfirm($user_id, trim($email), $theme, $txt, [], []);
- sleep(1);
- }
- } catch (\Exception $e) {
- $error = true;
- $errors[] = $e;
- }
- } else if ($send_type == 2) {
- $phone = mysql_result(mysql_query("SELECT phone FROM clients WHERE deleted <> 1 AND id = $clients_ids[0]"), 0);
- $text = !empty(trim($data['message'])) ? str_replace("\n", "
", trim($data['message']) . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на ваши вопросы.
";
- $txt = $text . " " . $txt;
-
- /*if ($_SESSION['meta']['isStandalone']) { //whatsapp: 'whatsapp://send?text={message}&phone=+{phone}',
+ sleep(1);
+ }
+ } else {
+ mailClientByIdWithConfirm($user_id, trim($email), $theme, $txt, [], []);
+ }
+ }
+ } catch (\Exception $e) {
+ $error = true;
+ $errors[] = $e;
+ }
+ } else if ($send_type && $provide == 1) { // send as links
+
+ $txt = $message;
+ $toSendASFilter = [];
+ if (isset($_SESSION['to_send_asfilter']))
+ $toSendASFilter = $_SESSION['to_send_asfilter'];
+
+ $_SESSION['to_send'] = [];
+ $_SESSION['to_send_newbuilding'] = [];
+ $_SESSION['to_send_asfilter'] = [];
+ // Сбрасываем черновики per-send описаний вместе с корзиной.
+ $_SESSION['to_send_descriptions'] = [];
+
+ if (count($objects_ids) || count($external_objects_ids)) {
+
+ if ($send_type == 1)
+ $txt .= '';
+
+ // Offset-free: общий проход по своим объектам и листингам (объединённый список реальных id),
+ // признак листинга — по сету external_objects_ids, а не по диапазону id (коллизия el.id == objects.id).
+ foreach (array_merge($objects_ids, $external_objects_ids) as $object_id) {
+
+ // Листинг адресуется явным маркером src=ext (bare id уже не различает листинг от своего объекта).
+ // Для листинга эта ссылка всё равно перезаписывается токеновой ниже, но держим инвариант offset-free.
+ $src_marker = isset($listing_id_set[$object_id]) ? '&src=ext' : '';
+ if (self::is_ssl())
+ $linkUrl = "https://joywork.ru/object-view.php?id=$object_id&token=" . md5($user_id) . $src_marker;
+ else
+ $linkUrl = "http://joywork.ru/object-view.php?id=$object_id&token=" . md5($user_id) . $src_marker;
+
+ // Найденный листинг парсера: образ строки из external_listings по реальному el.id,
+ // ссылка клиенту — по токену записи отправки (md5 от id строки sended_pdf).
+ if (isset($listing_id_set[$object_id])) {
+
+ $obj = \external_listing_object_row($object_id, false);
+ if (is_null($obj)) {
+ // Листинг удалён по TTL — пропускаем, в письмо и историю не попадает.
+ continue;
+ }
+
+ // Поля внешнего источника экранируем для прямой подстановки в SQL.
+ $obj['nazv'] = mysql_real_escape_string($obj['nazv']);
+ $obj['adres'] = mysql_real_escape_string($obj['adres']);
+
+ // Снапшот листинга в archive: phone/sobstv пустые (контакт скрыт по 152-ФЗ).
+ $sql = "SELECT * FROM `archive` WHERE `id_obj` = '$object_id'";
+ if ($query = mysql_query($sql)) {
+ if (mysql_num_rows($query)) {
+ $sql = "UPDATE `archive` SET `nazv`='$obj[nazv]', `adres`='$obj[adres]', `phone`='', `sobstv`='' WHERE `id_obj` = '$object_id'";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $sql = "INSERT INTO archive(nazv, adres, phone, sobstv, id_obj) VALUES('$obj[nazv]', '$obj[adres]', '', '', '$object_id')";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+
+ foreach ($clients_ids as $client_id) {
+
+ $linkUrl .= "&client=".md5($client_id);
+
+ $close_contact = 0;
+ if (in_array($object_id, $hide_contacts))
+ $close_contact = 1;
+
+ // user_object_contact_close для листинга не пишем — его контакт скрыт всегда.
+
+ $new_price = 0;
+ if (isset($new_prices[$object_id])) {
+ $new_price = $new_prices[$object_id];
+ }
+
+ // Per-send описание, переданное mJW в POST-параметре `descriptions`.
+ $descriptionForInsert = "NULL";
+ if (isset($descriptions[intval($object_id)]) && $descriptions[intval($object_id)] !== '') {
+ $cleanedDesc = cleanHtml($descriptions[intval($object_id)], '
,
+ // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
+ if ($cleanedDesc !== '' && strpos($cleanedDesc, '
0) {
+ $asfilter = new \AutoSearch();
+ foreach ($toSendASFilter as $filter_id => $object_id) {
+ if (!is_null($filter_id) && !is_null($object_id))
+ $asfilter->addObjectToSended($filter_id, $object_id);
+ }
+ }
+
+ if ($send_type == 1) {
+ $txt .= "
';
+
+ }
+
+ if (count($newbuildings_ids)) {
+
+ if ($send_type == 1)
+ $txt .= '
,
+ // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
+ if ($cleanedDesc !== '' && strpos($cleanedDesc, '
0) {
+ $asfilter = new \AutoSearch();
+ foreach ($toSendASFilter as $filter_id => $object_id) {
+ if (!is_null($filter_id) && !is_null($object_id))
+ $asfilter->addObjectToSended($filter_id, $object_id);
+ }
+ }
+
+ if ($send_type == 1) {
+ $txt .= "';
+
+ foreach ($newbuildings_ids as $object_id) {
+
+ if (self::is_ssl())
+ $linkUrl = "https://joywork.ru/newbuilding-view.php?id=$object_id&token=" . md5($user_id);
+ else
+ $linkUrl = "http://joywork.ru/newbuilding-view.php?id=$object_id&token=" . md5($user_id);
+
+ $sql = "SELECT a.id, a.number, b.name, b.address FROM apartments a, blocks b WHERE b.id = a.block_id AND a.id='$object_id'";
+
+ if ($rez = mysql_query($sql)) {
+ if (mysql_num_rows($rez) > 0) {
+
+ $obj = mysql_fetch_assoc($rez);
+ $nazv = "Квартира №$obj[number] в комплексе $obj[name]";
+
+ foreach ($clients_ids as $client_id) {
+
+ $linkUrl .= "&client=".md5($client_id);
+
+ $close_contact = 0;
+ if (in_array($object_id, $hide_contacts))
+ $close_contact = 1;
+
+ $sql_up = "INSERT INTO user_object_contact_close SET close={$close_contact}, user_id={$user_id}, object_id = {$object_id}, client_id = {$client_id}";
+ if (!mysql_query($sql_up)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+
+ // Per-send описание, переданное mJW в POST-параметре `descriptions`.
+ $descriptionForInsert = "NULL";
+ if (isset($descriptions[intval($object_id)]) && $descriptions[intval($object_id)] !== '') {
+ $cleanedDesc = cleanHtml($descriptions[intval($object_id)], '
';
+ }
+
+ if ($send_type == 1) {
+ if ($_SESSION['individual']) {
+ $txt .= "
,
+ // чтобы абзацы не склеились в одну строку при отображении через echo $obj['opis'] в object-view.php.
+ if ($cleanedDesc !== '' && strpos($cleanedDesc, '
0) {
+ $asfilter = new \AutoSearch();
+ foreach ($toSendASFilter as $filter_id => $object_id) {
+ if (!is_null($filter_id) && !is_null($object_id))
+ $asfilter->addObjectToSended($filter_id, $object_id);
+ }
+ }
+
+ if ($send_type == 1) {
+ $txt .= "
$manager
".$user->phone."
".$user->email;
+ } else {
+ $txt .= "
$manager
".$user->phone."
".$user->email."
$title
$phone";
+ }
+ }
+
+ if ($send_type == 1) {
+ try {
+ foreach ($clients_ids as $client_id) {
+ $email = mysql_result(mysql_query("SELECT email FROM clients WHERE deleted <> 1 AND id = $client_id"), 0);
+ mailClientByIdWithConfirm($user_id, trim($email), $theme, $txt, [], []);
+ sleep(1);
+ }
+ } catch (\Exception $e) {
+ $error = true;
+ $errors[] = $e;
+ }
+ } else if ($send_type == 2) {
+ $phone = mysql_result(mysql_query("SELECT phone FROM clients WHERE deleted <> 1 AND id = $clients_ids[0]"), 0);
+ $text = !empty(trim($data['message'])) ? str_replace("\n", "
", trim($data['message']) . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на ваши вопросы.
";
+ $txt = $text . " " . $txt;
+
+ /*if ($_SESSION['meta']['isStandalone']) { //whatsapp: 'whatsapp://send?text={message}&phone=+{phone}',
$links[] = "whatsapp://send?text=" .
urlencode(strip_tags(preg_replace('//', '$1', trim($txt)))) . "&phone=+" . preg_replace("/[^,.0-9]/", '', $phone) . "";
} else {
@@ -6793,15 +6793,15 @@ class CommonController extends ApiController
urlencode(strip_tags(preg_replace('//', '$1', trim($txt)))) . " ";
}*/
- $links[] = "whatsapp://send?text=" .
- urlencode(strip_tags(preg_replace('//', '$1', trim($txt)))) . "&phone=+" . preg_replace("/[^,.0-9]/", '', $phone) . "";
+ $links[] = "whatsapp://send?text=" .
+ urlencode(strip_tags(preg_replace('//', '$1', trim($txt)))) . "&phone=+" . preg_replace("/[^,.0-9]/", '', $phone) . "";
- } else if ($send_type == 3) {
- //$phone = mysql_result(mysql_query("SELECT phone FROM clients WHERE deleted <> 1 AND id = $clients_ids[0]"), 0);
- $text = !empty(trim($data['message'])) ? str_replace("\n", "
", trim($data['message']) . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на ваши вопросы.
";
- $txt = $text . " " . $txt;
+ } else if ($send_type == 3) {
+ //$phone = mysql_result(mysql_query("SELECT phone FROM clients WHERE deleted <> 1 AND id = $clients_ids[0]"), 0);
+ $text = !empty(trim($data['message'])) ? str_replace("\n", "
", trim($data['message']) . "
") : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на ваши вопросы.
";
+ $txt = $text . " " . $txt;
- /*if ($_SESSION['meta']['isStandalone']) { //telegram: 'tg://msg?text={message}&to=+{phone}',
+ /*if ($_SESSION['meta']['isStandalone']) { //telegram: 'tg://msg?text={message}&to=+{phone}',
$links[] = "tg://msg?text=" .
urlencode(strip_tags(preg_replace('//', '$1', trim($txt)))) . " ";
} else {
@@ -6809,405 +6809,405 @@ class CommonController extends ApiController
urlencode(strip_tags(preg_replace('//', '$1', trim($txt)))) . " ";
}*/
- $links[] = "tg://msg?text=" .
- urlencode(strip_tags(preg_replace('//', '$1', trim($txt)))) . "&to=+" . preg_replace("/[^,.0-9]/", '', $phone) . "";
- }
- }
- }
+ $links[] = "tg://msg?text=" .
+ urlencode(strip_tags(preg_replace('//', '$1', trim($txt)))) . "&to=+" . preg_replace("/[^,.0-9]/", '', $phone) . "";
+ }
+ }
+ }
- if (!count($errors)) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'pdfs_links' => $pdfs_links,
- 'presentations' => $presentations,
- 'links' => $links,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if (!count($errors)) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'pdfs_links' => $pdfs_links,
+ 'presentations' => $presentations,
+ 'links' => $links,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function crossPosting($app, $get = null, $post = null) {
+ public function crossPosting($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $body = $app->request->getBody();
- $data = json_decode($body, true);
+ $body = $app->request->getBody();
+ $data = json_decode($body, true);
- $object_id = null;
- if (isset($data['object_id']))
- $object_id = intval($data['object_id']);
+ $object_id = null;
+ if (isset($data['object_id']))
+ $object_id = intval($data['object_id']);
- // Найденный листинг парсера read-only: публикация в ВК недоступна (паритет с десктопом addVkPost).
- // Признак листинга — явный флаг is_external из запроса (offset-free: id коллизит с objects.id).
- if ($object_id && self::_request_flag($data, 'is_external')) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(403);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'errors' => ['Действие недоступно для найденного листинга. Скопируйте объект в свои, чтобы управлять им.'],
- ], JSON_UNESCAPED_UNICODE));
- return;
- }
+ // Найденный листинг парсера read-only: публикация в ВК недоступна (паритет с десктопом addVkPost).
+ // Признак листинга — явный флаг is_external из запроса (offset-free: id коллизит с objects.id).
+ if ($object_id && self::_request_flag($data, 'is_external')) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(403);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'errors' => ['Действие недоступно для найденного листинга. Скопируйте объект в свои, чтобы управлять им.'],
+ ], JSON_UNESCAPED_UNICODE));
+ return;
+ }
- $message = null;
- if (isset($data['message']))
- $message = trim($data['message']);
+ $message = null;
+ if (isset($data['message']))
+ $message = trim($data['message']);
- $section = null;
- if (isset($data['section']))
- $section = trim($data['section']);
+ $section = null;
+ if (isset($data['section']))
+ $section = trim($data['section']);
- if (!is_null($object_id) && !is_null($section) && !empty($message)) {
+ if (!is_null($object_id) && !is_null($section) && !empty($message)) {
- $files = [];
- if ($section == 'vkontakte') {
+ $files = [];
+ if ($section == 'vkontakte') {
- $targets = null;
- if (isset($data['targets']))
- $targets = $data['targets'];
+ $targets = null;
+ if (isset($data['targets']))
+ $targets = $data['targets'];
- $sql = "SELECT * FROM objects WHERE objects.id = $object_id";
- if (count($targets) && $query = mysql_query($sql)) {
- $obj = mysql_fetch_assoc($query);
- if ($obj) {
+ $sql = "SELECT * FROM objects WHERE objects.id = $object_id";
+ if (count($targets) && $query = mysql_query($sql)) {
+ $obj = mysql_fetch_assoc($query);
+ if ($obj) {
- $sql = "SELECT oop.sort_order, p.photo FROM objects_object_photo oop, object_photo p WHERE p.id = oop.object_photo_id AND oop.object_id = $obj[id] ORDER BY oop.sort_order";
- if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query) > 0) {
- while ($photo = mysql_fetch_assoc($query)) {
- $obj['photo' . $photo['sort_order']] = $photo['photo'];
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $sql = "SELECT oop.sort_order, p.photo FROM objects_object_photo oop, object_photo p WHERE p.id = oop.object_photo_id AND oop.object_id = $obj[id] ORDER BY oop.sort_order";
+ if ($query = mysql_query($sql)) {
+ if (mysql_num_rows($query) > 0) {
+ while ($photo = mysql_fetch_assoc($query)) {
+ $obj['photo' . $photo['sort_order']] = $photo['photo'];
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $user = null;
- $sql = "SELECT * FROM users WHERE id = $user_id";
- if ($query = mysql_query($sql)) {
- $user = mysql_fetch_assoc($query);
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $user = null;
+ $sql = "SELECT * FROM users WHERE id = $user_id";
+ if ($query = mysql_query($sql)) {
+ $user = mysql_fetch_assoc($query);
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if (isset($user['vk_token'])) {
- $config['access_token'] = $user['vk_token'];
- require_once($_SERVER['DOCUMENT_ROOT'] . '/vk.php');
+ if (isset($user['vk_token'])) {
+ $config['access_token'] = $user['vk_token'];
+ require_once($_SERVER['DOCUMENT_ROOT'] . '/vk.php');
- $v = new \Vk($config);
- if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/photos")) {
- @mkdir($_SERVER['DOCUMENT_ROOT'] . "/photos", 0777);
- @chmod($_SERVER['DOCUMENT_ROOT'] . "/photos", 0777);
- }
+ $v = new \Vk($config);
+ if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/photos")) {
+ @mkdir($_SERVER['DOCUMENT_ROOT'] . "/photos", 0777);
+ @chmod($_SERVER['DOCUMENT_ROOT'] . "/photos", 0777);
+ }
- if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp")) {
- @mkdir($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp", 0777);
- @chmod($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp", 0777);
- }
+ if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp")) {
+ @mkdir($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp", 0777);
+ @chmod($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp", 0777);
+ }
- for ($num = 1; $num <= 20; $num++) {
- if (isset($obj['photo' . $num]) && $obj['photo' . $num]) {
- if (stripos($obj['photo' . $num], "http://") === false && stripos($obj['photo' . $num], "https://") === false) {
- if (substr($obj['photo' . $num], -1) == '.') {
- $pathInfo = pathinfo($obj['photo' . $num]);
+ for ($num = 1; $num <= 20; $num++) {
+ if (isset($obj['photo' . $num]) && $obj['photo' . $num]) {
+ if (stripos($obj['photo' . $num], "http://") === false && stripos($obj['photo' . $num], "https://") === false) {
+ if (substr($obj['photo' . $num], -1) == '.') {
+ $pathInfo = pathinfo($obj['photo' . $num]);
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp/" . $pathInfo['basename'] . 'jpg', file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/photos/' . $obj['photo' . $num]));
+ file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp/" . $pathInfo['basename'] . 'jpg', file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/photos/' . $obj['photo' . $num]));
- $obj['photo' . $num] = $_SERVER['DOCUMENT_ROOT'] . '/photos/vk_temp/' . $pathInfo['basename'] . 'jpg';
- } else {
- $obj['photo' . $num] = $_SERVER['DOCUMENT_ROOT'] . '/photos/' . $obj['photo' . $num];
- }
- } else {
+ $obj['photo' . $num] = $_SERVER['DOCUMENT_ROOT'] . '/photos/vk_temp/' . $pathInfo['basename'] . 'jpg';
+ } else {
+ $obj['photo' . $num] = $_SERVER['DOCUMENT_ROOT'] . '/photos/' . $obj['photo' . $num];
+ }
+ } else {
- $pathInfo = pathinfo($obj['photo' . $num]);
+ $pathInfo = pathinfo($obj['photo' . $num]);
- $filename = $pathInfo['basename'];
- if (substr($obj['photo' . $num], -1) == '.') {
- $filename = $pathInfo['basename'] . 'jpg';
- }
+ $filename = $pathInfo['basename'];
+ if (substr($obj['photo' . $num], -1) == '.') {
+ $filename = $pathInfo['basename'] . 'jpg';
+ }
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp/" . $filename, file_get_contents($obj['photo' . $num]));
+ file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/photos/vk_temp/" . $filename, file_get_contents($obj['photo' . $num]));
- $obj['photo' . $num] = $_SERVER['DOCUMENT_ROOT'] . '/photos/vk_temp/' . $filename;
- }
+ $obj['photo' . $num] = $_SERVER['DOCUMENT_ROOT'] . '/photos/vk_temp/' . $filename;
+ }
- $files[] = $obj['photo' . $num];
- if (count($files) == 5) {
- break;
- }
- }
- }
+ $files[] = $obj['photo' . $num];
+ if (count($files) == 5) {
+ break;
+ }
+ }
+ }
- $vk_group_ids = explode(",", trim($user['vk_group_id'], ","));
- if (count($vk_group_ids)) {
+ $vk_group_ids = explode(",", trim($user['vk_group_id'], ","));
+ if (count($vk_group_ids)) {
- foreach ($vk_group_ids as $vk_group_id) {
- if (in_array(trim($vk_group_id), $targets)) {
- $method = 'wall.post';
- $params = []; //в этом массиве - параметры, которые мы отправляем
- $params['message'] = $message; //в данном случае - только само сообщение
- $params['owner_id'] = '-' . trim($vk_group_id); //Ид группы
+ foreach ($vk_group_ids as $vk_group_id) {
+ if (in_array(trim($vk_group_id), $targets)) {
+ $method = 'wall.post';
+ $params = []; //в этом массиве - параметры, которые мы отправляем
+ $params['message'] = $message; //в данном случае - только само сообщение
+ $params['owner_id'] = '-' . trim($vk_group_id); //Ид группы
- if (isset($user['vk_post_as_group']) && $user['vk_post_as_group'] == 1)
- $params['from_group'] = '1'; //От имени группы
+ if (isset($user['vk_post_as_group']) && $user['vk_post_as_group'] == 1)
+ $params['from_group'] = '1'; //От имени группы
- $response = null;
- try {
- if ($files && count($files) > 0)
- $responseImg = $v->upload_photo(trim($vk_group_id), $user['vk_user_id'], $files); //выполняем
+ $response = null;
+ try {
+ if ($files && count($files) > 0)
+ $responseImg = $v->upload_photo(trim($vk_group_id), $user['vk_user_id'], $files); //выполняем
- if (isset($responseImg) && count($responseImg) > 0)
- $params['attachments'] = implode(",", $responseImg); //картинки
+ if (isset($responseImg) && count($responseImg) > 0)
+ $params['attachments'] = implode(",", $responseImg); //картинки
- $response = $v->api($method, $params); //выполняем
+ $response = $v->api($method, $params); //выполняем
- /*if ($_SESSION['id'] == 5427) {
+ /*if ($_SESSION['id'] == 5427) {
var_export($params);
var_export($response);
die();
}*/
- } catch (\Exception $e) {
- $error = true;
- $errors[] = $e->getMessage();
- }
+ } catch (\Exception $e) {
+ $error = true;
+ $errors[] = $e->getMessage();
+ }
- if (isset($response['error'])) {
- $error = true;
- $errors[] = 'Ошибка добавления поста в группу: ' . $response['error']['error_msg'];
- }
- }
- }
- }
+ if (isset($response['error'])) {
+ $error = true;
+ $errors[] = 'Ошибка добавления поста в группу: ' . $response['error']['error_msg'];
+ }
+ }
+ }
+ }
- if (in_array(trim($user['vk_user_id']), $targets)) {
- $method = 'wall.post';
- $params = []; //в этом массиве - параметры, которые мы отправляем
- $params['message'] = $message; //в данном случае - только само сообщение
- $params['owner_id'] = $user['vk_user_id']; //Ид пользователя
+ if (in_array(trim($user['vk_user_id']), $targets)) {
+ $method = 'wall.post';
+ $params = []; //в этом массиве - параметры, которые мы отправляем
+ $params['message'] = $message; //в данном случае - только само сообщение
+ $params['owner_id'] = $user['vk_user_id']; //Ид пользователя
- $response = null;
- try {
- if ($files && count($files) > 0)
- $responseImg = $v->upload_photo("", $user['vk_user_id'], $files); //выполняем
+ $response = null;
+ try {
+ if ($files && count($files) > 0)
+ $responseImg = $v->upload_photo("", $user['vk_user_id'], $files); //выполняем
- if (isset($responseImg) && count($responseImg) > 0)
- $params['attachments'] = implode(",", $responseImg); //картинки
+ if (isset($responseImg) && count($responseImg) > 0)
+ $params['attachments'] = implode(",", $responseImg); //картинки
- $response = $v->api($method, $params); //выполняем
+ $response = $v->api($method, $params); //выполняем
- /*if ($_SESSION['id'] == 5427) {
+ /*if ($_SESSION['id'] == 5427) {
var_export($params);
var_export($response);
die();
}*/
- } catch (\Exception $e) {
- $error = true;
- $errors[] = $e->getMessage();
- }
+ } catch (\Exception $e) {
+ $error = true;
+ $errors[] = $e->getMessage();
+ }
- if (isset($response['error'])) {
- $error = true;
- $errors[] = 'Ошибка добавления поста на стену пользователя: ' . $response['error']['error_msg'];
- }
- }
+ if (isset($response['error'])) {
+ $error = true;
+ $errors[] = 'Ошибка добавления поста на стену пользователя: ' . $response['error']['error_msg'];
+ }
+ }
- } else {
- $error = true;
- $errors[] = 'Не указан токен API ВКонтакте.';
- }
- } else {
- $error = true;
- $errors[] = 'Не найден объект для публикации.';
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- $errors[] = 'Не выбрана площадка для публикации.';
- }
+ } else {
+ $error = true;
+ $errors[] = 'Не указан токен API ВКонтакте.';
+ }
+ } else {
+ $error = true;
+ $errors[] = 'Не найден объект для публикации.';
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ $errors[] = 'Не выбрана площадка для публикации.';
+ }
- // удаляем файлы
- if ($section == 'vkontakte') {
- foreach ($files as $name) {
- if (stripos($name, "vk_temp") !== false) {
- unlink($name);
- }
- }
- }
+ // удаляем файлы
+ if ($section == 'vkontakte') {
+ foreach ($files as $name) {
+ if (stripos($name, "vk_temp") !== false) {
+ unlink($name);
+ }
+ }
+ }
- if (!$error) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => $user_id,
- 'object_id' => $object_id,
- 'targets' => $targets,
- 'section' => $section,
- 'message' => $message,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
+ if (!$error) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => $user_id,
+ 'object_id' => $object_id,
+ 'targets' => $targets,
+ 'section' => $section,
+ 'message' => $message,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'object_id' => $object_id,
- 'targets' => $targets,
- 'section' => $section,
- 'message' => $message,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'object_id' => $object_id,
+ 'targets' => $targets,
+ 'section' => $section,
+ 'message' => $message,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function deleteFile($app, $get = null, $post = null) {
+ public function deleteFile($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
+ $error = false;
+ $errors = [];
- $section = null;
- if (isset($get['section']))
- $section = $get['section'];
+ $section = null;
+ if (isset($get['section']))
+ $section = $get['section'];
- $object_id = null;
- if (isset($get['object_id']))
- $object_id = intval($get['object_id']);
+ $object_id = null;
+ if (isset($get['object_id']))
+ $object_id = intval($get['object_id']);
- $client_id = null;
- if (isset($get['client_id']))
- $client_id = intval($get['client_id']);
+ $client_id = null;
+ if (isset($get['client_id']))
+ $client_id = intval($get['client_id']);
- $requisition_id = null;
- if (isset($get['requisition_id']))
- $requisition_id = intval($get['requisition_id']);
+ $requisition_id = null;
+ if (isset($get['requisition_id']))
+ $requisition_id = intval($get['requisition_id']);
- $funnel_id = null;
- if (isset($get['funnel_id']))
- $funnel_id = intval($get['funnel_id']);
+ $funnel_id = null;
+ if (isset($get['funnel_id']))
+ $funnel_id = intval($get['funnel_id']);
- $event_id = null;
- if (isset($get['event_id']))
- $event_id = intval($get['event_id']);
+ $event_id = null;
+ if (isset($get['event_id']))
+ $event_id = intval($get['event_id']);
- $filename = null;
- if (isset($get['filename']))
- $filename = $get['filename'];
+ $filename = null;
+ if (isset($get['filename']))
+ $filename = $get['filename'];
- $is_temp = false;
- if (isset($get['is_temp']))
- $is_temp = ($get['is_temp'] == 'true');
+ $is_temp = false;
+ if (isset($get['is_temp']))
+ $is_temp = ($get['is_temp'] == 'true');
- $temp_path = null;
- $object_photo_id = null;
- if (($user_id = intval($_SESSION['id'])) && $section && $filename) {
+ $temp_path = null;
+ $object_photo_id = null;
+ if (($user_id = intval($_SESSION['id'])) && $section && $filename) {
- $result = \SelectelApi::getTokenAndUrl();
- $token = $result[0];
- $storageUrl = $result[1];
+ $result = \SelectelApi::getTokenAndUrl();
+ $token = $result[0];
+ $storageUrl = $result[1];
- if (in_array($section, ['photo', 'photoDom', 'img_plan', 'tasks', 'clients', 'funnels'])) {
+ if (in_array($section, ['photo', 'photoDom', 'img_plan', 'tasks', 'clients', 'funnels'])) {
- if ($section == 'tasks' || in_array($section, ['photo', 'photoDom', 'img_plan'])) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
- }
+ if ($section == 'tasks' || in_array($section, ['photo', 'photoDom', 'img_plan'])) {
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+ }
- $path_parts = pathinfo($filename);
- $basename = $path_parts['basename'];
- $extension = $path_parts['extension'];
+ $path_parts = pathinfo($filename);
+ $basename = $path_parts['basename'];
+ $extension = $path_parts['extension'];
- $guid = md5($basename);
+ $guid = md5($basename);
- $temp_dir = null;
- if ($section == 'clients' && $client_id) {
- $temp_dir = "/upload/clients/" . trim($client_id);
- } else if ($section == 'funnels' && $funnel_id) {
- $temp_dir = "/upload/funnels/" . trim($funnel_id);
- } else if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
- $temp_dir = "/photos/";
- } else if ($section == 'tasks' && ($object_id || $client_id || $requisition_id)) {
+ $temp_dir = null;
+ if ($section == 'clients' && $client_id) {
+ $temp_dir = "/upload/clients/" . trim($client_id);
+ } else if ($section == 'funnels' && $funnel_id) {
+ $temp_dir = "/upload/funnels/" . trim($funnel_id);
+ } else if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
+ $temp_dir = "/photos/";
+ } else if ($section == 'tasks' && ($object_id || $client_id || $requisition_id)) {
- if ($client_id > 0) {
- $temp_dir = "/upload/clients/" . $client_id;
- } else if ($requisition_id > 0) {
- $temp_dir = "/upload/reqs/" . $requisition_id;
- } else if ($object_id > 0) {
- $temp_dir = "/upload/objects/" . $object_id;
- }
- }
+ if ($client_id > 0) {
+ $temp_dir = "/upload/clients/" . $client_id;
+ } else if ($requisition_id > 0) {
+ $temp_dir = "/upload/reqs/" . $requisition_id;
+ } else if ($object_id > 0) {
+ $temp_dir = "/upload/objects/" . $object_id;
+ }
+ }
- if ($section == 'clients' && $client_id) {
- $temp_path = $_SERVER['DOCUMENT_ROOT'] . $temp_dir . "/" . $guid . '.' . $extension;
- } else if ($section == 'tasks') {
+ if ($section == 'clients' && $client_id) {
+ $temp_path = $_SERVER['DOCUMENT_ROOT'] . $temp_dir . "/" . $guid . '.' . $extension;
+ } else if ($section == 'tasks') {
- if ($client_id > 0) {
- $sql = "WHERE `event_id` = '{$event_id}' AND `client_id` = '{$client_id}' AND `name` = '{$filename}' LIMIT 1";
- } else if ($requisition_id > 0) {
- $sql = "WHERE `event_id` = '{$event_id}' AND `req_id` = '{$requisition_id}' AND `name` = '{$filename}' LIMIT 1";
- } else if ($object_id > 0) {
- $sql = "WHERE `event_id` = '{$event_id}' AND `object_id` = '{$object_id}' AND `name` = '{$filename}' LIMIT 1";
- }
+ if ($client_id > 0) {
+ $sql = "WHERE `event_id` = '{$event_id}' AND `client_id` = '{$client_id}' AND `name` = '{$filename}' LIMIT 1";
+ } else if ($requisition_id > 0) {
+ $sql = "WHERE `event_id` = '{$event_id}' AND `req_id` = '{$requisition_id}' AND `name` = '{$filename}' LIMIT 1";
+ } else if ($object_id > 0) {
+ $sql = "WHERE `event_id` = '{$event_id}' AND `object_id` = '{$object_id}' AND `name` = '{$filename}' LIMIT 1";
+ }
- if (!empty($sql)) {
- if ($query = mysql_query("SELECT * FROM `clients_files` " . $sql)) {
- $row = mysql_fetch_assoc($query);
- if (isset($row['guid'])) {
- $guid = $row['guid'];
- $get['guid'] = $guid;
- $temp_path = $_SERVER['DOCUMENT_ROOT'] . $temp_dir . "/" . $guid.'.'.$extension;
- if (!mysql_query("DELETE FROM `clients_files` " . $sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
+ if (!empty($sql)) {
+ if ($query = mysql_query("SELECT * FROM `clients_files` " . $sql)) {
+ $row = mysql_fetch_assoc($query);
+ if (isset($row['guid'])) {
+ $guid = $row['guid'];
+ $get['guid'] = $guid;
+ $temp_path = $_SERVER['DOCUMENT_ROOT'] . $temp_dir . "/" . $guid.'.'.$extension;
+ if (!mysql_query("DELETE FROM `clients_files` " . $sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
- $one = mb_substr($basename, 0, 1);
- $two = mb_substr($basename, 1, 1);
- $three = mb_substr($basename, 3, 1);
- $path = "$one/$two/$three/$basename";
+ $one = mb_substr($basename, 0, 1);
+ $two = mb_substr($basename, 1, 1);
+ $three = mb_substr($basename, 3, 1);
+ $path = "$one/$two/$three/$basename";
- if ($is_temp) {
- $temp_path = $_SERVER['DOCUMENT_ROOT'] . $temp_dir . $path;
- } else {
- if (!is_null($object_id)) {
+ if ($is_temp) {
+ $temp_path = $_SERVER['DOCUMENT_ROOT'] . $temp_dir . $path;
+ } else {
+ if (!is_null($object_id)) {
- if (in_array($section, ['photo', 'photoDom'])) {
+ if (in_array($section, ['photo', 'photoDom'])) {
$sql = "SELECT `photos`.`id`,
`photos`.`object_photo_id`,
`photo`.`photo` AS `path`
@@ -7228,7 +7228,7 @@ class CommonController extends ApiController
$errors[] = mysql_error();
}
} else {
- //todo
+ //todo
$sql = "SELECT *
FROM `objects_plan` AS `plan` WHERE `plan`.`object_id` = '$object_id' AND `plan`.`img_plan` LIKE '%$filename%' LIMIT 1";
@@ -7244,35 +7244,35 @@ class CommonController extends ApiController
$errors[] = mysql_error();
}
}
- } else {
- $error = true;
- $errors[] = 'Object ID is required for not temporary photos.';
- }
- }
- } else {
- $temp_path = $_SERVER['DOCUMENT_ROOT'] . $temp_dir . "/" . $basename;
- }
+ } else {
+ $error = true;
+ $errors[] = 'Object ID is required for not temporary photos.';
+ }
+ }
+ } else {
+ $temp_path = $_SERVER['DOCUMENT_ROOT'] . $temp_dir . "/" . $basename;
+ }
- if (!$is_temp && !empty($temp_path) && in_array($section, ['photo', 'photoDom', 'img_plan'])) {
+ if (!$is_temp && !empty($temp_path) && in_array($section, ['photo', 'photoDom', 'img_plan'])) {
- $nfp = str_replace("https://data.joywork.ru/", "", $temp_path);
- $nfp = str_replace("http://c01.joywork.ru/photos/", "", $nfp);
- $nfp = str_replace("https://joywork.ru/photos/", "", $nfp);
- $nfp = str_replace("/photos/", "", $nfp);
- \SelectelApi::deleteFile($storageUrl, $token, $nfp);
+ $nfp = str_replace("https://data.joywork.ru/", "", $temp_path);
+ $nfp = str_replace("http://c01.joywork.ru/photos/", "", $nfp);
+ $nfp = str_replace("https://joywork.ru/photos/", "", $nfp);
+ $nfp = str_replace("/photos/", "", $nfp);
+ \SelectelApi::deleteFile($storageUrl, $token, $nfp);
- if ($object_photo_id && in_array($section, ['photo', 'photoDom'])) {
+ if ($object_photo_id && in_array($section, ['photo', 'photoDom'])) {
- if (!mysql_query("DELETE FROM object_photo WHERE id = '$object_photo_id'")) {
- $error = true;
- $errors[] = mysql_error();
- }
+ if (!mysql_query("DELETE FROM object_photo WHERE id = '$object_photo_id'")) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if (!mysql_query("DELETE FROM objects_object_photo WHERE object_id = '$object_id' AND object_photo_id = '$object_photo_id'")) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
+ if (!mysql_query("DELETE FROM objects_object_photo WHERE object_id = '$object_id' AND object_photo_id = '$object_photo_id'")) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
if ($section == 'img_plan') {
if (!mysql_query("DELETE FROM objects_plan WHERE object_id = '$object_id'")) {
$error = true;
@@ -7280,230 +7280,230 @@ class CommonController extends ApiController
}
}
}
- } else if ($is_temp && !empty($temp_path) && in_array($section, ['photo', 'photoDom', 'img_plan'])) {
- if (file_exists($temp_path)) { // Удаляем загруженное и сохраненное фото
- if (!unlink($temp_path)) {
- $error = true;
- $errors[] = "Delete file error.";
- } else {
- $nfp = str_replace("https://data.joywork.ru/", "", $temp_path);
- $nfp = str_replace("http://c01.joywork.ru/photos/", "", $nfp);
- $nfp = str_replace("https://joywork.ru/photos/", "", $nfp);
- $nfp = str_replace("/photos/", "", $nfp);
- \SelectelApi::deleteFile($storageUrl, $token, $nfp);
- }
- } else { // Значит удаляем только что загруженное фото
- $temp_path = $_SERVER['DOCUMENT_ROOT'] . '/photos/obj_temp/' . $user_id . '/' . $basename;
- if (file_exists($temp_path)) {
- if (!unlink($temp_path)) {
- $error = true;
- $errors[] = "Delete file error.";
- }
- }
- }
- } else if (file_exists($temp_path)) {
- if (!unlink($temp_path)) {
- $error = true;
- $errors[] = "Delete file error.";
- } else if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
- $nfp = str_replace("https://data.joywork.ru/", "", $temp_path);
- \SelectelApi::deleteFile($storageUrl, $token, $nfp);
- }
- } else {
- $error = true;
- $errors[] = "File not exists.";
- }
- }
+ } else if ($is_temp && !empty($temp_path) && in_array($section, ['photo', 'photoDom', 'img_plan'])) {
+ if (file_exists($temp_path)) { // Удаляем загруженное и сохраненное фото
+ if (!unlink($temp_path)) {
+ $error = true;
+ $errors[] = "Delete file error.";
+ } else {
+ $nfp = str_replace("https://data.joywork.ru/", "", $temp_path);
+ $nfp = str_replace("http://c01.joywork.ru/photos/", "", $nfp);
+ $nfp = str_replace("https://joywork.ru/photos/", "", $nfp);
+ $nfp = str_replace("/photos/", "", $nfp);
+ \SelectelApi::deleteFile($storageUrl, $token, $nfp);
+ }
+ } else { // Значит удаляем только что загруженное фото
+ $temp_path = $_SERVER['DOCUMENT_ROOT'] . '/photos/obj_temp/' . $user_id . '/' . $basename;
+ if (file_exists($temp_path)) {
+ if (!unlink($temp_path)) {
+ $error = true;
+ $errors[] = "Delete file error.";
+ }
+ }
+ }
+ } else if (file_exists($temp_path)) {
+ if (!unlink($temp_path)) {
+ $error = true;
+ $errors[] = "Delete file error.";
+ } else if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
+ $nfp = str_replace("https://data.joywork.ru/", "", $temp_path);
+ \SelectelApi::deleteFile($storageUrl, $token, $nfp);
+ }
+ } else {
+ $error = true;
+ $errors[] = "File not exists.";
+ }
+ }
- if (!$error) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => $user_id,
- 'section' => $section,
- 'object_id' => $object_id,
- 'object_photo_id' => $object_photo_id,
- 'get' => $get,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if (!$error) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => $user_id,
+ 'section' => $section,
+ 'object_id' => $object_id,
+ 'object_photo_id' => $object_photo_id,
+ 'get' => $get,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors,
- 'temp_path' => $temp_path,
- 'object_photo_id' => $object_photo_id,
- 'get' => $get,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors,
+ 'temp_path' => $temp_path,
+ 'object_photo_id' => $object_photo_id,
+ 'get' => $get,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- public function uploadFile($app, $get = null, $post = null, $files = null) {
+ public function uploadFile($app, $get = null, $post = null, $files = null) {
$mdb = $app->container->get('mysql');
- $error = false;
- $errors = [];
+ $error = false;
+ $errors = [];
- //$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === 0 ? 'https://' : 'http://';
- $protocol = (self::is_ssl()) ? 'https://' : 'http://';
- $host = $protocol . $_SERVER['SERVER_NAME'];
+ //$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === 0 ? 'https://' : 'http://';
+ $protocol = (self::is_ssl()) ? 'https://' : 'http://';
+ $host = $protocol . $_SERVER['SERVER_NAME'];
- $section = null;
- if (isset($post['section']))
- $section = $post['section'];
+ $section = null;
+ if (isset($post['section']))
+ $section = $post['section'];
- $object_id = null;
- if (isset($post['object_id']))
- $object_id = intval($post['object_id']);
+ $object_id = null;
+ if (isset($post['object_id']))
+ $object_id = intval($post['object_id']);
- // Найденный листинг парсера — read-only: привязка файлов/фото к нему запрещена.
- // Признак листинга — явный флаг is_external из запроса (offset-free: id коллизит с objects.id).
- // clients_files.object_id остаётся обычным INT — листинговый id сюда не попадает (привязка запрещена ниже).
- if ($object_id && self::_request_flag($post, 'is_external')) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$_SESSION['id'],
- 'errors' => ['Прикрепление файлов к найденному листингу недоступно'],
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ // Найденный листинг парсера — read-only: привязка файлов/фото к нему запрещена.
+ // Признак листинга — явный флаг is_external из запроса (offset-free: id коллизит с objects.id).
+ // clients_files.object_id остаётся обычным INT — листинговый id сюда не попадает (привязка запрещена ниже).
+ if ($object_id && self::_request_flag($post, 'is_external')) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$_SESSION['id'],
+ 'errors' => ['Прикрепление файлов к найденному листингу недоступно'],
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- $client_id = null;
- if (isset($post['client_id']))
- $client_id = intval($post['client_id']);
+ $client_id = null;
+ if (isset($post['client_id']))
+ $client_id = intval($post['client_id']);
- $requisition_id = null;
- if (isset($post['requisition_id']))
- $requisition_id = intval($post['requisition_id']);
+ $requisition_id = null;
+ if (isset($post['requisition_id']))
+ $requisition_id = intval($post['requisition_id']);
- $funnel_id = null;
- if (isset($post['funnel_id']))
- $funnel_id = intval($post['funnel_id']);
+ $funnel_id = null;
+ if (isset($post['funnel_id']))
+ $funnel_id = intval($post['funnel_id']);
- $event_id = null;
- if (isset($post['event_id']))
- $event_id = intval($post['event_id']);
+ $event_id = null;
+ if (isset($post['event_id']))
+ $event_id = intval($post['event_id']);
- $stage_id = null;
- if (isset($post['stage_id']))
- $stage_id = intval($post['stage_id']);
+ $stage_id = null;
+ if (isset($post['stage_id']))
+ $stage_id = intval($post['stage_id']);
- if (($user_id = $_SESSION['id']) && count($files) > 0 && $section) {
+ if (($user_id = $_SESSION['id']) && count($files) > 0 && $section) {
- if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
- $result = \SelectelApi::getTokenAndUrl();
- $token = $result[0];
- $storageUrl = $result[1];
- }
+ if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
+ $result = \SelectelApi::getTokenAndUrl();
+ $token = $result[0];
+ $storageUrl = $result[1];
+ }
- if (in_array($section, ['tasks', 'funnels'])) {
+ if (in_array($section, ['tasks', 'funnels'])) {
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
- }
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+ }
- $list = [];
- if (in_array($section, ['photo', 'photoDom', 'img_plan', 'clients', 'requisitions', 'tasks', 'funnels'])) {
+ $list = [];
+ if (in_array($section, ['photo', 'photoDom', 'img_plan', 'clients', 'requisitions', 'tasks', 'funnels'])) {
- $temp_dir = null;
- if ($section == 'clients' && $client_id) {
- $temp_dir = "/upload/funnels/clients/" . $client_id;
- } else if ($section == 'funnels' && $funnel_id) {
+ $temp_dir = null;
+ if ($section == 'clients' && $client_id) {
+ $temp_dir = "/upload/funnels/clients/" . $client_id;
+ } else if ($section == 'funnels' && $funnel_id) {
- if ($client_id || $requisition_id) {
+ if ($client_id || $requisition_id) {
- if ($client_id > 0)
- $temp_dir = "/upload/funnels/" . $client_id;
+ if ($client_id > 0)
+ $temp_dir = "/upload/funnels/" . $client_id;
- if ($requisition_id > 0)
- $temp_dir = "/upload/funnels/" . $requisition_id;
+ if ($requisition_id > 0)
+ $temp_dir = "/upload/funnels/" . $requisition_id;
- } else {
+ } else {
- $temp_dir = "/upload/funnels/" . $funnel_id;
+ $temp_dir = "/upload/funnels/" . $funnel_id;
- }
- } else if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
+ }
+ } else if (in_array($section, ['photo', 'photoDom', 'img_plan'])) {
- $temp_dir = "/photos/obj_temp/" . $user_id;
+ $temp_dir = "/photos/obj_temp/" . $user_id;
- } else if ($section == 'tasks' && ($object_id || $client_id || $requisition_id)) {
+ } else if ($section == 'tasks' && ($object_id || $client_id || $requisition_id)) {
- if ($object_id > 0)
- $temp_dir = "/upload/objects/" . $object_id;
+ if ($object_id > 0)
+ $temp_dir = "/upload/objects/" . $object_id;
- if ($client_id > 0)
- $temp_dir = "/upload/clients/" . $client_id;
+ if ($client_id > 0)
+ $temp_dir = "/upload/clients/" . $client_id;
- if ($requisition_id > 0)
- $temp_dir = "/upload/reqs/" . $requisition_id;
- } else if ($section == 'requisitions' && $requisition_id) {
+ if ($requisition_id > 0)
+ $temp_dir = "/upload/reqs/" . $requisition_id;
+ } else if ($section == 'requisitions' && $requisition_id) {
- if ($requisition_id > 0)
- $temp_dir = "/upload/funnels/req/" . $requisition_id;
- }
+ if ($requisition_id > 0)
+ $temp_dir = "/upload/funnels/req/" . $requisition_id;
+ }
- $upload_max = self::returnBytes(ini_get('upload_max_filesize'));
- $post_max = self::returnBytes(ini_get('post_max_size'));
- $max_filesize = ($post_max < $upload_max) ? $post_max : $upload_max;
+ $upload_max = self::returnBytes(ini_get('upload_max_filesize'));
+ $post_max = self::returnBytes(ini_get('post_max_size'));
+ $max_filesize = ($post_max < $upload_max) ? $post_max : $upload_max;
- if ($temp_dir && isset($files[$section])) {
- for ($i = 0; $i < count($files[$section]['name']); $i++) {
- if ($files[$section]['name'][$i] && $files[$section]['tmp_name'][$i]) {
- $tmp_name = $files[$section]['tmp_name'][$i];
- $filename = $files[$section]['name'][$i];
- $mimetype = $files[$section]['type'][$i];
- $filesize = $files[$section]['size'][$i];
+ if ($temp_dir && isset($files[$section])) {
+ for ($i = 0; $i < count($files[$section]['name']); $i++) {
+ if ($files[$section]['name'][$i] && $files[$section]['tmp_name'][$i]) {
+ $tmp_name = $files[$section]['tmp_name'][$i];
+ $filename = $files[$section]['name'][$i];
+ $mimetype = $files[$section]['type'][$i];
+ $filesize = $files[$section]['size'][$i];
- if ($filesize > $max_filesize) {
- $error = true;
- $errors[] = 'Размер файла превышает допустимый размер для загрузки.';
- continue;
- }
+ if ($filesize > $max_filesize) {
+ $error = true;
+ $errors[] = 'Размер файла превышает допустимый размер для загрузки.';
+ continue;
+ }
- if ($files[$section]['error'][$i] == 0) {
+ if ($files[$section]['error'][$i] == 0) {
- if (!is_dir($_SERVER['DOCUMENT_ROOT'] . $temp_dir))
- mkdir($_SERVER['DOCUMENT_ROOT'] . $temp_dir);
+ if (!is_dir($_SERVER['DOCUMENT_ROOT'] . $temp_dir))
+ mkdir($_SERVER['DOCUMENT_ROOT'] . $temp_dir, 0777, true);
- if (!is_dir($_SERVER['DOCUMENT_ROOT'] . $temp_dir))
- mkdir($_SERVER['DOCUMENT_ROOT'] . $temp_dir);
+ if (!is_dir($_SERVER['DOCUMENT_ROOT'] . $temp_dir))
+ mkdir($_SERVER['DOCUMENT_ROOT'] . $temp_dir, 0777, true);
- $guid = md5($filename);
- $extension = pathinfo($filename, PATHINFO_EXTENSION);
+ $guid = md5($filename);
+ $extension = pathinfo($filename, PATHINFO_EXTENSION);
- if ($section == 'tasks') {
- if ($client_id > 0) {
- $guid = md5($_FILES['file']['name'].$_FILES['file']['size']."clients".$client_id.time());
- } else if ($requisition_id > 0) {
- $guid = md5($_FILES['file']['name'].$_FILES['file']['size']."clients".$requisition_id.time());
- } else if ($object_id > 0) {
- $guid = md5($_FILES['file']['name'].$_FILES['file']['size']."clients".$object_id.time());
- }
- }
+ if ($section == 'tasks') {
+ if ($client_id > 0) {
+ $guid = md5($_FILES['file']['name'].$_FILES['file']['size']."clients".$client_id.time());
+ } else if ($requisition_id > 0) {
+ $guid = md5($_FILES['file']['name'].$_FILES['file']['size']."clients".$requisition_id.time());
+ } else if ($object_id > 0) {
+ $guid = md5($_FILES['file']['name'].$_FILES['file']['size']."clients".$object_id.time());
+ }
+ }
- if (in_array($section, ['clients', 'funnels', 'tasks', 'requisitions', 'clients']) && ($object_id || $client_id || $requisition_id))
- $path = $temp_dir . "/" . $guid.'.'.$extension;
- else
- $path = $temp_dir . "/" . $filename;
+ if (in_array($section, ['clients', 'funnels', 'tasks', 'requisitions', 'clients']) && ($object_id || $client_id || $requisition_id))
+ $path = $temp_dir . "/" . $guid.'.'.$extension;
+ else
+ $path = $temp_dir . "/" . $filename;
- if (!(false === move_uploaded_file($tmp_name, $_SERVER['DOCUMENT_ROOT'] . $path))) {
+ if (!(false === move_uploaded_file($tmp_name, $_SERVER['DOCUMENT_ROOT'] . $path))) {
- if ($guid && $section == 'tasks' && $event_id) {
+ if ($guid && $section == 'tasks' && $event_id) {
- if ($client_id > 0) {
- $sql = "INSERT INTO clients_files (guid, client_id, type, name, event_id)
+ if ($client_id > 0) {
+ $sql = "INSERT INTO clients_files (guid, client_id, type, name, event_id)
VALUES ('{$guid}', '{$client_id}', '{$extension}', '{$filename}', '{$event_id}')";
//отпрвляем файл в Селектел
- $token = \SelectelApi::getNewToken();
+ // токен Selectel в запросе не нужен: заливку делает фоновый крон offloadFilesToSelectel.php
$contType = "application/octet-stream";
@@ -7547,13 +7547,13 @@ class CommonController extends ApiController
$new_path = "/upload/clients/". $client_id . "/" . $guid . '.' . $extension;
- \SelectelApi::uploadUserFile($token, $_SERVER['DOCUMENT_ROOT'] . $path, $new_path, $contType);
- } else if ($requisition_id > 0) {
- $sql = "INSERT INTO clients_files (guid, req_id, type, name, event_id)
+ // синхронная заливка в Selectel убрана; файл подхватит фоновый крон (reconcile → offloadFilesToSelectel)
+ } else if ($requisition_id > 0) {
+ $sql = "INSERT INTO clients_files (guid, req_id, type, name, event_id)
VALUES ('{$guid}', '{$requisition_id}', '{$extension}', '{$filename}', '{$event_id}')";
//отпрвляем файл в Селектел
- $token = \SelectelApi::getNewToken();
+ // токен Selectel в запросе не нужен: заливку делает фоновый крон offloadFilesToSelectel.php
$contType = "application/octet-stream";
@@ -7597,14 +7597,14 @@ class CommonController extends ApiController
$new_path = "/upload/reqs/". $requisition_id . "/" . $guid . '.' . $extension;
- \SelectelApi::uploadUserFile($token, $_SERVER['DOCUMENT_ROOT'] . $path, $new_path, $contType);
+ // синхронная заливка в Selectel убрана; файл подхватит фоновый крон (reconcile → offloadFilesToSelectel)
- } else if ($object_id > 0) {
- $sql = "INSERT INTO clients_files (guid, object_id, type, name, event_id)
+ } else if ($object_id > 0) {
+ $sql = "INSERT INTO clients_files (guid, object_id, type, name, event_id)
VALUES ('{$guid}', '{$object_id}', '{$extension}', '{$filename}', '{$event_id}')";
//отпарвляем файл в Селектел
- $token = \SelectelApi::getNewToken();
+ // токен Selectel в запросе не нужен: заливку делает фоновый крон offloadFilesToSelectel.php
$contType = "application/octet-stream";
@@ -7648,36 +7648,36 @@ class CommonController extends ApiController
$new_path = "/upload/objects/". $object_id . "/" . $guid . '.' . $extension;
- \SelectelApi::uploadUserFile($token, $_SERVER['DOCUMENT_ROOT'] . $path, $new_path, $contType);
- }
+ // синхронная заливка в Selectel убрана; файл подхватит фоновый крон (reconcile → offloadFilesToSelectel)
+ }
- if (!empty($sql)) {
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ if (!empty($sql)) {
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
- if ($guid && in_array($section, ['funnels', 'requisitions', 'clients']) && $funnel_id && $stage_id) {
+ if ($guid && in_array($section, ['funnels', 'requisitions', 'clients']) && $funnel_id && $stage_id) {
- $sql = "SELECT id
+ $sql = "SELECT id
FROM funnel_files
WHERE guid = '{$guid}' AND
funnel_id = '{$funnel_id}' AND
etap_id = '{$stage_id}'";
- if ($client_id > 0) {
- $sql .= " AND client_id = '{$client_id}'";
- } else if ($requisition_id > 0) {
- $sql .= " AND req_id = '{$requisition_id}'";
- }
+ if ($client_id > 0) {
+ $sql .= " AND client_id = '{$client_id}'";
+ } else if ($requisition_id > 0) {
+ $sql .= " AND req_id = '{$requisition_id}'";
+ }
- if ($query = mysql_query($sql)) {
+ if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query) == 0) {
+ if (mysql_num_rows($query) == 0) {
- $sql = "INSERT INTO funnel_files (
+ $sql = "INSERT INTO funnel_files (
guid,
funnel_id,
type,
@@ -7691,8 +7691,8 @@ class CommonController extends ApiController
'{$filename}'
)";
- if ($client_id > 0) {
- $sql = "INSERT INTO funnel_files (
+ if ($client_id > 0) {
+ $sql = "INSERT INTO funnel_files (
guid,
funnel_id,
type,
@@ -7709,7 +7709,7 @@ class CommonController extends ApiController
)";
//отпрвляем файл в Селектел
- $token = \SelectelApi::getNewToken();
+ // токен Selectel в запросе не нужен: заливку делает фоновый крон offloadFilesToSelectel.php
$contType = "application/octet-stream";
@@ -7753,10 +7753,10 @@ class CommonController extends ApiController
$new_path = "/upload/funnels/clients/". $client_id . "/" . $guid . '.' . $extension;
- \SelectelApi::uploadUserFile($token, $_SERVER['DOCUMENT_ROOT'] . $path, $new_path, $contType);
+ // синхронная заливка в Selectel убрана; файл подхватит фоновый крон (reconcile → offloadFilesToSelectel)
- } else if ($requisition_id > 0) {
- $sql = "INSERT INTO funnel_files (
+ } else if ($requisition_id > 0) {
+ $sql = "INSERT INTO funnel_files (
guid,
funnel_id,
type,
@@ -7773,7 +7773,7 @@ class CommonController extends ApiController
)";
//отпрвляем файл в Селектел
- $token = \SelectelApi::getNewToken();
+ // токен Selectel в запросе не нужен: заливку делает фоновый крон offloadFilesToSelectel.php
$contType = "application/octet-stream";
@@ -7817,10 +7817,10 @@ class CommonController extends ApiController
$new_path = "/upload/funnels/req/". $requisition_id . "/" . $guid . '.' . $extension;
- \SelectelApi::uploadUserFile($token, $_SERVER['DOCUMENT_ROOT'] . $path, $new_path, $contType);
- } else {
+ // синхронная заливка в Selectel убрана; файл подхватит фоновый крон (reconcile → offloadFilesToSelectel)
+ } else {
//отпрвляем файл в Селектел
- $token = \SelectelApi::getNewToken();
+ // токен Selectel в запросе не нужен: заливку делает фоновый крон offloadFilesToSelectel.php
$contType = "application/octet-stream";
@@ -7864,70 +7864,70 @@ class CommonController extends ApiController
$new_path = "/upload/funnels/". $funnel_id . "/" . $guid . '.' . $extension;
- \SelectelApi::uploadUserFile($token, $_SERVER['DOCUMENT_ROOT'] . $path, $new_path, $contType);
+ // синхронная заливка в Selectel убрана; файл подхватит фоновый крон (reconcile → offloadFilesToSelectel)
}
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- $list[] = [
- 'guid' => $guid,
- 'filename' => $filename,
- 'extension' => $extension,
- 'mimetype' => $mimetype,
- 'path' => $host . $path,
- 'is_temp' => true,
- 'is_editable' => true,
- ];
- } else {
- $error = true;
- $errors[] = $files[$section]["file"]["error"][$i];
- }
- } else {
- $errors[] = 'An error occurred while uploading the file `' . $filename . '`!';
- }
- } else {
- $errors[] = $files[$section]['error'];
- }
+ $list[] = [
+ 'guid' => $guid,
+ 'filename' => $filename,
+ 'extension' => $extension,
+ 'mimetype' => $mimetype,
+ 'path' => $host . $path,
+ 'is_temp' => true,
+ 'is_editable' => true,
+ ];
+ } else {
+ $error = true;
+ $errors[] = $files[$section]["file"]["error"][$i];
+ }
+ } else {
+ $errors[] = 'An error occurred while uploading the file `' . $filename . '`!';
+ }
+ } else {
+ $errors[] = $files[$section]['error'];
+ }
- }
- } else {
- $errors[] = 'Empty files.';
- }
- }
+ }
+ } else {
+ $errors[] = 'Empty files.';
+ }
+ }
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'section' => $section,
- 'files' => $list,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'section' => $section,
+ 'files' => $list,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
}
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
- /*public function editPhoto($app, $get = null, $post = null) {
+ /*public function editPhoto($app, $get = null, $post = null) {
$error = false;
$photo_path = false;
@@ -7957,99 +7957,99 @@ class CommonController extends ApiController
$app->stop();
}*/
- public function getTasks($app, $get = null, $post = null, $need_return = false) {
- $error = false;
- $errors = [];
- $tasks = [];
+ public function getTasks($app, $get = null, $post = null, $need_return = false) {
+ $error = false;
+ $errors = [];
+ $tasks = [];
- if ($user_id = $_SESSION['id']) {
+ if ($user_id = $_SESSION['id']) {
- $protocol = (self::is_ssl()) ? 'https://' : 'http://';
- $host = $protocol . $_SERVER['SERVER_NAME'];
+ $protocol = (self::is_ssl()) ? 'https://' : 'http://';
+ $host = $protocol . $_SERVER['SERVER_NAME'];
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $object_id = null;
- if (isset($get['object_id'])) {
- $section = 'objects';
- $object_id = intval($get['object_id']);
- }
+ $object_id = null;
+ if (isset($get['object_id'])) {
+ $section = 'objects';
+ $object_id = intval($get['object_id']);
+ }
- $client_id = null;
- if (isset($get['client_id'])) {
- $section = 'clients';
- $client_id = intval($get['client_id']);
- }
+ $client_id = null;
+ if (isset($get['client_id'])) {
+ $section = 'clients';
+ $client_id = intval($get['client_id']);
+ }
- $requisition_id = null;
- if (isset($get['requisition_id'])) {
- $section = 'requisitions';
- $requisition_id = intval($get['requisition_id']);
- }
- $user = new \User;
- $user->get($user_id);
- $gmtmsk =$user->gmtmsk;
+ $requisition_id = null;
+ if (isset($get['requisition_id'])) {
+ $section = 'requisitions';
+ $requisition_id = intval($get['requisition_id']);
+ }
+ $user = new \User;
+ $user->get($user_id);
+ $gmtmsk =$user->gmtmsk;
$time_zone = '';
if($gmtmsk >= 0){
$time_zone = '+'.$gmtmsk.' hour';
} else {
$time_zone = '-'.$gmtmsk.' hour';
}
- $user->checkPermissions($user_id, false);
- $agency_id = $user->agencyId;
+ $user->checkPermissions($user_id, false);
+ $agency_id = $user->agencyId;
- // Offset-free: признак листинга — явный флаг is_external из запроса (echo'ит mJW). object_id = реальный el.id.
- // Для каждой эмитируемой задачи листинга помечаем is_external_listing_event=true, чтобы CRUD (правка/удаление/
- // завершение/суб-коммент) маршрутизировался в листинговую таблицу без диапазонного признака id.
- $is_listing_tasks = self::_request_flag($get, 'is_external');
+ // Offset-free: признак листинга — явный флаг is_external из запроса (echo'ит mJW). object_id = реальный el.id.
+ // Для каждой эмитируемой задачи листинга помечаем is_external_listing_event=true, чтобы CRUD (правка/удаление/
+ // завершение/суб-коммент) маршрутизировался в листинговую таблицу без диапазонного признака id.
+ $is_listing_tasks = self::_request_flag($get, 'is_external');
- if ($object_id && $section == 'objects') {
+ if ($object_id && $section == 'objects') {
- $sql = '';
+ $sql = '';
- // Хелперы событий найденных листингов парсера (offset-free, ключ — реальный el.id).
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
+ // Хелперы событий найденных листингов парсера (offset-free, ключ — реальный el.id).
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
- if ($is_listing_tasks) {
+ if ($is_listing_tasks) {
- // Найденный листинг парсера: лента событий из external_listing_events (ключ — реальный el.id, без смещения).
- // Суб-комменты листинга — section_id = 4 (общий section_id = 1 коллидировал бы по event_id
- // с суб-комментами задач из user_object_events). У листинга нет cancel/sum/document_id — отдаём 0/NULL,
- // чтобы общий цикл обработки ниже не менялся.
- $listing_real_id = (int)$object_id;
+ // Найденный листинг парсера: лента событий из external_listing_events (ключ — реальный el.id, без смещения).
+ // Суб-комменты листинга — section_id = 4 (общий section_id = 1 коллидировал бы по event_id
+ // с суб-комментами задач из user_object_events). У листинга нет cancel/sum/document_id — отдаём 0/NULL,
+ // чтобы общий цикл обработки ниже не менялся.
+ $listing_real_id = (int)$object_id;
- if ($_SESSION['agency'] || $_SESSION['manager'] || $_SESSION['users_admin']) {
- $agent_ids = [$user_id];
- $searchUserId = $user_id;
- if ($_SESSION['users_admin']) {
- $user = new \User;
- $user->checkPermissions($user_id, false);
- $searchUserId = $user->agencyId;
- $agent_ids[] = $user->agencyId;
- }
- $agents = \User::getAllAgents($searchUserId);
- foreach ($agents as $agent) {
- if (!in_array($agent['id'], $agent_ids))
- $agent_ids[] = $agent['id'];
- }
- if ($_SESSION['agency'] || $_SESSION['users_admin']) {
- $agents = \User::getAllManagers($searchUserId);
- foreach ($agents as $agent) {
- if (!in_array($agent['id'], $agent_ids))
- $agent_ids[] = $agent['id'];
- }
- }
- // + удалённые сотрудники компании: их события на ЭТОМ листинге видны команде (история сохраняется,
- // авторство не меняем). Это лента ОДНОГО листинга для агентства, не фильтруемый список задач.
- $agent_ids = array_values(array_unique(array_merge($agent_ids, \external_listing_notes_scope_user_ids($user_id))));
- $listing_user_filter = "(e.user_id IN (" . implode(',', $agent_ids) . ") OR e.from_id IN (" . implode(',', $agent_ids) . "))";
- } else {
- $listing_user_filter = "(e.user_id = '$user_id' OR e.from_id = '$user_id')";
- }
+ if ($_SESSION['agency'] || $_SESSION['manager'] || $_SESSION['users_admin']) {
+ $agent_ids = [$user_id];
+ $searchUserId = $user_id;
+ if ($_SESSION['users_admin']) {
+ $user = new \User;
+ $user->checkPermissions($user_id, false);
+ $searchUserId = $user->agencyId;
+ $agent_ids[] = $user->agencyId;
+ }
+ $agents = \User::getAllAgents($searchUserId);
+ foreach ($agents as $agent) {
+ if (!in_array($agent['id'], $agent_ids))
+ $agent_ids[] = $agent['id'];
+ }
+ if ($_SESSION['agency'] || $_SESSION['users_admin']) {
+ $agents = \User::getAllManagers($searchUserId);
+ foreach ($agents as $agent) {
+ if (!in_array($agent['id'], $agent_ids))
+ $agent_ids[] = $agent['id'];
+ }
+ }
+ // + удалённые сотрудники компании: их события на ЭТОМ листинге видны команде (история сохраняется,
+ // авторство не меняем). Это лента ОДНОГО листинга для агентства, не фильтруемый список задач.
+ $agent_ids = array_values(array_unique(array_merge($agent_ids, \external_listing_notes_scope_user_ids($user_id))));
+ $listing_user_filter = "(e.user_id IN (" . implode(',', $agent_ids) . ") OR e.from_id IN (" . implode(',', $agent_ids) . "))";
+ } else {
+ $listing_user_filter = "(e.user_id = '$user_id' OR e.from_id = '$user_id')";
+ }
- // Offset-free: id события — реальный e.id (без смещения), различитель листинга = is_external_listing_event ниже.
- $sql = "SELECT e.id AS id,
+ // Offset-free: id события — реальный e.id (без смещения), различитель листинга = is_external_listing_event ниже.
+ $sql = "SELECT e.id AS id,
e.type,
e.user_id,
e.from_id,
@@ -8082,35 +8082,35 @@ class CommonController extends ApiController
GROUP BY e.id
ORDER BY e.create_date ASC";
- } else if ($_SESSION['agency'] || $_SESSION['manager'] || $_SESSION['users_admin']) {
+ } else if ($_SESSION['agency'] || $_SESSION['manager'] || $_SESSION['users_admin']) {
- $agent_ids = [$user_id];
- $searchUserId = $user_id;
+ $agent_ids = [$user_id];
+ $searchUserId = $user_id;
- if ($_SESSION['users_admin']) {
- $user = new \User;
- $user->checkPermissions($user_id, false);
- $searchUserId = $user->agencyId;
- $agent_ids[] = $user->agencyId;
- }
+ if ($_SESSION['users_admin']) {
+ $user = new \User;
+ $user->checkPermissions($user_id, false);
+ $searchUserId = $user->agencyId;
+ $agent_ids[] = $user->agencyId;
+ }
- $agents = \User::getAllAgents($searchUserId);
- foreach ($agents as $agent) {
- if (!in_array($agent['id'], $agent_ids)) {
- $agent_ids[] = $agent['id'];
- }
- }
+ $agents = \User::getAllAgents($searchUserId);
+ foreach ($agents as $agent) {
+ if (!in_array($agent['id'], $agent_ids)) {
+ $agent_ids[] = $agent['id'];
+ }
+ }
- if ($_SESSION['agency'] || $_SESSION['users_admin']) {
- $agents = \User::getAllManagers($searchUserId);
- foreach ($agents as $agent) {
- if (!in_array($agent['id'], $agent_ids)) {
- $agent_ids[] = $agent['id'];
- }
- }
- }
+ if ($_SESSION['agency'] || $_SESSION['users_admin']) {
+ $agents = \User::getAllManagers($searchUserId);
+ foreach ($agents as $agent) {
+ if (!in_array($agent['id'], $agent_ids)) {
+ $agent_ids[] = $agent['id'];
+ }
+ }
+ }
- $sql = "SELECT e.*,
+ $sql = "SELECT e.*,
if (
e.from_id <> 0,
(SELECT u.user_logo FROM users AS u WHERE u.id = e.from_id),
@@ -8141,8 +8141,8 @@ class CommonController extends ApiController
e.object_id = '$object_id'
GROUP BY e.id
ORDER BY e.create_date ASC";
- } else {
- $sql = "SELECT e.*,
+ } else {
+ $sql = "SELECT e.*,
IF(
e.from_id <> 0,
(SELECT u.user_logo FROM users AS u WHERE u.id = e.from_id),
@@ -8173,109 +8173,109 @@ class CommonController extends ApiController
e.object_id = '$object_id'
GROUP BY e.id
ORDER BY e.create_date ASC";
- }
+ }
- if (!empty($sql)) {
- $createDate = null;
- if ($query = mysql_query($sql)) {
- while ($event = mysql_fetch_assoc($query)) {
+ if (!empty($sql)) {
+ $createDate = null;
+ if ($query = mysql_query($sql)) {
+ while ($event = mysql_fetch_assoc($query)) {
- if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) {
+ if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) {
- $createDate = date("d.m.Y", strtotime($event['create_date']));
- if ($createDate == date("d.m.Y")) {
- $event['chat_date'] = 'Сегодня';
- } else if ($createDate == date("d.m.Y", strtotime("-1 DAY"))) {
- $event['chat_date'] = 'Вчера';
- } else {
+ $createDate = date("d.m.Y", strtotime($event['create_date']));
+ if ($createDate == date("d.m.Y")) {
+ $event['chat_date'] = 'Сегодня';
+ } else if ($createDate == date("d.m.Y", strtotime("-1 DAY"))) {
+ $event['chat_date'] = 'Вчера';
+ } else {
- list($d, $m, $y) = explode(".", $createDate);
- if ($y == date("Y"))
- $y = "";
+ list($d, $m, $y) = explode(".", $createDate);
+ if ($y == date("Y"))
+ $y = "";
- $event['chat_date'] = trim($d . " " . getRusMonth($m) . " " . $y);
- }
- }
+ $event['chat_date'] = trim($d . " " . getRusMonth($m) . " " . $y);
+ }
+ }
- $from_id = $event['user_id'];
- $event['chat_position'] = "right";
+ $from_id = $event['user_id'];
+ $event['chat_position'] = "right";
- if (!empty($event['from_id']))
- $from_id = $event['from_id'];
+ if (!empty($event['from_id']))
+ $from_id = $event['from_id'];
- if ($_SESSION['id'] == $from_id)
- $event['chat_position'] = "left";
+ if ($_SESSION['id'] == $from_id)
+ $event['chat_position'] = "left";
- $sql_user = "SELECT user_logo, CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id = {$from_id}
+ $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));
+ $from_user = mysql_fetch_assoc(mysql_query($sql_user));
- $event['user_logo'] = $from_user['user_logo'];
- $event['user_fio'] = $from_user['user_fio'];
+ $event['user_logo'] = $from_user['user_logo'];
+ $event['user_fio'] = $from_user['user_fio'];
- $sql_who_work = "SELECT user_logo, CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id = {$event['user_id']}
+ $sql_who_work = "SELECT user_logo, CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id = {$event['user_id']}
UNION SELECT user_logo, CONCAT(last_name, ' ', first_name, ' ', middle_name, ' (удален)') as user_fio FROM users_delete WHERE user_id = {$event['user_id']}";
- $from_who_work = mysql_fetch_assoc(mysql_query($sql_who_work));
+ $from_who_work = mysql_fetch_assoc(mysql_query($sql_who_work));
-
- $event['who_work'] = $from_who_work['user_fio'];
- $data = [];
- $data['moved_on_copy'] = !empty($event['moved_on_copy']) ? 1 : 0; //перенесено в объект при копировании из Поиска (бейдж)
- //$data['_raw'] = $event;
- $event_type = isset($event['type']) ? $event['type'] : null;
- switch ($event['type']) {
- case 'even':
- case 'event':
- $data['title'] = trim($event['name']);
+ $event['who_work'] = $from_who_work['user_fio'];
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ $data = [];
+ $data['moved_on_copy'] = !empty($event['moved_on_copy']) ? 1 : 0; //перенесено в объект при копировании из Поиска (бейдж)
+ //$data['_raw'] = $event;
+ $event_type = isset($event['type']) ? $event['type'] : null;
+ switch ($event['type']) {
+ case 'even':
+ case 'event':
+ $data['title'] = trim($event['name']);
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
- $data['comment'] = trim($event['comment']);
- break;
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- case 'comment':
- $data['time'] = date("H:i", strtotime($time_zone,strtotime($event['create_date'])));
- $data['comment'] = trim($event['comment']);
- break;
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['comment'] = trim($event['comment']);
+ break;
- case 'file':
- $data['title'] = trim($event['name']);
+ case 'comment':
+ $data['time'] = date("H:i", strtotime($time_zone,strtotime($event['create_date'])));
+ $data['comment'] = trim($event['comment']);
+ break;
- $file_list = [];
- $docs_q = mysql_query("SELECT * FROM clients_files WHERE event_id = '".$event['id']."'");
- $name_files = '';
+ case 'file':
+ $data['title'] = trim($event['name']);
- 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'];
- }
- }
+ $file_list = [];
+ $docs_q = mysql_query("SELECT * FROM clients_files WHERE event_id = '".$event['id']."'");
+ $name_files = '';
- $temp_dir = null;
+ 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'];
+ }
+ }
- if ($file['object_id'] > 0)
- $temp_dir = "https://uf.joywork.ru/upload/objects/" . $file['object_id'];
+ $temp_dir = null;
- if ($file['client_id'] > 0)
- $temp_dir = "https://uf.joywork.ru/upload/clients/" . $file['client_id'];
+ if ($file['object_id'] > 0)
+ $temp_dir = "https://uf.joywork.ru/upload/objects/" . $file['object_id'];
- if ($file['requisition_id'] > 0)
- $temp_dir = "https://uf.joywork.ru/upload/reqs/" . $file['requisition_id'];
+ if ($file['client_id'] > 0)
+ $temp_dir = "https://uf.joywork.ru/upload/clients/" . $file['client_id'];
- if (!is_null($temp_dir)) {
+ if ($file['requisition_id'] > 0)
+ $temp_dir = "https://uf.joywork.ru/upload/reqs/" . $file['requisition_id'];
- $data['_temp_dir'] = $temp_dir;
- $data['_file'] = $file;
+ if (!is_null($temp_dir)) {
+
+ $data['_temp_dir'] = $temp_dir;
+ $data['_file'] = $file;
if ($file['requisition_id'] > 0 || $file['object_id'] > 0 || $file['client_id'] > 0) {
$file_list[] = [
@@ -8301,61 +8301,61 @@ class CommonController extends ApiController
}
}
}
- }
- }
+ }
+ }
- $data['file_list'] = $file_list;
- $data['comment'] = trim($event['comment']);
- break;
+ $data['file_list'] = $file_list;
+ $data['comment'] = trim($event['comment']);
+ break;
- case 'call':
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ case 'call':
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
- case 'meet':
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ case 'meet':
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['address'] = trim($event['address']);
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['address'] = trim($event['address']);
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
- case 'show': // Показ
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ case 'show': // Показ
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['address'] = trim($event['address']);
+ $data['address'] = trim($event['address']);
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
- case 'deal': // Сделка
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ case 'deal': // Сделка
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['summ'] = floatval($event['sum']);
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['summ'] = floatval($event['sum']);
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
$deal_id_val = !empty($event['deal_id']) ? intval($event['deal_id']) : null;
$data['deal'] = null;
@@ -8436,205 +8436,208 @@ class CommonController extends ApiController
}
}
- $data['document'] = null;
+ $data['document'] = null;
if (!$deal_id_val && isset($event['document_id'])) {
- $doc_id = $event['document_id'];
- if ($doc = \Docs::getInnerDoc(null, $doc_id)) {
+ $doc_id = $event['document_id'];
+ if ($doc = \Docs::getInnerDoc(null, $doc_id)) {
- $data['document']['id'] = intval($doc['id']);
- $data['document']['name'] = trim($doc['name']);
- $data['document']['url'] = $host . '/ajax/getInnerDoc.php?id=' . intval($doc['id']) . '&download_pdf=true&t=' . time();
+ $data['document']['id'] = intval($doc['id']);
+ $data['document']['name'] = trim($doc['name']);
+ $data['document']['url'] = $host . '/ajax/getInnerDoc.php?id=' . intval($doc['id']) . '&download_pdf=true&t=' . time();
- if (isset($doc['params'])) {
- if ($params = json_decode($doc['params'], true)) {
- if ($params['client_id'] && $params['object_id']) {
+ if (isset($doc['params'])) {
+ if ($params = json_decode($doc['params'], true)) {
+ if ($params['client_id'] && $params['object_id']) {
- $doc_parties = [];
- if (isset($params['client_id'])) {
- $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)) {
+ $doc_parties = [];
+ if (isset($params['client_id'])) {
+ $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)) {
- $cl_contacts = [];
- if ($doc_cl['email'])
- $cl_contacts[] = mask_email_value_if_needed($doc_cl['email']);
+ // Маскируем email/phone клиента, если у текущего пользователя
+ // включено `hide_client_contacts`. Helper сам проверяет право.
+ $cl_contacts = [];
+ if ($doc_cl['email'])
+ $cl_contacts[] = mask_email_value_if_needed($doc_cl['email']);
- if ($doc_cl['phone'])
- $cl_contacts[] = mask_phone_value_if_needed($doc_cl['phone']);
+ if ($doc_cl['phone'])
+ $cl_contacts[] = mask_phone_value_if_needed($doc_cl['phone']);
- $doc_party = [
- 'client_id' => $doc_cl['id'],
- 'object_id' => $params['object_id'],
- 'title' => $doc_cl['fio'],
- 'contacts' => ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : ''),
- ];
- $doc_party['title'] = mask_fio_if_contains_phone($doc_party['title']);
- $doc_parties[] = $doc_party;
- }
- }
+ $doc_party = [
+ 'client_id' => $doc_cl['id'],
+ 'object_id' => $params['object_id'],
+ 'title' => $doc_cl['fio'],
+ 'contacts' => ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : ''),
+ ];
+ // Маскируем title (fio), если он вида "Новый клиент +7...".
+ $doc_party['title'] = mask_fio_if_contains_phone($doc_party['title']);
+ $doc_parties[] = $doc_party;
+ }
+ }
- 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[] = [
- 'object_id' => $doc_obj['id'],
- 'client_id' => $params['client_id'],
- 'title' => $doc_obj['nazv'],
- 'address' => $doc_obj['adres'],
- ];
- }
- }
+ 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[] = [
+ 'object_id' => $doc_obj['id'],
+ 'client_id' => $params['client_id'],
+ 'title' => $doc_obj['nazv'],
+ 'address' => $doc_obj['adres'],
+ ];
+ }
+ }
- $data['document']['parties'] = $doc_parties;
- }
- }
- }
- }
- }
+ $data['document']['parties'] = $doc_parties;
+ }
+ }
+ }
+ }
+ }
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
- case 'moderation':
- $event_type = 'pending_moderation';
+ case 'moderation':
+ $event_type = 'pending_moderation';
- $who_user = null;
- $sql_who = "SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as who_fio FROM users WHERE id = {$event['user_id']}";
- $who_user = mysql_fetch_assoc(mysql_query($sql_who));
+ $who_user = null;
+ $sql_who = "SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as who_fio FROM users WHERE id = {$event['user_id']}";
+ $who_user = mysql_fetch_assoc(mysql_query($sql_who));
- if ($who_user)
- $data['employee_name'] = $who_user['who_fio'];
- else
- $data['employee_name'] = null;
+ if ($who_user)
+ $data['employee_name'] = $who_user['who_fio'];
+ else
+ $data['employee_name'] = null;
- $data['schedule_date'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' .date("H:i", strtotime($event['schedule_date']));
+ $data['schedule_date'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' .date("H:i", strtotime($event['schedule_date']));
- $data['services_list'] = [];
- if (!empty($event['platforms_advert'])) {
- $platforms = json_decode($event['platforms_advert']);
- foreach ($platforms as $platform) {
- switch ($platform->platform) {
- case 'add_to_yandex_feed':
- $data['services_list'][] = 'Бесплатные';
- break;
- case 'add_to_avito_feed':
- $data['services_list'][] = 'Авито';
- break;
- case 'add_to_cian_feed':
- $data['services_list'][] = 'Циан';
- break;
- case 'add_to_domclick_feed':
- $data['services_list'][] = 'ДомКлик';
- break;
- case 'add_to_emls_feed':
- $data['services_list'][] = 'Jcat';
- break;
- case 'add_to_bn_feed':
- $data['services_list'][] = 'Яндекс';
- break;
- }
- }
- } 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)) {
+ $data['services_list'] = [];
+ if (!empty($event['platforms_advert'])) {
+ $platforms = json_decode($event['platforms_advert']);
+ foreach ($platforms as $platform) {
+ switch ($platform->platform) {
+ case 'add_to_yandex_feed':
+ $data['services_list'][] = 'Бесплатные';
+ break;
+ case 'add_to_avito_feed':
+ $data['services_list'][] = 'Авито';
+ break;
+ case 'add_to_cian_feed':
+ $data['services_list'][] = 'Циан';
+ break;
+ case 'add_to_domclick_feed':
+ $data['services_list'][] = 'ДомКлик';
+ break;
+ case 'add_to_emls_feed':
+ $data['services_list'][] = 'Jcat';
+ break;
+ case 'add_to_bn_feed':
+ $data['services_list'][] = 'Яндекс';
+ break;
+ }
+ }
+ } 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)) {
- if ($r_moderation['add_to_yandex_feed'] > 0)
- $data['services_list'][] = 'Бесплатные';
+ if ($r_moderation['add_to_yandex_feed'] > 0)
+ $data['services_list'][] = 'Бесплатные';
- if ($r_moderation['add_to_avito_feed'] > 0)
- $data['services_list'][] = 'Авито';
+ if ($r_moderation['add_to_avito_feed'] > 0)
+ $data['services_list'][] = 'Авито';
- if ($r_moderation['add_to_cian_feed'] > 0)
- $data['services_list'][] = 'Циан';
+ if ($r_moderation['add_to_cian_feed'] > 0)
+ $data['services_list'][] = 'Циан';
- if ($r_moderation['add_to_domclick_feed'] > 0)
- $data['services_list'][] = 'ДомКлик';
+ if ($r_moderation['add_to_domclick_feed'] > 0)
+ $data['services_list'][] = 'ДомКлик';
- if ($r_moderation['add_to_emls_feed'] > 0)
- $data['services_list'][] = 'Jcat';
+ if ($r_moderation['add_to_emls_feed'] > 0)
+ $data['services_list'][] = 'Jcat';
- if ($r_moderation['add_to_bn_feed'] > 0)
- $data['services_list'][] = 'Яндекс';
+ if ($r_moderation['add_to_bn_feed'] > 0)
+ $data['services_list'][] = 'Яндекс';
- }
- }
+ }
+ }
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1); // @todo: уточнить необходимость, потому что используется в контексте Клиентов и Заявок
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1); // @todo: уточнить необходимость, потому что используется в контексте Клиентов и Заявок
- if (!empty($event['comment']))
- $data['comment'] = trim($event['comment']);
+ if (!empty($event['comment']))
+ $data['comment'] = trim($event['comment']);
- break;
+ break;
- case 'comment_moderation':
- $event_type = 'accepted_moderation';
- $data['accepted_date'] = date("d.m.Y H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ case 'comment_moderation':
+ $event_type = 'accepted_moderation';
+ $data['accepted_date'] = date("d.m.Y H:i", strtotime($time_zone, strtotime($event['create_date'])));
- if (!empty($event['comment']))
- $data['comment'] = trim($event['comment']);
+ if (!empty($event['comment']))
+ $data['comment'] = trim($event['comment']);
- break;
+ break;
- }
+ }
- if (isset($event['sub_id'])) {
+ if (isset($event['sub_id'])) {
- if (isset($event['sub_id']))
- $data['sub_comment']['id'] = intval($event['sub_id']);
+ if (isset($event['sub_id']))
+ $data['sub_comment']['id'] = intval($event['sub_id']);
- if (isset($event['sub_comment']))
- $data['sub_comment']['comment'] = trim($event['sub_comment']);
+ if (isset($event['sub_comment']))
+ $data['sub_comment']['comment'] = trim($event['sub_comment']);
- if (isset($event['sub_comment_author']))
- $data['sub_comment']['author'] = trim($event['sub_comment_author']);
+ if (isset($event['sub_comment_author']))
+ $data['sub_comment']['author'] = trim($event['sub_comment_author']);
- if (isset($event['sub_comment_author_id']))
- $data['sub_comment']['author_id'] = (int)$event['sub_comment_author_id'];
+ if (isset($event['sub_comment_author_id']))
+ $data['sub_comment']['author_id'] = (int)$event['sub_comment_author_id'];
- if (isset($event['sub_comment_user_for']))
- $data['sub_comment']['user_for'] = trim($event['sub_comment_user_for']);
+ if (isset($event['sub_comment_user_for']))
+ $data['sub_comment']['user_for'] = trim($event['sub_comment_user_for']);
- if (isset($event['sub_comment_user_for_id']))
- $data['sub_comment']['user_for_id'] = (int)$event['sub_comment_user_for_id'];
+ if (isset($event['sub_comment_user_for_id']))
+ $data['sub_comment']['user_for_id'] = (int)$event['sub_comment_user_for_id'];
- }
+ }
- $tasks[] = [
- 'id' => intval($event['id']),
- // Offset-free: id события — реальный e.id; различитель листинга — явный флаг (echo'ит mJW в CRUD).
- 'is_external_listing_event' => $is_listing_tasks,
- 'chat_date' => isset($event['chat_date']) ? $event['chat_date'] : null,
- 'chat_position' => isset($event['chat_position']) ? $event['chat_position'] : null,
- 'user_id' => intval($from_id),
- 'user_name' => isset($event['user_fio']) ? $event['user_fio'] : null,
- 'who_work' => isset($event['who_work']) ? $event['who_work'] : null,
+ $tasks[] = [
+ 'id' => intval($event['id']),
+ // Offset-free: id события — реальный e.id; различитель листинга — явный флаг (echo'ит mJW в CRUD).
+ 'is_external_listing_event' => $is_listing_tasks,
+ 'chat_date' => isset($event['chat_date']) ? $event['chat_date'] : null,
+ 'chat_position' => isset($event['chat_position']) ? $event['chat_position'] : null,
+ 'user_id' => intval($from_id),
+ 'user_name' => isset($event['user_fio']) ? $event['user_fio'] : null,
+ 'who_work' => isset($event['who_work']) ? $event['who_work'] : null,
- 'user_logo' => (!empty($event['user_logo'])) ? $host . '/photos/agency/' . $event['user_logo'] . '?=' . time() : null,
- 'type' => $event_type,
- 'event' => $data,
- 'created_at' => isset($event['create_date']) ? date('Y.m.d H:i:s', strtotime($time_zone, strtotime($event['create_date']))) : null,
- 'time' => isset($event['create_date']) ? date("H:i", strtotime($time_zone, strtotime($event['create_date']))) : null,
- ];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else if ($client_id || $requisition_id) {
+ 'user_logo' => (!empty($event['user_logo'])) ? $host . '/photos/agency/' . $event['user_logo'] . '?=' . time() : null,
+ 'type' => $event_type,
+ 'event' => $data,
+ 'created_at' => isset($event['create_date']) ? date('Y.m.d H:i:s', strtotime($time_zone, strtotime($event['create_date']))) : null,
+ 'time' => isset($event['create_date']) ? date("H:i", strtotime($time_zone, strtotime($event['create_date']))) : null,
+ ];
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else if ($client_id || $requisition_id) {
- $sql = '';
- if ($section == 'clients') {
+ $sql = '';
+ if ($section == 'clients') {
- $sql = "SELECT e.id,
+ $sql = "SELECT e.id,
e.comment,
e.name,
e.create_date,
@@ -8710,9 +8713,9 @@ class CommonController extends ApiController
FROM events_clients as ev
WHERE ev.client_id = '$client_id' and event = 'transmitted_parallel'
ORDER BY create_date ASC";
- } else if ($section == 'requisitions') {
+ } else if ($section == 'requisitions') {
- $sql = "SELECT e.id,
+ $sql = "SELECT e.id,
e.comment,
e.name,
e.create_date,
@@ -8789,75 +8792,75 @@ class CommonController extends ApiController
WHERE ev.req_id = '$requisition_id' and event = 'transmitted_parallel'
ORDER BY create_date ASC";
- }
+ }
- if (!empty($sql)) {
- $createDate = null;
- if ($query = mysql_query($sql)) {
- while ($event = mysql_fetch_assoc($query)) {
- $sql_who_work = "SELECT user_logo, id, CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id = {$event['user_id']}
+ if (!empty($sql)) {
+ $createDate = null;
+ if ($query = mysql_query($sql)) {
+ while ($event = mysql_fetch_assoc($query)) {
+ $sql_who_work = "SELECT user_logo, id, CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id = {$event['user_id']}
UNION SELECT user_logo, id, CONCAT(last_name, ' ', first_name, ' ', middle_name, ' (удален)') as user_fio FROM users_delete WHERE user_id = {$event['user_id']}";
- $from_who_work = mysql_fetch_assoc(mysql_query($sql_who_work));
+ $from_who_work = mysql_fetch_assoc(mysql_query($sql_who_work));
-
- $event['who_work'] = $from_who_work['id'];
- $event['who_work_fio'] = $from_who_work['user_fio'];
- if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) {
+ $event['who_work'] = $from_who_work['id'];
+ $event['who_work_fio'] = $from_who_work['user_fio'];
- $createDate = date("d.m.Y", strtotime($event['create_date']));
- if ($createDate == date("d.m.Y")) {
- $event['chat_date'] = 'Сегодня';
- } else if ($createDate == date("d.m.Y", strtotime("-1 DAY"))) {
- $event['chat_date'] = 'Вчера';
- } else {
+ if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) {
- list($d, $m, $y) = explode(".", $createDate);
- if ($y == date("Y"))
- $y = "";
+ $createDate = date("d.m.Y", strtotime($event['create_date']));
+ if ($createDate == date("d.m.Y")) {
+ $event['chat_date'] = 'Сегодня';
+ } else if ($createDate == date("d.m.Y", strtotime("-1 DAY"))) {
+ $event['chat_date'] = 'Вчера';
+ } else {
- $event['chat_date'] = trim($d . " " . getRusMonth($m) . " " . $y);
- }
- }
+ list($d, $m, $y) = explode(".", $createDate);
+ if ($y == date("Y"))
+ $y = "";
- $from_id = $event['user_id'];
- $event['chat_position'] = "right";
+ $event['chat_date'] = trim($d . " " . getRusMonth($m) . " " . $y);
+ }
+ }
- if (!empty($event['from_id']))
- $from_id = $event['from_id'];
+ $from_id = $event['user_id'];
+ $event['chat_position'] = "right";
- if ($_SESSION['id'] == $from_id)
- $event['chat_position'] = "left";
+ if (!empty($event['from_id']))
+ $from_id = $event['from_id'];
- $data = [
- 'id' => $event['id']
- ];
- switch ($event['type']) {
- case 'comment':
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
- $data['comment'] = trim($event['comment']);
- break;
+ if ($_SESSION['id'] == $from_id)
+ $event['chat_position'] = "left";
- case 'file':
- case 'partner_id':
- $data['title'] = trim($event['name']);
+ $data = [
+ 'id' => $event['id']
+ ];
+ switch ($event['type']) {
+ case 'comment':
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['comment'] = trim($event['comment']);
+ break;
- $file_list = [];
- $docs_q = mysql_query("SELECT * FROM clients_files WHERE event_id = '".$event['id']."'");
- $name_files = '';
+ case 'file':
+ case 'partner_id':
+ $data['title'] = trim($event['name']);
- 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'];
- }
- }
+ $file_list = [];
+ $docs_q = mysql_query("SELECT * FROM clients_files WHERE event_id = '".$event['id']."'");
+ $name_files = '';
- $name_doc = $_SERVER['DOCUMENT_ROOT'].'/upload/clients/'.$file['client_id'].'/'.$file['guid'].'.'.$file['type'];
- if ($file['req_id'] > 0) {
+ 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'];
+ }
+ }
+
+ $name_doc = $_SERVER['DOCUMENT_ROOT'].'/upload/clients/'.$file['client_id'].'/'.$file['guid'].'.'.$file['type'];
+ if ($file['req_id'] > 0) {
$file_path = 'https://uf.joywork.ru/upload/reqs/' . $file['req_id'] . '/' . $file['guid'] . '.' . $file['type'];
$file_list[] = [
'id' => intval($file['id']),
@@ -8893,172 +8896,172 @@ class CommonController extends ApiController
}
}
}
- }
+ }
- $data['file_list'] = $file_list;
- $data['comment'] = trim($event['comment']);
- break;
+ $data['file_list'] = $file_list;
+ $data['comment'] = trim($event['comment']);
+ break;
- case 'call':
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_to'] = date('Y-m-d H:i:s', strtotime($event['schedule_date_to']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ case 'call':
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_to'] = date('Y-m-d H:i:s', strtotime($event['schedule_date_to']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
- if (!empty($event['record'])) {
- if ($event['megafon'] == 1) {
+ if (!empty($event['record'])) {
+ if ($event['megafon'] == 1) {
- $oper = 'mega';
- $path = '/server/mega/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$event['record'])) {
- $href = 'https://voice.joywork.ru/mega/';
- $Headers = @get_headers($href.$event['record']);
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
+ $oper = 'mega';
+ $path = '/server/mega/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$event['record'])) {
+ $href = 'https://voice.joywork.ru/mega/';
+ $Headers = @get_headers($href.$event['record']);
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
- if (!empty($path)) {
- $data['records'][] = [
- 'operator' => $oper,
- 'source_path' => $path . $event['record']
- ];
- }
- } else {
+ if (!empty($path)) {
+ $data['records'][] = [
+ 'operator' => $oper,
+ 'source_path' => $path . $event['record']
+ ];
+ }
+ } else {
- $arr_rec = json_decode($event['record']);
- if (!empty($arr_rec)) {
- foreach ($arr_rec as $rec) {
- if (!empty($rec)) {
- $oper = null;
- $path = '';
- if ($event['telphin'] == 1) {
- $oper = 'telphin';
- $path = '/server/telphin/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/telphin/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- } else if ($event['beeline'] == 1) {
- $oper = 'beeline';
- $path = '/server/beeline/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/beeline/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- } else if ($event['mts'] == 1) {
- $oper = 'mts';
- $path = '/server/mts/'.$user->agencyId."/";
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/mts/'.$user->agencyId.'/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- } else if ($event['tele2'] == 1) {
- $oper = 'tele2';
- $date_patch = date('Ymd', strtotime($event['create_date']));
- $path = '/server/tele2/'.$user->agencyId.'/'.$date_patch.'/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/tele2/'.$user->agencyId.'/'.$date_patch.'/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- } else {
- $oper = 'mango';
- $path = '/server/mango/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/mango/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- }
+ $arr_rec = json_decode($event['record']);
+ if (!empty($arr_rec)) {
+ foreach ($arr_rec as $rec) {
+ if (!empty($rec)) {
+ $oper = null;
+ $path = '';
+ if ($event['telphin'] == 1) {
+ $oper = 'telphin';
+ $path = '/server/telphin/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/telphin/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ } else if ($event['beeline'] == 1) {
+ $oper = 'beeline';
+ $path = '/server/beeline/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/beeline/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ } else if ($event['mts'] == 1) {
+ $oper = 'mts';
+ $path = '/server/mts/'.$user->agencyId."/";
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/mts/'.$user->agencyId.'/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ } else if ($event['tele2'] == 1) {
+ $oper = 'tele2';
+ $date_patch = date('Ymd', strtotime($event['create_date']));
+ $path = '/server/tele2/'.$user->agencyId.'/'.$date_patch.'/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/tele2/'.$user->agencyId.'/'.$date_patch.'/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ } else {
+ $oper = 'mango';
+ $path = '/server/mango/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/mango/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ }
- if (!empty($path)) {
- $data['records'][] = [
- 'operator' => $oper,
- 'source_path' => $path . $rec . '.mp3'
- ];
- }
- }
- }
- }
- }
- } else {
- $data['records'] = null;
- }
+ if (!empty($path)) {
+ $data['records'][] = [
+ 'operator' => $oper,
+ 'source_path' => $path . $rec . '.mp3'
+ ];
+ }
+ }
+ }
+ }
+ }
+ } else {
+ $data['records'] = null;
+ }
- $data['is_tracking'] = ($event['tracking'] == 1);
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $pattern = '/(https?:\/\/\S+)/i';
- $comment = preg_replace($pattern, 'ссылка', $event['comment']);
- $data['comment'] = trim($comment);
- break;
- case 'meet':
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ $data['is_tracking'] = ($event['tracking'] == 1);
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $pattern = '/(https?:\/\/\S+)/i';
+ $comment = preg_replace($pattern, 'ссылка', $event['comment']);
+ $data['comment'] = trim($comment);
+ break;
+ case 'meet':
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['address'] = trim($event['address']);
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['address'] = trim($event['address']);
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $pattern = '/(https?:\/\/\S+)/i';
- $comment = preg_replace($pattern, 'ссылка', $event['comment']);
- $data['comment'] = trim($comment);
- break;
- case 'show': // Показ
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $pattern = '/(https?:\/\/\S+)/i';
+ $comment = preg_replace($pattern, 'ссылка', $event['comment']);
+ $data['comment'] = trim($comment);
+ break;
+ case 'show': // Показ
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['address'] = trim($event['address']);
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['address'] = trim($event['address']);
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $pattern = '/(https?:\/\/\S+)/i';
- $comment = preg_replace($pattern, 'ссылка', $event['comment']);
- $data['comment'] = trim($comment);
- break;
- case 'deal': // Сделка
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $pattern = '/(https?:\/\/\S+)/i';
+ $comment = preg_replace($pattern, 'ссылка', $event['comment']);
+ $data['comment'] = trim($comment);
+ break;
+ case 'deal': // Сделка
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['summ'] = floatval($event['sum']);
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['summ'] = floatval($event['sum']);
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
$deal_id_val = !empty($event['deal_id']) ? intval($event['deal_id']) : null;
$data['deal'] = null;
@@ -9139,254 +9142,257 @@ class CommonController extends ApiController
}
}
- $data['document'] = null;
+ $data['document'] = null;
if (!$deal_id_val && isset($event['document_id'])) {
- $doc_id = $event['document_id'];
- if ($doc = \Docs::getInnerDoc(null, $doc_id)) {
+ $doc_id = $event['document_id'];
+ if ($doc = \Docs::getInnerDoc(null, $doc_id)) {
- $data['document']['id'] = intval($doc['id']);
- $data['document']['name'] = trim($doc['name']);
- $data['document']['url'] = $host . '/ajax/getInnerDoc.php?id=' . intval($doc['id']) . '&download_pdf=true&t=' . time();
+ $data['document']['id'] = intval($doc['id']);
+ $data['document']['name'] = trim($doc['name']);
+ $data['document']['url'] = $host . '/ajax/getInnerDoc.php?id=' . intval($doc['id']) . '&download_pdf=true&t=' . time();
- if (isset($doc['params'])) {
- if ($params = json_decode($doc['params'], true)) {
- if ($params['client_id'] && $params['object_id']) {
+ if (isset($doc['params'])) {
+ if ($params = json_decode($doc['params'], true)) {
+ if ($params['client_id'] && $params['object_id']) {
- $doc_parties = [];
- if (isset($params['client_id'])) {
- $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)) {
+ $doc_parties = [];
+ if (isset($params['client_id'])) {
+ $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)) {
- $cl_contacts = [];
- if ($doc_cl['email'])
- $cl_contacts[] = mask_email_value_if_needed($doc_cl['email']);
+ // Маскируем email/phone клиента, если у текущего пользователя
+ // включено `hide_client_contacts`. Helper сам проверяет право.
+ $cl_contacts = [];
+ if ($doc_cl['email'])
+ $cl_contacts[] = mask_email_value_if_needed($doc_cl['email']);
- if ($doc_cl['phone'])
- $cl_contacts[] = mask_phone_value_if_needed($doc_cl['phone']);
+ if ($doc_cl['phone'])
+ $cl_contacts[] = mask_phone_value_if_needed($doc_cl['phone']);
- $doc_party = [
- 'client_id' => $doc_cl['id'],
- 'object_id' => $params['object_id'],
- 'title' => $doc_cl['fio'],
- 'contacts' => ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : ''),
- ];
- $doc_party['title'] = mask_fio_if_contains_phone($doc_party['title']);
- $doc_parties[] = $doc_party;
- }
- }
+ $doc_party = [
+ 'client_id' => $doc_cl['id'],
+ 'object_id' => $params['object_id'],
+ 'title' => $doc_cl['fio'],
+ 'contacts' => ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : ''),
+ ];
+ // Маскируем title (fio), если он вида "Новый клиент +7...".
+ $doc_party['title'] = mask_fio_if_contains_phone($doc_party['title']);
+ $doc_parties[] = $doc_party;
+ }
+ }
- 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[] = [
- 'object_id' => $doc_obj['id'],
- 'client_id' => $params['client_id'],
- 'title' => $doc_obj['nazv'],
- 'address' => $doc_obj['adres'],
- ];
- }
- }
+ 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[] = [
+ 'object_id' => $doc_obj['id'],
+ 'client_id' => $params['client_id'],
+ 'title' => $doc_obj['nazv'],
+ 'address' => $doc_obj['adres'],
+ ];
+ }
+ }
- $data['document']['parties'] = $doc_parties;
- }
- }
- }
- }
- }
+ $data['document']['parties'] = $doc_parties;
+ }
+ }
+ }
+ }
+ }
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $pattern = '/(https?:\/\/\S+)/i';
- $comment = preg_replace($pattern, 'ссылка', $event['comment']);
- $data['comment'] = trim($comment);
- break;
- case 'even':
- $data['title'] = trim($event['name']);
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $pattern = '/(https?:\/\/\S+)/i';
+ $comment = preg_replace($pattern, 'ссылка', $event['comment']);
+ $data['comment'] = trim($comment);
+ break;
+ case 'even':
+ $data['title'] = trim($event['name']);
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['summ'] = floatval($event['sum']);
- $data['address'] = trim($event['address']);
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['summ'] = floatval($event['sum']);
+ $data['address'] = trim($event['address']);
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $pattern = '/(https?:\/\/\S+)/i';
- $comment = preg_replace($pattern, 'ссылка', $event['comment']);
- $data['comment'] = trim($comment);
- break;
- case 'step':
- $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
- $data['title'] = trim($event['name']);
- $data['is_checklist'] = !($event['checklist'] == 0);
- $data['is_completed'] = (isset($doers[$event['from_id']]) && $doers[$event['from_id']] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'partner':
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $pattern = '/(https?:\/\/\S+)/i';
+ $comment = preg_replace($pattern, 'ссылка', $event['comment']);
+ $data['comment'] = trim($comment);
+ break;
+ case 'step':
+ $data['time'] = date("H:i", strtotime($time_zone, strtotime($event['create_date'])));
+ $data['title'] = trim($event['name']);
+ $data['is_checklist'] = !($event['checklist'] == 0);
+ $data['is_completed'] = (isset($doers[$event['from_id']]) && $doers[$event['from_id']] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'partner':
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
- $doers = [];
- if (!empty($client->doers)) {
- $doers_arr = json_decode(html_entity_decode($client->doers));
- foreach ($doers_arr as $key => $doer) {
- $doers[$key] = $doer;
- }
- } else if ((isset($get['req_id']) && $get['req_id'] > 0) && !empty($client['doers'])) {
- $doers_arr = json_decode(html_entity_decode($client['doers']));
- foreach ($doers_arr as $key => $doer) {
- $doers[$key] = $doer;
- }
- }
+ $doers = [];
+ if (!empty($client->doers)) {
+ $doers_arr = json_decode(html_entity_decode($client->doers));
+ foreach ($doers_arr as $key => $doer) {
+ $doers[$key] = $doer;
+ }
+ } else if ((isset($get['req_id']) && $get['req_id'] > 0) && !empty($client['doers'])) {
+ $doers_arr = json_decode(html_entity_decode($client['doers']));
+ foreach ($doers_arr as $key => $doer) {
+ $doers[$key] = $doer;
+ }
+ }
- $data['comment'] = 'Добавлен к совместной работе.';
- $data['doers_id'] = $doers;
- break;
- }
+ $data['comment'] = 'Добавлен к совместной работе.';
+ $data['doers_id'] = $doers;
+ break;
+ }
- $chat_date = isset($event['chat_date']) ? $event['chat_date'] : '';
+ $chat_date = isset($event['chat_date']) ? $event['chat_date'] : '';
- $tasks[] = [
- 'id' => intval($event['id']),
- // Клиент/заявка — не листинг; флаг держим для единообразия формы ответа.
- 'is_external_listing_event' => false,
- 'chat_date' => isset($event['chat_date']) ? $event['chat_date'] : null,
- 'chat_position' => isset($event['chat_position']) ? $event['chat_position'] : null,
- 'user_id' => intval($from_id),
- 'user_name' => isset($event['user_fio']) ? $event['user_fio'] : null,
- 'who_work' => isset($event['who_work']) ? $event['who_work'] : null,
- 'who_work_fio' => isset($event['who_work_fio']) ? $event['who_work_fio'] : null,
- 'user_logo' => (!empty($event['user_logo'])) ? $host . '/photos/agency/' . $event['user_logo'] . '?=' . time() : null,
- 'type' => isset($event['type']) ? $event['type'] : null,
- 'type_call' => isset($event['type_call']) ? $event['type_call'] : null,
- 'event' => $data,
- 'created_at' => isset($event['create_date']) ? date('Y.m.d H:i:s', strtotime($time_zone, strtotime($event['create_date']))) : null,
- 'time' => isset($event['create_date']) ? date("H:i", strtotime($time_zone, strtotime($event['create_date']))) : null,
- ];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ $tasks[] = [
+ 'id' => intval($event['id']),
+ // Клиент/заявка — не листинг; флаг держим для единообразия формы ответа.
+ 'is_external_listing_event' => false,
+ 'chat_date' => isset($event['chat_date']) ? $event['chat_date'] : null,
+ 'chat_position' => isset($event['chat_position']) ? $event['chat_position'] : null,
+ 'user_id' => intval($from_id),
+ 'user_name' => isset($event['user_fio']) ? $event['user_fio'] : null,
+ 'who_work' => isset($event['who_work']) ? $event['who_work'] : null,
+ 'who_work_fio' => isset($event['who_work_fio']) ? $event['who_work_fio'] : null,
+ 'user_logo' => (!empty($event['user_logo'])) ? $host . '/photos/agency/' . $event['user_logo'] . '?=' . time() : null,
+ 'type' => isset($event['type']) ? $event['type'] : null,
+ 'type_call' => isset($event['type_call']) ? $event['type_call'] : null,
+ 'event' => $data,
+ 'created_at' => isset($event['create_date']) ? date('Y.m.d H:i:s', strtotime($time_zone, strtotime($event['create_date']))) : null,
+ 'time' => isset($event['create_date']) ? date("H:i", strtotime($time_zone, strtotime($event['create_date']))) : null,
+ ];
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
- if ($need_return && !$error) {
- return $tasks;
- } else if (!$error) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => $user_id,
- 'section' => $section,
- 'tasks' => $tasks,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return && !$error) {
+ return $tasks;
+ } else if (!$error) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => $user_id,
+ 'section' => $section,
+ 'tasks' => $tasks,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function getTask($app, $get = null, $post = null, $need_return = false) {
- $error = false;
- $errors = [];
- $task = [];
+ public function getTask($app, $get = null, $post = null, $need_return = false) {
+ $error = false;
+ $errors = [];
+ $task = [];
- if ($user_id = $_SESSION['id']) {
+ if ($user_id = $_SESSION['id']) {
- $protocol = (self::is_ssl()) ? 'https://' : 'http://';
- $host = $protocol . $_SERVER['SERVER_NAME'];
+ $protocol = (self::is_ssl()) ? 'https://' : 'http://';
+ $host = $protocol . $_SERVER['SERVER_NAME'];
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $event_id = null;
- if (isset($get['event_id'])) {
- $event_id = intval($get['event_id']);
- }
+ $event_id = null;
+ if (isset($get['event_id'])) {
+ $event_id = intval($get['event_id']);
+ }
- $event_type = null;
- if (isset($get['event_type'])) {
- $event_type = trim($get['event_type']);
- }
+ $event_type = null;
+ if (isset($get['event_type'])) {
+ $event_type = trim($get['event_type']);
+ }
- $section = null;
- if (isset($get['section'])) {
- $section = trim($get['section']);
- }
+ $section = null;
+ if (isset($get['section'])) {
+ $section = trim($get['section']);
+ }
- $user = new \User;
- $user->get($user_id);
- $user->checkPermissions($user_id, false);
- $agency_id = $user->agencyId;
+ $user = new \User;
+ $user->get($user_id);
+ $user->checkPermissions($user_id, false);
+ $agency_id = $user->agencyId;
- // Offset-free: признак события листинга — явный флаг is_external_listing_event из запроса (echo'ит mJW).
- // event_id = реальный e.id (без смещения), коллизия с id события своего объекта снимается этим флагом.
- $is_listing_task = self::_request_flag($get, 'is_external_listing_event');
+ // Offset-free: признак события листинга — явный флаг is_external_listing_event из запроса (echo'ит mJW).
+ // event_id = реальный e.id (без смещения), коллизия с id события своего объекта снимается этим флагом.
+ $is_listing_task = self::_request_flag($get, 'is_external_listing_event');
- $sql = '';
- if ($section == 'objects') {
+ $sql = '';
+ if ($section == 'objects') {
- $sql = '';
+ $sql = '';
- // Хелперы событий найденных листингов парсера (offset-free, ключ — реальный el event id).
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
+ // Хелперы событий найденных листингов парсера (offset-free, ключ — реальный el event id).
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
- if ($is_listing_task) {
+ if ($is_listing_task) {
- // Найденный листинг парсера: одиночное событие из external_listing_events (реальный id = event_id, без смещения).
- // cancel/sum/document_id у листинга нет — отдаём 0/NULL.
- $listing_real_id = (int)$event_id;
+ // Найденный листинг парсера: одиночное событие из external_listing_events (реальный id = event_id, без смещения).
+ // cancel/sum/document_id у листинга нет — отдаём 0/NULL.
+ $listing_real_id = (int)$event_id;
- if ($_SESSION['agency'] || $_SESSION['manager'] || $_SESSION['users_admin']) {
- $agent_ids = [$user_id];
- $searchUserId = $user_id;
- if ($_SESSION['users_admin']) {
- $user = new \User;
- $user->checkPermissions($user_id, false);
- $searchUserId = $user->agencyId;
- $agent_ids[] = $user->agencyId;
- }
- $agents = \User::getAllAgents($searchUserId);
- foreach ($agents as $agent) {
- if (!in_array($agent['id'], $agent_ids))
- $agent_ids[] = $agent['id'];
- }
- if ($_SESSION['agency'] || $_SESSION['users_admin']) {
- $agents = \User::getAllManagers($searchUserId);
- foreach ($agents as $agent) {
- if (!in_array($agent['id'], $agent_ids))
- $agent_ids[] = $agent['id'];
- }
- }
- $listing_user_filter = "e.user_id IN (" . implode(',', $agent_ids) . ")";
- } else {
- $listing_user_filter = "e.user_id = '$user_id'";
- }
+ if ($_SESSION['agency'] || $_SESSION['manager'] || $_SESSION['users_admin']) {
+ $agent_ids = [$user_id];
+ $searchUserId = $user_id;
+ if ($_SESSION['users_admin']) {
+ $user = new \User;
+ $user->checkPermissions($user_id, false);
+ $searchUserId = $user->agencyId;
+ $agent_ids[] = $user->agencyId;
+ }
+ $agents = \User::getAllAgents($searchUserId);
+ foreach ($agents as $agent) {
+ if (!in_array($agent['id'], $agent_ids))
+ $agent_ids[] = $agent['id'];
+ }
+ if ($_SESSION['agency'] || $_SESSION['users_admin']) {
+ $agents = \User::getAllManagers($searchUserId);
+ foreach ($agents as $agent) {
+ if (!in_array($agent['id'], $agent_ids))
+ $agent_ids[] = $agent['id'];
+ }
+ }
+ $listing_user_filter = "e.user_id IN (" . implode(',', $agent_ids) . ")";
+ } else {
+ $listing_user_filter = "e.user_id = '$user_id'";
+ }
- // Offset-free: id события — реальный e.id (без смещения), различитель листинга = is_external_listing_event ниже.
- $sql = "SELECT e.id AS id,
+ // Offset-free: id события — реальный e.id (без смещения), различитель листинга = is_external_listing_event ниже.
+ $sql = "SELECT e.id AS id,
e.type, e.user_id, e.from_id, e.comment, e.address,
e.schedule_date, NULL AS schedule_date_to, e.name, e.calendar_view, e.create_date,
0 AS cancel, 0 AS `sum`, NULL AS document_id,
@@ -9396,40 +9402,40 @@ class CommonController extends ApiController
WHERE {$listing_user_filter} AND
e.id = {$listing_real_id}";
- if ($event_type)
- $sql .= " AND e.type = '$event_type'";
+ if ($event_type)
+ $sql .= " AND e.type = '$event_type'";
- $sql .= " LIMIT 1";
+ $sql .= " LIMIT 1";
- } else if ($_SESSION['agency'] || $_SESSION['manager'] || $_SESSION['users_admin']) {
+ } else if ($_SESSION['agency'] || $_SESSION['manager'] || $_SESSION['users_admin']) {
- $agent_ids = [$user_id];
- $searchUserId = $user_id;
+ $agent_ids = [$user_id];
+ $searchUserId = $user_id;
- if ($_SESSION['users_admin']) {
- $user = new \User;
- $user->checkPermissions($user_id, false);
- $searchUserId = $user->agencyId;
- $agent_ids[] = $user->agencyId;
- }
+ if ($_SESSION['users_admin']) {
+ $user = new \User;
+ $user->checkPermissions($user_id, false);
+ $searchUserId = $user->agencyId;
+ $agent_ids[] = $user->agencyId;
+ }
- $agents = \User::getAllAgents($searchUserId);
- foreach ($agents as $agent) {
- if (!in_array($agent['id'], $agent_ids)) {
- $agent_ids[] = $agent['id'];
- }
- }
+ $agents = \User::getAllAgents($searchUserId);
+ foreach ($agents as $agent) {
+ if (!in_array($agent['id'], $agent_ids)) {
+ $agent_ids[] = $agent['id'];
+ }
+ }
- if ($_SESSION['agency'] || $_SESSION['users_admin']) {
- $agents = \User::getAllManagers($searchUserId);
- foreach ($agents as $agent) {
- if (!in_array($agent['id'], $agent_ids)) {
- $agent_ids[] = $agent['id'];
- }
- }
- }
+ if ($_SESSION['agency'] || $_SESSION['users_admin']) {
+ $agents = \User::getAllManagers($searchUserId);
+ foreach ($agents as $agent) {
+ if (!in_array($agent['id'], $agent_ids)) {
+ $agent_ids[] = $agent['id'];
+ }
+ }
+ }
- $sql = "SELECT *,
+ $sql = "SELECT *,
if (
e.from_id <> 0,
(SELECT u.user_logo FROM users AS u WHERE u.id = e.from_id),
@@ -9444,12 +9450,12 @@ class CommonController extends ApiController
WHERE user_id IN (" . implode(',', $agent_ids) . ") AND
e.id = '$event_id'";
- if ($event_type)
- $sql .= " AND e.type = '$event_type'";
+ if ($event_type)
+ $sql .= " AND e.type = '$event_type'";
- $sql .= " LIMIT 1";
- } else {
- $sql = "SELECT *,
+ $sql .= " LIMIT 1";
+ } else {
+ $sql = "SELECT *,
if (
e.from_id <> 0,
(SELECT u.user_logo FROM users AS u WHERE u.id = e.from_id),
@@ -9464,65 +9470,65 @@ class CommonController extends ApiController
WHERE e.user_id = '$user_id' AND
e.id = '$event_id'";
- if ($event_type)
- $sql .= " AND e.type = '$event_type'";
+ if ($event_type)
+ $sql .= " AND e.type = '$event_type'";
- $sql .= " LIMIT 1";
- }
+ $sql .= " LIMIT 1";
+ }
- if (!empty($sql)) {
- $createDate = null;
- if ($query = mysql_query($sql)) {
- while ($event = mysql_fetch_assoc($query)) {
+ if (!empty($sql)) {
+ $createDate = null;
+ if ($query = mysql_query($sql)) {
+ while ($event = mysql_fetch_assoc($query)) {
- if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) {
+ if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) {
- $createDate = date("d.m.Y", strtotime($event['create_date']));
- if ($createDate == date("d.m.Y")) {
- $event['chat_date'] = 'Сегодня';
- } else if ($createDate == date("d.m.Y", strtotime("-1 DAY"))) {
- $event['chat_date'] = 'Вчера';
- } else {
+ $createDate = date("d.m.Y", strtotime($event['create_date']));
+ if ($createDate == date("d.m.Y")) {
+ $event['chat_date'] = 'Сегодня';
+ } else if ($createDate == date("d.m.Y", strtotime("-1 DAY"))) {
+ $event['chat_date'] = 'Вчера';
+ } else {
- list($d, $m, $y) = explode(".", $createDate);
- if ($y == date("Y"))
- $y = "";
+ list($d, $m, $y) = explode(".", $createDate);
+ if ($y == date("Y"))
+ $y = "";
- $event['chat_date'] = trim($d . " " . getRusMonth($m) . " " . $y);
- }
- }
+ $event['chat_date'] = trim($d . " " . getRusMonth($m) . " " . $y);
+ }
+ }
- $from_id = $event['user_id'];
- $event['chat_position'] = "right";
+ $from_id = $event['user_id'];
+ $event['chat_position'] = "right";
- if (!empty($event['from_id']))
- $from_id = $event['from_id'];
+ if (!empty($event['from_id']))
+ $from_id = $event['from_id'];
- if ($_SESSION['id'] == $from_id)
- $event['chat_position'] = "left";
+ if ($_SESSION['id'] == $from_id)
+ $event['chat_position'] = "left";
- $data = [];
- switch ($event['type']) {
- case 'comment':
- $data['time'] = date("H:i", strtotime($event['create_date']));
- $data['comment'] = trim($event['comment']);
- break;
- case 'file':
- $data['title'] = trim($event['name']);
+ $data = [];
+ switch ($event['type']) {
+ case 'comment':
+ $data['time'] = date("H:i", strtotime($event['create_date']));
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'file':
+ $data['title'] = trim($event['name']);
- $file_list = [];
- $docs_q = mysql_query("SELECT * FROM clients_files WHERE event_id = '".$event['id']."'");
- $name_files = '';
+ $file_list = [];
+ $docs_q = mysql_query("SELECT * FROM clients_files WHERE event_id = '".$event['id']."'");
+ $name_files = '';
- 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'];
- }
- }
+ 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'];
+ }
+ }
$temp_dir = null;
@@ -9559,150 +9565,150 @@ class CommonController extends ApiController
}
}
}
- }
+ }
- $data['file_list'] = $file_list;
- $data['comment'] = trim($event['comment']);
- break;
- case 'call':
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ $data['file_list'] = $file_list;
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'call':
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['time'] = date("H:i", strtotime($event['create_date']));
+ $data['time'] = date("H:i", strtotime($event['create_date']));
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'meet':
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'meet':
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['address'] = trim($event['address']);
- $data['time'] = date("H:i", strtotime($event['create_date']));
+ $data['address'] = trim($event['address']);
+ $data['time'] = date("H:i", strtotime($event['create_date']));
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'show': // Показ
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'show': // Показ
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['address'] = trim($event['address']);
+ $data['address'] = trim($event['address']);
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'deal': // Сделка
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'deal': // Сделка
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
- $data['summ'] = floatval($event['sum']);
- $data['time'] = date("H:i", strtotime($event['create_date']));
+ $data['summ'] = floatval($event['sum']);
+ $data['time'] = date("H:i", strtotime($event['create_date']));
- $data['document'] = null;
- if (isset($event['document_id'])) {
+ $data['document'] = null;
+ if (isset($event['document_id'])) {
- $doc_id = $event['document_id'];
- if ($doc = \Docs::getInnerDoc(null, $doc_id)) {
+ $doc_id = $event['document_id'];
+ if ($doc = \Docs::getInnerDoc(null, $doc_id)) {
- $data['document']['id'] = intval($doc['id']);
- $data['document']['name'] = trim($doc['name']);
- $data['document']['url'] = $host . '/ajax/getInnerDoc.php?id=' . intval($doc['id']) . '&download_pdf=true&t=' . time();
+ $data['document']['id'] = intval($doc['id']);
+ $data['document']['name'] = trim($doc['name']);
+ $data['document']['url'] = $host . '/ajax/getInnerDoc.php?id=' . intval($doc['id']) . '&download_pdf=true&t=' . time();
- if (isset($doc['params'])) {
- if ($params = json_decode($doc['params'], true)) {
- if ($params['client_id'] && $params['object_id']) {
+ if (isset($doc['params'])) {
+ if ($params = json_decode($doc['params'], true)) {
+ if ($params['client_id'] && $params['object_id']) {
- $doc_parties = [];
- if (isset($params['client_id'])) {
- $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)) {
+ $doc_parties = [];
+ if (isset($params['client_id'])) {
+ $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)) {
- // Маскируем email/phone клиента, если у текущего пользователя
- // включено `hide_client_contacts`. Helper сам проверяет право.
- $cl_contacts = [];
- if ($doc_cl['email'])
- $cl_contacts[] = mask_email_value_if_needed($doc_cl['email']);
+ // Маскируем email/phone клиента, если у текущего пользователя
+ // включено `hide_client_contacts`. Helper сам проверяет право.
+ $cl_contacts = [];
+ if ($doc_cl['email'])
+ $cl_contacts[] = mask_email_value_if_needed($doc_cl['email']);
- if ($doc_cl['phone'])
- $cl_contacts[] = mask_phone_value_if_needed($doc_cl['phone']);
+ if ($doc_cl['phone'])
+ $cl_contacts[] = mask_phone_value_if_needed($doc_cl['phone']);
- $doc_party = [
- 'client_id' => $doc_cl['id'],
- 'object_id' => $params['object_id'],
- 'title' => $doc_cl['fio'],
- 'contacts' => ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : ''),
- ];
- // Маскируем title (fio), если он вида "Новый клиент +7...".
- $doc_party['title'] = mask_fio_if_contains_phone($doc_party['title']);
- $doc_parties[] = $doc_party;
- }
- }
+ $doc_party = [
+ 'client_id' => $doc_cl['id'],
+ 'object_id' => $params['object_id'],
+ 'title' => $doc_cl['fio'],
+ 'contacts' => ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : ''),
+ ];
+ // Маскируем title (fio), если он вида "Новый клиент +7...".
+ $doc_party['title'] = mask_fio_if_contains_phone($doc_party['title']);
+ $doc_parties[] = $doc_party;
+ }
+ }
- 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[] = [
- 'object_id' => $doc_obj['id'],
- 'client_id' => $params['client_id'],
- 'title' => $doc_obj['nazv'],
- 'address' => $doc_obj['adres'],
- ];
- }
- }
+ 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[] = [
+ 'object_id' => $doc_obj['id'],
+ 'client_id' => $params['client_id'],
+ 'title' => $doc_obj['nazv'],
+ 'address' => $doc_obj['adres'],
+ ];
+ }
+ }
- $data['document']['parties'] = $doc_parties;
- }
- }
- }
- }
- }
+ $data['document']['parties'] = $doc_parties;
+ }
+ }
+ }
+ }
+ }
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- }
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ }
- $task = [
- 'id' => intval($event['id']),
- // Offset-free: id события — реальный e.id; различитель листинга — явный флаг (echo'ит mJW в CRUD).
- 'is_external_listing_event' => $is_listing_task,
- 'chat_date' => isset($event['chat_date']) ? $event['chat_date'] : null,
- 'chat_position' => isset($event['chat_position']) ? $event['chat_position'] : null,
- 'user_id' => intval($from_id),
- 'user_name' => isset($event['user_fio']) ? $event['user_fio'] : null,
- 'who_work' => isset($event['who_work']) ? $event['who_work'] : null,
- 'user_logo' => (!empty($event['user_logo'])) ? $host . '/photos/agency/' . $event['user_logo'] . '?=' . time() : null,
- 'type' => isset($event['type']) ? $event['type'] : null,
- 'event' => $data,
- 'created_at' => isset($event['create_date']) ? date('Y.m.d H:i:s', strtotime($event['create_date'])) : null,
- 'time' => isset($event['create_date']) ? date("H:i", strtotime($event['create_date'])) : null,
- ];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else if ($section == 'clients' || $section == 'requisitions' || $section == 'free') {
+ $task = [
+ 'id' => intval($event['id']),
+ // Offset-free: id события — реальный e.id; различитель листинга — явный флаг (echo'ит mJW в CRUD).
+ 'is_external_listing_event' => $is_listing_task,
+ 'chat_date' => isset($event['chat_date']) ? $event['chat_date'] : null,
+ 'chat_position' => isset($event['chat_position']) ? $event['chat_position'] : null,
+ 'user_id' => intval($from_id),
+ 'user_name' => isset($event['user_fio']) ? $event['user_fio'] : null,
+ 'who_work' => isset($event['who_work']) ? $event['who_work'] : null,
+ 'user_logo' => (!empty($event['user_logo'])) ? $host . '/photos/agency/' . $event['user_logo'] . '?=' . time() : null,
+ 'type' => isset($event['type']) ? $event['type'] : null,
+ 'event' => $data,
+ 'created_at' => isset($event['create_date']) ? date('Y.m.d H:i:s', strtotime($event['create_date'])) : null,
+ 'time' => isset($event['create_date']) ? date("H:i", strtotime($event['create_date'])) : null,
+ ];
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else if ($section == 'clients' || $section == 'requisitions' || $section == 'free') {
- if ($section == 'clients') {
+ if ($section == 'clients') {
- $sql = "SELECT e.id,
+ $sql = "SELECT e.id,
e.comment,
e.name,
e.create_date,
@@ -9738,10 +9744,10 @@ class CommonController extends ApiController
FROM user_client_events as e
WHERE e.id = '$event_id'";
- if ($event_type)
- $sql .= " AND e.type = '$event_type'";
+ if ($event_type)
+ $sql .= " AND e.type = '$event_type'";
- $sql .= " UNION SELECT ev.id,
+ $sql .= " UNION SELECT ev.id,
'' as comment,
'' as name,
ev.date as create_date,
@@ -9777,10 +9783,10 @@ class CommonController extends ApiController
FROM events_clients as ev
WHERE ev.client_id = client_id AND event = 'transmitted_parallel'";
- $sql .= " LIMIT 1";
- } else if ($section == 'requisitions') {
+ $sql .= " LIMIT 1";
+ } else if ($section == 'requisitions') {
- $sql = "SELECT e.id,
+ $sql = "SELECT e.id,
e.comment,
e.name,
e.create_date,
@@ -9816,10 +9822,10 @@ class CommonController extends ApiController
FROM user_client_events as e
WHERE e.id = '$event_id'";
- if ($event_type)
- $sql .= " AND e.type = '$event_type'";
+ if ($event_type)
+ $sql .= " AND e.type = '$event_type'";
- $sql .= " UNION SELECT ev.id,
+ $sql .= " UNION SELECT ev.id,
'' as comment,
'' as name,
ev.date as create_date,
@@ -9855,9 +9861,9 @@ class CommonController extends ApiController
FROM events_clients as ev
WHERE ev.req_id = req_id AND event = 'transmitted_parallel'";
- $sql .= " LIMIT 1";
- } else if($section == 'free'){
- $sql = "SELECT e.id,
+ $sql .= " LIMIT 1";
+ } else if($section == 'free'){
+ $sql = "SELECT e.id,
e.comment,
e.name,
e.create_date,
@@ -9892,65 +9898,65 @@ class CommonController extends ApiController
) as user_fio
FROM user_client_events as e
WHERE e.id = '$event_id'";
- }
+ }
- if (!empty($sql)) {
- $createDate = null;
- if ($query = mysql_query($sql)) {
- while ($event = mysql_fetch_assoc($query)) {
+ if (!empty($sql)) {
+ $createDate = null;
+ if ($query = mysql_query($sql)) {
+ while ($event = mysql_fetch_assoc($query)) {
- if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) {
+ if ($createDate == null || $createDate != date("d.m.Y", strtotime($event['create_date']))) {
- $createDate = date("d.m.Y", strtotime($event['create_date']));
- if ($createDate == date("d.m.Y")) {
- $event['chat_date'] = 'Сегодня';
- } else if ($createDate == date("d.m.Y", strtotime("-1 DAY"))) {
- $event['chat_date'] = 'Вчера';
- } else {
+ $createDate = date("d.m.Y", strtotime($event['create_date']));
+ if ($createDate == date("d.m.Y")) {
+ $event['chat_date'] = 'Сегодня';
+ } else if ($createDate == date("d.m.Y", strtotime("-1 DAY"))) {
+ $event['chat_date'] = 'Вчера';
+ } else {
- list($d, $m, $y) = explode(".", $createDate);
- if ($y == date("Y"))
- $y = "";
+ list($d, $m, $y) = explode(".", $createDate);
+ if ($y == date("Y"))
+ $y = "";
- $event['chat_date'] = trim($d . " " . getRusMonth($m) . " " . $y);
- }
- }
+ $event['chat_date'] = trim($d . " " . getRusMonth($m) . " " . $y);
+ }
+ }
- $from_id = $event['user_id'];
- $event['chat_position'] = "right";
+ $from_id = $event['user_id'];
+ $event['chat_position'] = "right";
- if (!empty($event['from_id']))
- $from_id = $event['from_id'];
+ if (!empty($event['from_id']))
+ $from_id = $event['from_id'];
- if ($_SESSION['id'] == $from_id)
- $event['chat_position'] = "left";
+ if ($_SESSION['id'] == $from_id)
+ $event['chat_position'] = "left";
- $data = [];
- switch ($event['type']) {
- case 'comment':
- $data['time'] = date("H:i", strtotime($event['create_date']));
- $data['comment'] = trim($event['comment']);
- break;
- case 'file':
- case 'partner_id':
- $data['title'] = trim($event['name']);
+ $data = [];
+ switch ($event['type']) {
+ case 'comment':
+ $data['time'] = date("H:i", strtotime($event['create_date']));
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'file':
+ case 'partner_id':
+ $data['title'] = trim($event['name']);
- $file_list = [];
- $docs_q = mysql_query("SELECT * FROM clients_files WHERE event_id = '".$event['id']."'");
- $name_files = '';
+ $file_list = [];
+ $docs_q = mysql_query("SELECT * FROM clients_files WHERE event_id = '".$event['id']."'");
+ $name_files = '';
- 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'];
- }
- }
+ 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'];
+ }
+ }
- $name_doc = $_SERVER['DOCUMENT_ROOT'].'/upload/clients/'.$file['client_id'].'/'.$file['guid'].'.'.$file['type'];
- if ($file['req_id'] > 0) {
+ $name_doc = $_SERVER['DOCUMENT_ROOT'].'/upload/clients/'.$file['client_id'].'/'.$file['guid'].'.'.$file['type'];
+ if ($file['req_id'] > 0) {
$file_path = 'https://uf.joywork.ru/upload/reqs/' . $file['req_id'] . '/' . $file['guid'] . '.' . $file['type'];
$file_list[] = [
@@ -9988,2126 +9994,2126 @@ class CommonController extends ApiController
}
}
}
- }
-
- $data['file_list'] = $file_list;
- $data['comment'] = trim($event['comment']);
- break;
- case 'call':
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_to'] = date('Y-m-d H:i:s', strtotime($event['schedule_date_to']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
-
- $data['time'] = date("H:i", strtotime($event['create_date']));
-
- if (!empty($event['record'])) {
- if ($event['megafon'] == 1) {
-
- $oper = 'mega';
- $path = '/server/mega/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$event['record'])) {
- $href = 'https://voice.joywork.ru/mega/';
- $Headers = @get_headers($href.$event['record']);
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
-
- if (!empty($path)) {
- $data['records'][] = [
- 'operator' => $oper,
- 'source_path' => $path . $event['record']
- ];
- }
- } else {
-
- $arr_rec = json_decode($event['record']);
- if (!empty($arr_rec)) {
- foreach ($arr_rec as $rec) {
- if (!empty($rec)) {
- $oper = null;
- $path = '';
- if ($event['telphin'] == 1) {
- $oper = 'telphin';
- $path = '/server/telphin/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/telphin/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- } else if ($event['beeline'] == 1) {
- $oper = 'beeline';
- $path = '/server/beeline/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/beeline/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- } else if ($event['mts'] == 1) {
- $oper = 'mts';
- $path = '/server/mts/'.$user->agencyId."/";
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/mts/'.$user->agencyId.'/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- } else if ($event['tele2'] == 1) {
- $oper = 'tele2';
- $date_patch = date('Ymd', strtotime($event['create_date']));
- $path = '/server/tele2/'.$user->agencyId.'/'.$date_patch.'/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/tele2/'.$user->agencyId.'/'.$date_patch.'/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- } else {
- $oper = 'mango';
- $path = '/server/mango/';
- if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
- $href = 'https://voice.joywork.ru/mango/';
- $Headers = @get_headers($href.$rec.'.mp3');
- if (strpos($Headers[0],'200')) {
- $path = $href;
- } else {
- $path = '';
- }
- }
- }
-
- if (!empty($path)) {
- $data['records'][] = [
- 'operator' => $oper,
- 'source_path' => $path . $rec . '.mp3'
- ];
- }
- }
- }
- }
- }
- } else {
- $data['records'] = null;
- }
-
- $data['is_tracking'] = ($event['tracking'] == 1);
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'meet':
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
-
- $data['address'] = trim($event['address']);
- $data['time'] = date("H:i", strtotime($event['create_date']));
-
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'show': // Показ
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
-
- $data['address'] = trim($event['address']);
- $data['time'] = date("H:i", strtotime($event['create_date']));
-
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'deal': // Сделка
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
-
- $data['summ'] = floatval($event['sum']);
- $data['time'] = date("H:i", strtotime($event['create_date']));
-
- $data['document'] = null;
- if (isset($event['document_id'])) {
-
- $doc_id = $event['document_id'];
- if ($doc = \Docs::getInnerDoc(null, $doc_id)) {
-
- $data['document']['id'] = intval($doc['id']);
- $data['document']['name'] = trim($doc['name']);
- $data['document']['url'] = $host . '/ajax/getInnerDoc.php?id=' . intval($doc['id']) . '&download_pdf=true&t=' . time();
-
- if (isset($doc['params'])) {
- if ($params = json_decode($doc['params'], true)) {
- if ($params['client_id'] && $params['object_id']) {
-
- $doc_parties = [];
- if (isset($params['client_id'])) {
- $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)) {
-
- // Маскируем email/phone клиента, если у текущего пользователя
- // включено `hide_client_contacts`. Helper сам проверяет право.
- $cl_contacts = [];
- if ($doc_cl['email'])
- $cl_contacts[] = mask_email_value_if_needed($doc_cl['email']);
-
- if ($doc_cl['phone'])
- $cl_contacts[] = mask_phone_value_if_needed($doc_cl['phone']);
-
- $doc_party = [
- 'client_id' => $doc_cl['id'],
- 'object_id' => $params['object_id'],
- 'title' => $doc_cl['fio'],
- 'contacts' => ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : ''),
- ];
- // Маскируем title (fio), если он вида "Новый клиент +7...".
- $doc_party['title'] = mask_fio_if_contains_phone($doc_party['title']);
- $doc_parties[] = $doc_party;
- }
- }
-
- 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[] = [
- 'object_id' => $doc_obj['id'],
- 'client_id' => $params['client_id'],
- 'title' => $doc_obj['nazv'],
- 'address' => $doc_obj['adres'],
- ];
- }
- }
-
- $data['document']['parties'] = $doc_parties;
- }
- }
- }
- }
- }
-
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'even':
- $data['title'] = trim($event['name']);
-
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
- $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
- $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
-
- $data['summ'] = floatval($event['sum']);
- $data['address'] = trim($event['address']);
- $data['time'] = date("H:i", strtotime($event['create_date']));
-
- $data['is_completed'] = ($event['calendar_view'] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'step':
- $data['time'] = date("H:i", strtotime($event['create_date']));
- $data['title'] = trim($event['name']);
- $data['is_checklist'] = !($event['checklist'] == 0);
- $data['is_completed'] = (isset($doers[$event['from_id']]) && $doers[$event['from_id']] == 1);
- $data['is_cancel'] = ($event['cancel'] == 1);
- $data['comment'] = trim($event['comment']);
- break;
- case 'partner':
-
- $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
- list($d, $m, $y) = explode(".", $schedule_date);
-
- $doers = [];
- if (!empty($client->doers)) {
- $doers_arr = json_decode(html_entity_decode($client->doers));
- foreach ($doers_arr as $key => $doer) {
- $doers[$key] = $doer;
- }
- } else if ((isset($get['req_id']) && $get['req_id'] > 0) && !empty($client['doers'])) {
- $doers_arr = json_decode(html_entity_decode($client['doers']));
- foreach ($doers_arr as $key => $doer) {
- $doers[$key] = $doer;
- }
- }
-
- $data['comment'] = 'Добавлен к совместной работе.';
- $data['doers_id'] = $doers;
- break;
- }
-
- $task = [
- 'id' => intval($event['id']),
- // Клиент/заявка — не листинг; флаг держим для единообразия формы ответа.
- 'is_external_listing_event' => false,
- 'chat_date' => isset($event['chat_date']) ? $event['chat_date'] : null,
- 'chat_position' => isset($event['chat_position']) ? $event['chat_position'] : null,
- 'user_id' => intval($from_id),
- 'user_name' => isset($event['user_fio']) ? $event['user_fio'] : null,
- 'who_work' => isset($event['who_work']) ? $event['who_work'] : null,
- 'user_logo' => (!empty($event['user_logo'])) ? $host . '/photos/agency/' . $event['user_logo'] . '?=' . time() : null,
- 'type' => isset($event['type']) ? $event['type'] : null,
- 'event' => $data,
- //'is_new' => $data,
- 'created_at' => isset($event['create_date']) ? date('Y.m.d H:i:s', strtotime($event['create_date'])) : null,
- 'time' => isset($event['create_date']) ? date("H:i", strtotime($event['create_date'])) : null,
- ];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
-
- if ($need_return && !$error) {
- return $task;
- } else if (!$error) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => $user_id,
- 'section' => $section,
- 'task' => $task,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
-
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
-
- public function setTaskState($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
-
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
-
- $body = $app->request->getBody();
- $data = json_decode(stripcslashes($body), true);
-
- $object_id = null;
- if (isset($data['object_id']))
- $object_id = intval($data['object_id']);
-
- $client_id = null;
- if (isset($data['client_id']))
- $client_id = intval($data['client_id']);
-
- $requisition_id = null;
- if (isset($data['requisition_id']))
- $requisition_id = intval($data['requisition_id']);
-
- $event_id = null;
- if (isset($data['event_id']))
- $event_id = intval($data['event_id']);
-
- $state = null;
- if (isset($data['state']))
- $state = intval($data['state']);
-
- $action = null;
- if (isset($data['action']))
- $action = trim($data['action']);
-
- $section = null;
- if(isset($data['section'])){
- $section = $data['section'];
- }
- if (!is_null($event_id)) {
-
- // Offset-free: событие листинга различаем по явному флагу is_external_listing_event из запроса (echo'ит mJW).
- // event_id = реальный id в external_listing_events (без смещения; коллизию с id своего объекта снимает флаг).
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
- if (self::_request_flag($data, 'is_external_listing_event')) {
-
- $listing_done = false;
- if ($action == 'state' && !is_null($state)) {
- $state = $state ? 1 : 0;
- $listing_done = (bool)mysql_query("UPDATE `external_listing_events` SET `calendar_view` = {$state} WHERE `id` = " . (int)$event_id . \external_listing_events_scope_clause()); // scope агентства — нельзя тогглить чужое событие
- }
- // Действие cancel к событиям листинга неприменимо — флага cancel в их таблице нет.
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => $listing_done,
- 'user_id' => $user_id,
- 'section' => 'objects',
- 'tasks' => null,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- if ($action == 'state') {
- if ($object_id) {
- $section = 'objects';
- $sql = "UPDATE `user_object_events` SET `calendar_view` = {$state} WHERE `id` = {$event_id} AND `object_id` = {$object_id}";
- }
-
- if ($client_id) {
- $section = 'clients';
- $sql = "UPDATE `user_client_events` SET `calendar_view` = {$state} WHERE `id` = {$event_id} AND `client_id` = {$client_id}";
- }
-
- if ($requisition_id) {
- $section = 'requisitions';
- $sql = "UPDATE `user_client_events` SET `calendar_view` = {$state} WHERE `id` = {$event_id} AND `req_id` = {$requisition_id}";
- }
-
- if($section == 'free'){
- $sql = "UPDATE `user_client_events` SET `calendar_view` = {$state} WHERE `id` = {$event_id}";
- }
-
- if (!empty($sql)) {
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- }
- } else if ($action == 'cancel') {
-
- if ($client_id) {
- $section = 'clients';
- $sql = "UPDATE `user_client_events` SET `cancel` = 1 WHERE `id` = {$event_id} AND `client_id` = {$client_id}";
- }
-
- if ($requisition_id) {
- $section = 'requisitions';
- $sql = "UPDATE `user_client_events` SET `cancel` = 1 WHERE `id` = {$event_id} AND `req_id` = {$requisition_id}";
- }
-
- if($section == 'free'){
- $sql = "UPDATE `user_client_events` SET `cancel` = 1 WHERE `id` = {$event_id}";
- }
-
- if (!empty($sql)) {
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- }
- }
-
- if (!$error) {
-
- $tasks = [];
- if ($section == 'objects')
- $tasks = self::getTasks($app, ['object_id' => $object_id], null, true);
- else if ($section == 'clients')
- $tasks = self::getTasks($app, ['client_id' => $client_id], null, true);
- else if ($section == 'requisitions')
- $tasks = self::getTasks($app, ['requisition_id' => $requisition_id], null, true);
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => $user_id,
- 'section' => $section,
- 'tasks' => (!empty($tasks)) ? $tasks : null,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- public function deleteTask($app, $get = null, $post = null) {
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
-
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
-
- $object_id = null;
- if (isset($get['object_id']))
- $object_id = intval($get['object_id']);
-
- $client_id = null;
- if (isset($get['client_id']))
- $client_id = intval($get['client_id']);
-
- $requisition_id = null;
- if (isset($get['requisition_id']))
- $requisition_id = intval($get['requisition_id']);
-
- $event_id = null;
- if (isset($get['event_id']))
- $event_id = intval($get['event_id']);
-
- $section = null;
- if (!is_null($event_id)) {
-
- // Offset-free: событие листинга различаем по явному флагу is_external_listing_event из запроса (echo'ит mJW) —
- // удаляем из external_listing_events по реальному id (event_id, без смещения).
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
- if (self::_request_flag($get, 'is_external_listing_event')) {
-
- $listing_where = "`id` = " . (int)$event_id . \external_listing_events_scope_clause(); // scope агентства — нельзя удалить чужое событие листинга
- // Если фронт прислал и сам листинг (object_id = реальный el.id, флаг is_external) — сверяем принадлежность события.
- if ($object_id && self::_request_flag($get, 'is_external'))
- $listing_where .= " AND `external_listing_id` = " . (int)$object_id;
-
- if (!mysql_query("DELETE FROM `external_listing_events` WHERE " . $listing_where)) {
- $error = true;
- $errors[] = mysql_error();
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => $user_id,
- 'section' => 'objects',
- 'tasks' => null,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- if ($object_id) {
- $section = 'objects';
- $sql = "DELETE FROM `user_object_events` WHERE `id` = '{$event_id}' AND `object_id` = '{$object_id}'";
- }
-
- if ($client_id) {
- $section = 'clients';
- $sql = "DELETE FROM `user_client_events` WHERE `id` = '{$event_id}' AND `client_id` = '{$client_id}'";
- }
-
- if ($requisition_id) {
- $section = 'requisitions';
- $sql = "DELETE FROM `user_client_events` WHERE `id` = '{$event_id}' AND `req_id` = '{$requisition_id}'";
- }
-
- if (!empty($sql)) {
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- }
-
- if (!$error) {
-
- $tasks = [];
- if ($section == 'objects')
- $tasks = self::getTasks($app, ['object_id' => $object_id], null, true);
- else if ($section == 'clients')
- $tasks = self::getTasks($app, ['client_id' => $client_id], null, true);
- else if ($section == 'requisitions')
- $tasks = self::getTasks($app, ['requisition_id' => $requisition_id], null, true);
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => $user_id,
- 'section' => $section,
- 'tasks' => (!empty($tasks)) ? $tasks : null,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- public function addEditTask($app, $get = null, $post = null) {
-
- $error = false;
- $sqls = [];
- $errors = [];
-
- if ($user_id = intval($_SESSION['id'])) {
-
- date_default_timezone_set('Europe/Moscow');
-
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
-
- $body = $app->request->getBody();
- $data = json_decode(stripcslashes($body), true);
-
- /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
+ }
+
+ $data['file_list'] = $file_list;
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'call':
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_to'] = date('Y-m-d H:i:s', strtotime($event['schedule_date_to']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+
+ $data['time'] = date("H:i", strtotime($event['create_date']));
+
+ if (!empty($event['record'])) {
+ if ($event['megafon'] == 1) {
+
+ $oper = 'mega';
+ $path = '/server/mega/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$event['record'])) {
+ $href = 'https://voice.joywork.ru/mega/';
+ $Headers = @get_headers($href.$event['record']);
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+
+ if (!empty($path)) {
+ $data['records'][] = [
+ 'operator' => $oper,
+ 'source_path' => $path . $event['record']
+ ];
+ }
+ } else {
+
+ $arr_rec = json_decode($event['record']);
+ if (!empty($arr_rec)) {
+ foreach ($arr_rec as $rec) {
+ if (!empty($rec)) {
+ $oper = null;
+ $path = '';
+ if ($event['telphin'] == 1) {
+ $oper = 'telphin';
+ $path = '/server/telphin/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/telphin/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ } else if ($event['beeline'] == 1) {
+ $oper = 'beeline';
+ $path = '/server/beeline/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/beeline/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ } else if ($event['mts'] == 1) {
+ $oper = 'mts';
+ $path = '/server/mts/'.$user->agencyId."/";
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/mts/'.$user->agencyId.'/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ } else if ($event['tele2'] == 1) {
+ $oper = 'tele2';
+ $date_patch = date('Ymd', strtotime($event['create_date']));
+ $path = '/server/tele2/'.$user->agencyId.'/'.$date_patch.'/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/tele2/'.$user->agencyId.'/'.$date_patch.'/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ } else {
+ $oper = 'mango';
+ $path = '/server/mango/';
+ if (!file_exists($_SERVER['DOCUMENT_ROOT'].$path.$rec.'.mp3')) {
+ $href = 'https://voice.joywork.ru/mango/';
+ $Headers = @get_headers($href.$rec.'.mp3');
+ if (strpos($Headers[0],'200')) {
+ $path = $href;
+ } else {
+ $path = '';
+ }
+ }
+ }
+
+ if (!empty($path)) {
+ $data['records'][] = [
+ 'operator' => $oper,
+ 'source_path' => $path . $rec . '.mp3'
+ ];
+ }
+ }
+ }
+ }
+ }
+ } else {
+ $data['records'] = null;
+ }
+
+ $data['is_tracking'] = ($event['tracking'] == 1);
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'meet':
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+
+ $data['address'] = trim($event['address']);
+ $data['time'] = date("H:i", strtotime($event['create_date']));
+
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'show': // Показ
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+
+ $data['address'] = trim($event['address']);
+ $data['time'] = date("H:i", strtotime($event['create_date']));
+
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'deal': // Сделка
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+
+ $data['summ'] = floatval($event['sum']);
+ $data['time'] = date("H:i", strtotime($event['create_date']));
+
+ $data['document'] = null;
+ if (isset($event['document_id'])) {
+
+ $doc_id = $event['document_id'];
+ if ($doc = \Docs::getInnerDoc(null, $doc_id)) {
+
+ $data['document']['id'] = intval($doc['id']);
+ $data['document']['name'] = trim($doc['name']);
+ $data['document']['url'] = $host . '/ajax/getInnerDoc.php?id=' . intval($doc['id']) . '&download_pdf=true&t=' . time();
+
+ if (isset($doc['params'])) {
+ if ($params = json_decode($doc['params'], true)) {
+ if ($params['client_id'] && $params['object_id']) {
+
+ $doc_parties = [];
+ if (isset($params['client_id'])) {
+ $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)) {
+
+ // Маскируем email/phone клиента, если у текущего пользователя
+ // включено `hide_client_contacts`. Helper сам проверяет право.
+ $cl_contacts = [];
+ if ($doc_cl['email'])
+ $cl_contacts[] = mask_email_value_if_needed($doc_cl['email']);
+
+ if ($doc_cl['phone'])
+ $cl_contacts[] = mask_phone_value_if_needed($doc_cl['phone']);
+
+ $doc_party = [
+ 'client_id' => $doc_cl['id'],
+ 'object_id' => $params['object_id'],
+ 'title' => $doc_cl['fio'],
+ 'contacts' => ((!empty($cl_contacts)) ? ' (' . implode(', ', $cl_contacts) . ')' : ''),
+ ];
+ // Маскируем title (fio), если он вида "Новый клиент +7...".
+ $doc_party['title'] = mask_fio_if_contains_phone($doc_party['title']);
+ $doc_parties[] = $doc_party;
+ }
+ }
+
+ 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[] = [
+ 'object_id' => $doc_obj['id'],
+ 'client_id' => $params['client_id'],
+ 'title' => $doc_obj['nazv'],
+ 'address' => $doc_obj['adres'],
+ ];
+ }
+ }
+
+ $data['document']['parties'] = $doc_parties;
+ }
+ }
+ }
+ }
+ }
+
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'even':
+ $data['title'] = trim($event['name']);
+
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+ $data['schedule_date'] = date('Y-m-d H:i:s', strtotime($event['schedule_date']));
+ $data['schedule_date_string'] = $d . ' ' . getRusMonth($m) . ' ' . $y . ' в ' . date("H:i", strtotime($event['schedule_date']));
+
+ $data['summ'] = floatval($event['sum']);
+ $data['address'] = trim($event['address']);
+ $data['time'] = date("H:i", strtotime($event['create_date']));
+
+ $data['is_completed'] = ($event['calendar_view'] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'step':
+ $data['time'] = date("H:i", strtotime($event['create_date']));
+ $data['title'] = trim($event['name']);
+ $data['is_checklist'] = !($event['checklist'] == 0);
+ $data['is_completed'] = (isset($doers[$event['from_id']]) && $doers[$event['from_id']] == 1);
+ $data['is_cancel'] = ($event['cancel'] == 1);
+ $data['comment'] = trim($event['comment']);
+ break;
+ case 'partner':
+
+ $schedule_date = date("d.m.Y", strtotime($event['schedule_date']));
+ list($d, $m, $y) = explode(".", $schedule_date);
+
+ $doers = [];
+ if (!empty($client->doers)) {
+ $doers_arr = json_decode(html_entity_decode($client->doers));
+ foreach ($doers_arr as $key => $doer) {
+ $doers[$key] = $doer;
+ }
+ } else if ((isset($get['req_id']) && $get['req_id'] > 0) && !empty($client['doers'])) {
+ $doers_arr = json_decode(html_entity_decode($client['doers']));
+ foreach ($doers_arr as $key => $doer) {
+ $doers[$key] = $doer;
+ }
+ }
+
+ $data['comment'] = 'Добавлен к совместной работе.';
+ $data['doers_id'] = $doers;
+ break;
+ }
+
+ $task = [
+ 'id' => intval($event['id']),
+ // Клиент/заявка — не листинг; флаг держим для единообразия формы ответа.
+ 'is_external_listing_event' => false,
+ 'chat_date' => isset($event['chat_date']) ? $event['chat_date'] : null,
+ 'chat_position' => isset($event['chat_position']) ? $event['chat_position'] : null,
+ 'user_id' => intval($from_id),
+ 'user_name' => isset($event['user_fio']) ? $event['user_fio'] : null,
+ 'who_work' => isset($event['who_work']) ? $event['who_work'] : null,
+ 'user_logo' => (!empty($event['user_logo'])) ? $host . '/photos/agency/' . $event['user_logo'] . '?=' . time() : null,
+ 'type' => isset($event['type']) ? $event['type'] : null,
+ 'event' => $data,
+ //'is_new' => $data,
+ 'created_at' => isset($event['create_date']) ? date('Y.m.d H:i:s', strtotime($event['create_date'])) : null,
+ 'time' => isset($event['create_date']) ? date("H:i", strtotime($event['create_date'])) : null,
+ ];
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+
+ if ($need_return && !$error) {
+ return $task;
+ } else if (!$error) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => $user_id,
+ 'section' => $section,
+ 'task' => $task,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+
+ public function setTaskState($app, $get = null, $post = null) {
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
+
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+
+ $body = $app->request->getBody();
+ $data = json_decode(stripcslashes($body), true);
+
+ $object_id = null;
+ if (isset($data['object_id']))
+ $object_id = intval($data['object_id']);
+
+ $client_id = null;
+ if (isset($data['client_id']))
+ $client_id = intval($data['client_id']);
+
+ $requisition_id = null;
+ if (isset($data['requisition_id']))
+ $requisition_id = intval($data['requisition_id']);
+
+ $event_id = null;
+ if (isset($data['event_id']))
+ $event_id = intval($data['event_id']);
+
+ $state = null;
+ if (isset($data['state']))
+ $state = intval($data['state']);
+
+ $action = null;
+ if (isset($data['action']))
+ $action = trim($data['action']);
+
+ $section = null;
+ if(isset($data['section'])){
+ $section = $data['section'];
+ }
+ if (!is_null($event_id)) {
+
+ // Offset-free: событие листинга различаем по явному флагу is_external_listing_event из запроса (echo'ит mJW).
+ // event_id = реальный id в external_listing_events (без смещения; коллизию с id своего объекта снимает флаг).
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
+ if (self::_request_flag($data, 'is_external_listing_event')) {
+
+ $listing_done = false;
+ if ($action == 'state' && !is_null($state)) {
+ $state = $state ? 1 : 0;
+ $listing_done = (bool)mysql_query("UPDATE `external_listing_events` SET `calendar_view` = {$state} WHERE `id` = " . (int)$event_id . \external_listing_events_scope_clause()); // scope агентства — нельзя тогглить чужое событие
+ }
+ // Действие cancel к событиям листинга неприменимо — флага cancel в их таблице нет.
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => $listing_done,
+ 'user_id' => $user_id,
+ 'section' => 'objects',
+ 'tasks' => null,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ if ($action == 'state') {
+ if ($object_id) {
+ $section = 'objects';
+ $sql = "UPDATE `user_object_events` SET `calendar_view` = {$state} WHERE `id` = {$event_id} AND `object_id` = {$object_id}";
+ }
+
+ if ($client_id) {
+ $section = 'clients';
+ $sql = "UPDATE `user_client_events` SET `calendar_view` = {$state} WHERE `id` = {$event_id} AND `client_id` = {$client_id}";
+ }
+
+ if ($requisition_id) {
+ $section = 'requisitions';
+ $sql = "UPDATE `user_client_events` SET `calendar_view` = {$state} WHERE `id` = {$event_id} AND `req_id` = {$requisition_id}";
+ }
+
+ if($section == 'free'){
+ $sql = "UPDATE `user_client_events` SET `calendar_view` = {$state} WHERE `id` = {$event_id}";
+ }
+
+ if (!empty($sql)) {
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ }
+ } else if ($action == 'cancel') {
+
+ if ($client_id) {
+ $section = 'clients';
+ $sql = "UPDATE `user_client_events` SET `cancel` = 1 WHERE `id` = {$event_id} AND `client_id` = {$client_id}";
+ }
+
+ if ($requisition_id) {
+ $section = 'requisitions';
+ $sql = "UPDATE `user_client_events` SET `cancel` = 1 WHERE `id` = {$event_id} AND `req_id` = {$requisition_id}";
+ }
+
+ if($section == 'free'){
+ $sql = "UPDATE `user_client_events` SET `cancel` = 1 WHERE `id` = {$event_id}";
+ }
+
+ if (!empty($sql)) {
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ }
+ }
+
+ if (!$error) {
+
+ $tasks = [];
+ if ($section == 'objects')
+ $tasks = self::getTasks($app, ['object_id' => $object_id], null, true);
+ else if ($section == 'clients')
+ $tasks = self::getTasks($app, ['client_id' => $client_id], null, true);
+ else if ($section == 'requisitions')
+ $tasks = self::getTasks($app, ['requisition_id' => $requisition_id], null, true);
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => $user_id,
+ 'section' => $section,
+ 'tasks' => (!empty($tasks)) ? $tasks : null,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ public function deleteTask($app, $get = null, $post = null) {
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
+
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+
+ $object_id = null;
+ if (isset($get['object_id']))
+ $object_id = intval($get['object_id']);
+
+ $client_id = null;
+ if (isset($get['client_id']))
+ $client_id = intval($get['client_id']);
+
+ $requisition_id = null;
+ if (isset($get['requisition_id']))
+ $requisition_id = intval($get['requisition_id']);
+
+ $event_id = null;
+ if (isset($get['event_id']))
+ $event_id = intval($get['event_id']);
+
+ $section = null;
+ if (!is_null($event_id)) {
+
+ // Offset-free: событие листинга различаем по явному флагу is_external_listing_event из запроса (echo'ит mJW) —
+ // удаляем из external_listing_events по реальному id (event_id, без смещения).
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
+ if (self::_request_flag($get, 'is_external_listing_event')) {
+
+ $listing_where = "`id` = " . (int)$event_id . \external_listing_events_scope_clause(); // scope агентства — нельзя удалить чужое событие листинга
+ // Если фронт прислал и сам листинг (object_id = реальный el.id, флаг is_external) — сверяем принадлежность события.
+ if ($object_id && self::_request_flag($get, 'is_external'))
+ $listing_where .= " AND `external_listing_id` = " . (int)$object_id;
+
+ if (!mysql_query("DELETE FROM `external_listing_events` WHERE " . $listing_where)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => $user_id,
+ 'section' => 'objects',
+ 'tasks' => null,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ if ($object_id) {
+ $section = 'objects';
+ $sql = "DELETE FROM `user_object_events` WHERE `id` = '{$event_id}' AND `object_id` = '{$object_id}'";
+ }
+
+ if ($client_id) {
+ $section = 'clients';
+ $sql = "DELETE FROM `user_client_events` WHERE `id` = '{$event_id}' AND `client_id` = '{$client_id}'";
+ }
+
+ if ($requisition_id) {
+ $section = 'requisitions';
+ $sql = "DELETE FROM `user_client_events` WHERE `id` = '{$event_id}' AND `req_id` = '{$requisition_id}'";
+ }
+
+ if (!empty($sql)) {
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ }
+
+ if (!$error) {
+
+ $tasks = [];
+ if ($section == 'objects')
+ $tasks = self::getTasks($app, ['object_id' => $object_id], null, true);
+ else if ($section == 'clients')
+ $tasks = self::getTasks($app, ['client_id' => $client_id], null, true);
+ else if ($section == 'requisitions')
+ $tasks = self::getTasks($app, ['requisition_id' => $requisition_id], null, true);
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => $user_id,
+ 'section' => $section,
+ 'tasks' => (!empty($tasks)) ? $tasks : null,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ public function addEditTask($app, $get = null, $post = null) {
+
+ $error = false;
+ $sqls = [];
+ $errors = [];
+
+ if ($user_id = intval($_SESSION['id'])) {
+
+ date_default_timezone_set('Europe/Moscow');
+
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+
+ $body = $app->request->getBody();
+ $data = json_decode(stripcslashes($body), true);
+
+ /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', 1);*/
- $event_id = null;
- if (isset($data['event_id']))
- $event_id = intval($data['event_id']);
+ $event_id = null;
+ if (isset($data['event_id']))
+ $event_id = intval($data['event_id']);
- $who_work_event = 0;
- // if(is_null($event_id))
- $who_work_event = (int)$data['who_work'];
+ $who_work_event = 0;
+ // if(is_null($event_id))
+ $who_work_event = (int)$data['who_work'];
- $event_type = null;
- if (isset($data['event_type']))
- $event_type = trim(strtolower($data['event_type']));
+ $event_type = null;
+ if (isset($data['event_type']))
+ $event_type = trim(strtolower($data['event_type']));
- $object_id = null;
- if (isset($data['object_id'])) {
- $object_id = intval($data['object_id']);
- }
+ $object_id = null;
+ if (isset($data['object_id'])) {
+ $object_id = intval($data['object_id']);
+ }
- // Offset-free: листинг и его событие различаем по явным флагам из запроса (echo'ит mJW), а не по диапазону id.
- // is_external — объект-листинг (object_id = реальный el.id); is_external_listing_event — событие листинга (event_id = реальный el event id).
- $is_listing_object = self::_request_flag($data, 'is_external');
- $is_listing_event = self::_request_flag($data, 'is_external_listing_event');
+ // Offset-free: листинг и его событие различаем по явным флагам из запроса (echo'ит mJW), а не по диапазону id.
+ // is_external — объект-листинг (object_id = реальный el.id); is_external_listing_event — событие листинга (event_id = реальный el event id).
+ $is_listing_object = self::_request_flag($data, 'is_external');
+ $is_listing_event = self::_request_flag($data, 'is_external_listing_event');
- $client_id = null;
- if (isset($data['client_id'])) {
- $client_id = intval($data['client_id']);
- }
+ $client_id = null;
+ if (isset($data['client_id'])) {
+ $client_id = intval($data['client_id']);
+ }
- $requisition_id = null;
- if (isset($data['requisition_id'])) {
- $requisition_id = intval($data['requisition_id']);
- }
+ $requisition_id = null;
+ if (isset($data['requisition_id'])) {
+ $requisition_id = intval($data['requisition_id']);
+ }
- $section = null;
- if ($object_id)
- $section = 'objects';
+ $section = null;
+ if ($object_id)
+ $section = 'objects';
- if ($client_id)
- $section = 'clients';
+ if ($client_id)
+ $section = 'clients';
- if ($requisition_id)
- $section = 'requisitions';
- if($section == null){
- if($data['section']){
- $section = $data['section'];
- }
- }
+ if ($requisition_id)
+ $section = 'requisitions';
+ if($section == null){
+ if($data['section']){
+ $section = $data['section'];
+ }
+ }
- $task = null;
- if (isset($data['task']))
- $task = $data['task'];
+ $task = null;
+ if (isset($data['task']))
+ $task = $data['task'];
- if (!empty($section) && !empty($task)) {
+ if (!empty($section) && !empty($task)) {
- $schedule_date = 'NULL';
- if (isset($task['schedule_date'])) {
- if ($date_time = strtotime($task['schedule_date']))
- $schedule_date = date("Y-m-d H:i:s", $date_time);
- }
-
+ $schedule_date = 'NULL';
+ if (isset($task['schedule_date'])) {
+ if ($date_time = strtotime($task['schedule_date']))
+ $schedule_date = date("Y-m-d H:i:s", $date_time);
+ }
- $schedule_date_to = 'NULL';
- if (isset($task['schedule_date_to'])) {
- if ($date_time = strtotime($task['schedule_date_to']))
- $schedule_date_to = date("Y-m-d H:i:s", $date_time);
- }
- $title = '';
- if (isset($task['title']))
- $title = trim($task['title']);
+ $schedule_date_to = 'NULL';
+ if (isset($task['schedule_date_to'])) {
+ if ($date_time = strtotime($task['schedule_date_to']))
+ $schedule_date_to = date("Y-m-d H:i:s", $date_time);
+ }
- $comment = '';
- if (isset($task['comment']))
- $comment = trim($task['comment']);
+ $title = '';
+ if (isset($task['title']))
+ $title = trim($task['title']);
- $summ = 'NULL';
- if (isset($task['summ']))
- $summ = intval($task['summ']);
+ $comment = '';
+ if (isset($task['comment']))
+ $comment = trim($task['comment']);
- $address = 'NULL';
- if (isset($task['address']))
- $address = trim($task['address']);
+ $summ = 'NULL';
+ if (isset($task['summ']))
+ $summ = intval($task['summ']);
- $document_id = 'NULL';
- if (isset($task['document_id']) && $object_id) {
- if ($document = \Docs::fillInnerDocument($task['document_id'], $task['client_id'], $object_id))
- $document_id = $document['doc_id'];
- } else if (isset($task['document_id']) && $client_id) {
- if ($document = \Docs::fillInnerDocument($task['document_id'], $client_id, $task['object_id']))
- $document_id = $document['doc_id'];
- }
+ $address = 'NULL';
+ if (isset($task['address']))
+ $address = trim($task['address']);
- // Хелперы событий найденных листингов парсера (offset-free, ключ — реальный el.id).
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
+ $document_id = 'NULL';
+ if (isset($task['document_id']) && $object_id) {
+ if ($document = \Docs::fillInnerDocument($task['document_id'], $task['client_id'], $object_id))
+ $document_id = $document['doc_id'];
+ } else if (isset($task['document_id']) && $client_id) {
+ if ($document = \Docs::fillInnerDocument($task['document_id'], $client_id, $task['object_id']))
+ $document_id = $document['doc_id'];
+ }
- // Найденный листинг парсера: события живут в external_listing_events (ключ — реальный el.id, без смещения).
- // Признак листинга/его события — явные флаги из запроса (echo'ит mJW); object_id/event_id — реальные id.
- // При создании наружу возвращаем реальный id + is_external_listing_event=true (см. ответ ниже).
- if ($object_id && $section == 'objects' && $is_listing_object) {
+ // Хелперы событий найденных листингов парсера (offset-free, ключ — реальный el.id).
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
- if ($event_type == 'deal' || $event_type == 'file') {
- // На найденном листинге недоступны: сделка (сначала копирование в свои объекты) и прикрепление файла
- // (read-only, clients_files к листингу не привязываем). UI оба пункта прячет; это серверный гард.
- $error = true;
- $errors[] = ($event_type == 'file') ? 'Прикрепление файлов к найденному листингу недоступно' : 'Сделка на найденном листинге недоступна';
- } else if ($event_id && $is_listing_event && $event_type) {
- // Правка существующего события листинга (набор полей — как у обычного объекта).
- $listing_fields = [
- 'schedule_date' => ($schedule_date === 'NULL') ? 'NULL' : "'" . $schedule_date . "'",
- 'comment' => "'" . mysql_real_escape_string($comment) . "'",
- 'address' => ($address === 'NULL' || $address === '') ? 'NULL' : "'" . mysql_real_escape_string($address) . "'",
- 'name' => ($title !== '') ? "'" . mysql_real_escape_string($title) . "'" : 'NULL',
- ];
- if (!\update_external_listing_event((int)$event_id, $listing_fields)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else if (!$event_id && $event_type) {
- // Новое событие на листинге: ответственный — выбранный исполнитель либо автор (владельца у листинга нет).
- $who_work_id = ($who_work_event > 0) ? $who_work_event : $user_id;
- $inserted_id = \insert_external_listing_event(
- (int)$object_id,
- $who_work_id,
- $user_id,
- $event_type,
- ($comment !== '') ? $comment : null,
- ($address !== 'NULL' && $address !== '') ? $address : null,
- ($schedule_date !== 'NULL') ? "'" . $schedule_date . "'" : null,
- ($title !== '') ? $title : null
- );
- if ($inserted_id === false) {
- $error = true;
- $errors[] = mysql_error();
- } else {
- // Наружу id события — реальный e.id (offset-free); признак листинга вернём флагом is_external_listing_event.
- $event_id = (int)$inserted_id;
- }
- } else {
- // Несогласованные идентификаторы: правка события листинга требует флага is_external_listing_event при заданном event_id.
- $error = true;
- $errors[] = 'Некорректный id события листинга';
- }
+ // Найденный листинг парсера: события живут в external_listing_events (ключ — реальный el.id, без смещения).
+ // Признак листинга/его события — явные флаги из запроса (echo'ит mJW); object_id/event_id — реальные id.
+ // При создании наружу возвращаем реальный id + is_external_listing_event=true (см. ответ ниже).
+ if ($object_id && $section == 'objects' && $is_listing_object) {
- } else if ($object_id && $section == 'objects') {
+ if ($event_type == 'deal' || $event_type == 'file') {
+ // На найденном листинге недоступны: сделка (сначала копирование в свои объекты) и прикрепление файла
+ // (read-only, clients_files к листингу не привязываем). UI оба пункта прячет; это серверный гард.
+ $error = true;
+ $errors[] = ($event_type == 'file') ? 'Прикрепление файлов к найденному листингу недоступно' : 'Сделка на найденном листинге недоступна';
+ } else if ($event_id && $is_listing_event && $event_type) {
+ // Правка существующего события листинга (набор полей — как у обычного объекта).
+ $listing_fields = [
+ 'schedule_date' => ($schedule_date === 'NULL') ? 'NULL' : "'" . $schedule_date . "'",
+ 'comment' => "'" . mysql_real_escape_string($comment) . "'",
+ 'address' => ($address === 'NULL' || $address === '') ? 'NULL' : "'" . mysql_real_escape_string($address) . "'",
+ 'name' => ($title !== '') ? "'" . mysql_real_escape_string($title) . "'" : 'NULL',
+ ];
+ if (!\update_external_listing_event((int)$event_id, $listing_fields)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else if (!$event_id && $event_type) {
+ // Новое событие на листинге: ответственный — выбранный исполнитель либо автор (владельца у листинга нет).
+ $who_work_id = ($who_work_event > 0) ? $who_work_event : $user_id;
+ $inserted_id = \insert_external_listing_event(
+ (int)$object_id,
+ $who_work_id,
+ $user_id,
+ $event_type,
+ ($comment !== '') ? $comment : null,
+ ($address !== 'NULL' && $address !== '') ? $address : null,
+ ($schedule_date !== 'NULL') ? "'" . $schedule_date . "'" : null,
+ ($title !== '') ? $title : null
+ );
+ if ($inserted_id === false) {
+ $error = true;
+ $errors[] = mysql_error();
+ } else {
+ // Наружу id события — реальный e.id (offset-free); признак листинга вернём флагом is_external_listing_event.
+ $event_id = (int)$inserted_id;
+ }
+ } else {
+ // Несогласованные идентификаторы: правка события листинга требует флага is_external_listing_event при заданном event_id.
+ $error = true;
+ $errors[] = 'Некорректный id события листинга';
+ }
- $sql = "SELECT `id_add_user` FROM `objects` WHERE `id` = '$object_id'";
+ } else if ($object_id && $section == 'objects') {
- $who_work_id = intval($user_id);
+ $sql = "SELECT `id_add_user` FROM `objects` WHERE `id` = '$object_id'";
- $sqls[] = $sql;
- if ($query = mysql_query($sql)) {
- $obj = mysql_fetch_assoc($query);
- if ($obj['id_add_user'] > 0) {
- $who_work_id = intval($obj['id_add_user']);
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $who_work_id = intval($user_id);
- if($who_work_event > 0){
- $who_work_id = $who_work_event;
- }
+ $sqls[] = $sql;
+ if ($query = mysql_query($sql)) {
+ $obj = mysql_fetch_assoc($query);
+ if ($obj['id_add_user'] > 0) {
+ $who_work_id = intval($obj['id_add_user']);
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $calendar_view = 0;
- /*if ($user_id == $from_id)
+ if($who_work_event > 0){
+ $who_work_id = $who_work_event;
+ }
+
+ $calendar_view = 0;
+ /*if ($user_id == $from_id)
$calendar_view = 1;*/
- $user_object_events = [
- 'user_id' => $who_work_id,
- 'from_id' => $user_id,
+ $user_object_events = [
+ 'user_id' => $who_work_id,
+ 'from_id' => $user_id,
- 'object_id' => ($object_id) ? $object_id : 'NULL',
+ 'object_id' => ($object_id) ? $object_id : 'NULL',
- 'type' => $event_type,
- 'sum' => $summ,
- 'address' => $address,
- 'comment' => $comment,
- 'name' => ($title) ? $title : null,
+ 'type' => $event_type,
+ 'sum' => $summ,
+ 'address' => $address,
+ 'comment' => $comment,
+ 'name' => ($title) ? $title : null,
- 'document_id' => ($document_id) ? $document_id : 'NULL',
+ 'document_id' => ($document_id) ? $document_id : 'NULL',
- 'schedule_date' => $schedule_date,
- 'calendar_view' => $calendar_view,
- 'create_date' => date('Y-m-d H:i:s'),
- ];
+ 'schedule_date' => $schedule_date,
+ 'calendar_view' => $calendar_view,
+ 'create_date' => date('Y-m-d H:i:s'),
+ ];
- if ($event_id && $event_type) {
+ if ($event_id && $event_type) {
- $db_values = [];
- foreach ($user_object_events as $key => $value) {
+ $db_values = [];
+ foreach ($user_object_events as $key => $value) {
- if ($key == 'client_id' && is_null($value))
- $db_values[] = "0";
- else if (is_null($value))
- $db_values[] = "`$key` = NULL";
- else if (!$value || $value === 0)
- $db_values[] = "`$key` = 0";
- else if (is_int($value))
- $db_values[] = "`$key` = $value";
- else
- $db_values[] = "`$key` = '$value'";
+ if ($key == 'client_id' && is_null($value))
+ $db_values[] = "0";
+ else if (is_null($value))
+ $db_values[] = "`$key` = NULL";
+ else if (!$value || $value === 0)
+ $db_values[] = "`$key` = 0";
+ else if (is_int($value))
+ $db_values[] = "`$key` = $value";
+ else
+ $db_values[] = "`$key` = '$value'";
- }
+ }
- $sql = "UPDATE `user_object_events`";
- $sql .= " SET " . implode(',', $db_values);
- $sql .= " WHERE `id` = '$event_id' AND `type` = '$event_type'";
- } else if ($event_type) {
- $db_keys = [];
- $db_values = [];
- foreach ($user_object_events as $key => $value) {
+ $sql = "UPDATE `user_object_events`";
+ $sql .= " SET " . implode(',', $db_values);
+ $sql .= " WHERE `id` = '$event_id' AND `type` = '$event_type'";
+ } else if ($event_type) {
+ $db_keys = [];
+ $db_values = [];
+ foreach ($user_object_events as $key => $value) {
- $db_keys[] = "`$key`";
+ $db_keys[] = "`$key`";
- if ($key == 'client_id' && is_null($value))
- $db_values[] = "0";
- else if (is_null($value))
- $db_values[] = "NULL";
- else if (!$value || $value === 0)
- $db_values[] = "0";
- else if (is_int($value))
- $db_values[] = "$value";
- else
- $db_values[] = "'$value'";
+ if ($key == 'client_id' && is_null($value))
+ $db_values[] = "0";
+ else if (is_null($value))
+ $db_values[] = "NULL";
+ else if (!$value || $value === 0)
+ $db_values[] = "0";
+ else if (is_int($value))
+ $db_values[] = "$value";
+ else
+ $db_values[] = "'$value'";
- }
+ }
- $sql = "INSERT INTO `user_object_events`";
- $sql .= " (" . implode(',', $db_keys) . ")";
- $sql .= " VALUES (" . implode(',', $db_values) . ")";
- }
+ $sql = "INSERT INTO `user_object_events`";
+ $sql .= " (" . implode(',', $db_keys) . ")";
+ $sql .= " VALUES (" . implode(',', $db_values) . ")";
+ }
- $sqls[] = $sql;
- if ($query = mysql_query($sql)) {
+ $sqls[] = $sql;
+ if ($query = mysql_query($sql)) {
- if (!$event_id)
- $event_id = mysql_insert_id();
+ if (!$event_id)
+ $event_id = mysql_insert_id();
- if ($event_type == 'file' && !empty($task['files'])) {
- foreach($task['files'] as $file) {
+ if ($event_type == 'file' && !empty($task['files'])) {
+ foreach($task['files'] as $file) {
- $guid = $file['guid'];
- $extension = $file['type'];
- $filename = $file['name'];
- $sql = "INSERT INTO `names_client_files` SET `name` = '{$filename}'";
- $sqls[] = $sql;
- if (mysql_query($sql)) {
+ $guid = $file['guid'];
+ $extension = $file['type'];
+ $filename = $file['name'];
+ $sql = "INSERT INTO `names_client_files` SET `name` = '{$filename}'";
+ $sqls[] = $sql;
+ if (mysql_query($sql)) {
- $id_name = mysql_insert_id();
+ $id_name = mysql_insert_id();
- $sql = "UPDATE `clients_files` SET `name_id` = {$id_name} WHERE `event_id` = {$event_id}";
- $sqls[] = $sql;
- if ($query = mysql_query($sql)) {
- if (mysql_affected_rows($query) == 0 && $guid && $extension && $filename) {
+ $sql = "UPDATE `clients_files` SET `name_id` = {$id_name} WHERE `event_id` = {$event_id}";
+ $sqls[] = $sql;
+ if ($query = mysql_query($sql)) {
+ if (mysql_affected_rows($query) == 0 && $guid && $extension && $filename) {
- if ($object_id > 0) {
- $sql = "INSERT INTO clients_files (guid, object_id, type, name, event_id, name_id)
+ if ($object_id > 0) {
+ $sql = "INSERT INTO clients_files (guid, object_id, type, name, event_id, name_id)
VALUES ('{$guid}', '{$object_id}', '{$extension}', '{$filename}', '{$event_id}', {$id_name})";
- }
+ }
- $sqls[] = $sql;
- if (!empty($sql)) {
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ $sqls[] = $sql;
+ if (!empty($sql)) {
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
- $client = mysql_fetch_assoc($query);
- if ($client['who_work'] > 0 && $client['doer_clients'] == 0) {
- $who_work_id = intval($client['who_work']);
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $client = mysql_fetch_assoc($query);
+ if ($client['who_work'] > 0 && $client['doer_clients'] == 0) {
+ $who_work_id = intval($client['who_work']);
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- } else if (($client_id && $section == 'clients') || ($requisition_id && $section == 'requisitions')) {
+ } else if (($client_id && $section == 'clients') || ($requisition_id && $section == 'requisitions')) {
- $sql = "SELECT * FROM clients WHERE id = '$client_id'";
+ $sql = "SELECT * FROM clients WHERE id = '$client_id'";
- if ($requisition_id > 0)
- $sql = "SELECT * FROM requisitions WHERE id = '$requisition_id'";
+ if ($requisition_id > 0)
+ $sql = "SELECT * FROM requisitions WHERE id = '$requisition_id'";
- $funnel_id = 0;
- $step_id_event = 0;
- $who_work_id = intval($user_id);
+ $funnel_id = 0;
+ $step_id_event = 0;
+ $who_work_id = intval($user_id);
- $sqls[] = $sql;
- if ($query = mysql_query($sql)) {
+ $sqls[] = $sql;
+ if ($query = mysql_query($sql)) {
- $client = mysql_fetch_assoc($query);
- if ($client['who_work'] > 0 && $client['doer_clients'] == 0) {
- $who_work_id = intval($client['who_work']);
- }
- $funnel_id = (int)$client['funnel_id'];
- $step_id_event = (int)$client['step_id'];
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $client = mysql_fetch_assoc($query);
+ if ($client['who_work'] > 0 && $client['doer_clients'] == 0) {
+ $who_work_id = intval($client['who_work']);
+ }
+ $funnel_id = (int)$client['funnel_id'];
+ $step_id_event = (int)$client['step_id'];
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if($who_work_event > 0){
- $who_work_id = $who_work_event;
- }
+ if($who_work_event > 0){
+ $who_work_id = $who_work_event;
+ }
- $calendar_view = 0;
+ $calendar_view = 0;
- if ($event_type) {
- if ($event_type == 'partner_id' && isset($task['partner_id'])) {
+ if ($event_type) {
+ if ($event_type == 'partner_id' && isset($task['partner_id'])) {
- $doers = $task['partner_id'];
- $doers_old = [];
+ $doers = $task['partner_id'];
+ $doers_old = [];
- $sql = "SELECT c.doers, c.doers_confirm, c.funnel_id, c.stage, c.step_id, c.deleted, c.who_work, f.name
+ $sql = "SELECT c.doers, c.doers_confirm, c.funnel_id, c.stage, c.step_id, c.deleted, c.who_work, f.name
FROM clients as c
LEFT JOIN funnel_steps as f on f.id = c.step_id
WHERE c.id = ".$client_id;
- if ($requisition_id > 0) {
- $sql = "SELECT c.doers, c.doers_confirm, c.funnel_id, c.stage, c.step_id, c.deleted, c.who_work, f.name
+ if ($requisition_id > 0) {
+ $sql = "SELECT c.doers, c.doers_confirm, c.funnel_id, c.stage, c.step_id, c.deleted, c.who_work, f.name
FROM requisitions as c
LEFT JOIN funnel_steps as f on f.id = c.step_id
WHERE c.id = ".$requisition_id;
- }
+ }
- if ($query = mysql_query($sql)) {
+ if ($query = mysql_query($sql)) {
- $client = mysql_fetch_assoc($query);
- if (!empty($client['doers']))
- $doers_old = json_decode(html_entity_decode($client['doers']), true);
+ $client = mysql_fetch_assoc($query);
+ if (!empty($client['doers']))
+ $doers_old = json_decode(html_entity_decode($client['doers']), true);
- $confirm = 1;
+ $confirm = 1;
- $stages = [
- 1 => "Новый",
- 2 => "В работе",
- 3 => "Презентация",
- 4 => "Показ",
- 5 => "Бронь",
- 6 => "Подаем на ипотеку",
- 7 => "Сделка",
- 8 => "Закрыт"
- ];
+ $stages = [
+ 1 => "Новый",
+ 2 => "В работе",
+ 3 => "Презентация",
+ 4 => "Показ",
+ 5 => "Бронь",
+ 6 => "Подаем на ипотеку",
+ 7 => "Сделка",
+ 8 => "Закрыт"
+ ];
- $agency = [];
- if (isset($doers_old[$user_id]))
- $agency[$user_id] = 1;
+ $agency = [];
+ if (isset($doers_old[$user_id]))
+ $agency[$user_id] = 1;
- foreach($doers as $doer) {
+ foreach($doers as $doer) {
- if (isset($doer->code))
- $doer = $doer->code;
+ if (isset($doer->code))
+ $doer = $doer->code;
- if ($doer != $user_id) {
+ if ($doer != $user_id) {
- if (isset($doers_old[$doer])) {
- $agency[$doer] = $doers_old[$doer];
- } else {
+ if (isset($doers_old[$doer])) {
+ $agency[$doer] = $doers_old[$doer];
+ } else {
- $agency[$doer] = 0;
- $confirm = 0;
+ $agency[$doer] = 0;
+ $confirm = 0;
- $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$user_id.", ".$client_id.", ".$doer.", 'transmitted_parallel')";
+ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$user_id.", ".$client_id.", ".$doer.", 'transmitted_parallel')";
- if ($requisition_id > 0)
- $sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`) VALUES (".$user_id.", ".$requisition_id.", ".$doer.", 'transmitted_parallel')";
+ if ($requisition_id > 0)
+ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`) VALUES (".$user_id.", ".$requisition_id.", ".$doer.", 'transmitted_parallel')";
- if (!mysql_query($sql_conf)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ if (!mysql_query($sql_conf)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if ($client['funnel_id'] == 0) {
- $step_id = $client['stage'];
- $step_name = $stages[$step_id];
- } else {
- $step_id = $client['step_id'];
- $step_name = $client['name'];
- }
+ if ($client['funnel_id'] == 0) {
+ $step_id = $client['stage'];
+ $step_name = $stages[$step_id];
+ } else {
+ $step_id = $client['step_id'];
+ $step_name = $client['name'];
+ }
- if (!$step_id)
- $step_id = 0;
+ if (!$step_id)
+ $step_id = 0;
- if (!$step_name)
- $step_name = '';
+ if (!$step_name)
+ $step_name = '';
- $sql_step = "INSERT INTO `doers_emp_client` (`user_id`, `doer_id`, `who_work`, `client_id`, `funnel_id`, `step_id`, `step_name`,`start_date`) VALUES (".$user_id.", ".$doer.",".$client['who_work'].", ".$client_id.", ".$client['funnel_id'].", ".$step_id.", '".$step_name."', '".date('Y-m-d H:i:s')."')";
- if ($requisition_id > 0)
- $sql_step = "INSERT INTO `doers_emp_client` (`user_id`, `doer_id`, `who_work`, `req_id`, `funnel_id`, `step_id`, `step_name`,`start_date`) VALUES (".$user_id.", ".$doer.",".$client['who_work'].", ".$requisition_id.", ".$client['funnel_id'].", ".$step_id.", '".$step_name."', '".date('Y-m-d H:i:s')."')";
+ $sql_step = "INSERT INTO `doers_emp_client` (`user_id`, `doer_id`, `who_work`, `client_id`, `funnel_id`, `step_id`, `step_name`,`start_date`) VALUES (".$user_id.", ".$doer.",".$client['who_work'].", ".$client_id.", ".$client['funnel_id'].", ".$step_id.", '".$step_name."', '".date('Y-m-d H:i:s')."')";
+ if ($requisition_id > 0)
+ $sql_step = "INSERT INTO `doers_emp_client` (`user_id`, `doer_id`, `who_work`, `req_id`, `funnel_id`, `step_id`, `step_name`,`start_date`) VALUES (".$user_id.", ".$doer.",".$client['who_work'].", ".$requisition_id.", ".$client['funnel_id'].", ".$step_id.", '".$step_name."', '".date('Y-m-d H:i:s')."')";
- if (!mysql_query($sql_step)) {
- $error = true;
- $errors[] = mysql_error();
- $errors[] = $sql_step;
- }
- }
- }
- }
+ if (!mysql_query($sql_step)) {
+ $error = true;
+ $errors[] = mysql_error();
+ $errors[] = $sql_step;
+ }
+ }
+ }
+ }
- foreach($doers_old as $doer_id => $doer) {
+ foreach($doers_old as $doer_id => $doer) {
- if (!isset($agency[$doer_id])) {
- $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$user_id.", ".$client_id.", ".$doer_id.", 'parallel_del', 1, 1)";
+ if (!isset($agency[$doer_id])) {
+ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$user_id.", ".$client_id.", ".$doer_id.", 'parallel_del', 1, 1)";
- if ($requisition_id > 0)
- $sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$user_id.", ".$requisition_id.", ".$doer_id.", 'parallel_del', 1, 1)";
+ if ($requisition_id > 0)
+ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$user_id.", ".$requisition_id.", ".$doer_id.", 'parallel_del', 1, 1)";
- if (!mysql_query($sql_conf)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ if (!mysql_query($sql_conf)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $sql_s = "SELECT id FROM doers_emp_client WHERE user_id = ".$user_id." and client_id=".$client_id." and doer_id = ".$doer_id." ORDER BY id desc";
+ $sql_s = "SELECT id FROM doers_emp_client WHERE user_id = ".$user_id." and client_id=".$client_id." and doer_id = ".$doer_id." ORDER BY id desc";
- if ($requisition_id > 0)
- $sql_s = "SELECT id FROM doers_emp_client WHERE user_id = ".$user_id." and req_id=".$requisition_id." and doer_id = ".$doer_id." ORDER BY id desc";
+ if ($requisition_id > 0)
+ $sql_s = "SELECT id FROM doers_emp_client WHERE user_id = ".$user_id." and req_id=".$requisition_id." and doer_id = ".$doer_id." ORDER BY id desc";
- if ($q_s = mysql_query($sql_s)) {
+ if ($q_s = mysql_query($sql_s)) {
- $r_s = mysql_fetch_assoc($q_s);
+ $r_s = mysql_fetch_assoc($q_s);
- $sql_up = "UPDATE doers_emp_client SET end_date = '".date('Y-m-d H:i:s')."' WHERE id = ".$r_s['id'];
- if (!mysql_query($sql_up)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ $sql_up = "UPDATE doers_emp_client SET end_date = '".date('Y-m-d H:i:s')."' WHERE id = ".$r_s['id'];
+ if (!mysql_query($sql_up)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
- $count = 0;
- foreach($agency as $key => $agent) {
- if ($key != $user_id) {
- $count++;
- }
- }
+ $count = 0;
+ foreach($agency as $key => $agent) {
+ if ($key != $user_id) {
+ $count++;
+ }
+ }
- $doers_up = self::clearInput(json_encode($agency));
- $doer_clients = 1;
- if ($count == 0) {
- $doers_up = '';
- $doer_clients = 0;
- }
+ $doers_up = self::clearInput(json_encode($agency));
+ $doer_clients = 1;
+ if ($count == 0) {
+ $doers_up = '';
+ $doer_clients = 0;
+ }
- $sql = "UPDATE clients SET doers_confirm = ".$confirm.", doer_clients = ".$doer_clients.", doers = '". $doers_up."' WHERE id = ".$client_id;
- if ($requisition_id > 0)
- $sql = "UPDATE requisitions SET doers_confirm = ".$confirm.", doer_clients = ".$doer_clients.", doers = '". $doers_up."' WHERE id = ".$requisition_id;
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ $sql = "UPDATE clients SET doers_confirm = ".$confirm.", doer_clients = ".$doer_clients.", doers = '". $doers_up."' WHERE id = ".$client_id;
+ if ($requisition_id > 0)
+ $sql = "UPDATE requisitions SET doers_confirm = ".$confirm.", doer_clients = ".$doer_clients.", doers = '". $doers_up."' WHERE id = ".$requisition_id;
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- } else {
- $user_client_events = [
- 'user_id' => $who_work_id,
- 'from_id' => $user_id,
+ } else {
+ $user_client_events = [
+ 'user_id' => $who_work_id,
+ 'from_id' => $user_id,
- 'client_id' => ($client_id) ? $client_id : 0,
- 'req_id' => ($requisition_id) ? $requisition_id : 0,
+ 'client_id' => ($client_id) ? $client_id : 0,
+ 'req_id' => ($requisition_id) ? $requisition_id : 0,
- 'type' => $event_type,
- 'sum' => ($summ) ? $summ : null,
- 'address' => ($address) ? $address : null,
+ 'type' => $event_type,
+ 'sum' => ($summ) ? $summ : null,
+ 'address' => ($address) ? $address : null,
- 'document_id' => ($document_id) ? $document_id : null,
+ 'document_id' => ($document_id) ? $document_id : null,
- 'name' => ($title) ? $title : null,
+ 'name' => ($title) ? $title : null,
- 'comment' => $comment,
+ 'comment' => $comment,
- 'schedule_date' => ($schedule_date) ? $schedule_date : null,
- 'schedule_date_to' => ($schedule_date_to) ? $schedule_date_to : null,
+ 'schedule_date' => ($schedule_date) ? $schedule_date : null,
+ 'schedule_date_to' => ($schedule_date_to) ? $schedule_date_to : null,
- 'calendar_view' => $calendar_view,
- 'tracking' => (isset($task['is_tracking']) ? intval($task['is_tracking']) : 0),
- 'create_date' => date('Y-m-d H:i:s'),
- ];
+ 'calendar_view' => $calendar_view,
+ 'tracking' => (isset($task['is_tracking']) ? intval($task['is_tracking']) : 0),
+ 'create_date' => date('Y-m-d H:i:s'),
+ ];
- /*if ($_SESSION['id'] == 5427)
+ /*if ($_SESSION['id'] == 5427)
var_export($user_client_events) && die();*/
- if ($event_id) {
+ if ($event_id) {
- $db_values = [];
- foreach ($user_client_events as $key => $value) {
+ $db_values = [];
+ foreach ($user_client_events as $key => $value) {
- if (is_null($value) || ($value === 'NULL'))
- $db_values[] = "`$key` = NULL";
- else if (!$value)
- $db_values[] = "`$key` = 0";
- else if (is_int($value))
- $db_values[] = "`$key` = $value";
- else
- $db_values[] = "`$key` = '$value'";
+ if (is_null($value) || ($value === 'NULL'))
+ $db_values[] = "`$key` = NULL";
+ else if (!$value)
+ $db_values[] = "`$key` = 0";
+ else if (is_int($value))
+ $db_values[] = "`$key` = $value";
+ else
+ $db_values[] = "`$key` = '$value'";
- }
+ }
- $sql = "UPDATE `user_client_events`";
- $sql .= " SET " . implode(',', $db_values);
- $sql .= " WHERE `id` = '$event_id' AND `type` = '$event_type'";
- } else {
- $user_client_events['funnel_id'] = $funnel_id;
- $user_client_events['step_id'] = $step_id_event;
- $db_keys = [];
- $db_values = [];
- foreach ($user_client_events as $key => $value) {
+ $sql = "UPDATE `user_client_events`";
+ $sql .= " SET " . implode(',', $db_values);
+ $sql .= " WHERE `id` = '$event_id' AND `type` = '$event_type'";
+ } else {
+ $user_client_events['funnel_id'] = $funnel_id;
+ $user_client_events['step_id'] = $step_id_event;
+ $db_keys = [];
+ $db_values = [];
+ foreach ($user_client_events as $key => $value) {
- $db_keys[] = "`$key`";
+ $db_keys[] = "`$key`";
- if (is_null($value) || ($value === 'NULL'))
- $db_values[] = "NULL";
- else if (!$value)
- $db_values[] = "0";
- else if (is_int($value))
- $db_values[] = "$value";
- else
- $db_values[] = "'$value'";
+ if (is_null($value) || ($value === 'NULL'))
+ $db_values[] = "NULL";
+ else if (!$value)
+ $db_values[] = "0";
+ else if (is_int($value))
+ $db_values[] = "$value";
+ else
+ $db_values[] = "'$value'";
- }
+ }
- $sql = "INSERT INTO `user_client_events`";
- $sql .= " (" . implode(',', $db_keys) . ")";
- $sql .= " VALUES (" . implode(',', $db_values) . ")";
- }
+ $sql = "INSERT INTO `user_client_events`";
+ $sql .= " (" . implode(',', $db_keys) . ")";
+ $sql .= " VALUES (" . implode(',', $db_values) . ")";
+ }
- $sqls[] = $sql;
- if (mysql_query($sql)) {
+ $sqls[] = $sql;
+ if (mysql_query($sql)) {
- if (!$event_id)
- $event_id = mysql_insert_id();
+ if (!$event_id)
+ $event_id = mysql_insert_id();
- if ($event_type == 'deal' && isset($task['schedule_date'])) {
- $date = \DateTime::createFromFormat('Y-m-d H:i', $task['schedule_date']);
- $dop_text = "Запланирована сделка на " . date("Y-m-d H:i:s", $date->getTimestamp());
+ if ($event_type == 'deal' && isset($task['schedule_date'])) {
+ $date = \DateTime::createFromFormat('Y-m-d H:i', $task['schedule_date']);
+ $dop_text = "Запланирована сделка на " . date("Y-m-d H:i:s", $date->getTimestamp());
- if (!is_null($document)) {
- $dop_text .= ", сформирован документ: " . '
+ if (!is_null($document)) {
+ $dop_text .= ", сформирован документ: " . '
' . $document['doc_name'] . '
.';
- } else {
- $dop_text .= ".";
- }
+ } else {
+ $dop_text .= ".";
+ }
- $dop_text .= "
От ";
+ $dop_text .= "
От ";
- $events_clients = [
- 'user_id' => $who_work_id,
- 'from_id' => $user_id,
+ $events_clients = [
+ 'user_id' => $who_work_id,
+ 'from_id' => $user_id,
- 'client_id' => $client_id || 'NULL',
- 'req_id' => $requisition_id || 'NULL',
+ 'client_id' => $client_id || 'NULL',
+ 'req_id' => $requisition_id || 'NULL',
- 'event' => 'add_deal',
- 'dop_text' => "'$dop_text'",
- 'read' => '1',
- ];
+ 'event' => 'add_deal',
+ 'dop_text' => "'$dop_text'",
+ 'read' => '1',
+ ];
- $db_keys = [];
- $db_values = [];
- foreach ($events_clients as $key => $value) {
+ $db_keys = [];
+ $db_values = [];
+ foreach ($events_clients as $key => $value) {
- $db_keys[] = "`$key`";
+ $db_keys[] = "`$key`";
- if (is_null($value))
- $db_values[] = "NULL";
- else if (!$value || $value === 0)
- $db_values[] = "0";
- else if (is_int($value))
- $db_values[] = "$value";
- else
- $db_values[] = "'$value'";
+ if (is_null($value))
+ $db_values[] = "NULL";
+ else if (!$value || $value === 0)
+ $db_values[] = "0";
+ else if (is_int($value))
+ $db_values[] = "$value";
+ else
+ $db_values[] = "'$value'";
- }
+ }
- $sql = "INSERT INTO `events_clients`";
- $sql .= " (" . implode(',', $db_keys) . ")";
- $sql .= " VALUES (" . implode(',', $db_values) . ")";
+ $sql = "INSERT INTO `events_clients`";
+ $sql .= " (" . implode(',', $db_keys) . ")";
+ $sql .= " VALUES (" . implode(',', $db_values) . ")";
- $sqls[] = $sql;
- if (mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else if ($event_type == 'file' && !empty($task['files'])) {
- foreach($task['files'] as $file) {
+ $sqls[] = $sql;
+ if (mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else if ($event_type == 'file' && !empty($task['files'])) {
+ foreach($task['files'] as $file) {
- $guid = $file['guid'];
- $extension = $file['type'];
- $filename = $file['name'];
- $sql = "INSERT INTO `names_client_files` SET `name` = '{$filename}'";
- $sqls[] = $sql;
- if (mysql_query($sql)) {
+ $guid = $file['guid'];
+ $extension = $file['type'];
+ $filename = $file['name'];
+ $sql = "INSERT INTO `names_client_files` SET `name` = '{$filename}'";
+ $sqls[] = $sql;
+ if (mysql_query($sql)) {
- $id_name = mysql_insert_id();
+ $id_name = mysql_insert_id();
- $sql = "UPDATE `clients_files` SET `name_id` = {$id_name} WHERE `event_id` = {$event_id}";
- $sqls[] = $sql;
- if ($query = mysql_query($sql)) {
- if (mysql_affected_rows($query) == 0 && $guid && $extension && $filename) {
- if ($client_id > 0) {
- $sql = "INSERT INTO clients_files (guid, client_id, type, name, event_id, name_id)
+ $sql = "UPDATE `clients_files` SET `name_id` = {$id_name} WHERE `event_id` = {$event_id}";
+ $sqls[] = $sql;
+ if ($query = mysql_query($sql)) {
+ if (mysql_affected_rows($query) == 0 && $guid && $extension && $filename) {
+ if ($client_id > 0) {
+ $sql = "INSERT INTO clients_files (guid, client_id, type, name, event_id, name_id)
VALUES ('{$guid}', '{$client_id}', '{$extension}', '{$filename}', '{$event_id}', {$id_name})";
- } else if ($requisition_id > 0) {
- $sql = "INSERT INTO clients_files (guid, req_id, type, name, event_id, name_id)
+ } else if ($requisition_id > 0) {
+ $sql = "INSERT INTO clients_files (guid, req_id, type, name, event_id, name_id)
VALUES ('{$guid}', '{$requisition_id}', '{$extension}', '{$filename}', '{$event_id}', {$id_name})";
- } else if ($object_id > 0) {
- $sql = "INSERT INTO clients_files (guid, object_id, type, name, event_id, name_id)
+ } else if ($object_id > 0) {
+ $sql = "INSERT INTO clients_files (guid, object_id, type, name, event_id, name_id)
VALUES ('{$guid}', '{$object_id}', '{$extension}', '{$filename}', '{$event_id}', {$id_name})";
- }
+ }
- $sqls[] = $sql;
- if (!empty($sql)) {
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
+ $sqls[] = $sql;
+ if (!empty($sql)) {
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
- } else {
- $error = true;
- $sqls[] = $sql;
- $errors[] = mysql_error();
- }
- }
- }
- } else if($section == 'free'){
- if(!empty($data['responsibles'])){
- $userIds = $data['responsibles'];
- foreach($userIds as $who_work_id){
- $calendar_view = 0;
- $user_client_events = [
- 'user_id' => $who_work_id,
- 'from_id' => $user_id,
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $sqls[] = $sql;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+ } else if($section == 'free'){
+ if(!empty($data['responsibles'])){
+ $userIds = $data['responsibles'];
+ foreach($userIds as $who_work_id){
+ $calendar_view = 0;
+ $user_client_events = [
+ 'user_id' => $who_work_id,
+ 'from_id' => $user_id,
- 'client_id' => ($client_id) ? $client_id : 0,
- 'req_id' => ($requisition_id) ? $requisition_id : 0,
+ 'client_id' => ($client_id) ? $client_id : 0,
+ 'req_id' => ($requisition_id) ? $requisition_id : 0,
- 'type' => $event_type,
- 'sum' => ($summ) ? $summ : null,
- 'address' => ($address) ? $address : null,
+ 'type' => $event_type,
+ 'sum' => ($summ) ? $summ : null,
+ 'address' => ($address) ? $address : null,
- 'document_id' => ($document_id) ? $document_id : null,
+ 'document_id' => ($document_id) ? $document_id : null,
- 'name' => ($title) ? $title : null,
+ 'name' => ($title) ? $title : null,
- 'comment' => $comment,
+ 'comment' => $comment,
- 'schedule_date' => ($schedule_date) ? $schedule_date : null,
- 'schedule_date_to' => ($schedule_date_to) ? $schedule_date_to : null,
+ 'schedule_date' => ($schedule_date) ? $schedule_date : null,
+ 'schedule_date_to' => ($schedule_date_to) ? $schedule_date_to : null,
- 'calendar_view' => $calendar_view,
- 'tracking' => (isset($task['is_tracking']) ? intval($task['is_tracking']) : 0),
- 'create_date' => date('Y-m-d H:i:s'),
- ];
+ 'calendar_view' => $calendar_view,
+ 'tracking' => (isset($task['is_tracking']) ? intval($task['is_tracking']) : 0),
+ 'create_date' => date('Y-m-d H:i:s'),
+ ];
- if ($event_id) {
+ if ($event_id) {
- $db_values = [];
- foreach ($user_client_events as $key => $value) {
+ $db_values = [];
+ foreach ($user_client_events as $key => $value) {
- if (is_null($value) || ($value === 'NULL'))
- $db_values[] = "`$key` = NULL";
- else if (!$value)
- $db_values[] = "`$key` = 0";
- else if (is_int($value))
- $db_values[] = "`$key` = $value";
- else
- $db_values[] = "`$key` = '$value'";
+ if (is_null($value) || ($value === 'NULL'))
+ $db_values[] = "`$key` = NULL";
+ else if (!$value)
+ $db_values[] = "`$key` = 0";
+ else if (is_int($value))
+ $db_values[] = "`$key` = $value";
+ else
+ $db_values[] = "`$key` = '$value'";
- }
+ }
- $sql = "UPDATE `user_client_events`";
- $sql .= " SET " . implode(',', $db_values);
- $sql .= " WHERE `id` = '$event_id' AND `type` = '$event_type'";
- } else {
- $db_keys = [];
- $db_values = [];
- foreach ($user_client_events as $key => $value) {
+ $sql = "UPDATE `user_client_events`";
+ $sql .= " SET " . implode(',', $db_values);
+ $sql .= " WHERE `id` = '$event_id' AND `type` = '$event_type'";
+ } else {
+ $db_keys = [];
+ $db_values = [];
+ foreach ($user_client_events as $key => $value) {
- $db_keys[] = "`$key`";
+ $db_keys[] = "`$key`";
- if (is_null($value) || ($value === 'NULL'))
- $db_values[] = "NULL";
- else if (!$value)
- $db_values[] = "0";
- else if (is_int($value))
- $db_values[] = "$value";
- else
- $db_values[] = "'$value'";
+ if (is_null($value) || ($value === 'NULL'))
+ $db_values[] = "NULL";
+ else if (!$value)
+ $db_values[] = "0";
+ else if (is_int($value))
+ $db_values[] = "$value";
+ else
+ $db_values[] = "'$value'";
- }
+ }
- $sql = "INSERT INTO `user_client_events`";
- $sql .= " (" . implode(',', $db_keys) . ")";
- $sql .= " VALUES (" . implode(',', $db_values) . ")";
- }
+ $sql = "INSERT INTO `user_client_events`";
+ $sql .= " (" . implode(',', $db_keys) . ")";
+ $sql .= " VALUES (" . implode(',', $db_values) . ")";
+ }
- $sqls[] = $db_values;
- $sqls[] = $sql;
- if (mysql_query($sql)) {
+ $sqls[] = $db_values;
+ $sqls[] = $sql;
+ if (mysql_query($sql)) {
- /*if (!$event_id)
+ /*if (!$event_id)
$event_id = mysql_insert_id();*/
- if ($event_type == 'deal' && isset($task['schedule_date'])) {
- $date = \DateTime::createFromFormat('Y-m-d H:i', $task['schedule_date']);
- $dop_text = "Запланирована сделка на " . date("Y-m-d H:i:s", $date->getTimestamp());
+ if ($event_type == 'deal' && isset($task['schedule_date'])) {
+ $date = \DateTime::createFromFormat('Y-m-d H:i', $task['schedule_date']);
+ $dop_text = "Запланирована сделка на " . date("Y-m-d H:i:s", $date->getTimestamp());
- if (!is_null($document)) {
- $dop_text .= ", сформирован документ: " . '
+ if (!is_null($document)) {
+ $dop_text .= ", сформирован документ: " . '
' . $document['doc_name'] . '
.';
- } else {
- $dop_text .= ".";
- }
-
- $dop_text .= "
От ";
-
- $events_clients = [
- 'user_id' => $who_work_id,
- 'from_id' => $user_id,
-
- 'client_id' => $client_id || 'NULL',
- 'req_id' => $requisition_id || 'NULL',
-
- 'event' => 'add_deal',
- 'dop_text' => "'$dop_text'",
- 'read' => '1',
- ];
-
- $db_keys = [];
- $db_values = [];
- foreach ($events_clients as $key => $value) {
-
- $db_keys[] = "`$key`";
-
- if (is_null($value))
- $db_values[] = "NULL";
- else if (!$value || $value === 0)
- $db_values[] = "0";
- else if (is_int($value))
- $db_values[] = "$value";
- else
- $db_values[] = "'$value'";
-
- }
-
- $sql = "INSERT INTO `events_clients`";
- $sql .= " (" . implode(',', $db_keys) . ")";
- $sql .= " VALUES (" . implode(',', $db_values) . ")";
-
- $sqls[] = $sql;
- if (mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
- }
- }
- }
- }
-
- if (!$error) {
-
- $tasks = [];
- $history = [];
- if ($section == 'objects') {
- // Offset-free: для листинга прокидываем флаг is_external, чтобы getTasks читал external_listing_events.
- $tasks = self::getTasks($app, ['object_id' => $object_id, 'is_external' => $is_listing_object], null, true);
- $history = ClientsController::getHistory($app, ['object_id' => $object_id], null, true);
- } else if ($section == 'clients') {
- $tasks = self::getTasks($app, ['client_id' => $client_id], null, true);
- $history = ClientsController::getHistory($app, ['client_id' => $client_id], null, true);
- } else if ($section == 'requisitions') {
- $tasks = self::getTasks($app, ['requisition_id' => $requisition_id], null, true);
- $history = ClientsController::getHistory($app, ['requisition_id' => $requisition_id], null, true);
- }
-
- foreach ($tasks as $key => $task) {
- // Сверяем по реальному id и одинаковой природе события (листинг vs свой объект) — id коллизит между пространствами.
- $same_kind = ((bool)$is_listing_object === !empty($task['is_external_listing_event']));
- if ($same_kind && $task['id'] == $event_id)
- $tasks[$key]['is_new'] = true;
- else
- $tasks[$key]['is_new'] = false;
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => $user_id,
- 'event_id' => $event_id,
- // Признак события листинга — наружу явным флагом (mJW echo'ит его обратно в правке/удалении/завершении).
- 'is_external_listing_event' => $is_listing_object,
- 'event_type' => $event_type,
- 'section' => $section,
- //'sqls' => $sqls,
- 'tasks' => (!empty($tasks)) ? $tasks : null,
- 'history' => (!empty($history)) ? $history : null,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- //'sqls' => $sqls,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- public function addSubComment($app, $get = null, $post = null) {
-
- $error = false;
- $errors = [];
-
- if ($user_id = intval($_SESSION['id'])) {
-
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
-
- $body = $app->request->getBody();
- $data = json_decode(stripcslashes($body), true);
-
- $section = null;
- if (isset($data['section']))
- $section = trim($data['section']);
-
- $event_id = null;
- if (isset($data['event_id']))
- $event_id = intval($data['event_id']);
-
- $object_id = null;
- if (isset($data['object_id']))
- $object_id = intval($data['object_id']);
-
- $client_id = null;
- if (isset($data['client_id']))
- $client_id = intval($data['client_id']);
-
- $requisition_id = null;
- if (isset($data['requisition_id']))
- $requisition_id = intval($data['requisition_id']);
-
- $sub_comment = null;
- if (isset($data['comment']))
- $sub_comment = trim($data['comment']);
-
- $employee_id = null;
- if (isset($data['employee_id']))
- $employee_id = intval($data['employee_id']);
-
- $sub_id = null;
- if (isset($data['sub_id']))
- $sub_id = intval($data['sub_id']);
-
- // Offset-free: суб-комменты листинга различаем по явным флагам из запроса (echo'ит mJW), не по диапазону id.
- $is_listing_event = self::_request_flag($data, 'is_external_listing_event');
- $is_listing_object = self::_request_flag($data, 'is_external');
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
-
- if (!is_null($section) && !is_null($event_id) && !is_null($sub_comment)) {
- if ($section == "objects") {
- if ($is_listing_event || $is_listing_object) {
-
- // Найденный листинг парсера: суб-комменты под section_id = 4, ключ — реальный el event id (без смещения;
- // section_id = 1 коллидировал бы по event_id с суб-комментами задач своих объектов из user_object_events).
- $real_event_id = (int)$event_id;
- $real_listing_id = (int)$object_id;
-
- // Изоляция компаний: суб-коммент можно писать только к событию листинга своего агентства
- // (листинг общий → иначе запись коммента к чужой задаче по угадываемому event_id). Зеркало desktop addEventSubComment.
- if (!\external_listing_event_in_scope($real_event_id, $user_id)) {
- $error = true;
- $errors[] = 'Нет доступа к событию листинга';
- } else if (!empty($employee_id)) {
- if ($sub_id > 0) {
- $sql = "UPDATE user_sub_comments SET sub_comment='{$sub_comment}', user_for='{$employee_id}' WHERE id={$sub_id}";
- } else {
- $sql = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`, `user_for`) VALUES ('$real_event_id', '$real_listing_id', 4, '$sub_comment', '$user_id', '$employee_id')";
- }
-
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
-
- $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$real_event_id' AND `section_id` = 4 AND `created_by` = '$user_id'";
-
- $sql2 = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`) VALUES ('$real_event_id', '$real_listing_id', 4, '$sub_comment', '$user_id')";
-
- if (!mysql_query($sql) || !mysql_query($sql2)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else if (!empty($employee_id)) {
- if ($sub_id > 0) {
- $sql = "UPDATE user_sub_comments SET sub_comment='{$sub_comment}', user_for='{$employee_id}' WHERE id={$sub_id}";
- } else {
- $sql = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`, `user_for`) VALUES ('$event_id', '$object_id', 1, '$sub_comment', '$user_id', '$employee_id')";
- }
-
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
-
- $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 1 AND `created_by` = '$user_id'";
-
- $sql2 = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`) VALUES ('$event_id', '$object_id', 1, '$sub_comment', '$user_id')";
-
- if (!mysql_query($sql) || !mysql_query($sql2)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else if ($section == "clients") {
-
- $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 2 AND `created_by` = '$user_id'";
-
- $sql2 = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`) VALUES ('$event_id', '$client_id', 2, '$sub_comment', '$user_id')";
-
- if (!mysql_query($sql) || !mysql_query($sql2)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else if ($section == "requisitions") {
-
- $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 3 AND `created_by` = '$user_id'";
-
- $sql2 = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`) VALUES ('$event_id', '$requisition_id', 3, '$sub_comment', '$user_id')";
-
- if (!mysql_query($sql) || !mysql_query($sql2)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
-
- if ($requisition_id > 0) {
- $sql = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `read`, `dop_text`) VALUES ('$user_id', '$requisition_id', '0', 'sub_comment', '1', '{$sub_comment}')";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
-
- if (!$error) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- public function deleteSubComment($app, $get = null, $post = null) {
-
- $error = false;
- $errors = [];
-
- if ($user_id = intval($_SESSION['id'])) {
-
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
-
- $section = null;
- if (isset($get['section']))
- $section = trim($get['section']);
-
- $event_id = null;
- if (isset($get['event_id']))
- $event_id = intval($get['event_id']);
-
- $sub_id = null;
- if (isset($get['sub_id']))
- $sub_id = intval($get['sub_id']);
-
- // Offset-free: суб-коммент листинга различаем по явному флагу is_external_listing_event из запроса (echo'ит mJW).
- $is_listing_event = self::_request_flag($get, 'is_external_listing_event');
- require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
-
- if (!is_null($section) && !is_null($event_id)) {
- if ($section == "objects") {
- if ($sub_id > 0) {
- // Удаление по id корректно для любой таблицы (id суб-коммента — без смещения).
- $sql = "DELETE FROM `user_sub_comments` WHERE id='$sub_id'";
- } else if ($is_listing_event) {
- // Найденный листинг парсера: суб-комменты под section_id = 4, ключ — реальный el event id (без смещения).
- $real_event_id = (int)$event_id;
- $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$real_event_id' AND `section_id` = 4 AND `created_by` ='$user_id'";
- } else {
- $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 1 AND `created_by` ='$user_id'";
- }
- } else if ($section == "clients") {
- $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 2 AND `created_by` = '$user_id'";
- } else if ($section == "requisitions") {
- $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 3 AND `created_by` = '$user_id'";
- }
-
- if (!empty($sql)) {
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- }
- }
-
- if (!$error) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
-
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
-
- public function getStageDetails($app, $get = null, $post = null, $need_return = false) {
-
- $error = false;
- $errors = [];
-
- if ($user_id = $_SESSION['id']) {
-
- $protocol = (self::is_ssl()) ? 'https://' : 'http://';
- $host = $protocol . $_SERVER['SERVER_NAME'];
-
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
-
- $client_id = null;
- if (isset($get['client_id']))
- $client_id = intval($get['client_id']);
-
- $requisition_id = null;
- if (isset($get['requisition_id']))
- $requisition_id = intval($get['requisition_id']);
-
- $step_id = null;
- if (isset($get['step_id']))
- $step_id = intval($get['step_id']);
-
- if (!is_null($step_id) && (!is_null($client_id) || !is_null($requisition_id))) {
-
- $details = [];
-
- if (!is_null($client_id)) {
- $sql = "SELECT * FROM `clients_funnel_step` WHERE client_id = {$client_id}";
- } elseif (!is_null($requisition_id)) {
- $sql = "SELECT * FROM `clients_funnel_step` WHERE req_id = {$requisition_id}";
- }
-
- if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query) > 0) {
- $row = mysql_fetch_assoc($query);
- if (!empty($row['values'])) {
-
- try {
- $array = json_decode($row['values'],true);
-
- $res = [];
- foreach ($array as $key => $value) {
- $res[$key] = htmlspecialchars_decode($value);
- }
-
- if (isset($res[$step_id])) {
- $data = [];
- $values = json_decode($res[$step_id], true);
- foreach ($values as $key => $value) {
- $field_name = self::translit($value['name'], '_');
- $data[$field_name] = $value;
- }
- $details = $data;
- }
- } catch (\Exception $e) {
- $error = true;
- $errors[] = $e->getMessage();
- }
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
-
- if ($need_return) {
- return $details;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'details' => $details,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
-
- public function getStagesList($app, $get = null, $post = null, $has_return = false) {
-
- $error = false;
- $errors = [];
- if ($user_id = $_SESSION['id']) {
-
- $protocol = (self::is_ssl()) ? 'https://' : 'http://';
- $host = $protocol . $_SERVER['SERVER_NAME'];
-
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
-
- // Этапы по-умолчанию
- $stages = [
- [
- 'id' => 1,
- 'name' => 'Новый',
- ], [
- 'id' => 2,
- 'name' => 'В работе',
- ], [
- 'id' => 3,
- 'name' => 'Презентация',
- ], [
- 'id' => 4,
- 'name' => 'Показ',
- ], [
- 'id' => 5,
- 'name' => 'Бронь',
- ], [
- 'id' => 6,
- 'name' => 'Подаем на ипотеку',
- ], [
- 'id' => 7,
- 'name' => 'Сделка',
- ], [
- 'id' => 8,
- 'name' => 'Закрыт',
- ],
- ];
-
- if (isset($get['funnel_id'])) {
-
- $funnel_id = (int)$get['funnel_id'];
-
- if ($funnel_id) {
-
- $stages = [];
- $sql = "SELECT `id`, `name` FROM `funnel_steps`
+ } else {
+ $dop_text .= ".";
+ }
+
+ $dop_text .= "
От ";
+
+ $events_clients = [
+ 'user_id' => $who_work_id,
+ 'from_id' => $user_id,
+
+ 'client_id' => $client_id || 'NULL',
+ 'req_id' => $requisition_id || 'NULL',
+
+ 'event' => 'add_deal',
+ 'dop_text' => "'$dop_text'",
+ 'read' => '1',
+ ];
+
+ $db_keys = [];
+ $db_values = [];
+ foreach ($events_clients as $key => $value) {
+
+ $db_keys[] = "`$key`";
+
+ if (is_null($value))
+ $db_values[] = "NULL";
+ else if (!$value || $value === 0)
+ $db_values[] = "0";
+ else if (is_int($value))
+ $db_values[] = "$value";
+ else
+ $db_values[] = "'$value'";
+
+ }
+
+ $sql = "INSERT INTO `events_clients`";
+ $sql .= " (" . implode(',', $db_keys) . ")";
+ $sql .= " VALUES (" . implode(',', $db_values) . ")";
+
+ $sqls[] = $sql;
+ if (mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (!$error) {
+
+ $tasks = [];
+ $history = [];
+ if ($section == 'objects') {
+ // Offset-free: для листинга прокидываем флаг is_external, чтобы getTasks читал external_listing_events.
+ $tasks = self::getTasks($app, ['object_id' => $object_id, 'is_external' => $is_listing_object], null, true);
+ $history = ClientsController::getHistory($app, ['object_id' => $object_id], null, true);
+ } else if ($section == 'clients') {
+ $tasks = self::getTasks($app, ['client_id' => $client_id], null, true);
+ $history = ClientsController::getHistory($app, ['client_id' => $client_id], null, true);
+ } else if ($section == 'requisitions') {
+ $tasks = self::getTasks($app, ['requisition_id' => $requisition_id], null, true);
+ $history = ClientsController::getHistory($app, ['requisition_id' => $requisition_id], null, true);
+ }
+
+ foreach ($tasks as $key => $task) {
+ // Сверяем по реальному id и одинаковой природе события (листинг vs свой объект) — id коллизит между пространствами.
+ $same_kind = ((bool)$is_listing_object === !empty($task['is_external_listing_event']));
+ if ($same_kind && $task['id'] == $event_id)
+ $tasks[$key]['is_new'] = true;
+ else
+ $tasks[$key]['is_new'] = false;
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => $user_id,
+ 'event_id' => $event_id,
+ // Признак события листинга — наружу явным флагом (mJW echo'ит его обратно в правке/удалении/завершении).
+ 'is_external_listing_event' => $is_listing_object,
+ 'event_type' => $event_type,
+ 'section' => $section,
+ //'sqls' => $sqls,
+ 'tasks' => (!empty($tasks)) ? $tasks : null,
+ 'history' => (!empty($history)) ? $history : null,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ //'sqls' => $sqls,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ public function addSubComment($app, $get = null, $post = null) {
+
+ $error = false;
+ $errors = [];
+
+ if ($user_id = intval($_SESSION['id'])) {
+
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+
+ $body = $app->request->getBody();
+ $data = json_decode(stripcslashes($body), true);
+
+ $section = null;
+ if (isset($data['section']))
+ $section = trim($data['section']);
+
+ $event_id = null;
+ if (isset($data['event_id']))
+ $event_id = intval($data['event_id']);
+
+ $object_id = null;
+ if (isset($data['object_id']))
+ $object_id = intval($data['object_id']);
+
+ $client_id = null;
+ if (isset($data['client_id']))
+ $client_id = intval($data['client_id']);
+
+ $requisition_id = null;
+ if (isset($data['requisition_id']))
+ $requisition_id = intval($data['requisition_id']);
+
+ $sub_comment = null;
+ if (isset($data['comment']))
+ $sub_comment = trim($data['comment']);
+
+ $employee_id = null;
+ if (isset($data['employee_id']))
+ $employee_id = intval($data['employee_id']);
+
+ $sub_id = null;
+ if (isset($data['sub_id']))
+ $sub_id = intval($data['sub_id']);
+
+ // Offset-free: суб-комменты листинга различаем по явным флагам из запроса (echo'ит mJW), не по диапазону id.
+ $is_listing_event = self::_request_flag($data, 'is_external_listing_event');
+ $is_listing_object = self::_request_flag($data, 'is_external');
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
+
+ if (!is_null($section) && !is_null($event_id) && !is_null($sub_comment)) {
+ if ($section == "objects") {
+ if ($is_listing_event || $is_listing_object) {
+
+ // Найденный листинг парсера: суб-комменты под section_id = 4, ключ — реальный el event id (без смещения;
+ // section_id = 1 коллидировал бы по event_id с суб-комментами задач своих объектов из user_object_events).
+ $real_event_id = (int)$event_id;
+ $real_listing_id = (int)$object_id;
+
+ // Изоляция компаний: суб-коммент можно писать только к событию листинга своего агентства
+ // (листинг общий → иначе запись коммента к чужой задаче по угадываемому event_id). Зеркало desktop addEventSubComment.
+ if (!\external_listing_event_in_scope($real_event_id, $user_id)) {
+ $error = true;
+ $errors[] = 'Нет доступа к событию листинга';
+ } else if (!empty($employee_id)) {
+ if ($sub_id > 0) {
+ $sql = "UPDATE user_sub_comments SET sub_comment='{$sub_comment}', user_for='{$employee_id}' WHERE id={$sub_id}";
+ } else {
+ $sql = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`, `user_for`) VALUES ('$real_event_id', '$real_listing_id', 4, '$sub_comment', '$user_id', '$employee_id')";
+ }
+
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+
+ $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$real_event_id' AND `section_id` = 4 AND `created_by` = '$user_id'";
+
+ $sql2 = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`) VALUES ('$real_event_id', '$real_listing_id', 4, '$sub_comment', '$user_id')";
+
+ if (!mysql_query($sql) || !mysql_query($sql2)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else if (!empty($employee_id)) {
+ if ($sub_id > 0) {
+ $sql = "UPDATE user_sub_comments SET sub_comment='{$sub_comment}', user_for='{$employee_id}' WHERE id={$sub_id}";
+ } else {
+ $sql = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`, `user_for`) VALUES ('$event_id', '$object_id', 1, '$sub_comment', '$user_id', '$employee_id')";
+ }
+
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+
+ $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 1 AND `created_by` = '$user_id'";
+
+ $sql2 = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`) VALUES ('$event_id', '$object_id', 1, '$sub_comment', '$user_id')";
+
+ if (!mysql_query($sql) || !mysql_query($sql2)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else if ($section == "clients") {
+
+ $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 2 AND `created_by` = '$user_id'";
+
+ $sql2 = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`) VALUES ('$event_id', '$client_id', 2, '$sub_comment', '$user_id')";
+
+ if (!mysql_query($sql) || !mysql_query($sql2)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else if ($section == "requisitions") {
+
+ $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 3 AND `created_by` = '$user_id'";
+
+ $sql2 = "INSERT INTO `user_sub_comments` (`event_id`, `req_id`, `section_id`, `sub_comment`, `created_by`) VALUES ('$event_id', '$requisition_id', 3, '$sub_comment', '$user_id')";
+
+ if (!mysql_query($sql) || !mysql_query($sql2)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+
+ if ($requisition_id > 0) {
+ $sql = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `read`, `dop_text`) VALUES ('$user_id', '$requisition_id', '0', 'sub_comment', '1', '{$sub_comment}')";
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+
+ if (!$error) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ public function deleteSubComment($app, $get = null, $post = null) {
+
+ $error = false;
+ $errors = [];
+
+ if ($user_id = intval($_SESSION['id'])) {
+
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+
+ $section = null;
+ if (isset($get['section']))
+ $section = trim($get['section']);
+
+ $event_id = null;
+ if (isset($get['event_id']))
+ $event_id = intval($get['event_id']);
+
+ $sub_id = null;
+ if (isset($get['sub_id']))
+ $sub_id = intval($get['sub_id']);
+
+ // Offset-free: суб-коммент листинга различаем по явному флагу is_external_listing_event из запроса (echo'ит mJW).
+ $is_listing_event = self::_request_flag($get, 'is_external_listing_event');
+ require_once $_SERVER['DOCUMENT_ROOT'] . '/engine/helpers/external_listing_events.php';
+
+ if (!is_null($section) && !is_null($event_id)) {
+ if ($section == "objects") {
+ if ($sub_id > 0) {
+ // Удаление по id корректно для любой таблицы (id суб-коммента — без смещения).
+ $sql = "DELETE FROM `user_sub_comments` WHERE id='$sub_id'";
+ } else if ($is_listing_event) {
+ // Найденный листинг парсера: суб-комменты под section_id = 4, ключ — реальный el event id (без смещения).
+ $real_event_id = (int)$event_id;
+ $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$real_event_id' AND `section_id` = 4 AND `created_by` ='$user_id'";
+ } else {
+ $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 1 AND `created_by` ='$user_id'";
+ }
+ } else if ($section == "clients") {
+ $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 2 AND `created_by` = '$user_id'";
+ } else if ($section == "requisitions") {
+ $sql = "DELETE FROM `user_sub_comments` WHERE `event_id` = '$event_id' AND `section_id` = 3 AND `created_by` = '$user_id'";
+ }
+
+ if (!empty($sql)) {
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ }
+ }
+
+ if (!$error) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+
+ public function getStageDetails($app, $get = null, $post = null, $need_return = false) {
+
+ $error = false;
+ $errors = [];
+
+ if ($user_id = $_SESSION['id']) {
+
+ $protocol = (self::is_ssl()) ? 'https://' : 'http://';
+ $host = $protocol . $_SERVER['SERVER_NAME'];
+
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+
+ $client_id = null;
+ if (isset($get['client_id']))
+ $client_id = intval($get['client_id']);
+
+ $requisition_id = null;
+ if (isset($get['requisition_id']))
+ $requisition_id = intval($get['requisition_id']);
+
+ $step_id = null;
+ if (isset($get['step_id']))
+ $step_id = intval($get['step_id']);
+
+ if (!is_null($step_id) && (!is_null($client_id) || !is_null($requisition_id))) {
+
+ $details = [];
+
+ if (!is_null($client_id)) {
+ $sql = "SELECT * FROM `clients_funnel_step` WHERE client_id = {$client_id}";
+ } elseif (!is_null($requisition_id)) {
+ $sql = "SELECT * FROM `clients_funnel_step` WHERE req_id = {$requisition_id}";
+ }
+
+ if ($query = mysql_query($sql)) {
+ if (mysql_num_rows($query) > 0) {
+ $row = mysql_fetch_assoc($query);
+ if (!empty($row['values'])) {
+
+ try {
+ $array = json_decode($row['values'],true);
+
+ $res = [];
+ foreach ($array as $key => $value) {
+ $res[$key] = htmlspecialchars_decode($value);
+ }
+
+ if (isset($res[$step_id])) {
+ $data = [];
+ $values = json_decode($res[$step_id], true);
+ foreach ($values as $key => $value) {
+ $field_name = self::translit($value['name'], '_');
+ $data[$field_name] = $value;
+ }
+ $details = $data;
+ }
+ } catch (\Exception $e) {
+ $error = true;
+ $errors[] = $e->getMessage();
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+
+ if ($need_return) {
+ return $details;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'details' => $details,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+
+ public function getStagesList($app, $get = null, $post = null, $has_return = false) {
+
+ $error = false;
+ $errors = [];
+ if ($user_id = $_SESSION['id']) {
+
+ $protocol = (self::is_ssl()) ? 'https://' : 'http://';
+ $host = $protocol . $_SERVER['SERVER_NAME'];
+
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+
+ // Этапы по-умолчанию
+ $stages = [
+ [
+ 'id' => 1,
+ 'name' => 'Новый',
+ ], [
+ 'id' => 2,
+ 'name' => 'В работе',
+ ], [
+ 'id' => 3,
+ 'name' => 'Презентация',
+ ], [
+ 'id' => 4,
+ 'name' => 'Показ',
+ ], [
+ 'id' => 5,
+ 'name' => 'Бронь',
+ ], [
+ 'id' => 6,
+ 'name' => 'Подаем на ипотеку',
+ ], [
+ 'id' => 7,
+ 'name' => 'Сделка',
+ ], [
+ 'id' => 8,
+ 'name' => 'Закрыт',
+ ],
+ ];
+
+ if (isset($get['funnel_id'])) {
+
+ $funnel_id = (int)$get['funnel_id'];
+
+ if ($funnel_id) {
+
+ $stages = [];
+ $sql = "SELECT `id`, `name` FROM `funnel_steps`
WHERE `funnel_id` = '$funnel_id' AND `deleted` = 0
ORDER BY `order_number`, `branch`";
- if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query)) {
- while ($step = mysql_fetch_assoc($query)) {
+ if ($query = mysql_query($sql)) {
+ if (mysql_num_rows($query)) {
+ while ($step = mysql_fetch_assoc($query)) {
- $sql_file = "SELECT * FROM funnel_files WHERE etap_id = '".$step['id']."' AND funnel_id = ".$step['funnel_id'];
- $q_file = mysql_query($sql_file);
- $files = [];
- while($file_r = mysql_fetch_assoc($q_file)) {
+ $sql_file = "SELECT * FROM funnel_files WHERE etap_id = '".$step['id']."' AND funnel_id = ".$step['funnel_id'];
+ $q_file = mysql_query($sql_file);
+ $files = [];
+ while($file_r = mysql_fetch_assoc($q_file)) {
- $path = "https://uf.joywork.ru/upload/funnels/".$step['funnel_id']."/".$file_r['guid'].".".$file_r['type'];
+ $path = "https://uf.joywork.ru/upload/funnels/".$step['funnel_id']."/".$file_r['guid'].".".$file_r['type'];
$files[] = array('guid' => $file_r['guid'],'isUpload' => true, 'uploads' => false, 'name' => $file_r['name'], 'path' => $path);
}
- $stages[] = [
- 'id' => intval($step['id']),
- 'name' => trim($step['name']),
- //'funnel_id' => intval($step['funnel_id']),
- 'funnel_id' => $funnel_id,
- 'stage' => trim($step['stage']),
- 'branch' => intval($step['branch']),
- 'max_days' => intval($step['days_step']),
- 'color' => trim($step['color_step']),
- 'next_step_id' => json_decode($step['next_step'], true),
- 'next_stages' => json_decode($step['arr_next_steps'], true),
- 'tasks_list' => json_decode($step['tasks_list'], true),
- 'doers' => json_decode($step['doers'], true),
- 'files' => $files,
- 'order' => intval($step['order_number']),
- 'is_main' => intval($step['main']),
- 'is_deleted' => intval($step['deleted']),
- ];
- }
- }
- } else {
- $errors[] = mysql_error();
- $error = true;
- }
- }
- }
+ $stages[] = [
+ 'id' => intval($step['id']),
+ 'name' => trim($step['name']),
+ //'funnel_id' => intval($step['funnel_id']),
+ 'funnel_id' => $funnel_id,
+ 'stage' => trim($step['stage']),
+ 'branch' => intval($step['branch']),
+ 'max_days' => intval($step['days_step']),
+ 'color' => trim($step['color_step']),
+ 'next_step_id' => json_decode($step['next_step'], true),
+ 'next_stages' => json_decode($step['arr_next_steps'], true),
+ 'tasks_list' => json_decode($step['tasks_list'], true),
+ 'doers' => json_decode($step['doers'], true),
+ 'files' => $files,
+ 'order' => intval($step['order_number']),
+ 'is_main' => intval($step['main']),
+ 'is_deleted' => intval($step['deleted']),
+ ];
+ }
+ }
+ } else {
+ $errors[] = mysql_error();
+ $error = true;
+ }
+ }
+ }
- if (!$error) {
- if ($has_return) {
- return $stages;
- } else {
+ if (!$error) {
+ if ($has_return) {
+ return $stages;
+ } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => (int)$user_id,
- 'count' => count($stages),
- 'list' => $stages
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => (int)$user_id,
+ 'count' => count($stages),
+ 'list' => $stages
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
- if ($has_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => (int)$user_id,
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($has_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => (int)$user_id,
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function getPrevStage($app, $get = null, $post = null, $need_return = false) {
+ public function getPrevStage($app, $get = null, $post = null, $need_return = false) {
- $error = false;
- $errors = [];
+ $error = false;
+ $errors = [];
- $task = [];
- if ($user_id = $_SESSION['id']) {
+ $task = [];
+ if ($user_id = $_SESSION['id']) {
- $client_id = 0;
- if (isset($get['client_id'])) {
- $client_id = intval($get['client_id']);
- }
+ $client_id = 0;
+ if (isset($get['client_id'])) {
+ $client_id = intval($get['client_id']);
+ }
- $requisition_id = 0;
- if (isset($get['requisition_id'])) {
- $requisition_id = intval($get['requisition_id']);
- }
+ $requisition_id = 0;
+ if (isset($get['requisition_id'])) {
+ $requisition_id = intval($get['requisition_id']);
+ }
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- if ($client_id > 0) {
- $section = 'clients';
- $sql = "SELECT cfs.*, fs.name FROM `clients_funnel_step` as `cfs`
+ if ($client_id > 0) {
+ $section = 'clients';
+ $sql = "SELECT cfs.*, fs.name FROM `clients_funnel_step` as `cfs`
LEFT JOIN `funnel_steps` as `fs` on cfs.step_id = fs.id
WHERE cfs.client_id = {$client_id}";
- } else if($requisition_id > 0) {
- $section = 'requisitions';
- $sql = "SELECT cfs.*, fs.name FROM `clients_funnel_step` as `cfs`
+ } else if($requisition_id > 0) {
+ $section = 'requisitions';
+ $sql = "SELECT cfs.*, fs.name FROM `clients_funnel_step` as `cfs`
LEFT JOIN `funnel_steps` as `fs` on cfs.step_id = fs.id
WHERE cfs.req_id = {$requisition_id}";
- }
+ }
- if ($query = mysql_query($sql)) {
- if (mysql_num_rows($query) > 0) {
- $row = mysql_fetch_assoc($query);
- $task = $row;
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ if ($query = mysql_query($sql)) {
+ if (mysql_num_rows($query) > 0) {
+ $row = mysql_fetch_assoc($query);
+ $task = $row;
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if (empty($errors)) {
- if ($need_return) {
- return $task;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => true,
- 'user_id' => $_SESSION['id'],
- 'task' => $task,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
- }
+ if (empty($errors)) {
+ if ($need_return) {
+ return $task;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => true,
+ 'user_id' => $_SESSION['id'],
+ 'task' => $task,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
+ }
- if ($need_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($need_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function getStages($app, $get = null, $post = null, $has_return = false) {
- $error = false;
- $errors = [];
+ public function getStages($app, $get = null, $post = null, $has_return = false) {
+ $error = false;
+ $errors = [];
- $funnel_id = null;
- if (isset($get['funnel_id']))
- $funnel_id = intval($get['funnel_id']);
+ $funnel_id = null;
+ if (isset($get['funnel_id']))
+ $funnel_id = intval($get['funnel_id']);
- $client_id = null;
- if (isset($get['client_id']))
- $client_id = intval($get['client_id']);
+ $client_id = null;
+ if (isset($get['client_id']))
+ $client_id = intval($get['client_id']);
- $requisition_id = null;
- if (isset($get['requisition_id']))
- $requisition_id = intval($get['requisition_id']);
+ $requisition_id = null;
+ if (isset($get['requisition_id']))
+ $requisition_id = intval($get['requisition_id']);
$object_id = null;
if (isset($get['object_id']))
$object_id = intval($get['object_id']);
- $mode = 'all';
- if (isset($get['mode'])) {
- if (in_array(trim($get['mode']), ['all', 'only_current', 'only_next']))
- $mode = trim($get['mode']);
- }
+ $mode = 'all';
+ if (isset($get['mode'])) {
+ if (in_array(trim($get['mode']), ['all', 'only_current', 'only_next']))
+ $mode = trim($get['mode']);
+ }
- if (($user_id = $_SESSION['id']) && !is_null($funnel_id) && ($client_id || $requisition_id || $object_id)) {
+ if (($user_id = $_SESSION['id']) && !is_null($funnel_id) && ($client_id || $requisition_id || $object_id)) {
- $protocol = (self::is_ssl()) ? 'https://' : 'http://';
- $host = $protocol . $_SERVER['SERVER_NAME'];
+ $protocol = (self::is_ssl()) ? 'https://' : 'http://';
+ $host = $protocol . $_SERVER['SERVER_NAME'];
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
- $stages = [];
+ $stages = [];
- $sql = "SELECT * FROM `clients_funnel_step` WHERE client_id = '$client_id'";
+ $sql = "SELECT * FROM `clients_funnel_step` WHERE client_id = '$client_id'";
- if ($requisition_id > 0)
- $sql = "SELECT * FROM `clients_funnel_step` WHERE req_id = '$requisition_id'";
+ if ($requisition_id > 0)
+ $sql = "SELECT * FROM `clients_funnel_step` WHERE req_id = '$requisition_id'";
- if ($query = mysql_query($sql)) {
+ if ($query = mysql_query($sql)) {
- $next_id = 0;
- $change_step = 0;
- $steps_count = 0;
- $step_date_update = null;
+ $next_id = 0;
+ $change_step = 0;
+ $steps_count = 0;
+ $step_date_update = null;
- $steps = [];
- $next_steps = [];
+ $steps = [];
+ $next_steps = [];
- if ($funnel_id == 0) { // Воронка по-умолчанию
+ if ($funnel_id == 0) { // Воронка по-умолчанию
- $stage_id = 1;
- $sql = "SELECT * FROM `clients`
+ $stage_id = 1;
+ $sql = "SELECT * FROM `clients`
WHERE `funnel_id` = '$funnel_id' AND `id` = '$client_id'";
- if ($requisition_id > 0)
- $sql = "SELECT * FROM `requisitions`
+ if ($requisition_id > 0)
+ $sql = "SELECT * FROM `requisitions`
WHERE `funnel_id` = '$funnel_id' AND `id` = '$requisition_id'";
- if ($query = mysql_query($sql)) {
- $client = mysql_fetch_assoc($query);
- $stage_id = (int)$client['stage'];
- }
+ if ($query = mysql_query($sql)) {
+ $client = mysql_fetch_assoc($query);
+ $stage_id = (int)$client['stage'];
+ }
- $data = [
- 1 => [
- 'id' => 1,
- 'name' => 'Новый',
- 'is_next' => ($stage_id == 1),
- 'is_main' => true,
- 'prev_step_id' => null,
- 'prev_step_name' => null,
- 'branch' => 0
- ], 2 => [
- 'id' => 2,
- 'name' => 'В работе',
- 'is_next' => ($stage_id == 2),
- 'is_main' => false,
- 'prev_step_id' => 1,
- 'prev_step_name' => 'Новый',
- 'branch' => 0
- ], 3 => [
- 'id' => 3,
- 'name' => 'Презентация',
- 'is_next' => ($stage_id == 3),
- 'is_main' => false,
- 'prev_step_id' => 2,
- 'prev_step_name' => 'В работе',
- 'branch' => 0
- ], 4 => [
- 'id' => 4,
- 'name' => 'Показ',
- 'is_next' => ($stage_id == 4),
- 'is_main' => false,
- 'prev_step_id' => 3,
- 'prev_step_name' => 'Презентация',
- 'branch' => 0
- ], 5 => [
- 'id' => 5,
- 'name' => 'Бронь',
- 'is_next' => ($stage_id == 5),
- 'is_main' => false,
- 'prev_step_id' => 4,
- 'prev_step_name' => 'Показ',
- 'branch' => 0
- ], 6 => [
- 'id' => 6,
- 'name' => 'Подаем на ипотеку',
- 'is_next' => ($stage_id == 6),
- 'is_main' => false,
- 'prev_step_id' => 5,
- 'prev_step_name' => 'Бронь',
- 'branch' => 0
- ], 7 => [
- 'id' => 7,
- 'name' => 'Сделка',
- 'is_next' => ($stage_id == 7),
- 'is_main' => false,
- 'prev_step_id' => 6,
- 'prev_step_name' => 'Подаем на ипотеку',
- 'branch' => 0
- ], 8 => [
- 'id' => 8,
- 'name' => 'Закрыт',
- 'is_next' => ($stage_id == 8),
- 'is_main' => false,
- 'prev_step_id' => 7,
- 'prev_step_name' => 'Сделка',
- 'branch' => 0
- ],
- ];
+ $data = [
+ 1 => [
+ 'id' => 1,
+ 'name' => 'Новый',
+ 'is_next' => ($stage_id == 1),
+ 'is_main' => true,
+ 'prev_step_id' => null,
+ 'prev_step_name' => null,
+ 'branch' => 0
+ ], 2 => [
+ 'id' => 2,
+ 'name' => 'В работе',
+ 'is_next' => ($stage_id == 2),
+ 'is_main' => false,
+ 'prev_step_id' => 1,
+ 'prev_step_name' => 'Новый',
+ 'branch' => 0
+ ], 3 => [
+ 'id' => 3,
+ 'name' => 'Презентация',
+ 'is_next' => ($stage_id == 3),
+ 'is_main' => false,
+ 'prev_step_id' => 2,
+ 'prev_step_name' => 'В работе',
+ 'branch' => 0
+ ], 4 => [
+ 'id' => 4,
+ 'name' => 'Показ',
+ 'is_next' => ($stage_id == 4),
+ 'is_main' => false,
+ 'prev_step_id' => 3,
+ 'prev_step_name' => 'Презентация',
+ 'branch' => 0
+ ], 5 => [
+ 'id' => 5,
+ 'name' => 'Бронь',
+ 'is_next' => ($stage_id == 5),
+ 'is_main' => false,
+ 'prev_step_id' => 4,
+ 'prev_step_name' => 'Показ',
+ 'branch' => 0
+ ], 6 => [
+ 'id' => 6,
+ 'name' => 'Подаем на ипотеку',
+ 'is_next' => ($stage_id == 6),
+ 'is_main' => false,
+ 'prev_step_id' => 5,
+ 'prev_step_name' => 'Бронь',
+ 'branch' => 0
+ ], 7 => [
+ 'id' => 7,
+ 'name' => 'Сделка',
+ 'is_next' => ($stage_id == 7),
+ 'is_main' => false,
+ 'prev_step_id' => 6,
+ 'prev_step_name' => 'Подаем на ипотеку',
+ 'branch' => 0
+ ], 8 => [
+ 'id' => 8,
+ 'name' => 'Закрыт',
+ 'is_next' => ($stage_id == 8),
+ 'is_main' => false,
+ 'prev_step_id' => 7,
+ 'prev_step_name' => 'Сделка',
+ 'branch' => 0
+ ],
+ ];
- $prev_step_id = null;
- /*foreach ($data as $step) {
+ $prev_step_id = null;
+ /*foreach ($data as $step) {
$step_id = $step['id'];
@@ -12133,173 +12139,173 @@ class CommonController extends ApiController
}*/
- $prev_step_id = null;
- $prev_steps = [];
- foreach ($data as $step) {
- $step_id = $step['id'];
- if ($step_id <= $stage_id) {
- $prev_steps[] = $step;
+ $prev_step_id = null;
+ $prev_steps = [];
+ foreach ($data as $step) {
+ $step_id = $step['id'];
+ if ($step_id <= $stage_id) {
+ $prev_steps[] = $step;
- if ($step_id < $stage_id)
- $prev_step_id = $step_id;
+ if ($step_id < $stage_id)
+ $prev_step_id = $step_id;
- }
- }
+ }
+ }
- $stages = $data[$stage_id];
- $stages['prev_steps'] = $prev_steps;
- $stages['prev_step_id'] = $prev_step_id;
+ $stages = $data[$stage_id];
+ $stages['prev_steps'] = $prev_steps;
+ $stages['prev_step_id'] = $prev_step_id;
- } else if ($funnel_id > 0) { // Кастомные воронки
+ } else if ($funnel_id > 0) { // Кастомные воронки
- if (mysql_num_rows($query) > 0) {
- $change_step = mysql_fetch_assoc($query);
- $next_id = $change_step['next_id'];
- $step_date_update = $change_step['date_update'];
- }
+ if (mysql_num_rows($query) > 0) {
+ $change_step = mysql_fetch_assoc($query);
+ $next_id = $change_step['next_id'];
+ $step_date_update = $change_step['date_update'];
+ }
- $sql = "SELECT * FROM `funnel_steps`
+ $sql = "SELECT * FROM `funnel_steps`
WHERE `funnel_id` = '$funnel_id' AND `deleted` = 0
ORDER BY `order_number`, `branch`";
- $step_is_active = true;
- if ((int)$change_step['step_id'] == 0)
- $step_is_active = false;
+ $step_is_active = true;
+ if ((int)$change_step['step_id'] == 0)
+ $step_is_active = false;
- if ($query = mysql_query($sql)) {
- if ($stages_count = mysql_num_rows($query)) {
+ if ($query = mysql_query($sql)) {
+ if ($stages_count = mysql_num_rows($query)) {
- while ($step = mysql_fetch_assoc($query)) {
- $step['isActive'] = (int)$step_is_active;
- $step['nextStep'] = false;
+ while ($step = mysql_fetch_assoc($query)) {
+ $step['isActive'] = (int)$step_is_active;
+ $step['nextStep'] = false;
- if ($step['id'] == (int)$change_step['step_id']) {
- $next_steps = json_decode(htmlspecialchars_decode($step['next_step']));
- if ($next_id == 0)
- $step_is_active = false;
+ if ($step['id'] == (int)$change_step['step_id']) {
+ $next_steps = json_decode(htmlspecialchars_decode($step['next_step']));
+ if ($next_id == 0)
+ $step_is_active = false;
- } else if ($step['id'] == (int)$next_id) {
- $step_is_active = false;
- }
+ } else if ($step['id'] == (int)$next_id) {
+ $step_is_active = false;
+ }
- $steps[$step['id']] = $step;
- $steps[$step['id']]['prev_step_id'] = (int)$change_step['prev_id'];
- }
+ $steps[$step['id']] = $step;
+ $steps[$step['id']]['prev_step_id'] = (int)$change_step['prev_id'];
+ }
- if ($next_id != 0 && !empty($next_steps)) {
- foreach ($next_steps as $step_id => $step) {
- if ($step != $next_id) {
- unset($next_steps[$step_id]);
- }
- }
- }
+ if ($next_id != 0 && !empty($next_steps)) {
+ foreach ($next_steps as $step_id => $step) {
+ if ($step != $next_id) {
+ unset($next_steps[$step_id]);
+ }
+ }
+ }
- foreach ($steps as $step_id => $step) {
- $steps[$step_id]['isNext'] = 0;
- if (in_array($step_id, $next_steps)) {
- $stage_name = $step['name'];
- $steps[$step_id]['isNext'] = 1;
- }
- }
+ foreach ($steps as $step_id => $step) {
+ $steps[$step_id]['isNext'] = 0;
+ if (in_array($step_id, $next_steps)) {
+ $stage_name = $step['name'];
+ $steps[$step_id]['isNext'] = 1;
+ }
+ }
- $prev_step_id = null;
- foreach ($steps as $step_id => $step) {
+ $prev_step_id = null;
+ foreach ($steps as $step_id => $step) {
- /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
+ /*error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', 1);*/
- $interval = 0;
- if ($step_date_update)
- $interval = date_diff(new \DateTime(), new \DateTime($step_date_update))->days;
+ $interval = 0;
+ if ($step_date_update)
+ $interval = date_diff(new \DateTime(), new \DateTime($step_date_update))->days;
- $next_steps_list = [];
- if (isset($step['arr_next_steps'])) {
- $next_steps = json_decode(htmlspecialchars_decode($step['arr_next_steps']), true);
- foreach ($next_steps as $key => $next) {
- $next_steps_list[] = [
- 'id' => $next['id']['id'],
- 'name' => trim($next['id']['name']),
- 'linked' => trim($next['name']),
- ];
- }
- }
+ $next_steps_list = [];
+ if (isset($step['arr_next_steps'])) {
+ $next_steps = json_decode(htmlspecialchars_decode($step['arr_next_steps']), true);
+ foreach ($next_steps as $key => $next) {
+ $next_steps_list[] = [
+ 'id' => $next['id']['id'],
+ 'name' => trim($next['id']['name']),
+ 'linked' => trim($next['name']),
+ ];
+ }
+ }
- $details = CommonController::getStageDetails($app, [
- 'client_id' => $client_id,
- 'step_id' => $step_id,
- ], null, true);
+ $details = CommonController::getStageDetails($app, [
+ 'client_id' => $client_id,
+ 'step_id' => $step_id,
+ ], null, true);
- $fields_list = [];
- if (isset($step['pole_end_list'])) {
+ $fields_list = [];
+ if (isset($step['pole_end_list'])) {
- $fields = json_decode(htmlspecialchars_decode($step['pole_end_list']), true);
- foreach ($fields as $field) {
+ $fields = json_decode(htmlspecialchars_decode($step['pole_end_list']), true);
+ foreach ($fields as $field) {
- $field_type = 'text';
- switch (trim($field['type'])) {
- case 'Строка':
- $field_type = 'text';
- break;
+ $field_type = 'text';
+ switch (trim($field['type'])) {
+ case 'Строка':
+ $field_type = 'text';
+ break;
- case 'Текст':
- $field_type = 'textarea';
- break;
+ case 'Текст':
+ $field_type = 'textarea';
+ break;
- case 'Дата':
- $field_type = 'datetime';
- break;
+ case 'Дата':
+ $field_type = 'datetime';
+ break;
- case 'Файл':
- $field_type = 'file';
- break;
+ case 'Файл':
+ $field_type = 'file';
+ break;
- case 'Ветвление этапов':
- $field_type = 'select';
- break;
- case 'Выпадающий список':
- $field_type = 'select';
- break;
+ case 'Ветвление этапов':
+ $field_type = 'select';
+ break;
+ case 'Выпадающий список':
+ $field_type = 'select';
+ break;
- case 'Задача на выбор':
- $field_type = 'checkbox';
- break;
+ case 'Задача на выбор':
+ $field_type = 'checkbox';
+ break;
- case 'Поле с галочкой':
- $field_type = 'checkbox';
- break;
+ case 'Поле с галочкой':
+ $field_type = 'checkbox';
+ break;
- case 'Задаток':
- $field_type = 'deposit';
- break;
- case 'Ожидаемая комиссия':
- $field_type = 'commission';
- break;
- case 'Расходы':{
- $field_type = 'expenses';
- }
- break;
- }
+ case 'Задаток':
+ $field_type = 'deposit';
+ break;
+ case 'Ожидаемая комиссия':
+ $field_type = 'commission';
+ break;
+ case 'Расходы':{
+ $field_type = 'expenses';
+ }
+ break;
+ }
- $field_name = self::translit(trim($field['name']), '_');
+ $field_name = self::translit(trim($field['name']), '_');
- $value = null;
- if($field_type == 'expenses'){
- $value = array('summa'=>null, 'comment'=>null);
- }
- if (isset($details[$field_name])) {
- if ($details[$field_name]['type'] == $field_type) {
- if (isset($details[$field_name]['value'])) {
+ $value = null;
+ if($field_type == 'expenses'){
+ $value = array('summa'=>null, 'comment'=>null);
+ }
+ if (isset($details[$field_name])) {
+ if ($details[$field_name]['type'] == $field_type) {
+ if (isset($details[$field_name]['value'])) {
- $field_name = self::translit($details[$field_name]['name'], '_');
+ $field_name = self::translit($details[$field_name]['name'], '_');
- $field_type = trim($details[$field_name]['type']);
+ $field_type = trim($details[$field_name]['type']);
- if ($field_type == 'file') { // Список прикрепленных к полю файлов
+ if ($field_type == 'file') { // Список прикрепленных к полю файлов
- $file = $details[$field_name]['value'];
+ $file = $details[$field_name]['value'];
- $name_doc = $_SERVER['DOCUMENT_ROOT'].'/upload/clients/'.$client_id.'/'.$file['guid'].'.'.$file['typeFile'];
- if ($requisition_id > 0) {
+ $name_doc = $_SERVER['DOCUMENT_ROOT'].'/upload/clients/'.$client_id.'/'.$file['guid'].'.'.$file['typeFile'];
+ if ($requisition_id > 0) {
$name_doc = 'https://uf.joywork.ru/upload/reqs/' . $requisition_id . '/' . $file['guid'] . '.' . $file['typeFile'];
$value[] = [
'guid' => trim($file['guid']),
@@ -12308,7 +12314,7 @@ class CommonController extends ApiController
'is_upload' => boolval($file['isUpload']),
'path' => $name_doc,
];
- } else {
+ } else {
if ($client_id > 0) {
$name_doc = 'https://uf.joywork.ru/upload/clients/' . $client_id . '/' . $file['guid'] . '.' . $file['typeFile'];
$value[] = [
@@ -12341,282 +12347,282 @@ class CommonController extends ApiController
}
}
- } else {
- $value = $details[$field_name]['value'];
- }
- }
- }
- }
+ } else {
+ $value = $details[$field_name]['value'];
+ }
+ }
+ }
+ }
- $selected_value = '';
+ $selected_value = '';
- $data = [
- 'name' => $field_name,
- 'label' => trim($field['name']),
- 'type' => $field_type,
- 'is_required' => boolval($field['binding']),
- 'value' => $value,
- 'view_next' => $field['view_next']
- ];
+ $data = [
+ 'name' => $field_name,
+ 'label' => trim($field['name']),
+ 'type' => $field_type,
+ 'is_required' => boolval($field['binding']),
+ 'value' => $value,
+ 'view_next' => $field['view_next']
+ ];
- if ($field_type == 'select' && isset($field['dopSettings']['select']['options'])) {
- $options = (array)$field['dopSettings']['select']['options'];
- $keys = array_keys($options);
+ if ($field_type == 'select' && isset($field['dopSettings']['select']['options'])) {
+ $options = (array)$field['dopSettings']['select']['options'];
+ $keys = array_keys($options);
- $selected_value = null;
- $data['select'] = array_combine(
- $keys,
- array_map(function($v, $key) use ($value) {
+ $selected_value = null;
+ $data['select'] = array_combine(
+ $keys,
+ array_map(function($v, $key) use ($value) {
- $selected = false;
- if ($v == $value["name"])
- $selected = true;
+ $selected = false;
+ if ($v == $value["name"])
+ $selected = true;
- return [
- 'id' => $key,
- 'name' => $v,
- 'selected' => $selected,
- ];
- }, $options, $keys)
- );
+ return [
+ 'id' => $key,
+ 'name' => $v,
+ 'selected' => $selected,
+ ];
+ }, $options, $keys)
+ );
- }
+ }
- if ($field_type == 'radio' && isset($field['dopSettings']['radio'])) // @todo: не нашел вхождений
- $data['radio'] = $field['dopSettings']['radio'];
+ if ($field_type == 'radio' && isset($field['dopSettings']['radio'])) // @todo: не нашел вхождений
+ $data['radio'] = $field['dopSettings']['radio'];
- $fields_list[] = $data;
- }
- }
+ $fields_list[] = $data;
+ }
+ }
- $linking_steps = array(); //Сопряженные кастомные поля
- $list_linking = array();
- $user = new \User;
- $user->get($user_id);
- $agency_id = $user->agencyId;
- //$linking_steps[] = $agency_id;
+ $linking_steps = array(); //Сопряженные кастомные поля
+ $list_linking = array();
+ $user = new \User;
+ $user->get($user_id);
+ $agency_id = $user->agencyId;
+ //$linking_steps[] = $agency_id;
- $linkingClass = new \LinkingClass();
- $fields = $linkingClass->getFixFields();
- $sql_check = "SELECT * FROM linking_steps_client_req WHERE step_id = {$step_id}";
+ $linkingClass = new \LinkingClass();
+ $fields = $linkingClass->getFixFields();
+ $sql_check = "SELECT * FROM linking_steps_client_req WHERE step_id = {$step_id}";
- if($requisition_id > 0){
- $sql_req = "SELECT * FROM requisitions WHERE id = {$reqId}";
- $req = mysql_fetch_assoc(mysql_query($sql_req));
- $sql_check .= " AND is_req > 0";
- $reqClass = new \Requisitions(null, true);
- $fields_req = $reqClass->get_req_fields($agency_id, $requisition_id);
- //($fields_req);
- $linking_steps['values'] = $fields_req['values'];
+ if($requisition_id > 0){
+ $sql_req = "SELECT * FROM requisitions WHERE id = {$reqId}";
+ $req = mysql_fetch_assoc(mysql_query($sql_req));
+ $sql_check .= " AND is_req > 0";
+ $reqClass = new \Requisitions(null, true);
+ $fields_req = $reqClass->get_req_fields($agency_id, $requisition_id);
+ //($fields_req);
+ $linking_steps['values'] = $fields_req['values'];
- }
- if($clientId > 0) {
- $sql_check .= " AND is_client > 0";
- }
+ }
+ if($clientId > 0) {
+ $sql_check .= " AND is_client > 0";
+ }
- $q_check = mysql_query($sql_check);
+ $q_check = mysql_query($sql_check);
- while($r_check = mysql_fetch_assoc($q_check)){
- //var_dump($r_check);
+ while($r_check = mysql_fetch_assoc($q_check)){
+ //var_dump($r_check);
- if(is_numeric($r_check['field_id'])){
- if($requisition_id > 0){
- foreach($fields_req['fields'] as $key => $fr){
- $req_types = array();
- // echo $key."\n";
- //var_dump($fr);
- if($fr['id'] == $r_check['field_id']){
- //var_dump($fr['req_type']);
- if($fr['req_type'] === 0 || empty($field['req_type'])){
- //var_dump($fr['req_type']);
- $fr['is_required'] = $r_check['is_required'];
- $fr['view_next'] = json_decode($r_check['view_next'], true);
- $r_check = $fr;
+ if(is_numeric($r_check['field_id'])){
+ if($requisition_id > 0){
+ foreach($fields_req['fields'] as $key => $fr){
+ $req_types = array();
+ // echo $key."\n";
+ //var_dump($fr);
+ if($fr['id'] == $r_check['field_id']){
+ //var_dump($fr['req_type']);
+ if($fr['req_type'] === 0 || empty($field['req_type'])){
+ //var_dump($fr['req_type']);
+ $fr['is_required'] = $r_check['is_required'];
+ $fr['view_next'] = json_decode($r_check['view_next'], true);
+ $r_check = $fr;
- $linking_steps['fields'][] = $r_check;
- } else if(!empty($fr['req_type'])){
- $req_types = json_decode($fr['req_type'], true);
- // var_dump($req_types);
- if(in_array((int)$req['type_id'], $req_types)){
- $fr['is_required'] = $r_check['is_required'];
- $fr['view_next'] = json_decode($r_check['view_next'], true);
- $r_check = $fr;
- $linking_steps['fields'][] = $r_check;
- }
- }
+ $linking_steps['fields'][] = $r_check;
+ } else if(!empty($fr['req_type'])){
+ $req_types = json_decode($fr['req_type'], true);
+ // var_dump($req_types);
+ if(in_array((int)$req['type_id'], $req_types)){
+ $fr['is_required'] = $r_check['is_required'];
+ $fr['view_next'] = json_decode($r_check['view_next'], true);
+ $r_check = $fr;
+ $linking_steps['fields'][] = $r_check;
+ }
+ }
- // var_dump($fr);
+ // var_dump($fr);
- break;
- }
- }
- }
- } else {
- foreach($fields as $field){
- $req_types = array();
- if($requisition_id > 0){
+ break;
+ }
+ }
+ }
+ } else {
+ foreach($fields as $field){
+ $req_types = array();
+ if($requisition_id > 0){
- if($field['is_req'] > 0 && $r_check['field_id'] == $field['id']){
+ if($field['is_req'] > 0 && $r_check['field_id'] == $field['id']){
- if(isset($field['table'])){
- if(isset($req[$field['ident']]) && !empty($req[$field['ident']])){
- $sql_dop_table = "SELECT {$field['id']} FROM `{$field['table']}` WHERE `{$field['ident']}` = {$req[$field['ident']]}";
- //echo $sql_dop_table;
- $q_dop_table = mysql_query($sql_dop_table);
- $r_dop_table = mysql_fetch_assoc($q_dop_table);
- if($r_dop_table){
- $linking_steps['values']['model_'.$field['id']] = $r_dop_table[$field['id']];
- }
- }
+ if(isset($field['table'])){
+ if(isset($req[$field['ident']]) && !empty($req[$field['ident']])){
+ $sql_dop_table = "SELECT {$field['id']} FROM `{$field['table']}` WHERE `{$field['ident']}` = {$req[$field['ident']]}";
+ //echo $sql_dop_table;
+ $q_dop_table = mysql_query($sql_dop_table);
+ $r_dop_table = mysql_fetch_assoc($q_dop_table);
+ if($r_dop_table){
+ $linking_steps['values']['model_'.$field['id']] = $r_dop_table[$field['id']];
+ }
+ }
- } else {
- if(isset($req[$field['id']])){
+ } else {
+ if(isset($req[$field['id']])){
- $linking_steps['values']['model_'.$field['id']] = $req[$field['id']];
- } else if($field['id'] == 'client_contract'){
- $result = null;
- $sql_d = "SELECT * FROM persons_contract WHERE req_id = {$reqId} ORDER by id DESC limit 1";
- $q_d = mysql_query($sql_d);
- if(mysql_num_rows($q_d) > 0){
- $r_d = mysql_fetch_assoc($q_d);
- $sql_cl = "SELECT fio, phone, email FROM clients WHERE id = {$r_d['client_id']}";
- $q_cl = mysql_query($sql_cl);
- $r_cl = mysql_fetch_assoc($q_cl);
- // Маскируем телефон и fio клиента, если у текущего пользователя
- // включено `hide_client_contacts`. Helper сам проверяет право.
- $cl_phone_masked = mask_phone_value_if_needed($r_cl['phone']);
- $cl_fio_masked = mask_fio_if_contains_phone($r_cl['fio']);
- $client_name = $cl_phone_masked.' '.$cl_fio_masked;
- $result = array('id' => $r_d['client_id'], 'name' => $client_name, 'color'=>'#000');
- }
+ $linking_steps['values']['model_'.$field['id']] = $req[$field['id']];
+ } else if($field['id'] == 'client_contract'){
+ $result = null;
+ $sql_d = "SELECT * FROM persons_contract WHERE req_id = {$reqId} ORDER by id DESC limit 1";
+ $q_d = mysql_query($sql_d);
+ if(mysql_num_rows($q_d) > 0){
+ $r_d = mysql_fetch_assoc($q_d);
+ $sql_cl = "SELECT fio, phone, email FROM clients WHERE id = {$r_d['client_id']}";
+ $q_cl = mysql_query($sql_cl);
+ $r_cl = mysql_fetch_assoc($q_cl);
+ // Маскируем телефон и fio клиента, если у текущего пользователя
+ // включено `hide_client_contacts`. Helper сам проверяет право.
+ $cl_phone_masked = mask_phone_value_if_needed($r_cl['phone']);
+ $cl_fio_masked = mask_fio_if_contains_phone($r_cl['fio']);
+ $client_name = $cl_phone_masked.' '.$cl_fio_masked;
+ $result = array('id' => $r_d['client_id'], 'name' => $client_name, 'color'=>'#000');
+ }
- $linking_steps['values']['model_'.$field['id']] = $result;
- }
+ $linking_steps['values']['model_'.$field['id']] = $result;
+ }
- }
+ }
- if($field['req_type'] === 0 || empty($field['req_type'])){
- $field['is_required'] = $r_check['is_required'];
- $field['view_next'] = json_decode($r_check['view_next'], true);
- $linking_steps['fields'][] = $field;
- } else if(!empty($field['req_type'])){
- $req_types = json_decode($field['req_type'], true);
+ if($field['req_type'] === 0 || empty($field['req_type'])){
+ $field['is_required'] = $r_check['is_required'];
+ $field['view_next'] = json_decode($r_check['view_next'], true);
+ $linking_steps['fields'][] = $field;
+ } else if(!empty($field['req_type'])){
+ $req_types = json_decode($field['req_type'], true);
- if(in_array((int)$req['type_id'], $req_types)){
- $field['is_required'] = $r_check['is_required'];
- $field['view_next'] = json_decode($r_check['view_next'], true);
- $linking_steps['fields'][] = $field;
- }
- }
- break;
- }
- }
- }
- }
- }
+ if(in_array((int)$req['type_id'], $req_types)){
+ $field['is_required'] = $r_check['is_required'];
+ $field['view_next'] = json_decode($r_check['view_next'], true);
+ $linking_steps['fields'][] = $field;
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
- foreach ($linking_steps['fields'] as $field) {
+ foreach ($linking_steps['fields'] as $field) {
- $field_id = (int)$field['id'];
+ $field_id = (int)$field['id'];
- $values = null;
- if ((bool)$field['is_podgroup'])
- $values = (isset($linking_steps['values']['modelp_'.$field_id])) ? $linking_steps['values']['modelp_'.$field_id] : null;
- else
- $values = (isset($linking_steps['values']['model_'.$field_id])) ? $linking_steps['values']['model_'.$field_id] : null;
+ $values = null;
+ if ((bool)$field['is_podgroup'])
+ $values = (isset($linking_steps['values']['modelp_'.$field_id])) ? $linking_steps['values']['modelp_'.$field_id] : null;
+ else
+ $values = (isset($linking_steps['values']['model_'.$field_id])) ? $linking_steps['values']['model_'.$field_id] : null;
- $value = json_decode($values, true);
+ $value = json_decode($values, true);
- $sub_groups = [];
- if (!empty($field['podgroups'])) {
- foreach ($field['podgroups'] as $key => $group) {
+ $sub_groups = [];
+ if (!empty($field['podgroups'])) {
+ foreach ($field['podgroups'] as $key => $group) {
- $sub_group['id'] = $group['id'];
- $sub_group['name'] = ($group['title']) ? trim($group['title']) : null;
- $sub_group['value'] = ($group['id']) ? (int)$group['id'] : null;
- $sub_group['type'] = ($group['type']) ? (int)$group['type'] : 0;
+ $sub_group['id'] = $group['id'];
+ $sub_group['name'] = ($group['title']) ? trim($group['title']) : null;
+ $sub_group['value'] = ($group['id']) ? (int)$group['id'] : null;
+ $sub_group['type'] = ($group['type']) ? (int)$group['type'] : 0;
- if (!empty($field['podgroups_select'])) {
- foreach ($field['podgroups_select'] as $select) {
- if ($group['id'] == $select['id']) {
- $sub_group['is_active'] = true;
- } else {
- $sub_group['is_active'] = false;
- }
- }
- } else {
- $sub_group['is_active'] = false;
- }
+ if (!empty($field['podgroups_select'])) {
+ foreach ($field['podgroups_select'] as $select) {
+ if ($group['id'] == $select['id']) {
+ $sub_group['is_active'] = true;
+ } else {
+ $sub_group['is_active'] = false;
+ }
+ }
+ } else {
+ $sub_group['is_active'] = false;
+ }
- if (isset($group['params'])) {
+ if (isset($group['params'])) {
- if (is_array($group['params']['items'])) {
+ if (is_array($group['params']['items'])) {
- $sub_group['params']['items'] = [];
- foreach ($group['params']['items'] as $option) {
- $sub_group['options'][] = [
- 'name' => ($option['name']) ? trim($option['name']) : null,
- 'value' => ($option['value']) ? (int)$option['value'] : null,
- 'mode' => ($option['mode']) ? (int)$option['mode'] : null,
- ];
- }
- }
- }
+ $sub_group['params']['items'] = [];
+ foreach ($group['params']['items'] as $option) {
+ $sub_group['options'][] = [
+ 'name' => ($option['name']) ? trim($option['name']) : null,
+ 'value' => ($option['value']) ? (int)$option['value'] : null,
+ 'mode' => ($option['mode']) ? (int)$option['mode'] : null,
+ ];
+ }
+ }
+ }
- $sub_group['is_required'] = boolval($group['is_required']);
- $sub_group['created_by'] = ($group['created_by']) ? (int)$group['created_by'] : null;
- $sub_group['updated_by'] = ($group['updated_by']) ? (int)$group['updated_by'] : null;
- $sub_groups['modelp_' . $group['id']] = $sub_group;
- }
- }
+ $sub_group['is_required'] = boolval($group['is_required']);
+ $sub_group['created_by'] = ($group['created_by']) ? (int)$group['created_by'] : null;
+ $sub_group['updated_by'] = ($group['updated_by']) ? (int)$group['updated_by'] : null;
+ $sub_groups['modelp_' . $group['id']] = $sub_group;
+ }
+ }
- // if (!$filtrable || ($filtrable === true && (bool)$field['is_filtrable'])) {
+ // if (!$filtrable || ($filtrable === true && (bool)$field['is_filtrable'])) {
- $list_linking['model_' . $field_id] = [
- 'id' => (int)$field_id,
- 'label' => $field['title'],
- 'type' => (int)$field['type'],
- 'is_for_clients' => (bool)$field['is_client'],
- 'is_for_requisitions' => (bool)$field['is_req'],
- 'is_sub_group' => (bool)$field['is_podgroup'],
- 'is_required' => (bool)$field['is_required'],
- 'is_filtrable' => (bool)$field['is_filtrable'],
- 'requisition_type' => ((bool)$field['is_req'] && isset($field['req_type'])) ? json_decode($field['req_type']) : null,
- 'value' => $value,
- 'params' => (!empty((bool)$field['is_podgroup'])) ? ['items' => $sub_groups] : $field['params'],
- 'created_at' => $field['created_at'],
- 'created_by' => ($field['created_by']) ? $field['created_by'] : null,
- 'updated_at' => $field['updated_at'],
- 'updated_by' => ($field['updated_by']) ? $field['updated_by'] : null,
- 'view_next' => ($field['view_next']) ? $field['view_next'] : null,
-
- ];
- //}
- }
+ $list_linking['model_' . $field_id] = [
+ 'id' => (int)$field_id,
+ 'label' => $field['title'],
+ 'type' => (int)$field['type'],
+ 'is_for_clients' => (bool)$field['is_client'],
+ 'is_for_requisitions' => (bool)$field['is_req'],
+ 'is_sub_group' => (bool)$field['is_podgroup'],
+ 'is_required' => (bool)$field['is_required'],
+ 'is_filtrable' => (bool)$field['is_filtrable'],
+ 'requisition_type' => ((bool)$field['is_req'] && isset($field['req_type'])) ? json_decode($field['req_type']) : null,
+ 'value' => $value,
+ 'params' => (!empty((bool)$field['is_podgroup'])) ? ['items' => $sub_groups] : $field['params'],
+ 'created_at' => $field['created_at'],
+ 'created_by' => ($field['created_by']) ? $field['created_by'] : null,
+ 'updated_at' => $field['updated_at'],
+ 'updated_by' => ($field['updated_by']) ? $field['updated_by'] : null,
+ 'view_next' => ($field['view_next']) ? $field['view_next'] : null,
+
+ ];
+ //}
+ }
- $doers = [];
- if (isset($step['pole_end_list'])) {
+ $doers = [];
+ if (isset($step['pole_end_list'])) {
- $employees = json_decode(htmlspecialchars_decode($step['doers']), true);
- foreach ($employees as $employee) {
- $doers[] = intval($employee['id']);
- }
+ $employees = json_decode(htmlspecialchars_decode($step['doers']), true);
+ foreach ($employees as $employee) {
+ $doers[] = intval($employee['id']);
+ }
- $doers = array_unique($doers);
- }
+ $doers = array_unique($doers);
+ }
- $files_list = [];
- $sql_file = "SELECT * FROM funnel_files WHERE etap_id = '".$step['id']."' AND funnel_id = ".$step['funnel_id'];
- if ($q_file = mysql_query($sql_file)) {
+ $files_list = [];
+ $sql_file = "SELECT * FROM funnel_files WHERE etap_id = '".$step['id']."' AND funnel_id = ".$step['funnel_id'];
+ if ($q_file = mysql_query($sql_file)) {
- while($file_r = mysql_fetch_assoc($q_file)) {
+ while($file_r = mysql_fetch_assoc($q_file)) {
- $path = "https://uf.joywork.ru/upload/funnels/".$step['funnel_id']."/".$file_r['guid'].".".$file_r['type'];
+ $path = "https://uf.joywork.ru/upload/funnels/".$step['funnel_id']."/".$file_r['guid'].".".$file_r['type'];
$files_list[] = [
'guid' => $file_r['guid'],
'is_upload' => true,
@@ -12625,14 +12631,14 @@ class CommonController extends ApiController
'file_type' => $file_r['type'],
'path' => $path
];
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $prev_steps = [];
- $sql = "SELECT * FROM funnel_steps
+ $prev_steps = [];
+ $sql = "SELECT * FROM funnel_steps
WHERE funnel_id = ".$funnel_id." AND
id != {$step['id']} AND
branch <= {$step['branch']} AND
@@ -12640,50 +12646,50 @@ class CommonController extends ApiController
ORDER BY order_number DESC,
branch DESC";
- if ($query = mysql_query($sql)) {
- while ($row = mysql_fetch_assoc($query)) {
- $prev_steps[] = [
- 'id' => (int)$row['id'],
- 'name' => trim($row['name']),
- 'branch' => (int)$row['branch'],
- ];
- }
- }
+ if ($query = mysql_query($sql)) {
+ while ($row = mysql_fetch_assoc($query)) {
+ $prev_steps[] = [
+ 'id' => (int)$row['id'],
+ 'name' => trim($row['name']),
+ 'branch' => (int)$row['branch'],
+ ];
+ }
+ }
- if (
- $mode == 'all' ||
- ($mode == 'only_current' && boolval($step['isActive'])) ||
- ($mode == 'only_next' && (boolval($step['isNext']) || boolval($step['main'])))
- ) {
+ if (
+ $mode == 'all' ||
+ ($mode == 'only_current' && boolval($step['isActive'])) ||
+ ($mode == 'only_next' && (boolval($step['isNext']) || boolval($step['main'])))
+ ) {
- $data = [
- 'id' => intval($step['id']),
- 'name' => trim($step['name']), // Название этапа
+ $data = [
+ 'id' => intval($step['id']),
+ 'name' => trim($step['name']), // Название этапа
- 'funnel_id' => intval($step['funnel_id']), // ИД воронки
+ 'funnel_id' => intval($step['funnel_id']), // ИД воронки
- 'is_close_after' => boolval(($step['stage'] === 'В работе') ? 0 : 1), // При переходе на этап сменить статус
- 'is_active' => boolval($step['isActive']),
- 'is_next' => boolval($step['isNext'] == 1),
- 'is_parallel' => boolval($step['start_parallel'] == 1),
- 'is_main' => boolval($step['main'] == 1),
- 'is_expired' => boolval($interval >= $step['days_step']),
- 'is_deleted' => boolval($step['deleted'] == 1),
- 'max_days' => intval($step['days_step']), // Дней на этап
- 'branch' => intval($step['branch']),
+ 'is_close_after' => boolval(($step['stage'] === 'В работе') ? 0 : 1), // При переходе на этап сменить статус
+ 'is_active' => boolval($step['isActive']),
+ 'is_next' => boolval($step['isNext'] == 1),
+ 'is_parallel' => boolval($step['start_parallel'] == 1),
+ 'is_main' => boolval($step['main'] == 1),
+ 'is_expired' => boolval($interval >= $step['days_step']),
+ 'is_deleted' => boolval($step['deleted'] == 1),
+ 'max_days' => intval($step['days_step']), // Дней на этап
+ 'branch' => intval($step['branch']),
'create_deal' => intval($step['create_deal']),
- 'prev_steps' => $prev_steps, // Предыдущие этапы, доступные для выбора
- 'prev_step_id' => $prev_step_id, // Предыдущий этап
- 'next_steps_list' => $next_steps_list, // Следующий этап после закрытия
- 'next_steps_ids' => array_map('intval', json_decode(html_entity_decode($step['next_step']))),
- 'fields_list' => $fields_list, // Список полей для заполнения при завершении этапа
- 'files_list' => $files_list, // Файлы для скачивания
- 'doers' => $doers, // Ответственные
- 'linking_steps' => $list_linking, //Сопряженные кастомные поля
- ];
+ 'prev_steps' => $prev_steps, // Предыдущие этапы, доступные для выбора
+ 'prev_step_id' => $prev_step_id, // Предыдущий этап
+ 'next_steps_list' => $next_steps_list, // Следующий этап после закрытия
+ 'next_steps_ids' => array_map('intval', json_decode(html_entity_decode($step['next_step']))),
+ 'fields_list' => $fields_list, // Список полей для заполнения при завершении этапа
+ 'files_list' => $files_list, // Файлы для скачивания
+ 'doers' => $doers, // Ответственные
+ 'linking_steps' => $list_linking, //Сопряженные кастомные поля
+ ];
- // Дополнительные действия при закрытии этапа
- /*if ($mode == 'only_next') {
+ // Дополнительные действия при закрытии этапа
+ /*if ($mode == 'only_next') {
$data['after_close'] = [
'use_in_advert_off' => false,
'autosearch_off' => false,
@@ -12692,288 +12698,288 @@ class CommonController extends ApiController
];
}*/
- if (
- ($mode == 'only_current' && boolval($step['isActive'])) ||
- ($mode == 'only_next' && (boolval($step['isNext']) || boolval($step['main'])))
- ) {
+ if (
+ ($mode == 'only_current' && boolval($step['isActive'])) ||
+ ($mode == 'only_next' && (boolval($step['isNext']) || boolval($step['main'])))
+ ) {
- // Доп. действия при закрытии этапа
- if (!empty($step['pole_dop'])) {
+ // Доп. действия при закрытии этапа
+ if (!empty($step['pole_dop'])) {
- $pole_dop = array_map('intval', json_decode(html_entity_decode($step['pole_dop']), true));
- $data['after_close'] = [
- 'use_in_advert_turn_off' => (bool)$pole_dop['advert_close'],
- 'autosearch_turn_off' => (bool)$pole_dop['avtopoisk_close'],
- 'add_activity' => (bool)$pole_dop['add_activity_close_step'],
- 'add_contract' => (bool)$pole_dop['add_contract_close_step'],
- ];
- } else {
- $data['after_close'] = null;
- }
+ $pole_dop = array_map('intval', json_decode(html_entity_decode($step['pole_dop']), true));
+ $data['after_close'] = [
+ 'use_in_advert_turn_off' => (bool)$pole_dop['advert_close'],
+ 'autosearch_turn_off' => (bool)$pole_dop['avtopoisk_close'],
+ 'add_activity' => (bool)$pole_dop['add_activity_close_step'],
+ 'add_contract' => (bool)$pole_dop['add_contract_close_step'],
+ ];
+ } else {
+ $data['after_close'] = null;
+ }
- $stages = $data;
- } else {
- $stages[$step_id] = $data;
- }
- }
+ $stages = $data;
+ } else {
+ $stages[$step_id] = $data;
+ }
+ }
- $prev_stage = $this->getPrevStage($app, ['client_id' => $client_id, 'requisition_id' => $requisition_id], null, true);
- if (isset($prev_stage['id']))
- $prev_step_id = (int)$prev_stage['step_id'];
- else
- $prev_step_id = $step_id;
+ $prev_stage = $this->getPrevStage($app, ['client_id' => $client_id, 'requisition_id' => $requisition_id], null, true);
+ if (isset($prev_stage['id']))
+ $prev_step_id = (int)$prev_stage['step_id'];
+ else
+ $prev_step_id = $step_id;
- }
+ }
- /*if ($client['deleted'] == 1 && $client['funnel_id'] > 0) {
+ /*if ($client['deleted'] == 1 && $client['funnel_id'] > 0) {
$stage_name .= ' (закрыт)';
}*/
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- if (!$error && $has_return) {
- return $stages;
- } else if (!$error) {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => !$error,
- 'user_id' => (int)$user_id,
- 'funnel_id' => $funnel_id,
- 'client_id' => $client_id,
- 'requisition_id' => $requisition_id,
- 'stage_id' => $stage_id,
- 'stages' => $stages,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if (!$error && $has_return) {
+ return $stages;
+ } else if (!$error) {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => !$error,
+ 'user_id' => (int)$user_id,
+ 'funnel_id' => $funnel_id,
+ 'client_id' => $client_id,
+ 'requisition_id' => $requisition_id,
+ 'stage_id' => $stage_id,
+ 'stages' => $stages,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- if ($has_return) {
- return false;
- } else {
- $app->response->header('Content-Type', 'application/json');
- $app->response->setStatus(200);
- $app->response->setBody(json_encode([
- 'success' => false,
- 'user_id' => $_SESSION['id'],
- 'errors' => $errors,
- ], JSON_UNESCAPED_UNICODE));
- $app->stop();
- }
- }
+ if ($has_return) {
+ return false;
+ } else {
+ $app->response->header('Content-Type', 'application/json');
+ $app->response->setStatus(200);
+ $app->response->setBody(json_encode([
+ 'success' => false,
+ 'user_id' => $_SESSION['id'],
+ 'errors' => $errors,
+ ], JSON_UNESCAPED_UNICODE));
+ $app->stop();
+ }
+ }
- public function setCloseStage($app, $get = null, $post = null) {
+ public function setCloseStage($app, $get = null, $post = null) {
- require_once($_SERVER['DOCUMENT_ROOT']."/ajax/vue_php_function.php");
- date_default_timezone_set('Europe/Moscow');
+ require_once($_SERVER['DOCUMENT_ROOT']."/ajax/vue_php_function.php");
+ date_default_timezone_set('Europe/Moscow');
- $error = false;
- $errors = [];
+ $error = false;
+ $errors = [];
- $body = $app->request->getBody();
- $data = json_decode(stripcslashes($body), true);
+ $body = $app->request->getBody();
+ $data = json_decode(stripcslashes($body), true);
- $section = null;
- if (isset($data['section']))
- $section = trim($data['section']);
+ $section = null;
+ if (isset($data['section']))
+ $section = trim($data['section']);
- $funnel_id = null;
- if (isset($data['funnel_id']))
- $funnel_id = intval($data['funnel_id']);
+ $funnel_id = null;
+ if (isset($data['funnel_id']))
+ $funnel_id = intval($data['funnel_id']);
- $client_id = null;
- if (isset($data['client_id']))
- $client_id = intval($data['client_id']);
+ $client_id = null;
+ if (isset($data['client_id']))
+ $client_id = intval($data['client_id']);
- $requisition_id = null;
- if (isset($data['requisition_id']))
- $requisition_id = intval($data['requisition_id']);
+ $requisition_id = null;
+ if (isset($data['requisition_id']))
+ $requisition_id = intval($data['requisition_id']);
- $stage = null;
- if (isset($data['stage']))
- $stage = (array)$data['stage'];
+ $stage = null;
+ if (isset($data['stage']))
+ $stage = (array)$data['stage'];
- if (($user_id = $_SESSION['id']) && !is_null($section) && !is_null($funnel_id) && ($client_id || $requisition_id)) {
+ if (($user_id = $_SESSION['id']) && !is_null($section) && !is_null($funnel_id) && ($client_id || $requisition_id)) {
- $temp_id = 0;
- $step_id = 0;
+ $temp_id = 0;
+ $step_id = 0;
- // Открываем соединение с БД
- $mdb = $app->container->get('mysql');
- $db_sphinx = $app->container->get('sphinx2');
+ // Открываем соединение с БД
+ $mdb = $app->container->get('mysql');
+ $db_sphinx = $app->container->get('sphinx2');
- /*error_reporting(E_ALL | E_STRICT);
+ /*error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);*/
- if ($funnel_id == 0) { // Воронка по-умолчанию
+ if ($funnel_id == 0) { // Воронка по-умолчанию
- $date = time();
- $create_at = date('Y-m-d H:i:s');
- $step_id = intval($stage['id']);
- $step_name = trim($stage['name']);
+ $date = time();
+ $create_at = date('Y-m-d H:i:s');
+ $step_id = intval($stage['id']);
+ $step_name = trim($stage['name']);
$next_step = 0;
if ($step_id > 0 && $step_id < 8) {
$next_step = $step_id + 1;
}
- $def_stages = ['', 'Новый', 'В работе', 'Презентация', 'Показ', 'Бронь', 'Подаем на ипотеку', 'Сделка', 'Закрыт'];
+ $def_stages = ['', 'Новый', 'В работе', 'Презентация', 'Показ', 'Бронь', 'Подаем на ипотеку', 'Сделка', 'Закрыт'];
- $sql = "SELECT `stage`, `deleted` FROM clients WHERE id = {$client_id}";
- if ($requisition_id > 0)
- $sql = "SELECT `stage`, `deleted` FROM requisitions WHERE id = {$requisition_id}";
+ $sql = "SELECT `stage`, `deleted` FROM clients WHERE id = {$client_id}";
+ if ($requisition_id > 0)
+ $sql = "SELECT `stage`, `deleted` FROM requisitions WHERE id = {$requisition_id}";
- if ($query = mysql_query($sql)) {
- $row = mysql_fetch_assoc($query);
+ if ($query = mysql_query($sql)) {
+ $row = mysql_fetch_assoc($query);
- if ($row['deleted'] > 0)
- $row['stage'] = 8;
+ if ($row['deleted'] > 0)
+ $row['stage'] = 8;
- $prev_stage = $def_stages[intval($row['stage'])];
+ $prev_stage = $def_stages[intval($row['stage'])];
- $text = 'c «'.$prev_stage.'» на «'.$def_stages[intval($step_id)].'»';
+ $text = 'c «'.$prev_stage.'» на «'.$def_stages[intval($step_id)].'»';
$sql = "UPDATE `clients` SET `stage` = '{$next_step}', `deleted` = 0 WHERE `id` = {$client_id}";
if ($requisition_id > 0)
$sql = "UPDATE `requisitions` SET `stage` = '{$next_step}', `deleted` = 0 WHERE `id` = {$requisition_id}";
- if (mysql_query($sql)) {
-
- $sql = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `read`, `dop_text`) VALUES (".$user_id.", {$client_id}, '0', 'stageedit', '1', '{$text}')";
- $in_history = "INSERT INTO `steps_history`(`client_id`, `step_id`, `date`, `type`, `user_id`, `created_at`)
+ if (mysql_query($sql)) {
+
+ $sql = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `read`, `dop_text`) VALUES (".$user_id.", {$client_id}, '0', 'stageedit', '1', '{$text}')";
+ $in_history = "INSERT INTO `steps_history`(`client_id`, `step_id`, `date`, `type`, `user_id`, `created_at`)
VALUES ({$client_id}, {$row['stage']}, {$date}, 1, {$user_id}, '{$create_at}')";
- if($step_id > $row['stage']){
- for($i=($row['stage']+1); $i<$step_id; $i++){
- $in_history .= ", ({$client_id}, {$i}, {$date}, 1, {$user_id}, '{$create_at}')";
- }
- }
- if ($requisition_id > 0){
- $sql = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `read`, `dop_text`) VALUES (".$user_id.", {$requisition_id}, '0', 'stageedit', '1', '{$text}')";
- $in_history = "INSERT INTO `steps_history`(`req_id`, `step_id`, `date`, `type`, `user_id`, `created_at`)
+ if($step_id > $row['stage']){
+ for($i=($row['stage']+1); $i<$step_id; $i++){
+ $in_history .= ", ({$client_id}, {$i}, {$date}, 1, {$user_id}, '{$create_at}')";
+ }
+ }
+ if ($requisition_id > 0){
+ $sql = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `read`, `dop_text`) VALUES (".$user_id.", {$requisition_id}, '0', 'stageedit', '1', '{$text}')";
+ $in_history = "INSERT INTO `steps_history`(`req_id`, `step_id`, `date`, `type`, `user_id`, `created_at`)
VALUES ({$requisition_id}, {$row['stage']}, {$date}, 1, {$user_id}, '{$create_at}')";
- if($step_id > $row['stage']){
- for($i=($row['stage']+1); $i<$step_id; $i++){
- $in_history .= ", ({$requisition_id}, {$i}, {$date}, 1, {$user_id}, '{$create_at}')";
- }
- }
- }
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- mysql_query($in_history);
+ if($step_id > $row['stage']){
+ for($i=($row['stage']+1); $i<$step_id; $i++){
+ $in_history .= ", ({$requisition_id}, {$i}, {$date}, 1, {$user_id}, '{$create_at}')";
+ }
+ }
+ }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ mysql_query($in_history);
- if (isset($stage['turn'])) {
- $set_turns = json_decode(html_entity_decode($stage['turn']), ENT_QUOTES);
- $time = time();
- foreach($set_turns as $key => $turn) {
+ if (isset($stage['turn'])) {
+ $set_turns = json_decode(html_entity_decode($stage['turn']), ENT_QUOTES);
+ $time = time();
+ foreach($set_turns as $key => $turn) {
- $sql = "UPDATE `clients` SET `turntime` = ".$time.", `turn` = ".$turn." WHERE `id` = {$key}";
- if ($requisition_id > 0)
- $sql = "UPDATE `requisitions` SET `turntime` = ".$time.", `turn` = ".$turn." WHERE `id` = {$key}";
+ $sql = "UPDATE `clients` SET `turntime` = ".$time.", `turn` = ".$turn." WHERE `id` = {$key}";
+ if ($requisition_id > 0)
+ $sql = "UPDATE `requisitions` SET `turntime` = ".$time.", `turn` = ".$turn." WHERE `id` = {$key}";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else if ($funnel_id > 0) { // Кастомные воронки
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else if ($funnel_id > 0) { // Кастомные воронки
- if (boolval($stage['is_next']) || boolval($stage['is_main'])) {
+ if (boolval($stage['is_next']) || boolval($stage['is_main'])) {
- $prev_id = 0;
- $prev_next_id = 0;
- $step_id = intval($stage['id']);
- $step_name = trim($stage['name']);
+ $prev_id = 0;
+ $prev_next_id = 0;
+ $step_id = intval($stage['id']);
+ $step_name = trim($stage['name']);
- $next_step_id = 0;
- if (isset($stage['next_step_id']))
- $next_step_id = intval($stage['next_step_id']);
+ $next_step_id = 0;
+ if (isset($stage['next_step_id']))
+ $next_step_id = intval($stage['next_step_id']);
- $next_step_name = null;
- if (isset($stage['next_step_name']))
- $next_step_name = trim($stage['next_step_name']);
+ $next_step_name = null;
+ if (isset($stage['next_step_name']))
+ $next_step_name = trim($stage['next_step_name']);
- if ($step_id && intval($stage['funnel_id']) == $funnel_id) {
+ if ($step_id && intval($stage['funnel_id']) == $funnel_id) {
- $fields = [];
- $fields_list = [];
- $events_client = [];
- if (isset($stage['fields_list'])) {
- $fields_list = $stage['fields_list'];
- $events_client = $stage['fields_list'];
+ $fields = [];
+ $fields_list = [];
+ $events_client = [];
+ if (isset($stage['fields_list'])) {
+ $fields_list = $stage['fields_list'];
+ $events_client = $stage['fields_list'];
- foreach ($fields_list as $field) {
+ foreach ($fields_list as $field) {
- $value = $field['value'];
- if ($field['type'] == 'select' && !empty($field['select'])) {
- $value = [
- 'name' => trim($field['value']),
- 'id' => [
- 'id' => $next_step_id,
- 'name' => $next_step_name,
- ],
- ];
- }
+ $value = $field['value'];
+ if ($field['type'] == 'select' && !empty($field['select'])) {
+ $value = [
+ 'name' => trim($field['value']),
+ 'id' => [
+ 'id' => $next_step_id,
+ 'name' => $next_step_name,
+ ],
+ ];
+ }
- $data = [
- 'name' => $field['label'],
- 'type' => $field['type'],
- 'value' => $value,
- ];
+ $data = [
+ 'name' => $field['label'],
+ 'type' => $field['type'],
+ 'value' => $value,
+ ];
- $fields[] = $data;
- }
- }
+ $fields[] = $data;
+ }
+ }
- $sql = "SELECT `id`, `step_id`, `next_id`, `values` FROM `clients_funnel_step` WHERE client_id = ".$client_id;
- if ($client_id <= 0 && $requisition_id > 0)
- $sql = "SELECT `id`, `step_id`, `next_id`, `values` FROM `clients_funnel_step` WHERE req_id = ".$requisition_id;
+ $sql = "SELECT `id`, `step_id`, `next_id`, `values` FROM `clients_funnel_step` WHERE client_id = ".$client_id;
+ if ($client_id <= 0 && $requisition_id > 0)
+ $sql = "SELECT `id`, `step_id`, `next_id`, `values` FROM `clients_funnel_step` WHERE req_id = ".$requisition_id;
- if ($query = mysql_query($sql)) {
+ if ($query = mysql_query($sql)) {
- $next_id = 0;
- if (isset($stage['next_step_id']))
- $next_id = (int)$stage['next_step_id'];
+ $next_id = 0;
+ if (isset($stage['next_step_id']))
+ $next_id = (int)$stage['next_step_id'];
- $sql = '';
- if (mysql_num_rows($query) > 0) {
- $row = mysql_fetch_assoc($query);
+ $sql = '';
+ if (mysql_num_rows($query) > 0) {
+ $row = mysql_fetch_assoc($query);
- $prev_id = (int)$row['step_id'];
- $prev_next_id = (int)$row['next_id'];
- $fields['prev_id'] = $prev_id;
- $fields['prev_next_id'] = $prev_next_id;
- $fields['next_step_select'] = $next_step_id;
+ $prev_id = (int)$row['step_id'];
+ $prev_next_id = (int)$row['next_id'];
+ $fields['prev_id'] = $prev_id;
+ $fields['prev_next_id'] = $prev_next_id;
+ $fields['next_step_select'] = $next_step_id;
- $val_array = [];
- if (!empty($row['values']))
- $val_array = json_decode($row['values'],true);
+ $val_array = [];
+ if (!empty($row['values']))
+ $val_array = json_decode($row['values'],true);
- $val_array[$step_id] = self::clearInput(json_encode($fields, JSON_UNESCAPED_UNICODE));
- $values = json_encode($val_array, JSON_UNESCAPED_UNICODE);
+ $val_array[$step_id] = self::clearInput(json_encode($fields, JSON_UNESCAPED_UNICODE));
+ $values = json_encode($val_array, JSON_UNESCAPED_UNICODE);
- if ($client_id > 0) {
- $sql = "UPDATE `clients_funnel_step`
+ if ($client_id > 0) {
+ $sql = "UPDATE `clients_funnel_step`
SET `step_id` = ".$step_id.",
`next_id` = '".$next_id."',
`prev_id` = '".$prev_id."',
@@ -12981,27 +12987,27 @@ class CommonController extends ApiController
`values` = '".$values."'
WHERE `client_id` = ".$client_id;
- } else if ($client_id == 0 && $requisition_id > 0) {
- $sql = "UPDATE `clients_funnel_step`
+ } else if ($client_id == 0 && $requisition_id > 0) {
+ $sql = "UPDATE `clients_funnel_step`
SET `step_id` = ".$step_id.",
`next_id` = '".$next_id."',
`prev_id` = '".$prev_id."',
`prev_next_id` = '".$prev_next_id."',
`values` = '".$values."'
WHERE `req_id` = ".$requisition_id;
- }
- } else {
+ }
+ } else {
- $fields['prev_id'] = $prev_id;
- $fields['prev_next_id'] = $prev_next_id;
- $fields['next_step_select'] = $next_step_id;
+ $fields['prev_id'] = $prev_id;
+ $fields['prev_next_id'] = $prev_next_id;
+ $fields['next_step_select'] = $next_step_id;
- $val_array = [];
- $val_array[$step_id] = self::clearInput(json_encode($fields, JSON_UNESCAPED_UNICODE));
- $values = json_encode($val_array, JSON_UNESCAPED_UNICODE);
+ $val_array = [];
+ $val_array[$step_id] = self::clearInput(json_encode($fields, JSON_UNESCAPED_UNICODE));
+ $values = json_encode($val_array, JSON_UNESCAPED_UNICODE);
- if ($client_id > 0) {
- $sql = "INSERT INTO `clients_funnel_step`
+ if ($client_id > 0) {
+ $sql = "INSERT INTO `clients_funnel_step`
SET `client_id` = ".$client_id.",
`step_id` = ".$step_id.",
`next_id` = '".$next_id."',
@@ -13009,27 +13015,27 @@ class CommonController extends ApiController
`prev_next_id` = '".$prev_next_id."',
`values` = '".$values."'";
- } else if ($client_id == 0 && $requisition_id > 0) {
- $sql = "INSERT INTO `clients_funnel_step`
+ } else if ($client_id == 0 && $requisition_id > 0) {
+ $sql = "INSERT INTO `clients_funnel_step`
SET `req_id` = ".$requisition_id.",
`step_id` = ".$step_id.",
`next_id` = '".$next_id."',
`prev_id` = '".$prev_id."',
`prev_next_id` = '".$prev_next_id."',
`values` = '".$values."'";
- }
- }
+ }
+ }
- /*var_export($sql);
+ /*var_export($sql);
die();*/
- if (!empty($sql)) {
- if (mysql_query($sql)) {
+ if (!empty($sql)) {
+ if (mysql_query($sql)) {
- // Дополнительные действия при закрытии этапа
- if (isset($stage['after_close']) && !empty($stage['after_close_do'])) {
+ // Дополнительные действия при закрытии этапа
+ if (isset($stage['after_close']) && !empty($stage['after_close_do'])) {
- /*if ($requisition_id > 0) {
+ /*if ($requisition_id > 0) {
if ($query = mysql_query("SELECT * FROM `requisitions` WHERE id = ".$requisition_id)) {
if (mysql_num_rows($query) > 0) {
@@ -13053,117 +13059,117 @@ class CommonController extends ApiController
}
}*/
- // Добавление тегов
- if (($client_id > 0 || $requisition_id > 0) && boolval($stage['after_close']['add_activity']) && !empty($stage['after_close_do']['tags'])) {
- $tags = $stage['after_close_do']['tags'];
+ // Добавление тегов
+ if (($client_id > 0 || $requisition_id > 0) && boolval($stage['after_close']['add_activity']) && !empty($stage['after_close_do']['tags'])) {
+ $tags = $stage['after_close_do']['tags'];
- if (count($tags) > 0) {
+ if (count($tags) > 0) {
- $source_id = null;
- if ($client_id > 0)
- $source_id = (int)$client_id;
- else if ($requisition_id > 0)
- $source_id = (int)$requisition_id;
+ $source_id = null;
+ if ($client_id > 0)
+ $source_id = (int)$client_id;
+ else if ($requisition_id > 0)
+ $source_id = (int)$requisition_id;
- $tags_list = [];
- $tags = array_map('intval', $tags);
- $all_tags = $this->getTags($app, null, $post, true);
+ $tags_list = [];
+ $tags = array_map('intval', $tags);
+ $all_tags = $this->getTags($app, null, $post, true);
- foreach ($all_tags as $tag) {
- if (in_array((int)$tag['id'], $tags))
- $tag['isChecked'] = true;
- else
- $tag['isChecked'] = false;
+ foreach ($all_tags as $tag) {
+ if (in_array((int)$tag['id'], $tags))
+ $tag['isChecked'] = true;
+ else
+ $tag['isChecked'] = false;
- $tags_list[] = $tag;
- }
+ $tags_list[] = $tag;
+ }
- $this->setTags($app, null, [
- 'section' => $section,
- 'source_id' => $source_id,
- 'tags_list' => $tags_list
- ], true);
- }
- }
+ $this->setTags($app, null, [
+ 'section' => $section,
+ 'source_id' => $source_id,
+ 'tags_list' => $tags_list
+ ], true);
+ }
+ }
- // Добавление договоров
- if (($client_id > 0 || $requisition_id > 0) && boolval($stage['after_close']['add_contract']) && !empty($stage['after_close_do']['contracts'])) {
- $contracts = $stage['after_close_do']['contracts'];
+ // Добавление договоров
+ if (($client_id > 0 || $requisition_id > 0) && boolval($stage['after_close']['add_contract']) && !empty($stage['after_close_do']['contracts'])) {
+ $contracts = $stage['after_close_do']['contracts'];
- $contracts_inst = new ContractsController();
- foreach ($contracts as $contract) {
+ $contracts_inst = new ContractsController();
+ foreach ($contracts as $contract) {
- $source_id = null;
- if ($client_id > 0)
- $source_id = (int)$client_id;
- else if ($requisition_id > 0)
- $source_id = (int)$requisition_id;
+ $source_id = null;
+ if ($client_id > 0)
+ $source_id = (int)$client_id;
+ else if ($requisition_id > 0)
+ $source_id = (int)$requisition_id;
- $contracts_inst->addEditContract($app, null, [
- 'section' => $section,
- 'source_id' => $source_id,
- 'id' => (isset($contract['id'])) ? $contract['id'] : null,
- 'parent_id' => (isset($contract['parent_id'])) ? $contract['parent_id'] : null,
- 'type' => (isset($contract['type'])) ? $contract['type'] : null,
- 'number' => (isset($contract['number'])) ? $contract['number'] : null,
- 'date_start' => (isset($contract['date_start'])) ? $contract['date_start'] : null,
- 'date_end' => (isset($contract['date_end'])) ? $contract['date_end'] : null,
- 'notify_days' => (isset($contract['days'])) ? $contract['days'] : null,
- 'is_notified' => (isset($contract['send'])) ? $contract['send'] : null,
- 'object' => (isset($contract['object'])) ? $contract['object'] : null,
- 'requisitions' => (isset($contract['requisitions'])) ? $contract['requisitions'] : null,
- ], true);
- }
- }
- }
+ $contracts_inst->addEditContract($app, null, [
+ 'section' => $section,
+ 'source_id' => $source_id,
+ 'id' => (isset($contract['id'])) ? $contract['id'] : null,
+ 'parent_id' => (isset($contract['parent_id'])) ? $contract['parent_id'] : null,
+ 'type' => (isset($contract['type'])) ? $contract['type'] : null,
+ 'number' => (isset($contract['number'])) ? $contract['number'] : null,
+ 'date_start' => (isset($contract['date_start'])) ? $contract['date_start'] : null,
+ 'date_end' => (isset($contract['date_end'])) ? $contract['date_end'] : null,
+ 'notify_days' => (isset($contract['days'])) ? $contract['days'] : null,
+ 'is_notified' => (isset($contract['send'])) ? $contract['send'] : null,
+ 'object' => (isset($contract['object'])) ? $contract['object'] : null,
+ 'requisitions' => (isset($contract['requisitions'])) ? $contract['requisitions'] : null,
+ ], true);
+ }
+ }
+ }
- if (boolval($stage['is_close_after'])) {
+ if (boolval($stage['is_close_after'])) {
- $closed_stage = '2';
- /*if (true != true) // @todo: заявки часть2 (4280e3f67ae5a04b48c3659a0a57443ec4994994)
+ $closed_stage = '2';
+ /*if (true != true) // @todo: заявки часть2 (4280e3f67ae5a04b48c3659a0a57443ec4994994)
$closed_stage = '8';*/
- if ($client_id > 0) {
- if (!mysql_query("UPDATE `clients` SET stage='$closed_stage', deleted=1, confirm=1 WHERE id = {$client_id}")) {
- $error = true;
- $errors[] = mysql_error();
- }
- } else if ($client_id == 0 && $requisition_id > 0) {
- if (!mysql_query("UPDATE `requisitions` SET stage='$closed_stage', deleted=1, confirm=1 WHERE id = {$requisition_id}")) {
- $error = true;
- $errors[] = mysql_error();
- }
- }
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ if ($client_id > 0) {
+ if (!mysql_query("UPDATE `clients` SET stage='$closed_stage', deleted=1, confirm=1 WHERE id = {$client_id}")) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else if ($client_id == 0 && $requisition_id > 0) {
+ if (!mysql_query("UPDATE `requisitions` SET stage='$closed_stage', deleted=1, confirm=1 WHERE id = {$requisition_id}")) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- // Отправка уведомлений и запись истории
- if (!$error && $step_id) {
- $date = time();
- $create_at = date('Y-m-d H:i:s');
- if($client_id > 0){
- $in_history = "INSERT INTO `steps_history`(`client_id`, `step_id`, `date`, `type`, `user_id`, `created_at`)
+ // Отправка уведомлений и запись истории
+ if (!$error && $step_id) {
+ $date = time();
+ $create_at = date('Y-m-d H:i:s');
+ if($client_id > 0){
+ $in_history = "INSERT INTO `steps_history`(`client_id`, `step_id`, `date`, `type`, `user_id`, `created_at`)
VALUES ({$client_id}, {$step_id}, {$date}, 1, {$user_id}, '{$create_at}')";
- mysql_query($in_history);
- } else if($requisition_id > 0){
-
- $in_history = "INSERT INTO `steps_history`(`req_id`, `step_id`, `date`, `type`, `user_id`, `created_at`)
- VALUES ({$requisition_id}, {$step_id}, {$date}, 1, {$user_id}, '{$create_at}')";
- mysql_query($in_history);
- }
+ mysql_query($in_history);
+ } else if($requisition_id > 0){
- $close = false;
+ $in_history = "INSERT INTO `steps_history`(`req_id`, `step_id`, `date`, `type`, `user_id`, `created_at`)
+ VALUES ({$requisition_id}, {$step_id}, {$date}, 1, {$user_id}, '{$create_at}')";
+ mysql_query($in_history);
+ }
+
+ $close = false;
$next_step = 0;
if ($next_id != 0) {
$next_step = (int)$next_id;
@@ -13173,174 +13179,174 @@ class CommonController extends ApiController
$next_step = (int)$stage['prev_steps'][0]['next_steps'][0]['id'];
}
- $next_name = [];
- if ($next_step != 0) {
- $sql = "SELECT `name`, `id` FROM `funnel_steps` WHERE `id` = {$next_step}";
- if ($query = mysql_query($sql)) {
- $next_name = mysql_fetch_assoc($query);
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ $next_name = [];
+ if ($next_step != 0) {
+ $sql = "SELECT `name`, `id` FROM `funnel_steps` WHERE `id` = {$next_step}";
+ if ($query = mysql_query($sql)) {
+ $next_name = mysql_fetch_assoc($query);
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- // Отправлять ли уведомление
- $sql = "SELECT `is_mes`, `users_mes`, `name` FROM `funnel_steps` WHERE `id` = {$step_id}";
- if ($query = mysql_query($sql)) {
+ // Отправлять ли уведомление
+ $sql = "SELECT `is_mes`, `users_mes`, `name` FROM `funnel_steps` WHERE `id` = {$step_id}";
+ if ($query = mysql_query($sql)) {
- $row = mysql_fetch_assoc($query);
+ $row = mysql_fetch_assoc($query);
- if ($row['is_mes'] > 0) {
- $users_mes = json_decode($row['users_mes'], true);
- if (!empty($users_mes)) {
+ if ($row['is_mes'] > 0) {
+ $users_mes = json_decode($row['users_mes'], true);
+ if (!empty($users_mes)) {
- $who_work = 0;
+ $who_work = 0;
- $user1 = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id = {$user_id}"));
- $post = "Сотрудник";
- if ($user1['agency'] == 1) {
- $post = "Агенство";
- } else if ($user1['manager'] == 1) {
- $post = "Менеджер";
- }
- $text = "".$post . " " . trim($user1['last_name'] . ' ' . $user1['first_name'] . ' ' . $user1['middle_name'])."
закрыл(а) этап «".$step_name."» ";
+ $user1 = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id = {$user_id}"));
+ $post = "Сотрудник";
+ if ($user1['agency'] == 1) {
+ $post = "Агенство";
+ } else if ($user1['manager'] == 1) {
+ $post = "Менеджер";
+ }
+ $text = "".$post . " " . trim($user1['last_name'] . ' ' . $user1['first_name'] . ' ' . $user1['middle_name'])."
закрыл(а) этап «".$step_name."» ";
- if ($client_id == 0 && $requisition_id > 0) {
+ if ($client_id == 0 && $requisition_id > 0) {
- $sql = "SELECT * FROM `requisitions` WHERE `id` = {$requisition_id}";
- if ($query = mysql_query($sql)) {
- $req = mysql_fetch_assoc($query);
- $who_work = $req['who_work'];
- $text .= "
по заявке " . $req['name'] . "
";
- if ($next_step != 0) {
- $text .= "Заявка перешла на этап «" . $next_name['name'] . "»
";
- }
+ $sql = "SELECT * FROM `requisitions` WHERE `id` = {$requisition_id}";
+ if ($query = mysql_query($sql)) {
+ $req = mysql_fetch_assoc($query);
+ $who_work = $req['who_work'];
+ $text .= "
по заявке " . $req['name'] . "
";
+ if ($next_step != 0) {
+ $text .= "Заявка перешла на этап «" . $next_name['name'] . "»
";
+ }
- $sql = "SELECT * FROM `clients` WHERE `id` = {$req['client_id']}";
- if ($query = mysql_query($sql)) {
+ $sql = "SELECT * FROM `clients` WHERE `id` = {$req['client_id']}";
+ if ($query = mysql_query($sql)) {
- $client_req = mysql_fetch_assoc($query);
+ $client_req = mysql_fetch_assoc($query);
- $text .= "Клиент: " . $client_req['fio'] . " тел. " . $client_req['phone'];
- if ($req['type_id'] == 2 && $req['object_id'] > 0) {
- $sql = "SELECT `id`, `adres`, `stoim`, `type`, `komnat` FROM `objects` WHERE `id` = {$req['object_id']}";
- if ($query = mysql_query($sql)) {
- if ($obj = mysql_fetch_assoc($query)) {
- switch ($obj['type']) {
- case 1:
- if ($obj['komnat'] == 1 && $obj['studio_flag']) {
- $type = "Квартира-студия";
- } else {
- $type = "$obj[komnat]-комнатная квартира";
- }
- break;
- case 2:
+ $text .= "Клиент: " . $client_req['fio'] . " тел. " . $client_req['phone'];
+ if ($req['type_id'] == 2 && $req['object_id'] > 0) {
+ $sql = "SELECT `id`, `adres`, `stoim`, `type`, `komnat` FROM `objects` WHERE `id` = {$req['object_id']}";
+ if ($query = mysql_query($sql)) {
+ if ($obj = mysql_fetch_assoc($query)) {
+ switch ($obj['type']) {
+ case 1:
+ if ($obj['komnat'] == 1 && $obj['studio_flag']) {
+ $type = "Квартира-студия";
+ } else {
+ $type = "$obj[komnat]-комнатная квартира";
+ }
+ break;
+ case 2:
- $type = "Комната в $obj[komnat]-комнатной квартире";
- break;
- case 3:
- $type = "$obj[komnat]-комнатный дом";
- break;
- case 4:
- switch ($obj['type_category']){
- case 1:
- $type = "Офис";
- break;
- case 2:
- $type = "Склад";
- break;
- case 3:
- $type = "Торговая площадь";
- break;
- case 4:
- $type = "Производство";
- break;
- case 5:
- $type = "Помещение свободного назначения";
- break;
- case 6:
- $type = "Здание";
- break;
- case 7:
- $type = "Гараж";
- break;
- case 8:
- $type = "Готовый бизнес";
- break;
- case 9:
- $type = "Коммерческая земля";
- break;
- default: $type = "Помещение";
-
- }
- break;
- case 5:
- $type = "Часть дома";
- break;
- case 6:
- $type = "Комплекс";
- break;
- case 7:
- $type = "Участок";
- break;
- default:
- $type = "$obj[komnat]-комнатная квартира";
- }
- $text .= '
Объект: ID:' . $obj['id'] . ' ' . $obj['adres'] . ', ' . $type . ' ' . $obj['stoim'];
- }
- }
- }
+ $type = "Комната в $obj[komnat]-комнатной квартире";
+ break;
+ case 3:
+ $type = "$obj[komnat]-комнатный дом";
+ break;
+ case 4:
+ switch ($obj['type_category']){
+ case 1:
+ $type = "Офис";
+ break;
+ case 2:
+ $type = "Склад";
+ break;
+ case 3:
+ $type = "Торговая площадь";
+ break;
+ case 4:
+ $type = "Производство";
+ break;
+ case 5:
+ $type = "Помещение свободного назначения";
+ break;
+ case 6:
+ $type = "Здание";
+ break;
+ case 7:
+ $type = "Гараж";
+ break;
+ case 8:
+ $type = "Готовый бизнес";
+ break;
+ case 9:
+ $type = "Коммерческая земля";
+ break;
+ default: $type = "Помещение";
- if ($req['deleted'] > 0)
- $close = true;
+ }
+ break;
+ case 5:
+ $type = "Часть дома";
+ break;
+ case 6:
+ $type = "Комплекс";
+ break;
+ case 7:
+ $type = "Участок";
+ break;
+ default:
+ $type = "$obj[komnat]-комнатная квартира";
+ }
+ $text .= '
Объект: ID:' . $obj['id'] . ' ' . $obj['adres'] . ', ' . $type . ' ' . $obj['stoim'];
+ }
+ }
+ }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- } else if ($client_id > 0) {
+ if ($req['deleted'] > 0)
+ $close = true;
- $sql = "SELECT * FROM `clients` WHERE `id` = {$client_id}";
- if ($query = mysql_query($sql)) {
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ } else if ($client_id > 0) {
- $client = mysql_fetch_assoc($query);
+ $sql = "SELECT * FROM `clients` WHERE `id` = {$client_id}";
+ if ($query = mysql_query($sql)) {
- $who_work = $client['who_work'];
- $text .= "
по клиенту: " . $client['fio'] . " тел. " . $client['phone'];
- if ($next_step != 0) {
- $text .= "
Клиент перешел на этап «" . $next_name['name'] . "»";
- }
- if ($client['deleted'] > 0) {
- $close = true;
- }
- } else {
- $error = true;
- $errors[] = mysql_error();
- }
- }
+ $client = mysql_fetch_assoc($query);
- $text = htmlspecialchars($text);
+ $who_work = $client['who_work'];
+ $text .= "
по клиенту: " . $client['fio'] . " тел. " . $client['phone'];
+ if ($next_step != 0) {
+ $text .= "
Клиент перешел на этап «" . $next_name['name'] . "»";
+ }
+ if ($client['deleted'] > 0) {
+ $close = true;
+ }
+ } else {
+ $error = true;
+ $errors[] = mysql_error();
+ }
+ }
- $user_messaged = [];
+ $text = htmlspecialchars($text);
- $send = 0;
- if ($close) {
- $temp_id = time();
- $send = 1;
- }
+ $user_messaged = [];
- foreach ($users_mes as $user_id_mes) {
+ $send = 0;
+ if ($close) {
+ $temp_id = time();
+ $send = 1;
+ }
- if ($user_id_mes == 0)
- $user_id_mes = $who_work;
+ foreach ($users_mes as $user_id_mes) {
- if (!in_array($user_id_mes, $user_messaged) && $user_id_mes != $user_id) {
+ if ($user_id_mes == 0)
+ $user_id_mes = $who_work;
- $sql = "INSERT INTO `step_notify_closure`
+ if (!in_array($user_id_mes, $user_messaged) && $user_id_mes != $user_id) {
+
+ $sql = "INSERT INTO `step_notify_closure`
SET `user_id` = {$user_id_mes},
`from_id` = {$user_id},
`step_id` = {$step_id},
@@ -13348,593 +13354,593 @@ class CommonController extends ApiController
`send` = {$send},
`temp_id` = {$temp_id}";
- if (!mysql_query($sql)) {
- $error = true;
- $errors[] = mysql_error();
- }
+ if (!mysql_query($sql)) {
+ $error = true;
+ $errors[] = mysql_error();
+ }
- $user_messaged[] = $user_id_mes;
- }
- }
- }
- }
- }
+ $user_messaged[] = $user_id_mes;
+ }
+ }
+ }
+ }
+ }
- $text = '';
- if(isset($stage['linking_steps'])){
- //var_dump($stage['linking_steps']);
- foreach($stage['linking_steps'] as $key => $field_models){
- $arrField = explode("_", $key, 2);
- $typeField = 1;
- if($arrField[0] == 'modelp'){
- $typeField = 2;
- }
- $fieldId = $arrField[1];
+ $text = '';
+ if(isset($stage['linking_steps'])){
+ //var_dump($stage['linking_steps']);
+ foreach($stage['linking_steps'] as $key => $field_models){
+ $arrField = explode("_", $key, 2);
+ $typeField = 1;
+ if($arrField[0] == 'modelp'){
+ $typeField = 2;
+ }
+ $fieldId = $arrField[1];
- if(is_numeric($fieldId)){
- $field_id = (int)$fieldId;
- $value = $field_models['value'];
+ if(is_numeric($fieldId)){
+ $field_id = (int)$fieldId;
+ $value = $field_models['value'];
- if($field_models['type'] == 2){
- $value = $field_models['value'];
- if(isset($field_models['params']['items'])){
- foreach($field_models['params']['items'] as $item){
- if($item['value'] == $value){
- $val = $item['name'];
- }
- }
- //$val = $pd['params']['items'][$arrFields_models['modelp_'.$value]]['name'];
- }
- $text .= '