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:: |