You are here

Storage.php in Configuration Management 7.2

File

lib/Drupal/configuration/Storage/Storage.php
View source
<?php

/**
 * @file
 * Definition of Drupal\configuration\Storage\Storage.
 */
namespace Drupal\configuration\Storage;

use Drupal\configuration\Config\ConfigurationManagement;
class Storage {
  protected $data;
  protected $dependencies;
  protected $optional_configurations;
  protected $required_modules;
  protected $api_version;
  protected $filename;
  protected $loaded;
  protected $hash;
  protected $keys_to_export = array();
  public static $file_extension = '';

  /**
   * Returns TRUE if the file for a configuration exists
   * in the config:// directory.
   */
  public static function configFileExists($filename) {
    return file_exists(ConfigurationManagement::getStream() . '/' . $filename);
  }

  /**
   * Returns TRUE if the current user has write permissions for a configuration
   * file in the config:// directory.
   */
  public static function checkFilePermissions($filename) {
    $dir_path = ConfigurationManagement::getStream();
    $full_path = $dir_path . '/' . $filename;
    if (static::checkDirectory($dir_path)) {
      if (file_exists($full_path)) {
        if (is_writable($full_path) || drupal_chmod($full_path)) {
          return TRUE;
        }
        else {
          drupal_set_message(t('The current user does not have permissions to edit the file %file.', array(
            '%file' => $full_path,
          )), 'error');
        }
      }
      else {
        return TRUE;
      }
    }
    return FALSE;
  }

  /**
   * Returns TRUE if the path is a directory or we can create one in that path.
   */
  public static function checkDirectory($dir_path) {
    if (!is_dir($dir_path)) {
      if (drupal_mkdir($dir_path, NULL, TRUE)) {
        return TRUE;
      }
      else {

        // If the directory does not exists and cannot be created.
        drupal_set_message(st('The directory %directory does not exist and could not be created.', array(
          '%directory' => $dir_path,
        )), 'error');
        watchdog('file system', 'The directory %directory does not exist and could not be created.', array(
          '%directory' => $dir_path,
        ), WATCHDOG_ERROR);
        return FALSE;
      }
    }
    else {
      if (is_writable($dir_path) || drupal_chmod($dir_path)) {
        return TRUE;
      }
      watchdog('configuration', 'The current user does not have write permissions in the directory %dir.', array(
        '%dir' => $dir_path,
      ), WATCHDOG_ERROR);
      drupal_set_message(t('The current user does not have write permissions in the directory %dir.', array(
        '%dir' => $dir_path,
      )), 'error', FALSE);
    }
    return FALSE;
  }
  public function __construct() {
    $this
      ->reset();
  }
  public function reset() {
    $this->hash = '';
    $this->loaded = FALSE;
    $this->dependencies = array();
    $this->optional_configurations = array();
    $this->data = NULL;
    $this->api_version = '0.0.0';
  }
  public function export($var, $prefix = '') {
  }
  public function import($file_content) {
  }

  /**
   * Saves the configuration object into the DataStore.
   */
  public function save() {
  }

  /**
   * Loads the configuration object from the DataStore.
   *
   * @param $file_content
   *   Optional. The content to load directly.
   * @param $source
   *   Optional. An optional path to load the configuration.
   */
  public function load($file_content = NULL, $source = NULL) {
    return $this;
  }
  public function reLoad($file_content = NULL, $source = NULL) {
    $this
      ->reset();
    return $this
      ->load($file_content);
  }
  public function setFileName($filename) {
    $this->filename = $filename;
    return $this;
  }
  public function getFileName() {
    return $this->filename;
  }
  public function setData($data) {
    $this->data = $data;
    return $this;
  }

  /**
   * Set an array of keys names to export. If the array is empty,
   * all the keys of the configuration will be exported.
   */
  public function setKeysToExport($keys) {
    $this->keys_to_export = $keys;
    return $this;
  }
  public function withData() {
    return !empty($this->data);
  }
  public function getData() {
    return $this->data;
  }
  public function getDependencies() {
    return $this->dependencies;
  }
  public function setDependencies($dependencies) {
    $this->dependencies = $dependencies;
    return $this;
  }
  public function getOptionalConfigurations() {
    return $this->optional_configurations;
  }
  public function setOptionalConfigurations($optional_configurations) {
    $this->optional_configurations = $optional_configurations;
    return $this;
  }
  public function getModules() {
    return $this->required_modules;
  }
  public function setModules($modules) {
    $this->required_modules = $modules;
    return $this;
  }
  public function setApiVersion($api_version) {
    $this->api_version = $api_version;
    return $this;
  }
  public function getApiVersion() {
    return $this->api_version;
  }
  public function checkForChanges($object) {
    $new = $this
      ->export($object);
    $original = $this
      ->export($this
      ->load()->data);
    return $new != $original;
  }
  public function getHash() {
    return $this->hash;
  }
  public static function getFileExtension() {
    return static::$file_extension;
  }

}

Classes

Namesort descending Description
Storage