Message.php

Same filename in this branch
  1. 11.x core/modules/contact/src/Entity/Message.php
Same filename and directory in other branches
  1. 9 composer/Plugin/ProjectMessage/Message.php
  2. 9 core/modules/contact/src/Entity/Message.php
  3. 8.9.x composer/Plugin/ProjectMessage/Message.php
  4. 8.9.x core/modules/contact/src/Entity/Message.php
  5. 10 composer/Plugin/ProjectMessage/Message.php
  6. 10 core/modules/contact/src/Entity/Message.php

Namespace

Drupal\Composer\Plugin\ProjectMessage

File

composer/Plugin/ProjectMessage/Message.php

View source
<?php

namespace Drupal\Composer\Plugin\ProjectMessage;

use Composer\Package\RootPackageInterface;

/**
 * Determine configuration.
 *
 * @internal
 */
class Message {
    
    /**
     * The root package.
     *
     * @var \Composer\Package\RootPackageInterface
     */
    protected $rootPackage;
    
    /**
     * The name of the event.
     *
     * @var string
     */
    protected $eventName;
    
    /**
     * The message to display.
     *
     * @var string[]
     */
    protected $messageText = [];
    
    /**
     * Construct a Config object.
     *
     * @param \Composer\Package\RootPackageInterface $root_package
     *   Composer package object for the root package.
     * @param string $event_name
     *   The event name.
     */
    public function __construct(RootPackageInterface $root_package, $event_name) {
        $this->rootPackage = $root_package;
        $this->eventName = $event_name;
    }
    public function getText() {
        if ($this->messageText) {
            return $this->messageText;
        }
        $package_config = $this->rootPackage
            ->getExtra();
        $file = $this->eventName . '-message.txt';
        if ($config_file = $package_config['drupal-core-project-message'][$this->eventName . '-file'] ?? FALSE) {
            $file = $config_file;
        }
        $message = $package_config['drupal-core-project-message'][$this->eventName . '-message'] ?? [];
        if ($message) {
            $this->messageText = $message;
        }
        else {
            $this->messageText = $this->getMessageFromFile($file);
        }
        // Include structured support info from composer.json.
        if ($config_keys = $package_config['drupal-core-project-message']['include-keys'] ?? FALSE) {
            foreach ($config_keys as $config_key) {
                switch ($config_key) {
                    case 'name':
                        if ($homepage = $this->rootPackage
                            ->getName()) {
                            $this->messageText[] = '  * Name: ' . $homepage;
                        }
                        break;
                    case 'description':
                        if ($homepage = $this->rootPackage
                            ->getDescription()) {
                            $this->messageText[] = '  * Description: ' . $homepage;
                        }
                        break;
                    case 'homepage':
                        if ($homepage = $this->rootPackage
                            ->getHomepage()) {
                            $this->messageText[] = '  * Homepage: ' . $homepage;
                        }
                        break;
                    case 'support':
                        if ($support = $this->rootPackage
                            ->getSupport()) {
                            $this->messageText[] = '  * Support:';
                            foreach ($support as $support_key => $support_value) {
                                $this->messageText[] = '    * ' . $support_key . ': ' . $support_value;
                            }
                        }
                        break;
                }
            }
        }
        return $this->messageText;
    }
    
    /**
     * Reads the message file as an array.
     *
     * @param string $file
     *   The file to read. Relative paths are relative to the project directory.
     *
     * @return string[]
     */
    protected function getMessageFromFile($file) {
        return file_exists($file) ? file($file, FILE_IGNORE_NEW_LINES) : [];
    }

}

Classes

Title Deprecated Summary
Message Determine configuration.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.