| Current Path : /var/www/amortar/data/www/a-mortar/ |
| 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");?>