You are here

class Blocks in DRD Agent 4.0.x

Same name and namespace in other branches
  1. 8.3 src/Agent/Action/Blocks.php \Drupal\drd_agent\Agent\Action\Blocks

Provides a 'Blocks' code.

Hierarchy

Expanded class hierarchy of Blocks

File

src/Agent/Action/Blocks.php, line 12

Namespace

Drupal\drd_agent\Agent\Action
View source
class Blocks extends Base {

  /**
   * Collect all available blocks and return them as a list.
   *
   * @return array
   *   List of block indexed by provider and ID, showing their label as value.
   */
  private function listBlocks() : array {
    $block_list = [];
    try {
      $blb = BlockListBuilder::createInstance($this->container, $this->entityTypeManager
        ->getDefinition('block'));

      /** @var \Drupal\block\BlockInterface[] $blocks */
      $blocks = $blb
        ->load();
      foreach ($blocks as $id => $block) {
        $definition = $block
          ->getPlugin()
          ->getPluginDefinition();
        $block_list[$definition['provider']][$id] = $block
          ->label();
      }
    } catch (PluginNotFoundException $e) {

      // Ignore.
    }
    return $block_list;
  }

  /**
   * Load and return the rendered block.
   *
   * @param string $delta
   *   ID of the block from the given provider.
   *
   * @return \Drupal\Component\Render\MarkupInterface|array
   *   Rendered result of the block or an empty array.
   */
  private function renderBlock($delta) {
    try {
      $blb = BlockListBuilder::createInstance($this->container, $this->entityTypeManager
        ->getDefinition('block'));
    } catch (PluginNotFoundException $e) {
      return [];
    }

    /** @var \Drupal\block\BlockInterface[] $blocks */
    $blocks = $blb
      ->load();
    if (isset($blocks[$delta])) {
      $block = $blocks[$delta];
      $build = $block
        ->getPlugin()
        ->build();

      /** @noinspection NullPointerExceptionInspection */
      return $this->container
        ->get('renderer')
        ->renderPlain($build);
    }
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function execute() {
    if (!$this->moduleHandler
      ->moduleExists('block')) {
      return [];
    }
    $args = $this
      ->getArguments();
    if (!empty($args['module']) && !empty($args['delta'])) {
      return [
        'data' => $this
          ->renderBlock($args['delta']),
      ];
    }
    return $this
      ->listBlocks();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Base::$accountSwitcher protected property
Base::$arguments private property
Base::$configFactory protected property
Base::$container protected property
Base::$crypt protected property Crypt object for this DRD request.
Base::$database protected property
Base::$debugMode private property
Base::$entityTypeManager protected property
Base::$fileSystem protected property
Base::$logger protected property
Base::$messenger protected property
Base::$moduleHandler protected property
Base::$state protected property
Base::$time protected property
Base::authenticate private function Authenticate the request or throw an exception.
Base::authorize public function Authorize the DRD instance, all validations have passed successfully. Overrides BaseInterface::authorize
Base::authorizeBySecret public function Callback to authorize a DRD instance with a given secret.
Base::create public static function Instantiates a new instance of this class. Overrides ContainerInjectionInterface::create
Base::getArguments public function Get the arguments for this request. Overrides BaseInterface::getArguments
Base::getCryptInstance public function Get authorised Crypt object or FALSE if none is available. Overrides BaseInterface::getCryptInstance
Base::getDbInfo public function Get an array of database connection information. Overrides BaseInterface::getDbInfo
Base::getDebugMode public function Get the debug mode. Overrides BaseInterface::getDebugMode
Base::getMessages public function Overrides BaseInterface::getMessages
Base::init public function Overrides BaseInterface::init
Base::ott public function Validate a one-time-token. Overrides BaseInterface::ott
Base::promoteUser public function Change current session to user 1. Overrides BaseInterface::promoteUser
Base::readInput private function Read and decode the input from the POST request.
Base::realPath public function Overrides BaseInterface::realPath
Base::run public function Main callback to execute an action.
Base::SEC_AUTH_ACQUIA constant
Base::SEC_AUTH_PANTHEON constant
Base::SEC_AUTH_PLATFORMSH constant
Base::setDebugMode public function Set the debug mode. Overrides BaseInterface::setDebugMode
Base::toArray private function Recursivly convert request arguments to an array.
Base::watchdog public function Logging if in debug mode. Overrides BaseInterface::watchdog
Base::__construct public function Base constructor.
Blocks::execute public function Execute an action. Overrides Base::execute
Blocks::listBlocks private function Collect all available blocks and return them as a list.
Blocks::renderBlock private function Load and return the rendered block.