OnChangePermissions
Описание и параметры
функция-обработчик( array site_path, array permissions );Событие "OnChangePermissions" вызывается при изменении прав доступа к файлу или папке методом $APPLICATION->SetFileAccessPermission.
Параметры
| Параметр | Описание |
|---|---|
| site_path | Массив вида: array("идентификатор сайта", "путь к файлу относительно корня этого сайта"). |
| permissions | Массив прав доступа. |
Смотрите также
Примеры
<?
// файл /bitrix/modules/search/classes/mysql/search.php
class CSearch extends CAllSearch
{
// создаем обработчик события "OnChangePermissions"
public static function OnChangeFilePermissions($path, $permission)
{
CMain::InitPathVars($site, $path);
$DOC_ROOT = CSite::GetSiteDocRoot($site);
while(strlen($path)>0 && $path[strlen($path)-1]=="/") //отрежем / в конце, если есть
$path=substr($path, 0, strlen($path)-1);
global $APPLICATION, $DB;
if(file_exists($DOC_ROOT.$path))
{
@set_time_limit(300);
$arGroups = CSearch::GetGroupCached();
if(is_dir($DOC_ROOT.$path))
{
$handle = @opendir($DOC_ROOT.$path);
while($file = @readdir($handle))
{
if($file == "." || $file == "..") continue;
if(is_dir($DOC_ROOT.$path."/".$file))
{
if($path."/".$file=="/bitrix")
continue;
}
CSearch::OnChangeFilePermissions(Array($site, $path."/".$file), Array());
}
}
else //if(is_dir($DOCUMENT_ROOT.$path))
{
$strGPerm = "0";
for($i=0; $i<count($arGroups); $i++)
{
if($arGroups[$i]>1)
{
$p = $APPLICATION->GetFileAccessPermission(Array($site, $path), Array($arGroups[$i]));
if($p>="R")
{
$strGPerm .= ",".$arGroups[$i];
if($arGroups[$i]==2) break;
}
}
}
$r = $DB->Query("SELECT ID FROM b_search_content WHERE MODULE_ID='main' AND ITEM_ID='".$site."|".$path."'");
while($arR = $r->Fetch())
$DB->Query("DELETE FROM b_search_content_group WHERE SEARCH_CONTENT_ID=".$arR["ID"]);
$strSql =
"INSERT INTO b_search_content_group(SEARCH_CONTENT_ID, GROUP_ID) ".
"SELECT S.ID, G.ID ".
"FROM b_search_content S, b_group G ".
"WHERE MODULE_ID='main' ".
" AND ITEM_ID='".$site."|".$path."' ".
" AND G.ID IN (".$strGPerm.") ";
$DB->Query($strSql);
} //if(is_dir($DOCUMENT_ROOT.$path))
}//if(file_exists($DOCUMENT_ROOT.$path))
}
}
?>
Пример регистрации функции-обработчика:
<?
// регистрируем обработчик события "OnChangePermissions"
RegisterModuleDependences("main", "OnChangePermissions", "search", "CSearch", "OnChangeFilePermissions");
?>
© «Битрикс», 2001-2025, «1С-Битрикс», 2025