283 lines
10 KiB
PHP
283 lines
10 KiB
PHP
|
|
<?php
|
|||
|
|
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
|||
|
|
|
|||
|
|
ini_set('memory_limit', '8192M');
|
|||
|
|
|
|||
|
|
//error_reporting(E_ALL | E_STRICT);
|
|||
|
|
//ini_set('display_errors', 1);
|
|||
|
|
|
|||
|
|
// hide_client_contacts: блокируем РЕАЛЬНУЮ отправку (mail/whatsapp/telegram) PDF-презентации.
|
|||
|
|
// Генерацию PDF и ссылки (без отправки) разрешаем.
|
|||
|
|
$_postSendType = isset($_POST['send_type']) ? $_POST['send_type'] : '';
|
|||
|
|
$_isActualSend = in_array($_postSendType, ['mail', 'whatsapp', 'telegram'], true);
|
|||
|
|
if ($_isActualSend
|
|||
|
|
&& function_exists('should_hide_contacts_for_current_user')
|
|||
|
|
&& should_hide_contacts_for_current_user()
|
|||
|
|
) {
|
|||
|
|
http_response_code(403);
|
|||
|
|
echo json_encode([
|
|||
|
|
'error' => 'hide_client_contacts',
|
|||
|
|
'message' => 'Отправка PDF-презентаций через E-mail/WhatsApp/Telegram недоступна: контакты клиентов скрыты.'
|
|||
|
|
]);
|
|||
|
|
exit;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($_POST['clients'])
|
|||
|
|
{
|
|||
|
|
$user = new User();
|
|||
|
|
$user->get($_SESSION['id']);
|
|||
|
|
if($user->agencyName) {
|
|||
|
|
$title = 'Агентство недвижимости '.$user->agencyName;
|
|||
|
|
} else {
|
|||
|
|
$title = $user->fio;
|
|||
|
|
}
|
|||
|
|
if($user->phoneAgency) {
|
|||
|
|
$phone = $user->phoneAgency;
|
|||
|
|
} else {
|
|||
|
|
$phone = $user->phone;
|
|||
|
|
}
|
|||
|
|
if($_SESSION['agency']) {
|
|||
|
|
$manager = trim($user->last_name . ' ' . $user->first_name . ' ' . $user->middle_name);
|
|||
|
|
} else {
|
|||
|
|
$manager = $_SESSION['fio'];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$send_type = 0;
|
|||
|
|
if(!empty($SEND_TYPE_PDF[$_POST['send_type']])){
|
|||
|
|
$send_type = $SEND_TYPE_PDF[$_POST['send_type']];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$theme = !empty($_POST['theme']) ? $_POST['theme'] : "Презентации объектов недвижимости";
|
|||
|
|
|
|||
|
|
$txt = !empty($_POST['txt']) ? str_replace("\n","<br>",$_POST['txt']) : "Уважаемый клиент, отправляю Вам варианты объектов недвижимости. С удовольствием отвечу на ваши вопросы.";
|
|||
|
|
|
|||
|
|
$footer = "<br> $manager<br> ".$user->phone."<br> ".$user->email;
|
|||
|
|
|
|||
|
|
if ($_SESSION['individual'] == 0) {
|
|||
|
|
$footer .= "<br> $title<br>$phone";
|
|||
|
|
}
|
|||
|
|
$pdfs = $adresses = array();
|
|||
|
|
|
|||
|
|
$clientIds = $_POST['clients'];
|
|||
|
|
|
|||
|
|
$requestId = isset($_POST['request']) ? (int)$_POST['request'] : null;
|
|||
|
|
|
|||
|
|
$userId = $_SESSION['id'];
|
|||
|
|
|
|||
|
|
$toSend = $_SESSION['to_send'];
|
|||
|
|
$toSendNewBuildings = $_SESSION['to_send_newbuilding'];
|
|||
|
|
$toSendComplexes = $_SESSION['to_send_complexes'];
|
|||
|
|
$toSendASFilter = $_SESSION['to_send_asfilter'];
|
|||
|
|
|
|||
|
|
$_SESSION['to_send'] = array();
|
|||
|
|
$_SESSION['to_send_newbuilding'] = array();
|
|||
|
|
$_SESSION['to_send_complexes'] = array();
|
|||
|
|
$_SESSION['to_send_asfilter'] = array();
|
|||
|
|
|
|||
|
|
session_write_close();
|
|||
|
|
|
|||
|
|
$closes_contact = array();
|
|||
|
|
if($send_type == 0){
|
|||
|
|
$closes_contact = json_decode($_POST['closes_contact'], true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$prices = array();
|
|||
|
|
if(isset($_POST['priсes'])){
|
|||
|
|
$prices = json_decode($_POST['priсes'], true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$hideAddresses = [];
|
|||
|
|
if(isset($_POST['address'])){
|
|||
|
|
$hideAddresses = json_decode($_POST['address'], true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$result = SelectelApi::getTokenAndUrl();
|
|||
|
|
|
|||
|
|
$token = $result[0];
|
|||
|
|
$storageUrl = $result[1];
|
|||
|
|
|
|||
|
|
foreach($toSend as $sts)
|
|||
|
|
{
|
|||
|
|
$pdfs[] = $_SERVER['DOCUMENT_ROOT']."/pdf/$sts-$userId.pdf";
|
|||
|
|
|
|||
|
|
$sql = "SELECT nazv, adres, phone, sobstv FROM objects WHERE id=$sts";
|
|||
|
|
$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'];
|
|||
|
|
|
|||
|
|
if(isset($hideAddresses[$sts]) && $hideAddresses[$sts] == 1){
|
|||
|
|
$obj['adres'] = '';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sql = "INSERT INTO archive(nazv, adres, phone, sobstv, id_obj) VALUES('$obj[nazv]', '$obj[adres]', '$obj[phone]', '$obj[sobstv]', '$sts')";
|
|||
|
|
|
|||
|
|
mysql_query($sql);
|
|||
|
|
|
|||
|
|
foreach ($clientIds as $id_client) {
|
|||
|
|
$close_contact = 0;
|
|||
|
|
if(isset($closes_contact[$sts])){
|
|||
|
|
$close_contact = $closes_contact[$sts];
|
|||
|
|
}
|
|||
|
|
$cena = 0;
|
|||
|
|
if(isset($prices[$sts])){
|
|||
|
|
$cena = $prices[$sts];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$urlToSave = "/pdf/$sts-$userId.pdf";
|
|||
|
|
|
|||
|
|
//сохраняем ПДФ в селектел
|
|||
|
|
if ($token && $storageUrl) {
|
|||
|
|
$fullPath = $_SERVER['DOCUMENT_ROOT']."/pdf/$sts-$userId.pdf";
|
|||
|
|
$name = "$sts-$userId.pdf";
|
|||
|
|
$x = mb_substr($name,0,1);
|
|||
|
|
$y = mb_substr($name,1,1);
|
|||
|
|
$z = mb_substr($name,2,1);
|
|||
|
|
$dstFile = "$x/$y/$z/$name";
|
|||
|
|
$r = SelectelApi::uploadPdfFile($storageUrl, $token, $fullPath, $dstFile);
|
|||
|
|
if ($r) {
|
|||
|
|
//заменяем путь на новый
|
|||
|
|
$urlToSave = "https://pdf.joywork.ru/" . $dstFile;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sql = "INSERT INTO sended_pdf(id_agent, id_object, date_send, id_client, nazv, path, close_contact, send_type, new_price, id_request) VALUES('$userId', '$sts', NOW(), '$id_client', '$obj[nazv] $obj[adres]', '$urlToSave', $close_contact, $send_type, '$cena', '$requestId')";
|
|||
|
|
mysql_query($sql);
|
|||
|
|
|
|||
|
|
$sql = "UPDATE clients SET stage = 3 WHERE id = $id_client";
|
|||
|
|
mysql_query($sql);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (count($toSendASFilter) > 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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
foreach($toSendNewBuildings as $sts)
|
|||
|
|
{
|
|||
|
|
$linkUrl = "https://joywork.ru/newbuilding-view.php?id=$sts&token=".md5($userId);
|
|||
|
|
$sql = "SELECT a.id, a.number, b.name, b.address FROM apartments a, blocks b WHERE b.id = a.block_id AND a.id='$sts'";
|
|||
|
|
|
|||
|
|
$rez = mysql_query($sql);
|
|||
|
|
if (mysql_num_rows($rez) > 0) {
|
|||
|
|
|
|||
|
|
$objts = mysql_fetch_assoc($rez);
|
|||
|
|
|
|||
|
|
if(isset($hideAddresses[$sts]) && $hideAddresses[$sts] == 1){
|
|||
|
|
$objts['address'] = '';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$nazv = "Квартира №$objts[number] в комплексе $objts[name]";
|
|||
|
|
|
|||
|
|
if($send_type == 0) {
|
|||
|
|
$txt .= "<br/><a href='$linkUrl' target='_blank'>$nazv</a><br/>";
|
|||
|
|
} else {
|
|||
|
|
$txt .= $nazv . " " . $linkUrl;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
foreach ($clientIds as $id_client) {
|
|||
|
|
$sql = "INSERT INTO sended_pdf_newbuildings(id_agent, id_object, date_send, id_client, nazv, path, send_type, id_request) VALUES('$userId', '$sts', NOW(), '$id_client', '$nazv $objts[address]', '$linkUrl', $send_type, '$requestId')";
|
|||
|
|
mysql_query($sql);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (count($toSendASFilter) > 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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
foreach($toSendComplexes as $tsc)
|
|||
|
|
{
|
|||
|
|
$linkUrl = "https://joywork.ru/newbuilding-view.php?id=$sts&token=".md5($userId);
|
|||
|
|
// $sql = "SELECT a.id, a.number, b.name, b.address FROM apartments a, blocks b WHERE b.id = a.block_id AND a.id='$tsc'";
|
|||
|
|
|
|||
|
|
$sql = "SELECT cr.id as id, cl.name as complex_name, cl.id as complex_id, cr.type as type, cr.number as number, ca.address as address FROM complex_list cl
|
|||
|
|
JOIN complex_houses ch ON ch.complex_id = cl.id
|
|||
|
|
JOIN complex_entrances ce ON ce.complex_house_id = ch.id
|
|||
|
|
JOIN complex_floors cf ON cf.complex_entrance_id = ce.id
|
|||
|
|
JOIN complex_rooms cr ON cr.floor_id = cf.id
|
|||
|
|
LEFT JOIN complex_address ca on ca.complex_id = cl.id
|
|||
|
|
where cr.id = $ts
|
|||
|
|
";
|
|||
|
|
|
|||
|
|
$rez = mysql_query($sql);
|
|||
|
|
if (mysql_num_rows($rez) > 0) {
|
|||
|
|
|
|||
|
|
$objts = mysql_fetch_assoc($rez);
|
|||
|
|
|
|||
|
|
if(isset($hideAddresses[$tsc]) && $hideAddresses[$tsc] == 1){
|
|||
|
|
$objts['address'] = '';
|
|||
|
|
// var_dump($objts);die;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$nazv = "Квартира №$objts[number] в комплексе $objts[name]";
|
|||
|
|
|
|||
|
|
if($send_type == 0) {
|
|||
|
|
$txt .= "<br/><a href='$linkUrl' target='_blank'>$nazv</a><br/>";
|
|||
|
|
} else {
|
|||
|
|
$txt .= $nazv . " " . $linkUrl;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
foreach ($clientIds as $id_client) {
|
|||
|
|
$sql = "INSERT INTO sended_pdf_newbuildings(id_agent, id_object, date_send, id_client, nazv, path, send_type, id_request) VALUES('$userId', '$sts', NOW(), '$id_client', '$nazv $objts[address]', '$linkUrl', $send_type, '$requestId')";
|
|||
|
|
mysql_query($sql);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (count($toSendASFilter) > 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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$txt .= $footer;
|
|||
|
|
|
|||
|
|
for($i=0; $i < count($pdfs); $i++)
|
|||
|
|
{
|
|||
|
|
$num = $i+1;
|
|||
|
|
$pis[$x][] = $pdfs[$i];
|
|||
|
|
$addr[$x][] = $adresses[$i];
|
|||
|
|
if($num % 5 == 0) $x++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
foreach ($clientIds as $clientId) {
|
|||
|
|
$mail = mysql_result(mysql_query("SELECT email FROM clients WHERE deleted <> 1 AND id = $clientId"),0);
|
|||
|
|
if (isset($pis)) {
|
|||
|
|
foreach ($pis as $x => $pismo) {
|
|||
|
|
mailClientByIdWithConfirm($userId, trim($mail), $theme, $txt, $pismo, $addr[$x]);
|
|||
|
|
if ($token && $storageUrl) {
|
|||
|
|
foreach ($pismo as $i => $path) {
|
|||
|
|
//удаляем файл с локального сервера
|
|||
|
|
unlink($path);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
sleep(1);
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
mailClientByIdWithConfirm($userId, trim($mail), $theme, $txt, [], []);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|