You are here

class RestfulFilesUpload in RESTful 7

@file Contains RestfulFilesUpload.

Hierarchy

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

Namesort descending Modifiers Type Description Overrides
RestfulBase::$authenticationManager protected property Authentication manager.
RestfulBase::$cacheController protected property Cache controller object.
RestfulBase::$controllers protected property Nested array that provides information about what method to call for each route pattern.
RestfulBase::$httpHeaders protected property Array keyed by the header property, and the value.
RestfulBase::$langcode protected property Determines the language of the items that should be returned.
RestfulBase::$method protected property The HTTP method used for the request.
RestfulBase::$path protected property The path of the request.
RestfulBase::$range protected property Determines the number of items that should be returned when viewing lists.
RestfulBase::$rateLimitManager protected property Rate limit manager.
RestfulBase::$request protected property The request array.
RestfulBase::$staticCache public property Static cache controller.
RestfulBase::$valueMetadata protected property Holds additional information about the generated values. This information is available to the formatters.
RestfulBase::accessByAllowOrigin protected function Checks access based on the referer header and the allow_origin setting.
RestfulBase::addCidParams protected static function Get the cache id parameters based on the keys.
RestfulBase::addHttpHeaders public function Add the a value to a multi-value HTTP header. Overrides RestfulInterface::addHttpHeaders
RestfulBase::cacheInvalidate public function Invalidates cache for a certain entity.
RestfulBase::cleanRequest public static function Helper function to remove the application generated request data.
RestfulBase::clearRenderedCache protected function Clear an entry from the rendered cache.
RestfulBase::clearResourceRenderedCache public function Clear all caches corresponding to the current resource.
RestfulBase::delete public function Call resource using the DELETE http method.
RestfulBase::executeCallback public static function Execute a user callback.
RestfulBase::format public function Call the output format on the given data.
RestfulBase::formatter protected function Get the formatter handler for the current restful formatter.
RestfulBase::formatterNames public function Returns the names of the available formatter plugins.
RestfulBase::generateCacheId protected function Generate a cache identifier for the request and the current context.
RestfulBase::get public function Call resource using the GET http method.
RestfulBase::getAccount public function Proxy method to get the account from the authenticationManager.
RestfulBase::getAuthenticationManager public function Getter for $authenticationManager.
RestfulBase::getCacheController public function Getter for $cacheController.
RestfulBase::getControllerFromPath public function Return the controller from a given path.
RestfulBase::getControllers public function Get the defined controllers
RestfulBase::getHttpHeaders public function Return array keyed by the header property, and the value. Overrides RestfulInterface::getHttpHeaders
RestfulBase::getLangCode public function Get the language code.
RestfulBase::getMenuItem public static function Get the non translated menu item.
RestfulBase::getMethod public function Get the HTTP method used for the request.
RestfulBase::getPageArguments public static function Get the resource name and version from the page arguments in the router.
RestfulBase::getPath public function Return the path of the request.
RestfulBase::getPublicFields public function Return the properties that should be public after processing. Overrides RestfulInterface::getPublicFields
RestfulBase::getRange public function Get the pager range.
RestfulBase::getRateLimitManager public function Getter for rateLimitManager.
RestfulBase::getRenderedCache protected function Get an entry from the rendered cache.
RestfulBase::getRequest public function Get the request array.
RestfulBase::getRequestForSubRequest protected function Gets a request array with the data that should be piped to sub requests.
RestfulBase::getResourceLastVersion public static function Return the last version for a given resource.
RestfulBase::getResourceName public function Return the resource name.
RestfulBase::getUrl public function Helper method; Get the URL of the resource and query strings.
RestfulBase::getValueMetadata public function Get value metadata.
RestfulBase::getVersion public function Return array keyed with the major and minor version of the resource.
RestfulBase::getVersionFromRequest public static function Gets the major and minor version for the current request.
RestfulBase::head public function Call resource using the GET http method.
RestfulBase::isArrayNumeric final public static function Helper method to determine if an array is numeric.
RestfulBase::isListRequest public function Helper method to know if the current request is for a list.
RestfulBase::isReadMethod public static function Determines if the HTTP method represents a read operation.
RestfulBase::isValidMethod public static function Determines if the HTTP method is one of the known methods.
RestfulBase::isWriteMethod public static function Determines if the HTTP method represents a write operation.
RestfulBase::newCacheObject protected function Get the default cache object based on the plugin configuration.
RestfulBase::notImplementedCrudOperation protected static function Helper method with the code to run for non implemented CRUD operations.
RestfulBase::options public function Call resource using the OPTIONS http method.
RestfulBase::overrideRange protected function Overrides the range parameter with the URL value if any.
RestfulBase::parseRequestForListFilter protected function Filter the query for list.
RestfulBase::parseRequestForListPagination protected function Parses the request object to get the pagination options.
RestfulBase::parseRequestForListSort protected function Parses the request to get the sorting options.
RestfulBase::parseVersionString public static function Parses the version string.
RestfulBase::patch public function Call resource using the PATCH http method.
RestfulBase::post public function Call resource using the POST http method.
RestfulBase::process public function Entry point to process a request. Overrides RestfulInterface::process
RestfulBase::processDataProviderOptions protected function Process plugin options by validation keys exists, and set default values.
RestfulBase::put public function Call resource using the PUT http method.
RestfulBase::setAccount public function Proxy method to set the account from the authenticationManager.
RestfulBase::setAuthenticationManager public function Setter for $authenticationManager.
RestfulBase::setHttpHeaders public function Set the HTTP headers. Overrides RestfulInterface::setHttpHeaders
RestfulBase::setLangCode public function Sets the language code.
RestfulBase::setMethod public function Set the HTTP method used for the request.
RestfulBase::setPath public function Set the path of the request.
RestfulBase::setPublicFields public function Set the public fields.
RestfulBase::setRange public function Set the pager range.
RestfulBase::setRateLimitManager public function Setter for rateLimitManager.
RestfulBase::setRenderedCache protected function Store an entry in the rendered cache.
RestfulBase::setRequest public function Set the request array.
RestfulBase::versionedUrl public function Gets a resource URL based on the current version.
RestfulDataProviderEFQ::$bundle protected property The bundle.
RestfulDataProviderEFQ::$EFQClass protected property The bundle.
RestfulDataProviderEFQ::$entityType protected property The entity type.
RestfulDataProviderEFQ::addExtraInfoToQuery protected function Adds query tags and metadata to the EntityFieldQuery. Overrides RestfulBase::addExtraInfoToQuery
RestfulDataProviderEFQ::create public function Create an item from the request object. Overrides RestfulBase::create
RestfulDataProviderEFQ::defaultSortInfo public function Defines default sort fields if none are provided via the request URL. 1
RestfulDataProviderEFQ::EFQObject protected function Gets a EFQ object.
RestfulDataProviderEFQ::getBundle public function Getter for $bundle.
RestfulDataProviderEFQ::getColumnFromProperty protected function Get the DB column name from a property.
RestfulDataProviderEFQ::getEntityFieldQuery protected function Initialize an EntityFieldQuery (or extending class).
RestfulDataProviderEFQ::getEntityInfo public function Get the entity info for the current entity the endpoint handling. 1
RestfulDataProviderEFQ::getEntityType public function Getter for $entityType.
RestfulDataProviderEFQ::getQueryCount public function Prepare a query for RestfulEntityBase::getTotalCount(). Overrides RestfulDataProviderEFQInterface::getQueryCount 1
RestfulDataProviderEFQ::getQueryForList public function Prepare a query for RestfulEntityBase::getList(). Overrides RestfulDataProviderEFQInterface::getQueryForList 4
RestfulDataProviderEFQ::getTotalCount public function Get the total count of entities that match certain request. Overrides RestfulDataProviderEFQInterface::getTotalCount
RestfulDataProviderEFQ::index public function Get a list of entities. Overrides RestfulBase::index
RestfulDataProviderEFQ::isValidConjunctionForFilter protected static function Overrides \RestfulBase::isValidConjuctionForFilter(). Overrides RestfulBase::isValidConjunctionForFilter
RestfulDataProviderEFQ::isValidOperatorsForFilter protected static function Overrides \RestfulBase::isValidOperatorsForFilter(). Overrides RestfulBase::isValidOperatorsForFilter
RestfulDataProviderEFQ::queryForListFilter protected function Filter the query for list.
RestfulDataProviderEFQ::queryForListPagination protected function Set correct page (i.e. range) for the query for list.
RestfulDataProviderEFQ::queryForListSort protected function Sort the query for list.
RestfulDataProviderEFQ::remove public function Remove the item from the data source. Overrides RestfulBase::remove
RestfulDataProviderEFQ::update public function Update an item based on the request object. Overrides RestfulBase::update
RestfulDataProviderEFQ::view public function View an item from the data source. Overrides RestfulBase::view
RestfulDataProviderEFQ::viewMultiple public function View a collection of items. Overrides RestfulBase::viewMultiple
RestfulEntityBase::$publicFields protected property The public fields that are exposed to the API. Overrides RestfulBase::$publicFields
RestfulEntityBase::addDefaultValuesToPublicFields protected function Add default values to the public fields array. Overrides RestfulBase::addDefaultValuesToPublicFields
RestfulEntityBase::checkEntityAccess protected function Check access to CRUD an entity. 2
RestfulEntityBase::checkPropertyAccess protected function Check access on a property. 1
RestfulEntityBase::checkPropertyAccessByAccessCallbacks protected function Check access on property by the defined access callbacks.
RestfulEntityBase::clearResourceRenderedCacheEntity public function Clear all caches corresponding to the current resource for a given entity.
RestfulEntityBase::createEntityFromReference protected function Helper function; Create an entity from a a sub-resource.
RestfulEntityBase::createOrUpdateSubResourceItem protected function Create, update or return an already saved entity.
RestfulEntityBase::createOrUpdateSubResourceItems protected function Create, update or return a set of already saved entities.
RestfulEntityBase::deleteEntity public function Delete an entity using DELETE. Overrides RestfulDataProviderEFQ::deleteEntity
RestfulEntityBase::entityPreSave public function Allow manipulating the entity before it is saved. 1
RestfulEntityBase::entityValidate public function Validate an entity before it is saved.
RestfulEntityBase::formSchemaHasAllowedValues protected function Determines if a field has allowed values.
RestfulEntityBase::getBundlesForAutocomplete protected function Return the bundles that should be used for the autocomplete search.
RestfulEntityBase::getEntityCacheTags public function The array of parameters by which entities should be cached.
RestfulEntityBase::getEntityIdByFieldId protected function Get the entity ID based on the ID provided in the request.
RestfulEntityBase::getEntitySelf protected function Get the "self" url.
RestfulEntityBase::getFieldInfoAndFormSchema protected function Get the field info, data and form element
RestfulEntityBase::getFormSchemaAllowedValues protected function Get allowed values for the form schema.
RestfulEntityBase::getImageUris public function Get the image URLs based on the configured image styles.
RestfulEntityBase::getList public function Get a list of entities. Overrides RestfulDataProviderEFQ::getList 2
RestfulEntityBase::getListForAutocomplete protected function Return the values of the types tags, with the ID.
RestfulEntityBase::getQueryForAutocomplete protected function Request the query object to get a list for autocomplete.
RestfulEntityBase::getQueryResultForAutocomplete protected function Returns the result of a query for the auto complete.
RestfulEntityBase::getTargetTypeFromEntityReference protected function Get the "target_type" property from an field or property reference.
RestfulEntityBase::getValueFromFieldFormatter protected function Get value from a field rendered by Drupal field API's formatter.
RestfulEntityBase::getValueFromProperty protected function Get value from a property.
RestfulEntityBase::getValueFromResource protected function Get value from an entity reference field with "resource" property.
RestfulEntityBase::isValidEntity protected function Determine if an entity is valid, and accessible.
RestfulEntityBase::patchEntity public function Update an entity using PATCH.
RestfulEntityBase::propertyIsField public static function Checks if a given string represents a Field API field.
RestfulEntityBase::propertyValuesPreprocess public function Massage the value to set according to the format expected by the wrapper.
RestfulEntityBase::propertyValuesPreprocessFile protected function Preprocess value for "File" related field types.
RestfulEntityBase::propertyValuesPreprocessReference protected function Pre-process value for "Entity reference" field types.
RestfulEntityBase::propertyValuesPreprocessText protected function Preprocess value for "Text" related field types.
RestfulEntityBase::publicFieldsInfo public function Return the properties that should be public. Overrides RestfulInterface::publicFieldsInfo 14
RestfulEntityBase::putEntity public function Update an entity using PUT.
RestfulEntityBase::setPropertyValues protected function Set properties of the entity based on the request, and save the entity. 1
RestfulEntityBase::updateEntity protected function Update an entity. Overrides RestfulDataProviderEFQ::updateEntity
RestfulEntityBase::validateFields protected function Validates an entity's fields before they are saved.
RestfulEntityBase::viewEntities public function Get a list of entities based on a list of IDs. Overrides RestfulDataProviderEFQ::viewEntities
RestfulEntityBase::viewEntity public function View an entity. Overrides RestfulDataProviderEFQ::viewEntity
RestfulFilesUpload::access public function Overrides RestfulEntityBase::access(). Overrides RestfulBase::access
RestfulFilesUpload::controllersInfo public static function Overrides \RestfulBase::controllersInfo(). Overrides RestfulEntityBase::controllersInfo
RestfulFilesUpload::createEntity public function Create and save files. Overrides RestfulEntityBase::createEntity
RestfulFilesUpload::fileSaveUpload protected function An adaptation of file_save_upload() that includes more verbose errors.
RestfulFilesUpload::__construct public function Overrides \RestfulEntityBase::__construct() Overrides RestfulDataProviderEFQ::__construct
RestfulInterface::ACCESS_ALLOW constant Return this value from public field access callbacks to allow access.
RestfulInterface::ACCESS_DENY constant Return this value from public field access callbacks to deny access.
RestfulInterface::ACCESS_IGNORE constant Return this value from public field access callbacks to not affect access.
RestfulInterface::CONNECT constant
RestfulInterface::DELETE constant
RestfulInterface::GET constant HTTP methods.
RestfulInterface::HEAD constant
RestfulInterface::OPTIONS constant
RestfulInterface::PATCH constant
RestfulInterface::POST constant
RestfulInterface::PUT constant
RestfulInterface::TOKEN_VALUE constant Token value for token generation functions.
RestfulInterface::TRACE constant
RestfulPluginBase::$plugin protected property The plugin definition array.
RestfulPluginBase::getPlugin public function Gets information about the restful plugin. Overrides RestfulPluginInterface::getPlugin
RestfulPluginBase::getPluginKey public function Gets information about the restful plugin key. Overrides RestfulPluginInterface::getPluginKey
RestfulPluginBase::setPlugin public function Sets information about the restful plugin. Overrides RestfulPluginInterface::setPlugin
RestfulPluginBase::setPluginKey public function Gets information about the restful plugin key. Overrides RestfulPluginInterface::setPluginKey