abstract class RestfulDataProviderVariable in RESTful 7
@file Contains \RestfulDataProviderDbQuery
Hierarchy
- class \RestfulPluginBase implements RestfulPluginInterface- class \RestfulBase implements RestfulInterface- class \RestfulDataProviderVariable implements RestfulDataProviderInterface
 
 
- class \RestfulBase implements RestfulInterface
Expanded class hierarchy of RestfulDataProviderVariable
File
- plugins/restful/ RestfulDataProviderVariable.php, line 8 
- Contains \RestfulDataProviderDbQuery
View source
abstract class RestfulDataProviderVariable extends \RestfulBase implements \RestfulDataProviderInterface {
  /**
   * Defines default sort for variable names.
   *
   * By default, the array of variables returned by Drupal is already sorted
   * by variable name in ascending order, so we are returning a default sort
   * here just for clarity.
   *
   * @return array
   *   Array keyed by the sort field, with the order ('ASC' or 'DESC') as value.
   */
  public function defaultSortInfo() {
    return array(
      'name' => 'ASC',
    );
  }
  /**
   * {@inheritdoc}
   */
  public function getVariablesForList() {
    // Map name and value to an indexed array structure.
    foreach ($GLOBALS['conf'] as $variable_name => $variable_value) {
      $variables[] = array(
        'name' => $variable_name,
        'value' => $variable_value,
      );
    }
    // Apply pagination and sorting.
    $this
      ->applyListSort($variables);
    $this
      ->applyListPagination($variables);
    return $variables;
  }
  /**
   * Sort the list of variables.
   *
   * This data provider does not handle compound sorts; the last sort defined
   * will be the one to take effect.
   *
   * @param array $variables
   *   An indexed array containing elements that represent each variable, each
   *   containing a name and a value.
   */
  protected function applyListSort(array &$variables) {
    $public_fields = $this
      ->getPublicFields();
    // Get the sorting options from the request object.
    $sorts = $this
      ->parseRequestForListSort();
    $sorts = $sorts ? $sorts : $this
      ->defaultSortInfo();
    foreach ($sorts as $public_field_name => $direction) {
      if (isset($public_fields[$public_field_name]['property'])) {
        $property_name = $public_fields[$public_field_name]['property'];
        // Only sort by name if it's different than Drupal's default.
        if ($property_name == 'name' && $direction == 'DESC') {
          $variables = array_reverse($variables);
        }
      }
    }
    return $variables;
  }
  /**
   * Set correct page for the index within the array of variables.
   *
   * Determine the page that should be seen. Page 1 is actually index 0.
   *
   * @param array $variables
   *   An array keyed by variable name, valued by unserialized variable value.
   *
   * @throws \RestfulBadRequestException
   */
  protected function applyListPagination(array &$variables) {
    list($offset, $range) = $this
      ->parseRequestForListPagination();
    $variables = array_slice($variables, $offset, $range);
  }
  /**
   * Returns the total count of all variables.
   */
  public function getTotalCount() {
    return count($GLOBALS['conf']);
  }
  /**
   * {@inheritdoc}
   */
  public function index() {
    $variables = $this
      ->getVariablesForList();
    $return = array();
    foreach ($variables as $variable) {
      $return[] = $this
        ->mapVariableToPublicFields($variable);
    }
    return $return;
  }
  /**
   * View a variable or multiple variables.
   *
   * @param string $name_string
   *  A string of variable names, separated by commas.
   */
  public function view($name_string) {
    $names = array_unique(array_filter(explode(',', $name_string)));
    $output = array();
    foreach ($names as $name) {
      $output[] = $this
        ->viewVariable($name);
    }
    return $output;
  }
  /**
   * View a single variable.
   *
   * @param string $name_string
   *  A string of variable names, separated by commas.
   */
  public function viewVariable($name) {
    // Caching is done on the individual variables.
    $cache_id = array(
      'tb' => 'variable',
      'id' => $name,
    );
    $cached_data = $this
      ->getRenderedCache($cache_id);
    if (!empty($cached_data->data)) {
      return $cached_data->data;
    }
    $variable['name'] = $name;
    $variable['value'] = variable_get($name);
    $return = $this
      ->mapVariableToPublicFields($variable);
    $this
      ->setRenderedCache($return, $cache_id);
    return $return;
  }
  /**
   * Alias for $this->variableSet().
   *
   * @param string $name
   *  The name of the variable to set a value for.
   */
  public function replace($name) {
    return $this
      ->variableSet($name, TRUE);
  }
  /**
   * Alias for $this->variableSet().
   *
   * The data structures of variable values are all different, therefore it's
   * impossible to do a partial update in a generic way.
   *
   * @param string $name
   *  The name of the variable to set a value for.
   * @param boolean $full_replace
   *  Completely replace variable values with supplied values.
   */
  public function update($name, $full_replace = FALSE) {
    return $this
      ->variableSet($name, FALSE);
  }
  /**
   * Alias for $this->variableSet().
   */
  public function create() {
    return $this
      ->variableSet();
  }
  /**
   * Sets a variable value.
   *
   * If no variable name is provided in the function call, such as for POST
   * requests, then this method will get the name from the request body.
   *
   * @param string $name
   *  The name of the variable to set a value for.
   * @param boolean $full_replace
   *  Completely replace variable values with supplied values.
   */
  public function variableSet($name = NULL, $full_replace = TRUE) {
    $request = $this
      ->getRequest();
    static::cleanRequest($request);
    // Retrieve the name and value from the request, if present.
    $public_fields = $this
      ->getPublicFields();
    // Set initial empty value for replace and create contexts.
    if ($full_replace) {
      $value = '';
    }
    foreach ($public_fields as $public_property => $info) {
      // Set the name from the request if it wasn't provided.
      if ($info['property'] == 'name' && isset($request[$public_property]) && empty($name)) {
        $name = $request[$public_property];
      }
      // Overwrite empty $value with value from the request, if given.
      if ($info['property'] == 'value' && isset($request[$public_property])) {
        $value = $request[$public_property];
      }
    }
    if (isset($name)) {
      if (isset($value)) {
        variable_set($name, $value);
        // Clear the rendered cache before calling the view method.
        $this
          ->clearRenderedCache(array(
          'tb' => 'variable',
          'id' => $name,
        ));
      }
      // Update contexts could have no value set; if so, do nothing.
      return $this
        ->view($name);
    }
    else {
      // We are in a create context with no name supplied.
      throw new RestfulBadRequestException('No name property supplied');
    }
  }
  /**
   * {@inheritdoc}
   */
  public function remove($name) {
    variable_del($name);
    $this
      ->setHttpHeaders('Status', 204);
  }
  /**
   * Maps variable names and values to public fields.
   *
   * @param array $variable
   *   An array containing the name and value of the variable.
   */
  public function mapVariableToPublicFields($variable) {
    foreach ($this
      ->getPublicFields() as $public_field_name => $info) {
      if (!empty($info['property'])) {
        if (isset($info['property']) && $info['property'] == 'name') {
          $public_field_value = $variable['name'];
        }
        elseif (isset($info['property']) && $info['property'] == 'value') {
          $public_field_value = $variable['value'];
        }
        else {
          throw new RestfulBadRequestException("The only possible properties for the variable resource are 'name' and 'value'.");
        }
      }
      elseif ($info['callback']) {
        $public_field_value = static::executeCallback($info['callback'], array(
          $name,
        ));
      }
      // Modify the public field value using a process callback, if supplied.
      if ($public_field_value && $info['process_callbacks']) {
        foreach ($info['process_callbacks'] as $process_callback) {
          $public_field_value = static::executeCallback($process_callback, array(
            $public_field_value,
          ));
        }
      }
      $return[$public_field_name] = $public_field_value;
    }
    return $return;
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| RestfulBase:: | protected | property | Authentication manager. | |
| RestfulBase:: | protected | property | Cache controller object. | |
| RestfulBase:: | protected | property | Nested array that provides information about what method to call for each route pattern. | |
| RestfulBase:: | protected | property | Array keyed by the header property, and the value. | |
| RestfulBase:: | protected | property | Determines the language of the items that should be returned. | |
| RestfulBase:: | protected | property | The HTTP method used for the request. | |
| RestfulBase:: | protected | property | The path of the request. | |
| RestfulBase:: | protected | property | The public fields that are exposed to the API. | 1 | 
| RestfulBase:: | protected | property | Determines the number of items that should be returned when viewing lists. | |
| RestfulBase:: | protected | property | Rate limit manager. | |
| RestfulBase:: | protected | property | The request array. | |
| RestfulBase:: | public | property | Static cache controller. | |
| RestfulBase:: | protected | property | Holds additional information about the generated values. This information is available to the formatters. | |
| RestfulBase:: | public | function | Determine if user can access the handler. Overrides RestfulInterface:: | 4 | 
| RestfulBase:: | protected | function | Checks access based on the referer header and the allow_origin setting. | |
| RestfulBase:: | protected static | function | Get the cache id parameters based on the keys. | |
| RestfulBase:: | protected | function | Add default values to the public fields array. | 2 | 
| RestfulBase:: | protected | function | Adds query tags and metadata to the EntityFieldQuery. | 2 | 
| RestfulBase:: | public | function | Add the a value to a multi-value HTTP header. Overrides RestfulInterface:: | |
| RestfulBase:: | public | function | Invalidates cache for a certain entity. | |
| RestfulBase:: | public static | function | Helper function to remove the application generated request data. | |
| RestfulBase:: | protected | function | Clear an entry from the rendered cache. | |
| RestfulBase:: | public | function | Clear all caches corresponding to the current resource. | |
| RestfulBase:: | public static | function | Returns the default controllers for the entity. | 1 | 
| RestfulBase:: | public | function | Call resource using the DELETE http method. | |
| RestfulBase:: | public static | function | Execute a user callback. | |
| RestfulBase:: | public | function | Call the output format on the given data. | |
| RestfulBase:: | protected | function | Get the formatter handler for the current restful formatter. | |
| RestfulBase:: | public | function | Returns the names of the available formatter plugins. | |
| RestfulBase:: | protected | function | Generate a cache identifier for the request and the current context. | |
| RestfulBase:: | public | function | Call resource using the GET http method. | |
| RestfulBase:: | public | function | Proxy method to get the account from the authenticationManager. | |
| RestfulBase:: | public | function | Getter for $authenticationManager. | |
| RestfulBase:: | public | function | Getter for $cacheController. | |
| RestfulBase:: | public | function | Return the controller from a given path. | |
| RestfulBase:: | public | function | Get the defined controllers | |
| RestfulBase:: | public | function | Return array keyed by the header property, and the value. Overrides RestfulInterface:: | |
| RestfulBase:: | public | function | Get the language code. | |
| RestfulBase:: | public static | function | Get the non translated menu item. | |
| RestfulBase:: | public | function | Get the HTTP method used for the request. | |
| RestfulBase:: | public static | function | Get the resource name and version from the page arguments in the router. | |
| RestfulBase:: | public | function | Return the path of the request. | |
| RestfulBase:: | public | function | Return the properties that should be public after processing. Overrides RestfulInterface:: | |
| RestfulBase:: | public | function | Get the pager range. | |
| RestfulBase:: | public | function | Getter for rateLimitManager. | |
| RestfulBase:: | protected | function | Get an entry from the rendered cache. | |
| RestfulBase:: | public | function | Get the request array. | |
| RestfulBase:: | protected | function | Gets a request array with the data that should be piped to sub requests. | |
| RestfulBase:: | public static | function | Return the last version for a given resource. | |
| RestfulBase:: | public | function | Return the resource name. | |
| RestfulBase:: | public | function | Helper method; Get the URL of the resource and query strings. | |
| RestfulBase:: | public | function | Get value metadata. | |
| RestfulBase:: | public | function | Return array keyed with the major and minor version of the resource. | |
| RestfulBase:: | public static | function | Gets the major and minor version for the current request. | |
| RestfulBase:: | public | function | Call resource using the GET http method. | |
| RestfulBase:: | final public static | function | Helper method to determine if an array is numeric. | |
| RestfulBase:: | public | function | Helper method to know if the current request is for a list. | |
| RestfulBase:: | public static | function | Determines if the HTTP method represents a read operation. | |
| RestfulBase:: | protected static | function | Check if a conjunction is valid for filtering. | 2 | 
| RestfulBase:: | public static | function | Determines if the HTTP method is one of the known methods. | |
| RestfulBase:: | protected static | function | Check if an operator is valid for filtering. | 1 | 
| RestfulBase:: | public static | function | Determines if the HTTP method represents a write operation. | |
| RestfulBase:: | protected | function | Get the default cache object based on the plugin configuration. | |
| RestfulBase:: | protected static | function | Helper method with the code to run for non implemented CRUD operations. | |
| RestfulBase:: | public | function | Call resource using the OPTIONS http method. | |
| RestfulBase:: | protected | function | Overrides the range parameter with the URL value if any. | |
| RestfulBase:: | protected | function | Filter the query for list. | |
| RestfulBase:: | protected | function | Parses the request object to get the pagination options. | |
| RestfulBase:: | protected | function | Parses the request to get the sorting options. | |
| RestfulBase:: | public static | function | Parses the version string. | |
| RestfulBase:: | public | function | Call resource using the PATCH http method. | |
| RestfulBase:: | public | function | Call resource using the POST http method. | |
| RestfulBase:: | public | function | Entry point to process a request. Overrides RestfulInterface:: | |
| RestfulBase:: | protected | function | Process plugin options by validation keys exists, and set default values. | |
| RestfulBase:: | public | function | Call resource using the PUT http method. | |
| RestfulBase:: | public | function | Proxy method to set the account from the authenticationManager. | |
| RestfulBase:: | public | function | Setter for $authenticationManager. | |
| RestfulBase:: | public | function | Set the HTTP headers. Overrides RestfulInterface:: | |
| RestfulBase:: | public | function | Sets the language code. | |
| RestfulBase:: | public | function | Set the HTTP method used for the request. | |
| RestfulBase:: | public | function | Set the path of the request. | |
| RestfulBase:: | public | function | Set the public fields. | |
| RestfulBase:: | public | function | Set the pager range. | |
| RestfulBase:: | public | function | Setter for rateLimitManager. | |
| RestfulBase:: | protected | function | Store an entry in the rendered cache. | |
| RestfulBase:: | public | function | Set the request array. | |
| RestfulBase:: | public | function | Gets a resource URL based on the current version. | |
| RestfulBase:: | public | function | 2 | |
| RestfulBase:: | public | function | Constructs a RestfulEntityBase object. Overrides RestfulPluginBase:: | 3 | 
| RestfulDataProviderVariable:: | protected | function | Set correct page for the index within the array of variables. | |
| RestfulDataProviderVariable:: | protected | function | Sort the list of variables. | |
| RestfulDataProviderVariable:: | public | function | Alias for $this->variableSet(). Overrides RestfulBase:: | |
| RestfulDataProviderVariable:: | public | function | Defines default sort for variable names. | |
| RestfulDataProviderVariable:: | public | function | Returns the total count of all variables. | |
| RestfulDataProviderVariable:: | public | function | ||
| RestfulDataProviderVariable:: | public | function | Get a list of entities. Overrides RestfulBase:: | |
| RestfulDataProviderVariable:: | public | function | Maps variable names and values to public fields. | |
| RestfulDataProviderVariable:: | public | function | Remove the item from the data source. Overrides RestfulBase:: | |
| RestfulDataProviderVariable:: | public | function | Alias for $this->variableSet(). | |
| RestfulDataProviderVariable:: | public | function | Alias for $this->variableSet(). Overrides RestfulBase:: | |
| RestfulDataProviderVariable:: | public | function | Sets a variable value. | |
| RestfulDataProviderVariable:: | public | function | View a variable or multiple variables. Overrides RestfulBase:: | |
| RestfulDataProviderVariable:: | public | function | View a single variable. | |
| RestfulInterface:: | constant | Return this value from public field access callbacks to allow access. | ||
| RestfulInterface:: | constant | Return this value from public field access callbacks to deny access. | ||
| RestfulInterface:: | constant | Return this value from public field access callbacks to not affect access. | ||
| RestfulInterface:: | constant | |||
| RestfulInterface:: | constant | |||
| RestfulInterface:: | constant | HTTP methods. | ||
| RestfulInterface:: | constant | |||
| RestfulInterface:: | constant | |||
| RestfulInterface:: | constant | |||
| RestfulInterface:: | constant | |||
| RestfulInterface:: | public | function | Return the properties that should be public. | 7 | 
| RestfulInterface:: | constant | |||
| RestfulInterface:: | constant | Token value for token generation functions. | ||
| RestfulInterface:: | constant | |||
| RestfulPluginBase:: | protected | property | The plugin definition array. | |
| RestfulPluginBase:: | public | function | Gets information about the restful plugin. Overrides RestfulPluginInterface:: | |
| RestfulPluginBase:: | public | function | Gets information about the restful plugin key. Overrides RestfulPluginInterface:: | |
| RestfulPluginBase:: | public | function | Sets information about the restful plugin. Overrides RestfulPluginInterface:: | |
| RestfulPluginBase:: | public | function | Gets information about the restful plugin key. Overrides RestfulPluginInterface:: | 
