%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/main.lookup.input/templates/iblockedit/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/main.lookup.input/templates/iblockedit/ajax.php |
<?
define("STOP_STATISTICS", true);
define("BX_SECURITY_SHOW_MESSAGE", true);
use Bitrix\Main,
Bitrix\Main\Localization\Loc,
Bitrix\Main\Loader;
if (isset($_REQUEST['admin']) && is_string($_REQUEST['admin']) && $_REQUEST['admin'] == 'Y')
define('ADMIN_SECTION', true);
if (isset($_REQUEST['site']) && !empty($_REQUEST['site']))
{
if (!is_string($_REQUEST['site']))
die();
if (preg_match('/^[a-z0-9_]{2}$/i', $_REQUEST['site']))
define('SITE_ID', $_REQUEST['site']);
}
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
Loc::loadMessages(__FILE__);
global $APPLICATION;
if(!Loader::includeModule('iblock'))
{
echo Loc::getMessage("BT_COMP_MLI_AJAX_ERR_MODULE_ABSENT");
die();
}
CUtil::JSPostUnescape();
$iblockId = (isset($_REQUEST['IBLOCK_ID']) && is_string($_REQUEST['IBLOCK_ID']) ? (int)$_REQUEST['IBLOCK_ID'] : 0);
$withoutIblock = (isset($_REQUEST['WITHOUT_IBLOCK']) && $_REQUEST['WITHOUT_IBLOCK'] == 'Y');
$bSection = (isset($_REQUEST['TYPE']) && $_REQUEST['TYPE'] == 'SECTION');
$resultCount = (isset($_REQUEST['RESULT_COUNT']) && is_string($_REQUEST['RESULT_COUNT']) ? (int)$_REQUEST['RESULT_COUNT'] : 0);
if ($resultCount <= 0)
$resultCount = 20;
if (defined('ADMIN_SECTION') && ADMIN_SECTION === true)
{
$iblockAccessLevel = 'iblock_admin_display';
$filter = array(
'CHECK_PERMISSIONS' => 'Y',
'MIN_PERMISSION' => 'S'
);
}
else
{
if ($bSection)
$iblockAccessLevel = 'section_read';
else
$iblockAccessLevel = 'element_read';
$filter = array(
'CHECK_PERMISSIONS' => 'Y',
'MIN_PERMISSION' => 'R'
);
}
if ($iblockId > 0)
$filter['IBLOCK_ID'] = $iblockId;
if ($withoutIblock && $iblockId == 0)
{
$iblockAccess = true;
}
elseif ($iblockId >= 0)
{
$iblockAccess = CIBlockRights::UserHasRightTo($iblockId, $iblockId, $iblockAccessLevel);
}
else
{
$iblockAccess = false;
}
if (!$iblockAccess)
{
echo Loc::getMessage('BT_COMP_MLI_AJAX_ERR_IBLOCK_ACCESS_DENIED');
die();
}
$strBanSym = trim($_REQUEST['BAN_SYM']);
$arBanSym = str_split($strBanSym, 1);
$strRepSym = trim($_REQUEST['REP_SYM']);
$arRepSym = array_fill(0, sizeof($arBanSym), $strRepSym);
if (isset($_REQUEST['MODE']) && $_REQUEST['MODE'] == 'SEARCH')
{
$APPLICATION->RestartBuffer();
$arResult = array();
$search = trim($_REQUEST['search']);
$matches = array();
if (preg_match('/^(.*?)\[([\d]+?)\]/i', $search, $matches))
{
$matches[2] = (int)$matches[2];
if($matches[2] > 0)
{
$filter['=ID'] = $matches[2];
if ($bSection)
$dbRes = CIBlockSection::GetList(array(), $filter, false, array('ID', 'NAME'));
else
$dbRes = CIBlockElement::GetList(array(), $filter, false, false, array('ID', 'NAME'));
if ($arRes = $dbRes->Fetch())
{
$arResult[] = array(
'ID' => $arRes['ID'],
'NAME' => str_replace($arBanSym, $arRepSym, $arRes['NAME']),
'READY' => 'Y',
);
header('Content-Type: application/json');
echo Main\Web\Json::encode($arResult);
die();
}
}
elseif(strlen($matches[1]) > 0)
{
$search = $matches[1];
}
}
$filter['%NAME'] = $search;
if ($bSection)
$dbRes = CIBlockSection::GetList(array(), $filter, false, array("ID", "NAME"), array("nTopCount" => $resultCount));
else
$dbRes = CIBlockElement::GetList(array(), $filter, false, array("nTopCount" => $resultCount), array("ID", "NAME"));
while($arRes = $dbRes->Fetch())
{
$arResult[] = array(
'ID' => $arRes['ID'],
'NAME' => str_replace($arBanSym, $arRepSym, $arRes['NAME']),
);
}
header('Content-Type: application/json');
echo Main\Web\Json::encode($arResult);
die();
}