You are here

ConfigPagesCommands.php in Config Pages 8.2

Same filename and directory in other branches
  1. 8.3 src/Commands/ConfigPagesCommands.php

File

src/Commands/ConfigPagesCommands.php
View source
<?php

namespace Drupal\config_pages\Commands;

use Drupal\config_pages\Entity\ConfigPages;
use Drupal\config_pages\Entity\ConfigPagesType;
use Drush\Commands\DrushCommands;

/**
 * A Drush command file.
 *
 * See these files for an example of injecting Drupal services:
 *   - http://cgit.drupalcode.org/devel/tree/src/Commands/DevelCommands.php
 *   - http://cgit.drupalcode.org/devel/tree/drush.services.yml.
 */
class ConfigPagesCommands extends DrushCommands {

  /**
   * Set a value for the field of Config Pages.
   *
   * @command config:pages-set-field-value
   * @param string $bundle
   *   The type of config page "/admin/structure/config_pages/types".
   * @param string $field_name
   *   The name of field.
   * @param string $value
   *   The value for the field.
   * @param null $context
   *   ConfigPage context.
   * @param array $options
   *   An associative array of options whose values
   *   come from cli, aliases, config, etc.
   * @option append
   *   Append to an existing value.
   * @usage drush cpsfv bundle field_name value
   *   Set new value for field_name.
   * @usage drush cpsfv bundle field_name value --append
   *   Append a value to existing string.
   * @validate-module-enabled config_pages
   * @aliases cpsfv,config-pages-set-field-value
   */
  public function pagesSetFieldValue($bundle, $field_name, $value, $context = NULL, array $options = [
    'append' => NULL,
  ]) {
    try {
      $config_page = config_pages_config($bundle, $context);
      if (empty($config_page)) {
        $type = ConfigPagesType::load($bundle);
        $config_page = ConfigPages::create([
          'type' => $bundle,
          'label' => $type
            ->label(),
          'context' => $type
            ->getContextData(),
        ]);
        $config_page
          ->save();
      }
      $append = $options['append'];
      if (isset($append)) {
        $value = $config_page
          ->get($field_name)
          ->getString() . $value;
      }
      $config_page
        ->set($field_name, str_replace('\\n', PHP_EOL, $value));
      $config_page
        ->save();
      $this
        ->output()
        ->writeln('Saved new value for ' . $field_name . ' field.');
    } catch (\Exception $e) {
      $this
        ->logger()
        ->error($e
        ->getMessage());
    }
  }

  /**
   * Get a value for the field of Config Pages.
   *
   * @param string $bundle
   *   The type of config page "/admin/structure/config_pages/types".
   * @param string $field_name
   *   The name of field.
   * @param null $context
   *   Context.
   * @validate-module-enabled config_pages
   *
   * @command config:pages-get-field-value
   * @aliases cpgfv,config-pages-get-field-value
   */
  public function pagesGetFieldValue($bundle, $field_name, $context = NULL) {
    try {
      $config_page = config_pages_config($bundle, $context);
      if (!empty($config_page)) {
        $this
          ->output()
          ->writeln($config_page
          ->get($field_name)->value);
      }
    } catch (\Exception $e) {
      $this
        ->logger()
        ->error($e
        ->getMessage());
    }
  }

}

Classes

Namesort descending Description
ConfigPagesCommands A Drush command file.