...Человеческий поиск в разработке...
- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/dispatcher.php
- Класс: BitrixTasksDOES
- Вызов: DOES::wrapOpCall
private function wrapOpCall($operation) { $callResult = array(); try { $callResult = $operation->call(); } catch(TasksException $e) // old-style tasks exception { $errorCode = static::getErrorCodeByTasksException($e); if($errorCode !== false) { $reasonsAdded = false; if($e->checkOfType(TasksException::TE_FLAG_SERIALIZED_ERRORS_IN_MESSAGE) && $e->getMessage() !== false) { $errors = BitrixTasksUtilType::unSerializeArray($e->getMessage()); foreach ($errors as $error) { $operation->getErrors()->add((string) $error["id"] == '' ? 'ACTION_FAILED_REASON' : $error["id"], htmlspecialcharsBack($error["text"])); $reasonsAdded = true; } } if(!$reasonsAdded) { $operation->getErrors()->add($errorCode, static::proxyExceptionMessage($e)); } } else { throw $e; // let it log } } catch(BitrixTasksAccessDeniedException $e) { // access to the entity is not allowed $operation->getErrors()->add('ACCESS_DENIED', static::proxyExceptionMessage($e)); } catch(BitrixTasksActionNotAllowedException $e) { // access to the entity is generally allowed, but the certain action is forbidden to execute $operation->getErrors()->add('ACTION_NOT_ALLOWED', static::proxyExceptionMessage($e)); static::addReasons($operation, $e->getErrors(), 'ACTION_NOT_ALLOWED'); } catch(BitrixTasksActionFailedException $e) { // action was allowed, but due to some reasons execution failed $operation->getErrors()->add('ACTION_FAILED', static::proxyExceptionMessage($e)); $errors = $e->getErrors(); if(is_array($errors) && !empty($errors)) { foreach($errors as $error) { $operation->getErrors()->add('ACTION_FAILED_REASON', $error); } } } catch(BitrixTasksException $e) { // some general tasks error, no idea what to do $operation->getErrors()->add('ACTION_FAILED', static::proxyExceptionMessage($e)); $errors = $e->getErrors(); if(is_array($errors) && !empty($errors)) { foreach($errors as $error) { $operation->getErrors()->add('ACTION_FAILED_REASON', $error); } } } return $callResult; }