uawdijnntqw1x1x1
IP : 216.73.217.167
Hostname : xhost1.intravision.ru
Kernel : Linux xhost1.intravision.ru 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
OS : Linux
PATH:
/
var
/
.
/
files
/
need-2-delete
/
mini-borishof.ru1
/
test-drive2
/
cron.php
/
/
<? ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); //if(php_sapi_name() === 'cli') { //echo'111'; //chdir("/"); // задаем директорию выполнение скрипта $_SERVER["DOCUMENT_ROOT"] = "/var/www/mini-borishof/data/www/mini-borishof.ru/"; require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); $configPath = '/var/www/mini-borishof/data/www/mini-borishof.ru/test-drive2/'; ini_set('memory_limit', '-1'); require $_SERVER["DOCUMENT_ROOT"].'/test-drive2/vendor/autoload.php'; putenv('TMPDIR=/var/www/mini-borishof/data/www/mini-borishof.ru/test-drive2/tmp/');//папка tmp для exel библиотеки \PhpOffice\PhpWord\Settings::setTempDir('/var/www/mini-borishof/data/www/mini-borishof.ru/test-drive2/tmp/');//папка tmp для word библиотеки file_put_contents($configPath.'test.txt','test'); //echo'111'; CModule::IncludeModule("iblock"); $dbElements = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>23), false, Array(), Array( "ID", "PREVIEW_PICTURE", "NAME", "PROPERTY_PHONE", "PROPERTY_MOBILE_PHONE", "PROPERTY_EMAIL", "PROPERTY_LOCATION", )); $mkad = array(); $kotelniki = array(); $STAFF = ''; while ($ell = $dbElements->GetNext()){ if($ell['PROPERTY_LOCATION_VALUE'] == 'kotelniki'){ $kotelniki[] = $ell["PROPERTY_EMAIL_VALUE"]; } if($ell["PROPERTY_LOCATION_VALUE"] == 'mkad'){ $mkad[] = $ell["PROPERTY_EMAIL_VALUE"]; } $STAFF[$ell["ID"]] = $ell; } //print_r($STAFF); $arParams = array( "IBLOCK_ID" => "22", "IBLOCK_TYPE" => "altasib_feedback", "ITEMS_LIMIT" => "10" ); if(!CModule::IncludeModule("iblock")) { $this->AbortResultCache(); ShowError("IBLOCK_MODULE_NOT_INSTALLED"); return false; } //echo'222';$STAFF $arSort= array("SORT" => "ASC", "DATE_ACTIVE_FROM" => "DESC", "ID" => "DESC"); $arFilter = array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "ACTIVE_DATE" => "Y",array( "LOGIC" => "OR", array("PROPERTY_MAIL_SENDED_THANKS_VALUE" => "N"), array("PROPERTY_MAIL_SENDED_REVIEW_VALUE" => "N"), array("PROPERTY_SAVE_ON_GOOGLE_VALUE" => "N"), )); $arSelect = array( "ID", "IBLOCK_ID", "CODE", "NAME", "DATE_CREATE", "DATE_ACTIVE_FROM", "PREVIEW_TEXT", "DETAIL_PICTURE", "PROPERTY_*" ); //echo'333'; $rsElement = CIBlockElement::GetList($arSort, $arFilter, false, $arNavParams, $arSelect); if ($arParams["DETAIL_URL"]) { $rsElement->SetUrlTemplates($arParams["DETAIL_URL"]); } //echo'444'; $need_init_googledrive = false; while($obElement = $rsElement->GetNextElement()) { $arFields = $obElement->GetFields(); //print_r($arFields); $arProps = $obElement->GetProperties(); $arFields["PROPERTYS"] = $arProps; $arResult[] = $arFields; if($arProps["SAVE_ON_GOOGLE"]["VALUE"] != "Y"){ $need_init_googledrive = true; } //print_r($arProps); } //echo'555'; //print_r($arResult); if($need_init_googledrive){ echo'Инициализация переменных для работы с гуглдиском<br>'; /*-----------------Набор функций для работы с гуглдиском-----------------------------------*/ function addTrailingSlash ($path) { return rtrim ($path, '/') . '/'; } function getClient($configPath) { $file_secret = 'client_secret_622867803455-lq8ifijafcbk9alh37eb9eat90ft1roe.apps.googleusercontent.com.json'; // This get's generated by the script, so don't create it $credentialsPath = $configPath ."files/". 'credentials.json'; $client = new Google_Client(); // Matches the "Application Name" you enter during the "Step 1" wizard $client->setApplicationName( 'API App Name' ); $client->setScopes( Google_Service_Drive::DRIVE_FILE ); // You need to go through "Step 1" steps to generate this file: https://developers.google.com/sheets/api/quickstart/php $client->setAuthConfig( $configPath ."files/". $file_secret ); $client->setAccessType( 'offline' ); // This must match the "callback URL" that you enter under "OAuth 2.0 client ID" in the Google APIs console at https://console.developers.google.com/apis/credentials //$client->setRedirectUri( 'https://www.mini-borishof.ru/test-drive2/test.php' ); // We have a stored credentials file, try using the data from there first if ( file_exists( $credentialsPath ) ) { $accessToken = json_decode( file_get_contents( $credentialsPath ), true ); //print_r($accessToken); $client->setAccessToken( $accessToken ); // If the $accessToken is expired then we'll need to refresh it if ( $client->isAccessTokenExpired() ) { $client->fetchAccessTokenWithRefreshToken( $client->getRefreshToken() ); file_put_contents( $credentialsPath, json_encode( $client->getAccessToken() ) ); } return $client; }else{ return false; } } function create_folder($service,$foldername){ $fileMetadata = new Google_Service_Drive_DriveFile([ 'name' => $foldername, 'mimeType' => 'application/vnd.google-apps.folder' ]); $folder = $service->files->create($fileMetadata, ['fields' => 'id']); return $folder->id; } function copy_newtable($service,$tablename,$folder_id,$configPath){ $fileMetadata = new Google_Service_Drive_DriveFile([ 'parents' => array($folder_id), 'addParents' => $folder_id, ]); $fileMetadata->setName($tablename); $fileMetadata->setDescription('Это документ ' . 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); $fileMetadata->setMimeType('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); $content = file_get_contents($configPath.'files/new_table.xlsx');//чистая таблица с заголовками столбцов под запаолнение $file = $service->files->create($fileMetadata, array( 'data' => $content, 'mimeType' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'uploadType' => 'multipart', 'fields' => 'id,size,name, webViewLink, mimeType')); return $file; } function downloadFile($client, $table_file,$return = true,$configPath) { // Determine the file's size and ID $fileId = $table_file->id; $fileSize = intval($table_file->size); // Get the authorized Guzzle HTTP client $http = $client->authorize(); //print_r($http); if(!$return){ $fp = fopen($configPath.'tmp/client.xlsx', 'w'); }else{ $buff = ''; } $chunkSizeBytes = 1 * 1024 * 1024; $chunkStart = 0; // Iterate over each chunk and write it to our file while ($chunkStart < $fileSize) { $chunkEnd = $chunkStart + $chunkSizeBytes; $response = $http->request( 'GET', sprintf('/drive/v3/files/%s', $fileId), [ 'query' => ['alt' => 'media'], 'headers' => [ 'Range' => sprintf('bytes=%s-%s', $chunkStart, $chunkEnd) ] ] ); $chunkStart = $chunkEnd + 1; if(!$return){ fwrite($fp, $response->getBody()->getContents()); }else{ $buff .= $response->getBody()->getContents(); } } if(!$return){ fclose($fp); }else{ return $buff; } } function update_table($service,$fileId,$configPath){ $data = file_get_contents($configPath.'tmp/client.xlsx'); try { $emptyFile = new Google_Service_Drive_DriveFile(); $service->files->update($fileId, $emptyFile, array( 'data' => $data, 'mimeType' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'uploadType' => 'multipart' )); } catch (Exception $e) { print "An error occurred: " . $e->getMessage(); } } /*-----------------начинаем работу с гуглдиском, инициализация файлов и папок если их нет-----------------------------------*/ // Get the API client and construct the service object. $client = getClient($configPath); if($client === false){ }else{ $service = new Google_Service_Drive($client); $foldername = 'Test-Drive'; $tablename = 'База клиентов прошедших тест-драйв по электронной форме тест-драйва test-drive2.xlsx'; $optParams = array( 'pageSize' => 10, 'fields' => 'files(id,size,name, webViewLink, mimeType)', 'q' => "(mimeType = 'application/vnd.google-apps.folder' AND trashed != true) OR (name = '".$tablename."' AND trashed != true)" ); $results = $service->files->listFiles($optParams); if (count($results->getFiles()) == 0) { $folder_id = create_folder($service,$foldername); } else { //print "Files:\n"; foreach ($results->getFiles() as $file) { if($file->getName() == $foldername){ $folder_id = $file->getId(); } if($file->getName() == $tablename){ $table_id = $file->getId(); $table_file = $file; } } } if(!isset($folder_id)){//если папки нет, создаем ее $folder_id = create_folder($service,$foldername); } if(!isset($table_id) && isset($folder_id)){//если таблицы нет, копируем ее из зараннее заготовленной $table_file = copy_newtable($service,$tablename,$folder_id,$configPath); $table_id = $table_file->id; } /*-----------------скачиваем таблицу с гуглдиска-----------------------------------*/ downloadFile($client,$table_file,false,$configPath); } }else{ echo'Инициализация гуглдиска не нужна<br>'; } foreach($arResult as $item){ echo date("d.m.Y H:i:s")."\r\n<br>"; $date_current = strtotime(date("d.m.Y H:i:s")); $date_after15min = strtotime("+15 minutes", strtotime($item['DATE_CREATE'])); $date_after150min = strtotime("+150 minutes", strtotime($item['DATE_CREATE'])); //$date_after15min = strtotime("+1 minutes", strtotime($item['DATE_CREATE'])); //$date_after150min = strtotime("+4 minutes", strtotime($item['DATE_CREATE'])); echo $date_current."\r\n<br>"; echo $date_after15min."\r\n<br>"; echo $date_after150min."\r\n<br>"; //print_r(date("d.m.Y H:m:s")); //print_r($item["PROPERTYS"]["MANAGER"]["VALUE"]); $hidden_copy_email = 'dmitriy.kotin@mini-borishof.ru,marina-tulskikh@yandex.ru'; //добавляем во все письма в скрытую копию if($item["PROPERTYS"]["LOCATION"]["VALUE"] == 'Котельническая набережная 31'){ $hidden_copy_email = $hidden_copy_email . ',anastasiya.kasatkina@mini-borishof.ru,aleksandr.konobeev@mini-borishof.ru'; //добавляем в скрытую копию для локации котельническая $manager_email = implode(",", $kotelniki); $URL_GOOGLE = 'https://g.page/borishof_mini/review?gm'; $ADDRESS = 'Адрес отдела продаж: 115172 Москва<br>Котельническая наб., д. 31<br>Адрес сервиса: 129337 Москва<br>Ярославское шоссе, д. 36'; }else if($item["PROPERTYS"]["LOCATION"]["VALUE"] == 'МКАД 29 км'){ $hidden_copy_email = $hidden_copy_email . ',evgeniy.nesterenko@mini-borishof.ru';// добавляем в скрытую копию, для локации мкад $manager_email = implode(",", $mkad); $URL_GOOGLE = 'https://g.page/mini_borishof/review?gm'; $ADDRESS = '142718 МО<br>Ленинский муниципальный район, с/п Булатниковское, район 29 км МКАД, уч.1'; } $hidden_copy_email = $hidden_copy_email . ',' . $STAFF[$item["PROPERTYS"]["MANAGER"]["VALUE"]]["PROPERTY_EMAIL_VALUE"];// . ',alexander.sanin@intravision.ru';//добавляем в скрытую копию текущего менеджера $aEventFields = array( "MANAGER_EMAIL_LIST" => $hidden_copy_email, "URL_GOOGLE" => $URL_GOOGLE, "ADDRESS" => $ADDRESS, "EMAIL" => $item["PROPERTYS"]["EMAIL"]["VALUE"], "PHONE" => $item["PROPERTYS"]["PHONE"]["VALUE"], "SECONDNAME" => $item["PROPERTYS"]["SECONDNAME"]["VALUE"], "NAME" => $item["PROPERTYS"]["NAME"]["VALUE"], "SURNAME" => $item["PROPERTYS"]["SURNAME"]["VALUE"], "MANAGER" => $STAFF[$item["PROPERTYS"]["MANAGER"]["VALUE"]]["NAME"], "MANAGER_PHONE" => $STAFF[$item["PROPERTYS"]["MANAGER"]["VALUE"]]["PROPERTY_PHONE_VALUE"], "MANAGER_MOBILE_PHONE" => $STAFF[$item["PROPERTYS"]["MANAGER"]["VALUE"]]["PROPERTY_MOBILE_PHONE_VALUE"], "MANAGER_EMAIL" => $STAFF[$item["PROPERTYS"]["MANAGER"]["VALUE"]]["PROPERTY_EMAIL_VALUE"], "MANAGER_LOCATION" => $STAFF[$item["PROPERTYS"]["MANAGER"]["VALUE"]]["PROPERTY_LOCATION_VALUE"], "LOCATION" => $item["PROPERTYS"]["LOCATION"]["VALUE"], "MODEL" => $item["PROPERTYS"]["MODEL"]["VALUE"], "ENGINE" => $item["PROPERTYS"]["ENGINE"]["VALUE"], "IDCLIENT" => $item["PROPERTYS"]["IDCLIENT"]["VALUE"], "NUMBERVOD" => $item["PROPERTYS"]["NUMBERVOD"]["VALUE"], "EXPERIENCE" => $item["PROPERTYS"]["EXPERIENCE"]["VALUE"], "MINIOVNERYESNO" => $item["PROPERTYS"]["MINIOVNERYESNO"]["VALUE"], "MINIOVNER_MODEL" => $item["PROPERTYS"]["MINIOVNER_MODEL"]["VALUE"], "MINIOVNER_EXP" => $item["PROPERTYS"]["MINIOVNER_EXP"]["VALUE"], "OTHERAUTO_MODEL" => $item["PROPERTYS"]["OTHERAUTO_MODEL"]["VALUE"], "OTHERAUTO_TYPE" => $item["PROPERTYS"]["OTHERAUTO_TYPE"]["VALUE"], "OTHERAUTO_EXP" => $item["PROPERTYS"]["OTHERAUTO_EXP"]["VALUE"], "MINEALTERMATIVE_MODEL" => $item["PROPERTYS"]["MINEALTERMATIVE_MODEL"]["VALUE"], "MINEALTERMATIVE_TYPE" => $item["PROPERTYS"]["MINEALTERMATIVE_TYPE"]["VALUE"], "OTHEROFFER_KREDIT" => $item["PROPERTYS"]["OTHEROFFER_KREDIT"]["VALUE"], "OTHEROFFER_LEASING" => $item["PROPERTYS"]["OTHEROFFER_LEASING"]["VALUE"], "OTHEROFFER_STRAHOVANIE" => $item["PROPERTYS"]["OTHEROFFER_STRAHOVANIE"]["VALUE"], "OTHEROFFER_TRADEIN" => $item["PROPERTYS"]["OTHEROFFER_TRADEIN"]["VALUE"], "MAIL_SENDED_REVIEW" => $item["PROPERTYS"]["MAIL_SENDED_REVIEW"]["VALUE"], "MAIL_SENDED_THANKS" => $item["PROPERTYS"]["MAIL_SENDED_THANKS"]["VALUE"], "NAME_DOC_FILE" => $item["PROPERTYS"]["NAME_DOC_FILE"]["VALUE"], "DATA_SAVE" => $item["PROPERTYS"]["DATA_SAVE"]["VALUE"], ); if($item["PROPERTYS"]["SAVE_ON_GOOGLE"]["VALUE"] != "Y"){ echo'Сохранение<br>'; if($client === false){ echo'Ошибка сохранения, гуглдиск не инициализирован<br>'; }else{ /*-----------------Работаем с загруженной xlsx таблицей с гуглдиска, обновляем данные-----------------------------------*/ $objPHPExcel = new PHPExcel(); $objReader = PHPExcel_IOFactory::createReader('Excel2007'); $objPHPExcel = $objReader->load($configPath.'tmp/client.xlsx'); $objPHPExcel->setActiveSheetIndex(0); foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { $i=0; do{ //$i=0; $row=$worksheet->getCellByColumnAndRow(0,$i+1); $i++; }while($row!=''); }; //echo $i; $objPHPExcel->getActiveSheet()->setCellValue('A'.$i, $aEventFields["DATA_SAVE"]); $objPHPExcel->getActiveSheet()->setCellValue('B'.$i, $aEventFields["MODEL"]); $objPHPExcel->getActiveSheet()->setCellValue('C'.$i, $aEventFields["LOCATION"]); $objPHPExcel->getActiveSheet()->setCellValue('D'.$i, $aEventFields["MANAGER"]); $objPHPExcel->getActiveSheet()->setCellValue('E'.$i, $aEventFields["SURNAME"]); $objPHPExcel->getActiveSheet()->setCellValue('F'.$i, $aEventFields["NAME"]); $objPHPExcel->getActiveSheet()->setCellValue('G'.$i, $aEventFields["SECONDNAME"]); $objPHPExcel->getActiveSheet()->setCellValue('H'.$i, $aEventFields["PHONE"]); $objPHPExcel->getActiveSheet()->setCellValue('I'.$i, $aEventFields["EMAIL"]); $objPHPExcel->getActiveSheet()->setCellValue('J'.$i, $aEventFields["NUMBERVOD"]); $objPHPExcel->getActiveSheet()->setCellValue('K'.$i, $aEventFields["EXPERIENCE"]); $objPHPExcel->getActiveSheet()->setCellValue('L'.$i, $aEventFields["MINIOVNERYESNO"]); $objPHPExcel->getActiveSheet()->setCellValue('M'.$i, $aEventFields["MINIOVNER_MODEL"]); $objPHPExcel->getActiveSheet()->setCellValue('N'.$i, $aEventFields["MINIOVNER_EXP"]); $objPHPExcel->getActiveSheet()->setCellValue('P'.$i, $aEventFields["OTHERAUTO_MODEL"]); $objPHPExcel->getActiveSheet()->setCellValue('O'.$i, $aEventFields["OTHERAUTO_TYPE"]); $objPHPExcel->getActiveSheet()->setCellValue('Q'.$i, $aEventFields["OTHERAUTO_EXP"]); $objPHPExcel->getActiveSheet()->setCellValue('R'.$i, $aEventFields["MINEALTERMATIVE_TYPE"]); $objPHPExcel->getActiveSheet()->setCellValue('S'.$i, $aEventFields["MINEALTERMATIVE_MODEL"]); $objPHPExcel->getActiveSheet()->setCellValue('T'.$i, $aEventFields["OTHEROFFER_KREDIT"]); $objPHPExcel->getActiveSheet()->setCellValue('U'.$i, $aEventFields["OTHEROFFER_STRAHOVANIE"]); $objPHPExcel->getActiveSheet()->setCellValue('V'.$i, $aEventFields["OTHEROFFER_LEASING"]); $objPHPExcel->getActiveSheet()->setCellValue('W'.$i, $aEventFields["OTHEROFFER_TRADEIN"]); $objPHPExcel->getActiveSheet()->setCellValue('X'.$i, $aEventFields["LIKE_SONG"]); $objPHPExcel->getActiveSheet()->setCellValue('Y'.$i, $aEventFields["COMMENT"]); $objPHPExcel->getActiveSheet()->setCellValue('Z'.$i, $aEventFields["ENGINE"]); $objPHPExcel->getActiveSheet()->setCellValue('AA'.$i, $aEventFields["IDCLIENT"]); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007"); $excelFileName = $configPath."tmp/client.xlsx"; $excelFile = '' . $excelFileName; $objWriter->save($excelFile); /*-------------------Сохраняем doc файл на гуглдиск---------------------------------*/ if($client !== false){ $fileMetadata = new Google_Service_Drive_DriveFile([ 'parents' => array($folder_id), 'addParents' => $folder_id, ]); $file_name = $aEventFields['NAME_DOC_FILE']; $fileMetadata->setName($file_name); $fileMetadata->setDescription('Это документ ' . 'application/vnd.google-apps.document'); $fileMetadata->setMimeType('application/vnd.google-apps.document'); $content = file_get_contents($configPath.'tmp/'.$aEventFields['NAME_DOC_FILE']); $file = $service->files->create($fileMetadata, array( 'data' => $content, 'mimeType' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'uploadType' => 'multipart', 'fields' => 'id')); //printf("File ID: %s\n", $file->id); } } CIBlockElement::SetPropertyValuesEx($item["ID"], false, array("SAVE_ON_GOOGLE" => "58"));/*сохранение на гуглдиск*/ }else{ echo"Уже сохранено<br>"; } if($item["PROPERTYS"]["MAIL_SENDED_THANKS"]["VALUE"] != "Y" || $item["PROPERTYS"]["MAIL_SENDED_REVIEW"]["VALUE"] != "Y"){ } if($date_current > $date_after15min && $item["PROPERTYS"]["MAIL_SENDED_REVIEW"]["VALUE"] != "Y"){//через 15мин echo'Отправка 1 сообщения<br>'; CIBlockElement::SetPropertyValuesEx($item["ID"], false, array("MAIL_SENDED_REVIEW" => "54"));/*Благодарность от БорисХоф MINI*//*Отправляется первым*/ CEvent::SendImmediate("TESTDRIVE_REVIEW", "s1", $aEventFields); }else{ echo'1 сообщение наверное уже отправлено или время не пришло<br>'; } if($date_current > $date_after150min && $item["PROPERTYS"]["MAIL_SENDED_THANKS"]["VALUE"] != "Y"){//через 2.5часа(150мин) echo'Отправка 2 сообщения<br>'; CIBlockElement::SetPropertyValuesEx($item["ID"], false, array("MAIL_SENDED_THANKS" => "56"));/*Письмо от персонального менеджера БорисХоф MINI.*//*Отправляется последним*/ CEvent::SendImmediate("TESTDRIVE_THANKS", "s1", $aEventFields); }else{ echo'2 сообщение наверное уже отправлено или время не пришло<br>'; } echo"\r\n<br>"; } if($need_init_googledrive && $client !== false){ /*-----------------------Обновление таблицы на гуглдиске-----------------------------*/ update_table($service,$table_id,$configPath); } //}else{ // die('Только из под крон'); //} ?>
/var/./files/need-2-delete/mini-borishof.ru1/test-drive2/cron.php