| Current Path : /var/www/homesaver/www/bitrix/modules/epages.pickpoint/lib/ |
| Current File : /var/www/homesaver/www/bitrix/modules/epages.pickpoint/lib/Helper.php |
<?php
/**
* User: dimasik142
* Email: ivanov.dmytro.ua@gmail.com
* Date: 05.09.2018
* Time: 18:31
*/
namespace PickPoint;
use CSaleOrderProps,
CSaleLocation,
\Bitrix\Main\Service\GeoIp,
\Bitrix\Main\Config\Option,
Bitrix\Main\Localization\Loc,
\Bitrix\Sale\Location\LocationTable;
Loc::loadMessages(__FILE__);
/**
* Class Helper
* @package PickPoint
*/
class Helper
{
const MODULE_ID = 'epages.pickpoint';
/**
* ����� ��������� ����� ������� ������
*
* @param bool $isLocation
* @return array
*/
public static function getOrderProps($isLocation = false)
{
$arAllProps = [];
$arUTAllProps = [];
$arFilter = [
'ACTIVE' => 'Y',
];
if ($isLocation) {
$arFilter = array_merge($arFilter, [
'IS_LOCATION' => 'Y'
]);
}
$hProps = CSaleOrderProps::GetList(
[
'SORT' => 'ASC'
],
$arFilter,
false,
false,
[]
);
while ($row = $hProps->Fetch()) {
$arAllProps[$row['ID']] = $row;
$arUTAllProps[$row['PERSON_TYPE_ID']][$row['ID']] = $row;
}
return [
'ALL_PROPS' => $arAllProps,
'PERSON_PROPS' => $arUTAllProps
];
}
/**
* ����� �������� ������ ������ � ����� cities.csv
*
* @param int $locationId id ���������������
* @return array
*/
public static function checkPPCityAvailable($locationId)
{
$locationData = LocationTable::getList(
[
'filter' => [
'CODE' => $locationId,
'=NAME.LANGUAGE_ID' => LANGUAGE_ID
],
'select' => [
'NAME_RU' => 'NAME.NAME'
]
]
)->fetchAll()[0];
if (self::isCityAvailable($locationData['NAME_RU'])
) {
return [
'STATUS' => true,
'DATA' => $locationData
];
} else {
return [
'STATUS' => false
];
}
}
/**
* ����� ��������� ���� �������� ������ �� cities.csv
*
* @param string $ruCityNameOrig
* @param string $ruCityNameLang
* @return false|string
*/
public static function getEngCityName($ruCityNameOrig, $ruCityNameLang = '')
{
if (($citiesHandle = fopen($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/epages.pickpoint/cities.csv', 'r'))
!== false
) {
while (($row = fgets($citiesHandle)) !== false) {
$data = explode(';', $row);
if ($ruCityNameOrig == $data[1] || $ruCityNameLang == $data[1]) {
return $data[2];
}
}
fclose($citiesHandle);
}
return false;
}
/**
* ����� ��������� id ����� ������� �� ���������
*
* @return int
*/
public static function getLocationIdByGeoPosition()
{
$ipAddress = GeoIp\Manager::getRealIp();
return \Bitrix\Sale\Location\GeoIp::getLocationId($ipAddress);
}
/**
* �������� �� ������ ������ � ����� cities.csv
*
* @param string $cityName
* @return bool
*/
public static function isCityAvailable($cityName)
{
if (($citiesHandle = fopen($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/epages.pickpoint/cities.csv', 'r'))
!== false
) {
$convertedCityName = str_replace(
Loc::getMessage('EPP_E'),
Loc::getMessage('EPP_E_CONVERTED'),
$cityName
);
while (($row = fgets($citiesHandle)) !== false) {
$data = explode(';', $row);
if ($cityName == $data[1] || $convertedCityName == $data[1]) {
return true;
}
}
fclose($citiesHandle);
}
return false;
}
/**
* @param int $paySystemId
* @return bool
* @throws \Bitrix\Main\SystemException
*/
public static function checkPPPaySystem($paySystemId)
{
$dbRes = \Bitrix\Sale\Internals\PaySystemActionTable::getList(
[
'filter' => [
'ID' => $paySystemId,
],
'select' => [
'ACTION_FILE'
]
]
);
if ($arPaySystem = $dbRes->fetch()) {
if (substr_count($arPaySystem['ACTION_FILE'], 'epages.pickpoint')) {
return true;
}
}
return false;
}
/**
* @param $value
* @throws \Bitrix\Main\SystemException
*/
public static function setPageElementsCount($value = 50)
{
Option::set(self::MODULE_ID, 'show_elements_count', $value);
}
}