Verification: a143cc29221c9be0

Path is invalid 120 bitrix

Содержание

◆ __construct()

__construct ( Request  $request = null )

Constructor Controller.

Аргументы

Переопределяется в Tracking.

См. определение в файле main/lib/engine/controller.php строка 80

81  {

83  $this->errorCollection = new ErrorCollection;

85  $this->configurator = new Configurator();

87 

88  $this->init();

89  }

static getCurrent()

Static method returns current instance of context.

init()

Initializes controller.

◆ addError()

addError ( Error  $error )
protected

Adds error to error collection.

Аргументы
Возвращает
$this

См. определение в файле main/lib/engine/controller.php строка 928

929  {

930  $this->errorCollection[] = $error;

931 

932  return $this;

933  }

◆ addErrors()

addErrors ( array  $errors )
protected

Adds list of errors to error collection.

Аргументы
Возвращает
$this

См. определение в файле main/lib/engine/controller.php строка 941

942  {

943  $this->errorCollection->add($errors);

944 

945  return $this;

946  }

◆ appendFilters()

appendFilters ( array  $filters,
array  $filtersToAppend 
)
finalprotected

◆ attachFilters()

attachFilters ( Action  $action )
finalprotected

См. определение в файле main/lib/engine/controller.php строка 787

788  {

791  );

792 

794  foreach ($modifiedConfig['prefilters'] as $filter)

795  {

796 

797  if (!in_array($this->getScope(), $filter->listAllowedScopes(), true))

798  {

799  continue;

800  }

801 

802  $filter->bindAction($action);

803 

804  $eventManager->addEventHandler(

805  'main',

806  static::getFullEventName(static::EVENT_ON_BEFORE_ACTION),

807  array($filter, 'onBeforeAction')

808  );

809 

810  }

811 

812  foreach ($modifiedConfig['postfilters'] as $filter)

813  {

814 

815  if (!in_array($this->getScope(), $filter->listAllowedScopes(), true))

816  {

817  continue;

818  }

819 

820 

821  $filter->bindAction($action);

822 

823  $eventManager->addEventHandler(

824  'main',

825  static::getFullEventName(static::EVENT_ON_AFTER_ACTION),

826  array($filter, 'onAfterAction')

827  );

828  }

829  }

buildFilters(array $config=null)

Builds filter by config.

getActionConfig($actionName)

◆ buildActionInstance()

buildActionInstance (   $actionName,
array  $config 
)
finalprotected

См. определение в файле main/lib/engine/controller.php строка 620

621  {

622  if (isset($config['callable']))

623  {

624  $callable = $config['callable'];

625  if (!is_callable($callable))

626  {

627  throw new ArgumentTypeException('callable', 'callable');

628  }

629 

630  return new ClosureAction($actionName, $this, $callable);

631  }

632  elseif (empty($config['class']))

633  {

634  throw new SystemException(

635  "Could not find class in description of {$actionName} in {$this::className()} to create instance",

636  self::EXCEPTION_UNKNOWN_ACTION

637  );

638  }

639 

640 

641  $action = new $config['class']($actionName, $this, $config);

642 

643  return $action;

644  }

◆ buildErrorFromException()

buildErrorFromException ( \Exception  $e )
protected

См. определение в файле main/lib/engine/controller.php строка 880

881  {

882  if ($e instanceof ArgumentNullException)

883  {

884  return new Error($e->getMessage(), self::ERROR_REQUIRED_PARAMETER);

885  }

886 

887  return new Error($e->getMessage(), $e->getCode());

888  }

◆ buildErrorFromPhpError()

buildErrorFromPhpError ( \Error  $error )
protected

◆ buildFilters()

buildFilters ( array  $config = null )
finalprotected

Builds filter by config.

If there is no config, then we use default filters

См. также
\Bitrix\Main\Engine\Controller::getDefaultPreFilters() and
\Bitrix\Main\Engine\Controller::getDefaultPostFilters(). If now is POST query and there is no csrf check in config, then we add it.
Аргументы
Возвращает
array|null

См. определение в файле main/lib/engine/controller.php строка 697

698  {

699  if ($config === null)

700  {

701  $config = array();

702  }

703 

704  if (!isset($config['prefilters']))

705  {

706  $config['prefilters'] = $this->configurator->wrapFiltersClosure(

708  );

709  }

710  if (!isset($config['postfilters']))

711  {

712  $config['postfilters'] = $this->configurator->wrapFiltersClosure(

714  );

715  }

716 

717  $hasPostMethod = $hasCsrfCheck = false;

718  foreach ($config['prefilters'] as $filter)

719  {

720  if ($filter instanceof ActionFilter\HttpMethod && $filter->containsPostMethod())

721  {

722  $hasPostMethod = true;

723  }

724  if ($filter instanceof ActionFilter\Csrf)

725  {

726  $hasCsrfCheck = true;

727  }

728  }

729 

730  if ($hasPostMethod && !$hasCsrfCheck && $this->request->isPost())

731  {

732  $config['prefilters'][] = new ActionFilter\Csrf;

733  }

734 

735  if (!empty($config['-prefilters']))

736  {

737  $config['prefilters'] = $this->removeFilters($config['prefilters'], $config['-prefilters']);

738  }

739 

740  if (!empty($config['-postfilters']))

741  {

742  $config['postfilters'] = $this->removeFilters($config['postfilters'], $config['-postfilters']);

743  }

744 

745  if (!empty($config['+prefilters']))

746  {

747  $config['prefilters'] = $this->appendFilters($config['prefilters'], $config['+prefilters']);

748  }

749 

750  if (!empty($config['+postfilters']))

751  {

752  $config['postfilters'] = $this->appendFilters($config['postfilters'], $config['+postfilters']);

753  }

754 

755  return $config;

756  }

getDefaultPostFilters()

Returns default post-filters for action.

getDefaultPreFilters()

Returns default pre-filters for action.

appendFilters(array $filters, array $filtersToAppend)

removeFilters(array $filters, array $filtersToRemove)

◆ className()

Returns the fully qualified name of this class.

Возвращает
string

См. определение в файле main/lib/engine/controller.php строка 71

72  {

73  return get_called_class();

74  }

◆ collectDebugInfo()

◆ configureActions()

Возвращает
array

Замещает Controllerable.

Переопределяется в Collector, Csv, Csv, File, Grabber, AuthFlow, ContentView, ControllerBase, Base, Widget, DefaultController, ComponentController, PhoneNumber, PhoneAuth, LoadExt, Export, AuthCode, Disk, Call, HtmlEditorAjax, Product, ResourceBookingAjax, CalendarAjax и File.

См. определение в файле main/lib/engine/controller.php строка 283

284  {

285  return [];

286  }

◆ convertKeysToCamelCase()

convertKeysToCamelCase (   $data )

Converts keys of array to camel case notation.

См. также
\Bitrix\Main\Engine\Response\Converter::OUTPUT_JSON_FORMAT
Аргументы
Возвращает
array|mixed|string

См. определение в файле main/lib/engine/controller.php строка 253

254  {

255  return $this->converter->process($data);

256  }

◆ create()

Переопределяется в ControllerBase, Base и ComponentController.

См. определение в файле main/lib/engine/controller.php строка 587

588  {

591 

592  if (method_exists($this, $methodName))

593  {

594  $method = new \ReflectionMethod($this, $methodName);

595  if ($method->isPublic() && mb_strtolower($method->getName()) === mb_strtolower($methodName))

596  {

597  return new InlineAction($actionName, $this, $config);

598  }

599  }

600  else

601  {

602  if (!$config && ($this instanceof Contract\FallbackActionInterface))

603  {

604  return new FallbackAction($actionName, $this, []);

605  }

606  if (!$config)

607  {

608  throw new SystemException(

609  "Could not find description of {$actionName} in {$this::className()}",

610  self::EXCEPTION_UNKNOWN_ACTION

611  );

612  }

613 

615  }

616 

617  return null;

618  }

buildActionInstance($actionName, array $config)

generateActionMethodName($action)

◆ decodePostData()

См. определение в файле main/lib/engine/controller.php строка 498

498  : void

499  {

500  \CUtil::jSPostUnescape();

501  $this->request->addFilter(new PostDecodeFilter);

502  }

◆ existsAction()

existsAction (   $actionName )
finalprotected

См. определение в файле main/lib/engine/controller.php строка 646

647  {

648  try

649  {

650  $action = $this->create($actionName);

651  }

652  catch (SystemException $e)

653  {

655  {

656  throw $e;

657  }

658  }

659 

660  return isset($action);

661  }

const EXCEPTION_UNKNOWN_ACTION

◆ finalizeResponse()

◆ forward()

forward (   $controller,
string  $actionName,
array  $parameters = null 
)
Аргументы
Controller $controller
string $actionName
array $parameters
Возвращает
HttpResponse|mixed
Исключения

См. определение в файле main/lib/engine/controller.php строка 99

100  {

101  if (is_string($controller))

102  {

103  $controller = new $controller;

104  }

105 

106 

107  $controller->request = $this->getRequest();

108  $controller->setScope($this->getScope());

109  $controller->setCurrentUser($this->getCurrentUser());

110 

111 

112  $result = $controller->run(

113  $actionName,

115  );

116 

117  $this->addErrors($controller->getErrors());

118 

119  return $result;

120  }

addErrors(array $errors)

Adds list of errors to error collection.

getSourceParametersList()

◆ generateActionMethodName()

generateActionMethodName (   $action )
final

◆ getActionConfig()

getActionConfig (   $actionName )
finalprotected

См. определение в файле main/lib/engine/controller.php строка 831

832  {

833  $listOfActions = array_change_key_case($this->configurationOfActions, CASE_LOWER);

834  $actionName = mb_strtolower($actionName);

835 

836  if (!isset($listOfActions[$actionName]))

837  {

838  return null;

839  }

840 

841  return $listOfActions[$actionName];

842  }

◆ getActionUri()

getActionUri (   $actionName,
array  $params = array(),
  $absolute = false 
)
final

Returns uri for ajax end point for the action name.

It's a helper, which uses relative action name without controller name.

Аргументы
string $actionName Action name. It's a relative action name without controller name.
array $params Parameters for creating uri.
bool $absolute
Возвращает
\Bitrix\Main\Web\Uri

См. определение в файле main/lib/engine/controller.php строка 172

173  {

174  if (mb_strpos($this->getFilePath(), '/components/') === false)

175  {

176  return UrlManager::getInstance()->createByController($this, $actionName, $params, $absolute);

177  }

178 

179  return UrlManager::getInstance()->createByComponentController($this, $actionName, $params, $absolute);

180  }

◆ getAutoWiredParameters()

getAutoWiredParameters ( )

◆ getConfigurationOfActions()

getConfigurationOfActions ( )
final

◆ getCurrentUser()

◆ getDefaultAutoWiredParameters()

getDefaultAutoWiredParameters ( )
final

◆ getDefaultPostFilters()

getDefaultPostFilters ( )
protected

◆ getDefaultPreFilters()

Returns default pre-filters for action.

Возвращает
array

Переопределяется в EntitySelector, Base, File, Configuration, BaseReceiver, JsonController, Note, Cookies, Disk и DefaultElement.

См. определение в файле main/lib/engine/controller.php строка 667

668  {

669  return array(

670  new ActionFilter\Authentication(),

671  new ActionFilter\HttpMethod(

672  array(ActionFilter\HttpMethod::METHOD_GET, ActionFilter\HttpMethod::METHOD_POST)

673  ),

674  new ActionFilter\Csrf(),

675  );

676  }

◆ getErrorByCode()

getErrorByCode (   $code )
final

Getting once error with the necessary code.

Аргументы
string $code Code of error.
Возвращает
Error

Замещает Errorable.

См. определение в файле main/lib/engine/controller.php строка 962

963  {

964  return $this->errorCollection->getErrorByCode($code);

965  }

◆ getErrors()

◆ getFilePath()

См. определение в файле main/lib/engine/controller.php строка 151

152  {

153  if (!$this->filePath)

154  {

155  $reflector = new \ReflectionClass($this);

156  $this->filePath = preg_replace('#[\\\/]+#', '/', $reflector->getFileName());

157  }

158 

159  return $this->filePath;

160  }

◆ getFullEventName()

static getFullEventName (   $eventName )
staticfinal

◆ getModuleId()

◆ getPrimaryAutoWiredParameter()

getPrimaryAutoWiredParameter ( )

◆ getRequest()

◆ getSaltToUnsign()

Tries to find salt from request.

It's "c" (component name) in general.

Возвращает
string|null

См. определение в файле main/lib/engine/controller.php строка 217

218  {

220  {

221  if (isset($source['c']) && is_string($source['c']))

222  {

223  return $source['c'];

224  }

225  }

226 

227  return null;

228  }

◆ getScope()

◆ getSourceParametersList()

getSourceParametersList ( )
final

◆ getUnsignedParameters()

getUnsignedParameters ( )
final

◆ init()

◆ listNameActions()

Returns list of all.

Возвращает
array

См. определение в файле main/lib/engine/controller.php строка 262

263  {

265  $lengthSuffix = mb_strlen(self::METHOD_ACTION_SUFFIX);

266 

267  $class = new \ReflectionClass($this);

268  foreach ($class->getMethods(\ReflectionMethod::IS_PUBLIC) as $method)

269  {

270  $probablySuffix = mb_substr($method->getName(), -$lengthSuffix);

271  if ($probablySuffix === self::METHOD_ACTION_SUFFIX)

272  {

273  $actions[] = mb_strtolower(mb_substr($method->getName(), 0, -$lengthSuffix));

274  }

275  }

276 

277  return array_unique($actions);

278  }

getConfigurationOfActions()

◆ logDebugInfo()

◆ prepareParams()

◆ processAfterAction()

processAfterAction ( Action  $action,
  $result 
)
protected

Common operations after process action.

If the method returns void or null it means that we don't want to modify $result.

Аргументы
Возвращает
HttpResponse|mixed|void

Переопределяется в UserFieldConfig.

См. определение в файле main/lib/engine/controller.php строка 552

◆ processBeforeAction()

processBeforeAction ( Action  $action )
protected

Common operations before process action.

Аргументы
Возвращает
bool If method will return false, then action will not execute.

Переопределяется в UserFieldConfig.

См. определение в файле main/lib/engine/controller.php строка 488

489  {

490  return true;

491  }

◆ processUnsignedParameters()

processUnsignedParameters ( )
finalprotected

См. определение в файле main/lib/engine/controller.php строка 190

191  {

193  {

194  if (isset($source['signedParameters']) && is_string($source['signedParameters']))

195  {

196  try

197  {

200  $source['signedParameters']

201  );

202  }

203  catch (BadSignatureException $exception)

204  {}

205 

206 

207  return;

208  }

209  }

210  }

static unsignParameters($componentName, $signedParameters)

getSaltToUnsign()

Tries to find salt from request.

◆ redirectTo()

◆ removeFilters()

removeFilters ( array  $filters,
array  $filtersToRemove 
)
finalprotected

См. определение в файле main/lib/engine/controller.php строка 763

764  {

765  $cleanedFilters = [];

766  foreach ($filters as $filter)

767  {

768  $found = false;

769  foreach ($filtersToRemove as $filterToRemove)

770  {

771  if (is_a($filter, $filterToRemove))

772  {

773  $found = true;

774  break;

775  }

776  }

777 

778  if (!$found)

779  {

780  $cleanedFilters[] = $filter;

781  }

782  }

783 

784  return $cleanedFilters;

785  }

◆ run()

run (   $actionName,
array  $sourceParametersList 
)
final
Аргументы
$actionName
array $sourceParametersList
Возвращает
HttpResponse|mixed
Исключения

См. определение в файле main/lib/engine/controller.php строка 372

373  {

375 

376  $e = null;

377  $result = null;

378 

379  try

380  {

383 

384  $action = $this->create($actionName);

385  if (!$action)

386  {

387  throw new SystemException("Could not create action by name {$actionName}");

388  }

389 

392  {

394  }

395 

399  {

400  $result = $action->runWithSourceParametersList();

401 

402  if ($action instanceof Errorable)

403  {

404  $this->errorCollection->add($action->getErrors());

405  }

406  }

407 

410  if ($probablyResult !== null)

411  {

412  $result = $probablyResult;

413  }

414  }

415  catch (\Throwable $e)

416  {

417  $this->processExceptionInDebug($e);

419  }

420 

422 

423  return $result;

424  }

runProcessingThrowable(\Throwable $throwable)

shouldDecodePostData(Action $action)

processAfterAction(Action $action, $result)

Common operations after process action.

logDebugInfo()

Logs debug info by Diag.

processUnsignedParameters()

collectDebugInfo()

Collects debug info by Diag.

setSourceParametersList($sourceParametersList)

processBeforeAction(Action $action)

Common operations before process action.

triggerOnBeforeAction(Action $action)

Triggers the event {{static::EVENT_ON_BEFORE_ACTION}}.

attachFilters(Action $action)

prepareParams()

Prepare params before process action.

triggerOnAfterAction(Action $action, $result)

◆ runProcessingError()

runProcessingError ( \Error  $error )
protected

◆ runProcessingException()

runProcessingException ( \Exception  $e )
protected

Runs processing exception.

Аргументы
Возвращает
void

Переопределяется в Base.

См. определение в файле main/lib/engine/controller.php строка 868

869  {

870 

872  }

buildErrorFromException(\Exception $e)

◆ runProcessingIfInvalidCsrfToken()

runProcessingIfInvalidCsrfToken ( )
protected

Runs processing if csrf token is invalid.

Возвращает
void

См. определение в файле main/lib/engine/controller.php строка 910

911  {

912  $this->errorCollection[] = new Error('Invalid csrf token');

913 

914  throw new SystemException('Invalid csrf token');

915  }

◆ runProcessingIfUserNotAuthorized()

runProcessingIfUserNotAuthorized ( )
protected

Runs processing if user is not authorized.

Возвращает
void

См. определение в файле main/lib/engine/controller.php строка 899

900  {

901  $this->errorCollection[] = new Error('User is not authorized');

902 

903  throw new SystemException('User is not authorized');

904  }

◆ runProcessingThrowable()

runProcessingThrowable ( \Throwable  $throwable )
protected

См. определение в файле main/lib/engine/controller.php строка 851

852  {

853  if ($throwable instanceof \Exception)

854  {

856  }

857  elseif ($throwable instanceof \Error)

858  {

860  }

861  }

runProcessingException(\Exception $e)

Runs processing exception.

runProcessingError(\Error $error)

◆ setActionConfig()

setActionConfig (   $actionName,
array  $config = null 
)
finalprotected

◆ setCurrentUser()

◆ setScope()

◆ setSourceParametersList()

setSourceParametersList (   $sourceParametersList )
final
Аргументы
array $sourceParametersList
Возвращает
Controller

См. определение в файле main/lib/engine/controller.php строка 358

359  {

360  $this->sourceParametersList = $sourceParametersList;

361 

362  return $this;

363  }

◆ shouldDecodePostData()

shouldDecodePostData ( Action  $action )
protected

◆ triggerOnAfterAction()

triggerOnAfterAction ( Action  $action,
  $result 
)
finalprotected

См. определение в файле main/lib/engine/controller.php строка 566

567  {

568  $event = new Event(

569  'main',

570  static::getFullEventName(static::EVENT_ON_AFTER_ACTION),

571  array(

572  'result' => $result,

573  'action' => $action,

574  'controller' => $this,

575  )

576  );

577  $event->send($this);

578 

579  return $event->getParameter('result');

580  }

◆ triggerOnBeforeAction()

triggerOnBeforeAction ( Action  $action )
finalprotected

Triggers the event {{static::EVENT_ON_BEFORE_ACTION}}.

См. также
\Bitrix\Main\Engine\Controller::getFullEventName. This method is invoked right before an action is executed. In case the action should not run, event handler have to return EvenResult with type EventResult::ERROR.
Аргументы
Возвращает
bool

См. определение в файле main/lib/engine/controller.php строка 513

514  {

515  $event = new Event(

516  'main',

517  static::getFullEventName(static::EVENT_ON_BEFORE_ACTION),

518  array(

519  'action' => $action,

520  'controller' => $this,

521  )

522  );

523  $event->send($this);

524 

525  $allow = true;

526  foreach ($event->getResults() as $eventResult)

527  {

529  {

530  $handler = $eventResult->getHandler();

531  if ($handler && $handler instanceof Errorable)

532  {

533  $this->errorCollection->add($handler->getErrors());

534  }

535 

536  $allow = false;

537  }

538  }

539 

540  return $allow;

541  }

◆ writeToLogException()

writeToLogException ( \Throwable  $e )
protected

См. определение в файле main/lib/engine/controller.php строка 426

427  {

429  $exceptionHandler->writeToLog($e);

430  }

static getInstance()

Returns current instance of the Application.

◆ $configurator

◆ $errorCollection

◆ $request

◆ ERROR_REQUIRED_PARAMETER

const ERROR_REQUIRED_PARAMETER = 'MAIN_CONTROLLER_22001'

◆ ERROR_UNKNOWN_ACTION

const ERROR_UNKNOWN_ACTION = 'MAIN_CONTROLLER_22002'

◆ EVENT_ON_AFTER_ACTION

const EVENT_ON_AFTER_ACTION = 'onAfterAction'

◆ EVENT_ON_BEFORE_ACTION

const EVENT_ON_BEFORE_ACTION = 'onBeforeAction'

◆ EXCEPTION_UNKNOWN_ACTION

const EXCEPTION_UNKNOWN_ACTION = 22002

◆ SCOPE_AJAX

const SCOPE_AJAX = 'ajax'

◆ SCOPE_CLI