\CAgent::AddAgent( "\\Your\\Module\\SuperClass::superAgent();", "your.module", "N", 10 * 24 * 3600, "", "Y");\CAgent::RemoveModuleAgents("your.module");#-----------------------------------------------#
# Начало блока конфигурации HTTP хоста
#-----------------------------------------------#
<VirtualHost *:%httpport%>
DocumentRoot "%hostdir%"
ServerName "%host%"
ServerAlias "%host%" %aliases%
ScriptAlias /cgi-bin/ "%hostdir%/cgi-bin/"
</VirtualHost><Directory "E:/OpenServer/OpenServer/domains/dev">
AllowOverride All
php_admin_value mbstring.func_overload 0
</Directory>#-----------------------------------------------#
# Начало блока конфигурации HTTP хоста
#-----------------------------------------------#
<VirtualHost *:%httpport%>
DocumentRoot "%hostdir%"
ServerName "%host%"
ServerAlias "%host%" %aliases%
ScriptAlias /cgi-bin/ "%hostdir%/cgi-bin/"
<Directory "e:\openserver\openserver\domains\cli">
AllowOverride All
php_admin_value mbstring.func_overload 0
</Directory>
<Directory "E:/OpenServer/OpenServer/domains/dev">
AllowOverride All
php_admin_value mbstring.func_overload 0
</Directory>
</VirtualHost>Если в инфоблоке несколько тысяч записей, какой запрос CIBlock::getList отработает быстрее, с применением arFilter или выборка всех записей?
public function ShowHead($bXhtmlStyle=true)
{
echo '<meta http-equiv="Content-Type" content="text/html; charset='.LANG_CHARSET.'"'.($bXhtmlStyle? ' /':'').'>'."\n";
$this->ShowMeta("robots", false, $bXhtmlStyle);
$this->ShowMeta("keywords", false, $bXhtmlStyle);
$this->ShowMeta("description", false, $bXhtmlStyle);
$this->ShowLink("canonical", null, $bXhtmlStyle);
$this->ShowCSS(true, $bXhtmlStyle);
$this->ShowHeadStrings();
$this->ShowHeadScripts();
}Массив полей для группировки элемента. Если поля указаны, то выборка по ним группируется (при этом параметр arSelectFields будет проигнорирован), а в результат добавляется поле CNT - количество сгруппированных элементов. Если указать в качестве arGroupBy пустой массив, то метод вернет количество элементов CNT по фильтру. Группировать можно по полям элемента, а также по значениям его свойств. Для этого в качестве одного из полей группировки необходимо указать PROPERTY_, где PROPERTY_CODE - ID или символьный код свойства.
Необязательное. По умолчанию false - записи не группируются.
создала отдельный файл voting.php в шаблоне компонента
<?
require $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php";
/**
* Тут можете проверить, что все переменные пришли
* Я для себя буду использовать переменные:
* - ELEMENT_ID
* - USER_ID
*
* Просто писать факт голосования.
* В таблицу project_element_vote ( ID, ELEMENT_ID, USER_ID )
*/
global $USER;
/* @var object Объект приложения */
$oApplication = \Bitrix\Main\Application::getInstance();
/* @var object Объект соединения с БД */
$oConnection = $oApplication->getConnection();
/* @var object Хелпер для безопасной записи в БД*/
$oHelper = $oConnection->getSqlHelper();
/* @var object Объект для работы с входящими переменными */
$oRequest = $oApplication->getContext()->getRequest();
if ( $oRequest->isAjaxRequest() && !empty( $oRequest->get('ELEMENT_ID') ) )
{
$iUser = $USER->GetId();
$iElement = $oHelper->forSql( $oRequest->get('ELEMENT_ID') );
$sql = "INSERT INTO project_element_vote('ELEMENT_ID','USER_ID') VALUES ('{$iElement}','{$iUser}')";
$res = $oConnection->query($sql);
if ( $res )
{
echo 'ok';
die();
}
}
echo 'bad'; /* @var string Текст, в котором проводим замену*/
$str = <<<STRTEXT
[index:Звездочет]А тут хз что[/index]
Тут текст [guest]Иванов[/guest]
STRTEXT;
$oTextParser= (new TextParser($str))
->addRule("#\\[index:(.+?)\\](.*?)\\[/index\\]#ies", "indexShow('\\1', '\\2')")
->addRule("#\\[guest](.*?)\\[/guest]#ies","checkGuest('\\1')")
->parse();
/*
На выходе хочу получить:
-------------------------
Звездочет(А тут хз что)
Тут текст GUEST(Иванов)
*/
echo "<pre>";
var_dump($oTextParser->getText());
echo "</pre>";function indexShow( $a, $b)
{
return $a."(".$b.")";
}
function checkGuest( $a )
{
return 'GUEST('.$a.')';
}class TextParser
{
/* @var string Результат выполнения парсинга */
public $parsed;
/* @var string[] Ассоциативный список правил в формате: регулярка => функция для замены */
public $rules = [];
public function __construct( $text )
{
$this->parsed = $text;
}
/**
* Добавляет правило работы парсера
* Для использования цепочек возвращает текущий экземпляр
*
* @param string $regex
* @param string|callback $func
* @return TextParser
*/
public function addRule( $regex, $func )
{
$this->rules[ $regex ] = $func;
return $this;
}
/**
* Выполняет разброр исходного текста
* Для использования цепочек возвращает текущий экземпляр
*
* @return TextParser
*/
public function parse()
{
array_walk(
$this->rules,
function($function, $regular)
{
$this->parsed = preg_replace($regular, $function, $this->parsed);
}
);
return $this;
}
/**
* Возвращает результат парсера (или исходный текст, если был вызван до метода parse)
*
* @return string
*/
public function getText()
{
return $this->parsed;
}
}