Your IP : 216.73.216.229


Current Path : /var/www/amortar/data/www/a-mortar/
Upload File :
Current File : /var/www/amortar/data/www/a-mortar/get_lids.php

<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

if (!CModule::IncludeModule("iblock")) {
	return;
}

define("PASSWORD_FOR_GET", "intec_lids_secret");
define("PASSWORD_FOR_SETTINGS", "intec_secret");
define("PASSWORD_FOR_SAVE_SETTINGS", "psw_intec");

$settingsNameFile = $_SERVER["DOCUMENT_ROOT"]."/settings_get_lids";

/**
* �������� �����
* @url /get_lids.php?psw=intec_lids_secret
*/ 
if ($_GET["psw"] == PASSWORD_FOR_GET) {	
	echo getLeads($settingsNameFile);
}

/**
* ������� � �����������
* @url /get_lids.php?action=settings&psw=intec_secret
*/ 
if ($_GET["action"] == "settings" && $_GET["psw"] == PASSWORD_FOR_SETTINGS) {
	drawSettingsPage($settingsNameFile);
}

/** 
* ��������� ��������
* @url /get_lids.php?action=save&psw=psw_intec
*/
if ($_GET["action"] == "save" && $_GET["psw"] == PASSWORD_FOR_SAVE_SETTINGS) {
	if (!empty($_GET["id"])) {
		saveSettingsToFile($_GET["id"], $settingsNameFile);
	} 
	echo drawSaveForm();	
}

function drawSettingsPage ($settingsNameFile) {
	echo "<h1>��������� ���-����</h1>";
	echo "<p>������� ��������� � �������� ���</p>";	
	$iblocks = getSettingsFromFile($settingsNameFile);	
	$iblockRecords = CIBlock::GetList([], ["SITE_ID" => SITE_ID]);
	echo "<form>";
		echo "<input type='hidden' name='psw' value='".PASSWORD_FOR_SAVE_SETTINGS."'>";
		echo '<input type="hidden" name="action" value="save">';
		echo '<table>';			
			while ($iblockRecord = $iblockRecords->Fetch()) {
				echo '<tr>';
					echo '<td>';
						echo $iblockRecord["NAME"].'['.$iblockRecord["ID"].']';
					echo '</td>';
					echo '<td>';
						echo "<input 
							type='checkbox' 
							name='id[]' 
							value='".$iblockRecord["ID"]."' ";
						if (in_array($iblockRecord["ID"], $iblocks)) {
							echo 'checked';
						}
						echo '>';
							
					echo '</td>';	
				echo '</tr>';						
			}			
		echo '</table>';
		echo '<input type="submit" value="�������">';
	echo '</form>';
}

function drawSaveForm() {
	echo '<script>';
		echo 'alert("����� �������");';
		echo "document.location.href = '/get_lids.php?psw=".PASSWORD_FOR_SETTINGS."&action=settings';";
	echo '</script>';
}

function saveSettingsToFile($text, $settingsNameFile) {
	$text = serialize($text);
	file_put_contents($settingsNameFile, $text);
}

function getSettingsFromFile($settingsNameFile) {
	if (file_exists($settingsNameFile)) {
		return unserialize(file_get_contents($settingsNameFile), ['allowed_classes' => false]);
	}
	return false;
}

/**
* �������� � json
*/
function getLeads($settingsNameFile) {
	$iblockIds = getSettingsFromFile($settingsNameFile);
	$results = [];
	$results = collectFromChatBot();
	$results = array_merge($results, collectFromKiosk());
	$results = array_merge($results, collectFromSaleOrders());	
	$results = array_merge($results, collectOrdersFromStartShop());
	$results = array_merge($results, collectsLeadsFromBitrixForms());
	$results = array_merge($results, collectLeadsFromStartShopForms());	
	$results = array_merge($results, collectLeadsFromIblocks($iblockIds));	
	return json_encode($results);
}

function collectFromChatBot() {
	$results = [];
	if (CModule::IncludeModule("intec.chatbot")) {
		$records = CChatBotResult::GetList([], [">=DATE_CREATE" => getDateYesterday()]);
		if (!empty($records)) {
			foreach ($records->arResult as $record) {
				$res = [];				
				$fields = [[
						"NAME" => "COMMENT",
						"VALUE" => convert($record["PROPERTIES"]["COMMENT"])
					], [
						"NAME" => "EMAIL",
						"VALUE" => convert($record["PROPERTIES"]["EMAIL"])
					], [
						"NAME" => "NAME",
						"VALUE" => convert($record["PROPERTIES"]["NAME"])
					], [
						"NAME" => "PHONE",
						"VALUE" => convert($record["PROPERTIES"]["PHONE"])
					]
				];
				$results[] = createRecord("CHAT_BOT", $record["ID"], $record["DATE_CREATE"], $fields); 
			}
		}
	}
	return $results;
}

function collectFromKiosk() {
	$results = [];
	if (CModule::IncludeModule("intec_basket")) {	
		$arFilter = [
			"IBLOCK_CODE" => "INTEC_BASKET_ORDER", 
			">=DATE_CREATE" => getDateYesterday()
		];	
		$records = CIBlockElement::GetList([], $arFilter, false, ["nPageSize" => 50], []);
		if (!empty($records)) {			
			while ($record = $records->GetNextElement()) {
				$arFields = $record->GetFields();
				$arProperties = $record->GetProperties();
				$fields = [[
						"NAME" => "EMAIL",
						"VALUE" => $chat_bot["EMAIL"]["VALUE"]
					], [
						"NAME" => "NAME",
						"VALUE" => convert($arProperties["FIO"]["VALUE"])
					], [				
						"NAME" => "PHONE",
						"VALUE" => $arProperties["PHONE"]["VALUE"]
					]
				];			
				$results[] = createRecord("ORDER", $arFields["ID"], $arFields["DATE_CREATE"], $fields);
			}
		}
	}
	return $results;
}

function collectFromSaleOrders() {
	$results = [];
	if (CModule::IncludeModule("sale")) {
		$arFilter = [
			">=DATE_INSERT" => getDateYesterday(true)
		];		
		$orders = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter);		
		if ($orders) {
			while ($order = $orders->Fetch()) {
				$fields = [[
						"NAME" => "EMAIL",
						"VALUE" => $order["USER_EMAIL"]
					], [
						"NAME" => "NAME",
						"VALUE" => convert($order["USER_NAME"]." ".$order["USER_LAST_NAME"])
					]
				];			
				$results[] = createRecord("ORDER", $order["ID"], $order["DATE_INSERT"], $fields);
			}
		}
	}
	return $results;
}	

function collectsLeadsFromBitrixForms() {
	$results = [];
	if (CModule::IncludeModule("form")) {
		$arFilter = [
			"SITE" => SITE_ID
		];
		$formRecords = CForm::GetList($by="s_id", $order="desc", $arFilter, $is_filtered);
		while ($formRecord = $formRecords->Fetch()) {
			$forms[] = $formRecord["ID"];
		}	
		foreach ($forms as $key => $form_id) {			
			$arFilter = [
				"TIMESTAMP_1 " => getDateYesterday(true),
				"DATE_CREATE_1" => getDateYesterday(true)
			];			
			$leads = CFormResult::GetList($form_id,  
				($by="s_timestamp"), 
				($order="desc"), 
				$arFilter, 
				$is_filtered, 
				"Y", 
			10);			
			while ($lead = $leads->Fetch()) {			
				$res = array();
				$formFields = CFormResult::GetDataByID($arResult["ID"]);
				$fields = [];
				foreach($formFields as $formField) {
					$fields[] = [
						"NAME" => $formField[0]["TITLE"], 
						"VALUE" => $formField[0]["USER_TEXT"]
					];
				}
				$results[] = createRecord("FEEDBACK", $lead["ID"], $lead["DATE_CREATE"], $fields);
			}
		}		
	}
	return $results;
}

function collectOrdersFromStartShop() {
	$results = [];
	if (CModule::IncludeModule("intec.startshop")) {
		$orders = CStartShopOrder::GetList([], ["SID" => SITE_ID, ">=DATE_CREATE" => getDateYesterday()]);
		if (!empty($orders)) {
			while ($order = $orders->Fetch()) {
				foreach ($order["PROPERTIES"] as $key => $prop) {
					$order["PROPERTIES"][$key] = convert($prop);
				}
				$results[] = createRecord("ORDER", $order["ID"], $order["DATE_CREATE"], $order["PROPERTIES"]);			
			}			
		}		
	}
	return $results;
}

function collectLeadsFromStartShopForms() {
	$results = [];
	if (CModule::IncludeModule("intec.startshop")) {
		$forms = CStartShopForm::GetList([], ['SID' => SITE_ID]);
		if (!empty($forms)) {
			$formsId = [];
			$formProps = [];
			while ($form = $forms->Fetch()) {
				$formsId[] = $form["ID"];			
				$props = CStartShopFormProperty::GetList([], ["FORM" => $formsId]);
				while ($prop = $props->Fetch()) {
					$formProps[$form["ID"]][$prop["ID"]] = $prop;
				}
			}
			$leads = CStartShopFormResult::GetList([], ["FORM" => $formsId, ">=DATE_CREATE" => getDateYesterday()]);
			if (!empty($leads)) {
				while ($result = $leads->Fetch()){
					$fields = [];
					foreach ($result["PROPERTIES"] as $property => $value) {
						$fields[] = [
							"NAME" => $formProps[$result["FORM"]][$property]["CODE"], 
							"VALUE" => convert($value)
						];
					}
					$results[] = createRecord("FEEDBACK", $result["ID"], $result["DATE_CREATE"], $fields);
				}
			}
		}
	}	
	return $results;
}

/**
* @param $iblockIds - id ���������� c �������
*/
function collectLeadsFromIblocks($iblockIds) {
	$results = [];
	if ($iblockIds) {
		$arFilter = [
			"IBLOCK_ID" => $iblockIds,
			"SITE_ID" => SITE_ID,
			">=DATE_CREATE" => getDateYesterday(true)
		];	
		$records = CIBlockElement::GetList(['created_date'=> 'desc'], $arFilter, false, ["nPageSize"=>50]);	
		while ($record = $records->GetNextElement()) {
			$arFields = $record->GetFields();
			$arProperties = $record->GetProperties();
			$fields = [];	
			foreach ($arProperties as $prop) {
				$fields[] = [
					"NAME" => convert($prop["NAME"]),
					"VALUE" => convert($prop["VALUE"])
				];
			}			
			$results[] = createRecord("FEEDBACK", $arFields["ID"], $arFields["DATE_CREATE"], $fields);			
		}
	}
	return $results;
}

function getDateYesterday($bitrix = false) {
	global $DB;
	if ($bitrix) {
		return date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), getTimeYesterday());
	} else {
		return date("Y-m-d H:i:s", getTimeYesterday());
	}
}

function getTimeYesterday() {
	return time() - 60*60*24;
}

/**
* @param $typeOrder - FEEDBACK|ORDER|CHAT_BOT
* @param $fields - [["NAME" => "123123"], ["PHONE" => "+7"], ....]
*/
function createRecord($typeOrder, $id, $dateCreate, $fields = []) {
	return [
		"id" => $id, 
		"date" => $dateCreate, 
		"type_order" => $typeOrder,
		"fields" => $fields	
	];
}

function convert($str) {
	if (SITE_CHARSET == "windows-1251") {
		return iconv("windows-1251" ,"utf-8", $str);
	}
	return $str;
}

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>