You are here

class Projects in DRD Agent 8.3

Same name and namespace in other branches
  1. 4.0.x src/Agent/Action/Projects.php \Drupal\drd_agent\Agent\Action\Projects

Provides a 'Projects' code.

Hierarchy

Expanded class hierarchy of Projects

File

src/Agent/Action/Projects.php, line 11

Namespace

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

  /**
   * {@inheritdoc}
   */
  public function execute() {
    $projects = [];

    // Core.
    $projects[] = [
      'name' => 'drupal',
      'type' => 'core',
      'status' => 1,
      'info' => [
        'core' => '8.x',
        'version' => Drupal::VERSION,
        'project' => 'drupal',
        'hidden' => FALSE,
      ],
    ];

    // Modules.

    /** @noinspection NullPointerExceptionInspection */
    foreach ($this->container
      ->get('extension.list.module')
      ->reset()
      ->getList() as $name => $extension) {
      $this
        ->buildProjectInfo($projects, 'module', $name, $extension);
    }

    // Themes.

    /** @noinspection NullPointerExceptionInspection */
    foreach ($this->container
      ->get('theme_handler')
      ->rebuildThemeData() as $name => $extension) {
      $this
        ->buildProjectInfo($projects, 'theme', $name, $extension);
    }

    // Integration with the Hacked module.
    if ($this->moduleHandler
      ->moduleExists('hacked')) {
      $this
        ->checkHacked($projects);
    }
    return $projects;
  }

  /**
   * Build project info array which is common across Drupal core versions.
   *
   * @param array $projects
   *   List of projects to which a new project get appended.
   * @param string $type
   *   Type of the project (core, module, theme, etc.).
   * @param string $name
   *   Name of the project.
   * @param \Drupal\Core\Extension\Extension $extension
   *   Object with further details about the project.
   */
  private function buildProjectInfo(array &$projects, $type, $name, $extension) {

    /** @noinspection PhpUndefinedFieldInspection */
    $projects[] = [
      'name' => $name,
      'type' => $type,
      'status' => $extension->status,
      'info' => $extension->info,
    ];
  }

  /**
   * Verify each project if it got hacked.
   *
   * @param array $projects
   *   The list of projects.
   */
  private function checkHacked(array &$projects) {
    foreach ($projects as &$project) {
      $hacked = new hackedProject($project['name']);
      $project['hacked'] = [
        'report' => $hacked
          ->compute_report(),
      ];
      $project['hacked']['status'] = $project['hacked']['report']['status'] === HACKED_STATUS_HACKED;
    }
  }

}

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.
Projects::buildProjectInfo private function Build project info array which is common across Drupal core versions.
Projects::checkHacked private function Verify each project if it got hacked.
Projects::execute public function Execute an action. Overrides Base::execute