You are here

abstract class StringBase in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/locale/src/StringBase.php \Drupal\locale\StringBase

Defines the locale string base class.

This is the base class to be used for locale string objects and contains the common properties and methods for source and translation strings.

Hierarchy

Expanded class hierarchy of StringBase

File

core/modules/locale/src/StringBase.php, line 13

Namespace

Drupal\locale
View source
abstract class StringBase implements StringInterface {

  /**
   * The string identifier.
   *
   * @var int
   */
  public $lid;

  /**
   * The string locations indexed by type.
   *
   * @var string
   */
  public $locations;

  /**
   * The source string.
   *
   * @var string
   */
  public $source;

  /**
   * The string context.
   *
   * @var string
   */
  public $context;

  /**
   * The string version.
   *
   * @var string
   */
  public $version;

  /**
   * The locale storage this string comes from or is to be saved to.
   *
   * @var \Drupal\locale\StringStorageInterface
   */
  protected $storage;

  /**
   * Constructs a new locale string object.
   *
   * @param object|array $values
   *   Object or array with initial values.
   */
  public function __construct($values = []) {
    $this
      ->setValues((array) $values);
  }

  /**
   * {@inheritdoc}
   */
  public function getId() {
    return isset($this->lid) ? $this->lid : NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function setId($lid) {
    $this->lid = $lid;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getVersion() {
    return isset($this->version) ? $this->version : NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function setVersion($version) {
    $this->version = $version;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getPlurals() {
    return explode(PoItem::DELIMITER, $this
      ->getString());
  }

  /**
   * {@inheritdoc}
   */
  public function setPlurals($plurals) {
    $this
      ->setString(implode(PoItem::DELIMITER, $plurals));
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getStorage() {
    return isset($this->storage) ? $this->storage : NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function setStorage($storage) {
    $this->storage = $storage;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setValues(array $values, $override = TRUE) {
    foreach ($values as $key => $value) {
      if (property_exists($this, $key) && ($override || !isset($this->{$key}))) {
        $this->{$key} = $value;
      }
    }
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getValues(array $fields) {
    $values = [];
    foreach ($fields as $field) {
      if (isset($this->{$field})) {
        $values[$field] = $this->{$field};
      }
    }
    return $values;
  }

  /**
   * {@inheritdoc}
   */
  public function getLocations($check_only = FALSE) {
    if (!isset($this->locations) && !$check_only) {
      $this->locations = [];
      foreach ($this
        ->getStorage()
        ->getLocations([
        'sid' => $this
          ->getId(),
      ]) as $location) {
        $this->locations[$location->type][$location->name] = $location->lid;
      }
    }
    return isset($this->locations) ? $this->locations : [];
  }

  /**
   * {@inheritdoc}
   */
  public function addLocation($type, $name) {
    $this->locations[$type][$name] = TRUE;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function hasLocation($type, $name) {
    $locations = $this
      ->getLocations();
    return isset($locations[$type]) ? !empty($locations[$type][$name]) : FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function save() {
    if ($storage = $this
      ->getStorage()) {
      $storage
        ->save($this);
    }
    else {
      throw new StringStorageException('The string cannot be saved because its not bound to a storage: ' . $this
        ->getString());
    }
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function delete() {
    if (!$this
      ->isNew()) {
      if ($storage = $this
        ->getStorage()) {
        $storage
          ->delete($this);
      }
      else {
        throw new StringStorageException('The string cannot be deleted because its not bound to a storage: ' . $this
          ->getString());
      }
    }
    return $this;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
StringBase::$context public property The string context.
StringBase::$lid public property The string identifier.
StringBase::$locations public property The string locations indexed by type.
StringBase::$source public property The source string.
StringBase::$storage protected property The locale storage this string comes from or is to be saved to.
StringBase::$version public property The string version.
StringBase::addLocation public function Adds a location for this string. Overrides StringInterface::addLocation
StringBase::delete public function Deletes string object from storage. Overrides StringInterface::delete 1
StringBase::getId public function Gets the string unique identifier. Overrides StringInterface::getId
StringBase::getLocations public function Gets location information for this string. Overrides StringInterface::getLocations
StringBase::getPlurals public function Splits string to work with plural values. Overrides StringInterface::getPlurals
StringBase::getStorage public function Gets the string storage. Overrides StringInterface::getStorage
StringBase::getValues public function Gets field values that are set for given field names. Overrides StringInterface::getValues
StringBase::getVersion public function Gets the string version. Overrides StringInterface::getVersion
StringBase::hasLocation public function Checks whether the string has a given location. Overrides StringInterface::hasLocation
StringBase::save public function Saves string object to storage. Overrides StringInterface::save 1
StringBase::setId public function Sets the string unique identifier. Overrides StringInterface::setId
StringBase::setPlurals public function Sets this string using array of plural values. Overrides StringInterface::setPlurals
StringBase::setStorage public function Sets the string storage. Overrides StringInterface::setStorage
StringBase::setValues public function Sets an array of values as object properties. Overrides StringInterface::setValues
StringBase::setVersion public function Sets the string version. Overrides StringInterface::setVersion
StringBase::__construct public function Constructs a new locale string object. 1
StringInterface::getString public function Gets plain string contained in this object. 2
StringInterface::isNew public function Checks whether the object is not saved to storage yet. 2
StringInterface::isSource public function Checks whether the object is a source string. 2
StringInterface::isTranslation public function Checks whether the object is a translation string. 2
StringInterface::setString public function Sets the string contained in this object. 2