710 lines
24 KiB
PHP
710 lines
24 KiB
PHP
<?php
|
||
|
||
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
||
require_once($_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php');
|
||
|
||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||
use PhpOffice\PhpSpreadsheet\Style\Color;
|
||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
||
|
||
if ((int)$_SESSION['id'] === 93) {
|
||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||
ini_set('display_errors', 1);
|
||
}
|
||
|
||
set_time_limit(0);
|
||
ini_set('memory_limit', '8192M');
|
||
|
||
// hide_client_contacts: при выгрузке выбранных объектов в Excel маскируем телефон
|
||
// собственника — если он клиент в системе. Чтобы не делать N+1 запросов в цикле,
|
||
// разово собираем список телефонов всех клиентов агентства и проверяем по нему.
|
||
$hideContactsExcelOwn = function_exists('should_hide_contacts_for_current_user')
|
||
&& should_hide_contacts_for_current_user();
|
||
$clientPhonesSet = array(); // нормализованный набор цифр телефона клиентов агентства
|
||
if ($hideContactsExcelOwn) {
|
||
$agencyIdForPhones = (int) User::getUserAgencyID();
|
||
if ($agencyIdForPhones > 0) {
|
||
$sqlPh = "SELECT phone FROM clients WHERE id_agent = $agencyIdForPhones OR who_work IN (
|
||
SELECT id FROM users WHERE id_manager = $agencyIdForPhones OR id = $agencyIdForPhones
|
||
)";
|
||
$resPh = mysql_query($sqlPh);
|
||
if ($resPh) {
|
||
while ($rowPh = mysql_fetch_assoc($resPh)) {
|
||
$d = preg_replace('/[^0-9]/', '', $rowPh['phone']);
|
||
if ($d !== '') {
|
||
$clientPhonesSet[$d] = true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
$domain = 'https://'.$_SERVER['HTTP_HOST'] . '/photos' . '/';
|
||
|
||
$spreadsheet = new Spreadsheet();
|
||
$sheet = $spreadsheet->getActiveSheet();
|
||
|
||
$arrColExcel = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF'];
|
||
|
||
$fields = [
|
||
[
|
||
'name' => "step",
|
||
'title' => '№',
|
||
'width' => 5
|
||
],
|
||
[
|
||
'name' => "id",
|
||
'title' => 'ID объекта',
|
||
'width' => 10
|
||
],
|
||
[
|
||
'name' => "plan",
|
||
'title' => 'Фото планировки',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "preview",
|
||
'title' => 'Фото превью ссылка',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "type",
|
||
'title' => 'Тип рынка',
|
||
'width' => 10
|
||
],
|
||
[
|
||
'name' => "objType",
|
||
'title' => 'Тип квартиры – помещения',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "metro",
|
||
'title' => 'Район/метро',
|
||
'width' => 25
|
||
],
|
||
[
|
||
'name' => "address",
|
||
'title' => 'Адрес',
|
||
'width' => 35
|
||
],
|
||
[
|
||
'name' => "allArea",
|
||
'title' => 'Метраж общий',
|
||
'width' => 10
|
||
],
|
||
[
|
||
'name' => "liveArea",
|
||
'title' => 'Метраж жилой',
|
||
'width' => 10
|
||
],
|
||
[
|
||
'name' => "kitchenArea",
|
||
'title' => 'Метраж кухни',
|
||
'width' => 10
|
||
],
|
||
[
|
||
'name' => "floor",
|
||
'title' => 'Этаж/Этажность',
|
||
'width' => 15
|
||
],
|
||
[
|
||
'name' => "price",
|
||
'title' => 'Цена',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "phone",
|
||
'title' => 'Телефон',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "linkResource",
|
||
'title' => 'Ссылка на первоисточник',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "createDate",
|
||
'title' => 'Дата создания',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "contract_type",
|
||
'title' => 'Тип договора',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "contract_number",
|
||
'title' => 'Номер договора',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "contract_date",
|
||
'title' => 'Дата договора',
|
||
'width' => 20
|
||
],
|
||
|
||
];
|
||
|
||
$fieldsAll = [
|
||
[ //done
|
||
'name' => "id",
|
||
'title' => 'SKU',
|
||
'width' => 10
|
||
],
|
||
|
||
[ //
|
||
'name' => "objType",
|
||
'title' => 'Category',
|
||
'width' => 20
|
||
],
|
||
[ // done
|
||
'name' => "type",
|
||
'title' => 'Characteristic:Тип объекта',
|
||
'width' => 35
|
||
],
|
||
[ // done
|
||
'name' => "opis",
|
||
'title' => 'Text',
|
||
'width' => 35
|
||
],
|
||
[ // done
|
||
'name' => "nazv",
|
||
'title' => 'Title',
|
||
'width' => 35
|
||
],
|
||
[ // done
|
||
'name' => "photo",
|
||
'title' => 'Photo',
|
||
'width' => 20,
|
||
'action' => 'all',
|
||
],
|
||
[ // done
|
||
'name' => "plan",
|
||
'title' => 'Plan photo',
|
||
'width' => 20,
|
||
'action' => 'all',
|
||
],
|
||
[ // done
|
||
'name' => "price",
|
||
'title' => 'Price',
|
||
'width' => 15
|
||
],
|
||
[ // done
|
||
'name' => "address",
|
||
'title' => 'Characteristic:Адрес',
|
||
'width' => 35
|
||
],
|
||
[ // done
|
||
'name' => "metro",
|
||
'title' => 'Characteristics:Район/Метро',
|
||
'width' => 20
|
||
],
|
||
[ // done
|
||
'name' => "allArea",
|
||
'title' => 'Characteristic:Общая площадь',
|
||
'width' => 10
|
||
],
|
||
[ // done
|
||
'name' => "liveArea",
|
||
'title' => 'Characteristic:Площадь комнат',
|
||
'width' => 10
|
||
],
|
||
[ // done
|
||
'name' => "kitchenArea",
|
||
'title' => 'Characteristic:Площадь кухни',
|
||
'width' => 10
|
||
],
|
||
[ // done
|
||
'name' => "landArea", // Площадь участка
|
||
'title' => 'Characteristic:Площадь участка (NO)',
|
||
'width' => 35
|
||
],
|
||
[ // done
|
||
'name' => "numberFlat", // колво комнат
|
||
'title' => 'Characteristic:Количество комнат',
|
||
'width' => 10
|
||
],
|
||
[ // done
|
||
'name' => "floor",
|
||
'title' => 'Characteristic:Этажность',
|
||
'width' => 15
|
||
],
|
||
[ // done
|
||
'name' => "id2",
|
||
'title' => 'External ID',
|
||
'width' => 10
|
||
],
|
||
[ // done
|
||
'name' => "id1",
|
||
'title' => 'Parent UID',
|
||
'width' => 10
|
||
],
|
||
[ // done
|
||
'name' => "manager",
|
||
'title' => 'Characteristic:ФИО',
|
||
'width' => 10
|
||
],
|
||
[ // done
|
||
'name' => "phone",
|
||
'title' => 'Characteristic:Телефон',
|
||
'width' => 10
|
||
],
|
||
[
|
||
'name' => "contract_type",
|
||
'title' => 'Тип договора',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "contract_number",
|
||
'title' => 'Номер договора',
|
||
'width' => 20
|
||
],
|
||
[
|
||
'name' => "contract_date",
|
||
'title' => 'Дата договора',
|
||
'width' => 20
|
||
],
|
||
];
|
||
|
||
|
||
|
||
$objects = [];
|
||
$objectIds = '';
|
||
$post = clearInputData($_POST);
|
||
|
||
if ($_SESSION['checked'] && isset($post['objectIds']) && $post['objectIds'] != 'all') {
|
||
$objectIds = implode(", ", array_map('intval', $_SESSION['checked']));
|
||
} else {
|
||
|
||
$objectIds = $post['objectIds'];
|
||
|
||
if ($objectIds == 'all') {
|
||
|
||
if(isset($_SESSION['agency_objects_export_all_all'])) {
|
||
$objectIds = implode(", ", array_map('intval', $_SESSION['agency_objects_export_all_all']));
|
||
$fields = $fieldsAll;
|
||
} else {
|
||
$objectIds = null;
|
||
}
|
||
}
|
||
}
|
||
|
||
$arrayHeader = [];
|
||
for ($i = 0, $l = sizeof($fields); $i < $l; $i++) {
|
||
$arrayHeader[$arrColExcel[$i]] = $fields[$i];
|
||
}
|
||
|
||
if ($_SESSION['id']) {
|
||
if ($objectIds) {
|
||
|
||
$sql = "SELECT
|
||
objects.id,
|
||
objects.komnat,
|
||
objects.type,
|
||
objects.land_area,
|
||
objects.ploshad,
|
||
objects.ploshad_komn,
|
||
objects.ploshad_k,
|
||
objects.land_usage_type_id,
|
||
objects.etazh,
|
||
objects.dom,
|
||
objects.korpus,
|
||
objects.litera,
|
||
objects.etazh_iz,
|
||
objects.etaz_first_type,
|
||
objects.stoim,
|
||
objects.studio_flag,
|
||
objects.operation_type,
|
||
objects.phone,
|
||
objects.adres,
|
||
rayon.rayon,
|
||
ads_objects.ads_url,
|
||
DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add
|
||
FROM objects
|
||
LEFT JOIN rayon on objects.rayon = rayon.id
|
||
LEFT JOIN ads_objects ON ads_objects.obj_id = objects.id
|
||
WHERE objects.id IN ({$objectIds})
|
||
ORDER BY objects.date_add DESC
|
||
";
|
||
|
||
|
||
//начитка фото списком
|
||
$rezPhotoArray = [];
|
||
$sqlPhotoInfo = "SELECT oop.sort_order, oop.object_id, p.photo
|
||
FROM objects_object_photo oop, object_photo p
|
||
WHERE p.id = oop.object_photo_id AND oop.object_id IN ({$objectIds})";
|
||
|
||
$rezPhotoInfo = mysql_query($sqlPhotoInfo);
|
||
|
||
if (mysql_num_rows($rezPhotoInfo) > 0) {
|
||
while ($objPhoto = mysql_fetch_assoc($rezPhotoInfo)) {
|
||
if (!isset($rezPhotoArray[$objPhoto["object_id"]])) {
|
||
$rezPhotoArray[$objPhoto["object_id"]] = [];
|
||
}
|
||
$rezPhotoArray[$objPhoto["object_id"]]['photo' . $objPhoto['sort_order']] = $objPhoto["photo"];
|
||
}
|
||
}
|
||
|
||
// метро
|
||
$objMetroArray = [];
|
||
$sqlMetro = "SELECT GROUP_CONCAT(metro.metro SEPARATOR ', ') as metro_list, sp_metro.id_obj as id_obj FROM metro, sp_metro WHERE sp_metro.id_metro = metro.id AND sp_metro.id_obj IN ({$objectIds}) GROUP BY sp_metro.id_obj";
|
||
$resultMetro = mysql_query($sqlMetro);
|
||
while ($mtr = mysql_fetch_assoc($resultMetro)) {
|
||
$objMetroArray[$mtr['id_obj']] = $mtr;
|
||
}
|
||
|
||
//начитываем координаты списком
|
||
$objCoordinatesArray = [];
|
||
$sqlCoordinates = "SELECT address, object_id, latitude, longitude FROM object_location WHERE object_id IN ({$objectIds})";
|
||
$rezCoordinatesAll = mysql_query($sqlCoordinates);
|
||
if (mysql_num_rows($rezCoordinatesAll) > 0) {
|
||
while ($objCoords = mysql_fetch_assoc($rezCoordinatesAll)) {
|
||
$objCoordinatesArray[] = $objCoords;
|
||
}
|
||
}
|
||
}
|
||
|
||
$res = mysql_query($sql);
|
||
|
||
$z = 1;
|
||
|
||
while ($obj = mysql_fetch_assoc($res)) {
|
||
|
||
// Превью фото (ссылка)
|
||
$photo = [];
|
||
|
||
if (isset($rezPhotoArray[$obj["id"]])) {
|
||
foreach ($rezPhotoArray[$obj["id"]] as $key => $phot) {
|
||
if(!empty($phot)){
|
||
$photo[] = $phot;
|
||
//break;
|
||
}
|
||
}
|
||
}
|
||
|
||
// Тип квартиры – помещения
|
||
$type = 'Объект';
|
||
|
||
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]-комнатная квартира";
|
||
}
|
||
|
||
// Район/метро
|
||
$metroRayon = '';
|
||
|
||
if ($obj['rayon']) {
|
||
$metroRayon .= $obj['rayon'] . ' район';
|
||
}
|
||
|
||
if (isset($objMetroArray[$obj['id']])) {
|
||
$metroRayon .= ' / ' . $objMetroArray[$obj['id']]['metro_list'];
|
||
}
|
||
|
||
// Адрес
|
||
if (isset($objCoordinatesArray)) {
|
||
foreach ($objCoordinatesArray as $objCoords) {
|
||
if ($objCoords['object_id'] == $obj['id']) {
|
||
$objCoordinates = $objCoords;
|
||
$obj['latitude'] = $objCoordinates['latitude'];
|
||
$obj['longitude'] = $objCoordinates['longitude'];
|
||
break;
|
||
}
|
||
}
|
||
} else {
|
||
$sql_coordinates = "SELECT address, latitude, longitude FROM object_location WHERE object_id=".$obj['id'];
|
||
$rezCoordinates = mysql_query($sql_coordinates);
|
||
if (mysql_num_rows($rezCoordinates) > 0) {
|
||
$objCoordinates = mysql_fetch_assoc($rezCoordinates);
|
||
$obj['latitude'] = $objCoordinates['latitude'];
|
||
$obj['longitude'] = $objCoordinates['longitude'];
|
||
}
|
||
}
|
||
|
||
if ($objCoordinates && isset($objCoordinates['address'])) {
|
||
$address = $objCoordinates['address'];
|
||
} else {
|
||
$address = $obj['adres'];
|
||
if ($obj['dom']) {
|
||
$address = $address . ", " . $obj['dom'];
|
||
}
|
||
if ($obj['korpus']) {
|
||
$address = $address . ", корпус " . $obj['korpus'];
|
||
}
|
||
if ($obj['litera']) {
|
||
$address = $address . ", литера " . $obj['litera'];
|
||
}
|
||
}
|
||
|
||
// Этаж/Этажность
|
||
$etazh = '';
|
||
|
||
if ($obj['type'] == 3) {
|
||
if ($obj['etazh_iz'] * 1 != 0) {
|
||
$etazh = 'из ' . $obj['etazh_iz'] . " этажей";
|
||
}
|
||
}
|
||
|
||
if ($obj['etazh'] * 1 != 0) {
|
||
$etazh = $obj['etazh'] . ' этаж';
|
||
if ((int)$obj['etazh'] == 1 && !empty($obj['etaz_first_type'])) {
|
||
$etazh = $etaz_first_types[$obj['etaz_first_type']];
|
||
|
||
}
|
||
if ($obj['etazh_iz'] * 1 != 0) {
|
||
$etazh .= " из " . $obj['etazh_iz'];
|
||
}
|
||
}
|
||
|
||
// Дата создания
|
||
list($dateAdd, $timeAdd) = explode(" ", $obj['date_add']);
|
||
list($d, $m, $y) = explode(".", $dateAdd);
|
||
|
||
$date_add = $d . " " . getRusMonth($m) . " " . $y;
|
||
$createDate = $date_add . " " . $timeAdd;
|
||
|
||
$objects[] = [
|
||
$z,
|
||
'id' => $obj['id'],
|
||
'preview' => $photo,
|
||
'type' => $obj['operation_type'] == 1 ? "Продажа" : "Аренда",
|
||
'objType' => $type,
|
||
'metro' => $metroRayon,
|
||
'address' => $address,
|
||
'allArea' => $obj['type'] == 7 ? $obj['land_area'] * 1 : $obj['ploshad'] * 1,
|
||
'liveArea' => $obj['ploshad_komn'],
|
||
'landArea' => $obj['land_area'],
|
||
'kitchenArea' => $obj['ploshad_k'] * 1,
|
||
'floor' => $etazh,
|
||
'price' => number_format($obj['stoim'], 0, ',', ' '),
|
||
'phone' => $obj['phone'],
|
||
'linkResource' => $obj['ads_url'],
|
||
'createDate' => $createDate,
|
||
];
|
||
$z++;
|
||
}
|
||
}
|
||
|
||
if (count($objects) > 0) {
|
||
$rowStart = 1;
|
||
|
||
foreach($arrayHeader as $h => $w) {
|
||
$sheet->setCellValue($h.$rowStart, $w['title']);
|
||
$sheet->getColumnDimension($h)->setWidth($w['width']);
|
||
$sheet->getStyle($h.$rowStart)->getFont()->applyFromArray( [ 'name' => 'Arial', 'bold' => TRUE, 'italic' => FALSE, 'strikethrough' => FALSE, 'color' => [ 'rgb' => '808080' ], ] );
|
||
$sheet->getStyle($h)->getAlignment()->setWrapText(true);
|
||
$sheet->getStyle($h.$rowStart)->getAlignment()->setWrapText(true);
|
||
$sheet->getStyle($h.$rowStart)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_CENTER)
|
||
->setVertical(Alignment::VERTICAL_CENTER);
|
||
}
|
||
|
||
$i = $rowStart + 1;
|
||
$k = 1;
|
||
foreach ($objects as $object) {
|
||
$j = 0;
|
||
foreach ($fields as $q => $colSets) {
|
||
switch($colSets['name']) {
|
||
case 'preview':
|
||
if (isset($colSets['action'])) {
|
||
if (is_array($object['preview']) && count($object['preview']) > 0) {
|
||
$previewUrls = array_map('html_entity_decode', $object['preview']);
|
||
$imageIndex = $i; // отдельный индекс для картинок
|
||
foreach ($previewUrls as $index => $url) {
|
||
$sheet->setCellValue($arrColExcel[$q].$imageIndex, 'Посмотреть фото ' . ($index + 1));
|
||
$sheet->getCell($arrColExcel[$q] . $imageIndex)->getHyperlink()->setUrl($url);
|
||
$sheet->getStyle($arrColExcel[$q] . $imageIndex)->getFont()->getColor()->setARGB(Color::COLOR_BLUE);
|
||
$sheet->getStyle($arrColExcel[$q].$imageIndex)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||
$imageIndex++; // увеличить индекс картинки
|
||
}
|
||
} else {
|
||
$sheet->setCellValue($arrColExcel[$q].$i, 'Нет фото');
|
||
$sheet->getStyle($arrColExcel[$q].$i)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||
}
|
||
} else {
|
||
if (is_array($object['preview']) && count($object['preview']) > 0) {
|
||
$previewUrls = array_map('html_entity_decode', $object['preview']);
|
||
$imageIndex = $i; // отдельный индекс для картинок
|
||
foreach ($previewUrls as $index => $url) {
|
||
$sheet->setCellValue($arrColExcel[$q].$imageIndex, 'Посмотреть фото ' . ($index + 1));
|
||
$sheet->getCell($arrColExcel[$q] . $imageIndex)->getHyperlink()->setUrl($url);
|
||
$sheet->getStyle($arrColExcel[$q] . $imageIndex)->getFont()->getColor()->setARGB(Color::COLOR_BLUE);
|
||
$sheet->getStyle($arrColExcel[$q].$imageIndex)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||
$imageIndex++; // увеличить индекс картинки
|
||
}
|
||
} else {
|
||
$sheet->setCellValue($arrColExcel[$q].$i, 'Нет фото');
|
||
$sheet->getStyle($arrColExcel[$q].$i)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||
}
|
||
}
|
||
break;
|
||
|
||
default:
|
||
$sheet->setCellValue($arrColExcel[$q].$i, html_entity_decode($object[$colSets['name']]));
|
||
}
|
||
}
|
||
|
||
$i = $i + count($object['preview']);
|
||
//$i++;
|
||
$k++;
|
||
continue;
|
||
$sheet->setCellValue($arrColExcel[$j].$i, $k);
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['id']));
|
||
$j++;
|
||
|
||
if ($preview = html_entity_decode($object['preview'])) {
|
||
$sheet->setCellValue($arrColExcel[$j].$i, 'Посмотреть фото');
|
||
$sheet->getCell($arrColExcel[$j] . $i)->getHyperlink()->setUrl(html_entity_decode($object['preview']));
|
||
$sheet->getStyle($arrColExcel[$j] . $i)->getFont()->getColor()->setARGB(Color::COLOR_BLUE);
|
||
$sheet->getStyle($arrColExcel[$j].$i)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||
} else {
|
||
$sheet->setCellValue($arrColExcel[$j].$i, 'Нет фото');
|
||
$sheet->getStyle($arrColExcel[$j].$i)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||
}
|
||
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['type']));
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['objType']));
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['metro']));
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['address']));
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['allArea']));
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['liveArea']));
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['kitchenArea']));
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['floor']));
|
||
$sheet->getStyle($arrColExcel[$j].$i)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_CENTER);
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['price']));
|
||
$sheet->getStyle($arrColExcel[$j].$i)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_RIGHT);
|
||
$j++;
|
||
|
||
|
||
|
||
$phoneOwnCell = html_entity_decode($object['phone']);
|
||
if ($hideContactsExcelOwn && !empty($phoneOwnCell)) {
|
||
$digitsCheck = preg_replace('/[^0-9]/', '', $phoneOwnCell);
|
||
if ($digitsCheck !== '' && isset($clientPhonesSet[$digitsCheck])) {
|
||
// Собственник этого объекта — клиент агентства, маскируем.
|
||
$phoneOwnCell = mask_client_phone($phoneOwnCell);
|
||
}
|
||
}
|
||
$sheet->setCellValue($arrColExcel[$j] . $i, $phoneOwnCell);
|
||
$sheet->getStyle($arrColExcel[$j].$i)->getAlignment()
|
||
->setHorizontal(Alignment::HORIZONTAL_RIGHT);
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['linkResource']));
|
||
$j++;
|
||
|
||
$sheet->setCellValue($arrColExcel[$j].$i, html_entity_decode($object['createDate']));
|
||
$j++;
|
||
|
||
|
||
}
|
||
}
|
||
|
||
$writer = new Xlsx($spreadsheet);
|
||
if (
|
||
!file_exists($_SERVER['DOCUMENT_ROOT'] . '/server/excel2/')
|
||
&& !mkdir($concurrentDirectory = $_SERVER['DOCUMENT_ROOT'] . '/server/excel2/', 0777)
|
||
&& !is_dir($concurrentDirectory)
|
||
) {
|
||
throw new \RuntimeException(sprintf('Directory "%s" was not created', $concurrentDirectory));
|
||
}
|
||
|
||
$fileName = "my_objects_" . date('d.m.Y_H-i-s') . ".xlsx";
|
||
$filePath = '/server/excel2/' . $fileName;
|
||
|
||
if ($filePath && $fileName) {
|
||
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
|
||
$writer->save($_SERVER['DOCUMENT_ROOT'] . $filePath);
|
||
echo json_encode([
|
||
'file' => $filePath,
|
||
'result' => 'ok',
|
||
'name' => $fileName,
|
||
]);
|
||
}
|