function __callStatic($name, $arguments) { switch ($name) { case 'OnBeforeIBlockElementAdd': $action = 'Add'; break; case 'OnBeforeIBlockElementDelete': $action = 'Delete'; break; case 'OnBeforeIBlockElementUpdate': $action = 'Edit'; break; default: return; break; } $arFields = $arguments[0]; if (!is_array($arFields)) { CModule::IncludeModule('iblock'); $res = CIBlockElement::GetByID($arFields); if ($ar_res = $res->GetNext()) { $arFields = $ar_res; } } switch ($arFields["IBLOCK_ID"]) { case PROJECTS_IBLOCK_ID: $enitity = 'Project'; break; case TASKS_IBLOCK_ID: $enitity = 'Task'; break; default: return; break; } $method = 'hasRigthsTo' . $action . $enitity; global $USER, $APPLICATION; if (method_exists($USER, $method)) { if (!$USER->{$method}($arFields)) { $APPLICATION->throwException("У вас недостаточно прав на эту операцию"); return false; } elseif ($action == 'Delete') { $log = new CrmLog(); $log->delete($arFields['ID']); } } }