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-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.