class RestfulFilesUpload in RESTful 7
@file Contains RestfulFilesUpload.
Hierarchy
- class \RestfulPluginBase implements RestfulPluginInterface
- class \RestfulBase implements RestfulInterface
- class \RestfulDataProviderEFQ implements RestfulDataProviderEFQInterface, RestfulDataProviderInterface
- class \RestfulEntityBase implements RestfulEntityInterface
- class \RestfulFilesUpload
- class \RestfulEntityBase implements RestfulEntityInterface
- class \RestfulDataProviderEFQ implements RestfulDataProviderEFQInterface, RestfulDataProviderInterface
- class \RestfulBase implements RestfulInterface
Expanded class hierarchy of RestfulFilesUpload
1 string reference to 'RestfulFilesUpload'
- files_upload__1_0.inc in plugins/
restful/ file/ files_upload/ 1.0/ files_upload__1_0.inc
File
- plugins/
restful/ RestfulFilesUpload.php, line 8 - Contains RestfulFilesUpload.
View source
class RestfulFilesUpload extends \RestfulEntityBase {
/**
* Overrides \RestfulBase::controllersInfo().
*/
public static function controllersInfo() {
return array(
'' => array(
\RestfulInterface::POST => 'createEntity',
),
);
}
/**
* Overrides \RestfulEntityBase::__construct()
*
* Set the "options" key from the plugin info, specific for file upload, with
* the following keys:
* - "validators": By default no validation is done on the file extensions or
* file size.
* - "scheme": By default the default scheme (e.g. public, private) is used.
*/
public function __construct(array $plugin, \RestfulAuthenticationManager $auth_manager = NULL, \DrupalCacheInterface $cache_controller = NULL, $language = NULL) {
parent::__construct($plugin, $auth_manager, $cache_controller, $language);
if (!($options = $this
->getPluginKey('options'))) {
$options = array();
}
$default_values = array(
'validators' => array(
'file_validate_extensions' => array(),
'file_validate_size' => array(),
),
'scheme' => file_default_scheme(),
'replace' => FILE_EXISTS_RENAME,
);
$this
->setPluginKey('options', drupal_array_merge_deep($default_values, $options));
}
/**
* Create and save files.
*
* @return array
* Array with a list of file IDs that were created and saved.
*
* @throws \Exception
*/
public function createEntity() {
if (!$_FILES) {
throw new \RestfulBadRequestException('No files sent with the request.');
}
$ids = array();
foreach ($_FILES as $file_info) {
// Populate the $_FILES the way file_save_upload() expects.
$name = $file_info['name'];
foreach ($file_info as $key => $value) {
$_FILES['files'][$key][$name] = $value;
}
$file = $this
->fileSaveUpload($name);
// Change the file status from temporary to permanent.
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
// Required to be able to reference this file.
file_usage_add($file, 'restful', 'files', $file->fid);
$ids[] = $file->fid;
}
$return = array();
foreach ($ids as $id) {
$return[] = $this
->viewEntity($id);
}
return $return;
}
/**
* Overrides RestfulEntityBase::access().
*
* If "File entity" module exists, determine access by its provided permissions
* otherwise, check if variable is set to allow anonymous users to upload.
* Defaults to authenticated user.
*/
public function access() {
// The getAccount method may return a RestfulUnauthorizedException when an
// authenticated user cannot be found. Since this is called from the access
// callback, not from the page callback we need to catch the exception.
try {
$account = $this
->getAccount();
} catch (\RestfulUnauthorizedException $e) {
// If a user is not found then load the anonymous user to check
// permissions.
$account = drupal_anonymous_user();
}
if (module_exists('file_entity')) {
return user_access('bypass file access', $account) || user_access('create files', $account);
}
return (variable_get('restful_file_upload_allow_anonymous_user', FALSE) || $account->uid) && parent::access();
}
/**
* An adaptation of file_save_upload() that includes more verbose errors.
*
* @param string $source
* A string specifying the filepath or URI of the uploaded file to save.
*
* @return stdClass
* The saved file object.
*
* @throws \RestfulBadRequestException
* @throws \RestfulServiceUnavailable
*
* @see file_save_upload()
*/
protected function fileSaveUpload($source) {
static $upload_cache;
$account = $this
->getAccount();
$options = $this
->getPluginKey('options');
$validators = $options['validators'];
$destination = $options['scheme'] . "://";
$replace = $options['replace'];
// Return cached objects without processing since the file will have
// already been processed and the paths in _FILES will be invalid.
if (isset($upload_cache[$source])) {
return $upload_cache[$source];
}
// Make sure there's an upload to process.
if (empty($_FILES['files']['name'][$source])) {
return NULL;
}
// Check for file upload errors and return FALSE if a lower level system
// error occurred. For a complete list of errors:
// See http://php.net/manual/features.file-upload.errors.php.
switch ($_FILES['files']['error'][$source]) {
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
$message = format_string('The file %file could not be saved, because it exceeds %maxsize, the maximum allowed size for uploads.', array(
'%file' => $_FILES['files']['name'][$source],
'%maxsize' => format_size(file_upload_max_size()),
));
throw new \RestfulBadRequestException($message);
case UPLOAD_ERR_PARTIAL:
case UPLOAD_ERR_NO_FILE:
$message = format_string('The file %file could not be saved, because the upload did not complete.', array(
'%file' => $_FILES['files']['name'][$source],
));
throw new \RestfulBadRequestException($message);
case UPLOAD_ERR_OK:
// Final check that this is a valid upload, if it isn't, use the
// default error handler.
if (is_uploaded_file($_FILES['files']['tmp_name'][$source])) {
break;
}
// Unknown error
default:
$message = format_string('The file %file could not be saved. An unknown error has occurred.', array(
'%file' => $_FILES['files']['name'][$source],
));
throw new \RestfulServiceUnavailable($message);
}
// Begin building file object.
$file = new stdClass();
$file->uid = $account->uid;
$file->status = 0;
$file->filename = trim(drupal_basename($_FILES['files']['name'][$source]), '.');
$file->uri = $_FILES['files']['tmp_name'][$source];
$file->filemime = file_get_mimetype($file->filename);
$file->filesize = $_FILES['files']['size'][$source];
$extensions = '';
if (isset($validators['file_validate_extensions'])) {
if (isset($validators['file_validate_extensions'][0])) {
// Build the list of non-munged extensions if the caller provided them.
$extensions = $validators['file_validate_extensions'][0];
}
else {
// If 'file_validate_extensions' is set and the list is empty then the
// caller wants to allow any extension. In this case we have to remove the
// validator or else it will reject all extensions.
unset($validators['file_validate_extensions']);
}
}
else {
// No validator was provided, so add one using the default list.
// Build a default non-munged safe list for file_munge_filename().
$extensions = 'jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp';
$validators['file_validate_extensions'] = array();
$validators['file_validate_extensions'][0] = $extensions;
}
if (!empty($extensions)) {
// Munge the filename to protect against possible malicious extension hiding
// within an unknown file type (ie: filename.html.foo).
$file->filename = file_munge_filename($file->filename, $extensions);
}
// Rename potentially executable files, to help prevent exploits (i.e. will
// rename filename.php.foo and filename.php to filename.php.foo.txt and
// filename.php.txt, respectively). Don't rename if 'allow_insecure_uploads'
// evaluates to TRUE.
if (!variable_get('allow_insecure_uploads', 0) && preg_match('/\\.(php|pl|py|cgi|asp|js)(\\.|$)/i', $file->filename) && substr($file->filename, -4) != '.txt') {
$file->filemime = 'text/plain';
$file->uri .= '.txt';
$file->filename .= '.txt';
// The .txt extension may not be in the allowed list of extensions. We have
// to add it here or else the file upload will fail.
if (!empty($extensions)) {
$validators['file_validate_extensions'][0] .= ' txt';
// Unlike file_save_upload() we don't need to let the user know that
// for security reasons, your upload has been renamed, since RESTful
// will return the file name in the response.
}
}
// If the destination is not provided, use the temporary directory.
if (empty($destination)) {
$destination = 'temporary://';
}
// Assert that the destination contains a valid stream.
$destination_scheme = file_uri_scheme($destination);
if (!$destination_scheme || !file_stream_wrapper_valid_scheme($destination_scheme)) {
$message = format_string('The file could not be uploaded, because the destination %destination is invalid.', array(
'%destination' => $destination,
));
throw new \RestfulServiceUnavailable($message);
}
$file->source = $source;
// A URI may already have a trailing slash or look like "public://".
if (substr($destination, -1) != '/') {
$destination .= '/';
}
$file->destination = file_destination($destination . $file->filename, $replace);
// If file_destination() returns FALSE then $replace == FILE_EXISTS_ERROR and
// there's an existing file so we need to bail.
if ($file->destination === FALSE) {
$message = format_string('The file %source could not be uploaded because a file by that name already exists in the destination %directory.', array(
'%source' => $source,
'%directory' => $destination,
));
throw new \RestfulServiceUnavailable($message);
}
// Add in our check of the the file name length.
$validators['file_validate_name_length'] = array();
// Call the validation functions specified by this function's caller.
$errors = file_validate($file, $validators);
// Check for errors.
if (!empty($errors)) {
$message = format_string('The specified file %name could not be uploaded.', array(
'%name' => $file->filename,
));
if (count($errors) > 1) {
$message .= theme('item_list', array(
'items' => $errors,
));
}
else {
$message .= ' ' . array_pop($errors);
}
throw new \RestfulServiceUnavailable($message);
}
// Move uploaded files from PHP's upload_tmp_dir to Drupal's temporary
// directory. This overcomes open_basedir restrictions for future file
// operations.
$file->uri = $file->destination;
if (!drupal_move_uploaded_file($_FILES['files']['tmp_name'][$source], $file->uri)) {
watchdog('file', 'Upload error. Could not move uploaded file %file to destination %destination.', array(
'%file' => $file->filename,
'%destination' => $file->uri,
));
$message = 'File upload error. Could not move uploaded file.';
throw new \RestfulServiceUnavailable($message);
}
// Set the permissions on the new file.
drupal_chmod($file->uri);
// If we are replacing an existing file re-use its database record.
if ($replace == FILE_EXISTS_REPLACE) {
$existing_files = file_load_multiple(array(), array(
'uri' => $file->uri,
));
if (count($existing_files)) {
$existing = reset($existing_files);
$file->fid = $existing->fid;
}
}
// If we made it this far it's safe to record this file in the database.
if ($file = file_save($file)) {
// Add file to the cache.
$upload_cache[$source] = $file;
return $file;
}
// Something went wrong, so throw a general exception.
throw new \RestfulServiceUnavailable('Unknown error has occurred.');
}
}
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 | 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:: |
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:: |
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 | 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:: |
public static | function | Determines if the HTTP method is one of the known methods. | |
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. | |
RestfulDataProviderEFQ:: |
protected | property | The bundle. | |
RestfulDataProviderEFQ:: |
protected | property | The bundle. | |
RestfulDataProviderEFQ:: |
protected | property | The entity type. | |
RestfulDataProviderEFQ:: |
protected | function |
Adds query tags and metadata to the EntityFieldQuery. Overrides RestfulBase:: |
|
RestfulDataProviderEFQ:: |
public | function |
Create an item from the request object. Overrides RestfulBase:: |
|
RestfulDataProviderEFQ:: |
public | function | Defines default sort fields if none are provided via the request URL. | 1 |
RestfulDataProviderEFQ:: |
protected | function | Gets a EFQ object. | |
RestfulDataProviderEFQ:: |
public | function | Getter for $bundle. | |
RestfulDataProviderEFQ:: |
protected | function | Get the DB column name from a property. | |
RestfulDataProviderEFQ:: |
protected | function | Initialize an EntityFieldQuery (or extending class). | |
RestfulDataProviderEFQ:: |
public | function | Get the entity info for the current entity the endpoint handling. | 1 |
RestfulDataProviderEFQ:: |
public | function | Getter for $entityType. | |
RestfulDataProviderEFQ:: |
public | function |
Prepare a query for RestfulEntityBase::getTotalCount(). Overrides RestfulDataProviderEFQInterface:: |
1 |
RestfulDataProviderEFQ:: |
public | function |
Prepare a query for RestfulEntityBase::getList(). Overrides RestfulDataProviderEFQInterface:: |
4 |
RestfulDataProviderEFQ:: |
public | function |
Get the total count of entities that match certain request. Overrides RestfulDataProviderEFQInterface:: |
|
RestfulDataProviderEFQ:: |
public | function |
Get a list of entities. Overrides RestfulBase:: |
|
RestfulDataProviderEFQ:: |
protected static | function |
Overrides \RestfulBase::isValidConjuctionForFilter(). Overrides RestfulBase:: |
|
RestfulDataProviderEFQ:: |
protected static | function |
Overrides \RestfulBase::isValidOperatorsForFilter(). Overrides RestfulBase:: |
|
RestfulDataProviderEFQ:: |
protected | function | Filter the query for list. | |
RestfulDataProviderEFQ:: |
protected | function | Set correct page (i.e. range) for the query for list. | |
RestfulDataProviderEFQ:: |
protected | function | Sort the query for list. | |
RestfulDataProviderEFQ:: |
public | function |
Remove the item from the data source. Overrides RestfulBase:: |
|
RestfulDataProviderEFQ:: |
public | function |
Update an item based on the request object. Overrides RestfulBase:: |
|
RestfulDataProviderEFQ:: |
public | function |
View an item from the data source. Overrides RestfulBase:: |
|
RestfulDataProviderEFQ:: |
public | function |
View a collection of items. Overrides RestfulBase:: |
|
RestfulEntityBase:: |
protected | property |
The public fields that are exposed to the API. Overrides RestfulBase:: |
|
RestfulEntityBase:: |
protected | function |
Add default values to the public fields array. Overrides RestfulBase:: |
|
RestfulEntityBase:: |
protected | function | Check access to CRUD an entity. | 2 |
RestfulEntityBase:: |
protected | function | Check access on a property. | 1 |
RestfulEntityBase:: |
protected | function | Check access on property by the defined access callbacks. | |
RestfulEntityBase:: |
public | function | Clear all caches corresponding to the current resource for a given entity. | |
RestfulEntityBase:: |
protected | function | Helper function; Create an entity from a a sub-resource. | |
RestfulEntityBase:: |
protected | function | Create, update or return an already saved entity. | |
RestfulEntityBase:: |
protected | function | Create, update or return a set of already saved entities. | |
RestfulEntityBase:: |
public | function |
Delete an entity using DELETE. Overrides RestfulDataProviderEFQ:: |
|
RestfulEntityBase:: |
public | function | Allow manipulating the entity before it is saved. | 1 |
RestfulEntityBase:: |
public | function | Validate an entity before it is saved. | |
RestfulEntityBase:: |
protected | function | Determines if a field has allowed values. | |
RestfulEntityBase:: |
protected | function | Return the bundles that should be used for the autocomplete search. | |
RestfulEntityBase:: |
public | function | The array of parameters by which entities should be cached. | |
RestfulEntityBase:: |
protected | function | Get the entity ID based on the ID provided in the request. | |
RestfulEntityBase:: |
protected | function | Get the "self" url. | |
RestfulEntityBase:: |
protected | function | Get the field info, data and form element | |
RestfulEntityBase:: |
protected | function | Get allowed values for the form schema. | |
RestfulEntityBase:: |
public | function | Get the image URLs based on the configured image styles. | |
RestfulEntityBase:: |
public | function |
Get a list of entities. Overrides RestfulDataProviderEFQ:: |
2 |
RestfulEntityBase:: |
protected | function | Return the values of the types tags, with the ID. | |
RestfulEntityBase:: |
protected | function | Request the query object to get a list for autocomplete. | |
RestfulEntityBase:: |
protected | function | Returns the result of a query for the auto complete. | |
RestfulEntityBase:: |
protected | function | Get the "target_type" property from an field or property reference. | |
RestfulEntityBase:: |
protected | function | Get value from a field rendered by Drupal field API's formatter. | |
RestfulEntityBase:: |
protected | function | Get value from a property. | |
RestfulEntityBase:: |
protected | function | Get value from an entity reference field with "resource" property. | |
RestfulEntityBase:: |
protected | function | Determine if an entity is valid, and accessible. | |
RestfulEntityBase:: |
public | function | Update an entity using PATCH. | |
RestfulEntityBase:: |
public static | function | Checks if a given string represents a Field API field. | |
RestfulEntityBase:: |
public | function | Massage the value to set according to the format expected by the wrapper. | |
RestfulEntityBase:: |
protected | function | Preprocess value for "File" related field types. | |
RestfulEntityBase:: |
protected | function | Pre-process value for "Entity reference" field types. | |
RestfulEntityBase:: |
protected | function | Preprocess value for "Text" related field types. | |
RestfulEntityBase:: |
public | function |
Return the properties that should be public. Overrides RestfulInterface:: |
14 |
RestfulEntityBase:: |
public | function | Update an entity using PUT. | |
RestfulEntityBase:: |
protected | function | Set properties of the entity based on the request, and save the entity. | 1 |
RestfulEntityBase:: |
protected | function |
Update an entity. Overrides RestfulDataProviderEFQ:: |
|
RestfulEntityBase:: |
protected | function | Validates an entity's fields before they are saved. | |
RestfulEntityBase:: |
public | function |
Get a list of entities based on a list of IDs. Overrides RestfulDataProviderEFQ:: |
|
RestfulEntityBase:: |
public | function |
View an entity. Overrides RestfulDataProviderEFQ:: |
|
RestfulFilesUpload:: |
public | function |
Overrides RestfulEntityBase::access(). Overrides RestfulBase:: |
|
RestfulFilesUpload:: |
public static | function |
Overrides \RestfulBase::controllersInfo(). Overrides RestfulEntityBase:: |
|
RestfulFilesUpload:: |
public | function |
Create and save files. Overrides RestfulEntityBase:: |
|
RestfulFilesUpload:: |
protected | function | An adaptation of file_save_upload() that includes more verbose errors. | |
RestfulFilesUpload:: |
public | function |
Overrides \RestfulEntityBase::__construct() Overrides RestfulDataProviderEFQ:: |
|
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:: |
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:: |