You are here

class CommerceFileLicenseEntityController in Commerce File 7

@file The controller for the File License entity containing the CRUD operations.

Hierarchy

Expanded class hierarchy of CommerceFileLicenseEntityController

1 string reference to 'CommerceFileLicenseEntityController'
commerce_file_entity_info in ./commerce_file.module
Implements hook_entity_info().

File

includes/commerce_file_license.controller.inc, line 8
The controller for the File License entity containing the CRUD operations.

View source
class CommerceFileLicenseEntityController extends EntityAPIController {

  /**
   * Implements EntityAPIControllerInterface::create().
   */
  public function create(array $values = array()) {

    // merge in defaults
    $values += array(
      'type' => COMMERCE_FILE_LICENSE_ENTITY_NAME,
      'status' => 'pending',
      'is_new' => empty($values[$this->idKey]),
    );

    // call create
    return parent::create($values);
  }

  /**
   * Unserializes the data property of loaded licenses.
   */
  public function attachLoad(&$queried, $revision_id = FALSE) {

    // Call the default attachLoad() method. This will add fields and call
    // hook_commerce_file_license_load().
    parent::attachLoad($queried, $revision_id);
  }

  /**
   * Implements EntityAPIControllerInterface::save()
   *
   * @param $entity
   *   The full entity object to save.
   * @param $transaction
   *   Optionally a DatabaseTransaction object to use. Allows overrides to pass
   *   in their transaction object.
   *
   * @return
   *   The saved entity object.
   */
  public function save($entity, DatabaseTransaction $transaction = NULL) {
    $transaction = isset($transaction) ? $transaction : db_transaction();

    // determine is_new
    $is_new = TRUE;
    if (!empty($entity->{$this->idKey})) {

      // if have an id, always update
      unset($entity->is_new);
      $is_new = FALSE;
    }
    elseif (isset($entity->is_new)) {

      // let entity tell us if we're new
      $is_new = $entity->is_new;
    }
    else {

      // default to new
      $is_new = TRUE;
      $entity->is_new = TRUE;
    }
    try {
      $entity->changed = REQUEST_TIME;
      if ($is_new) {

        // Set properties for new entities
        if (!isset($entity->created) || empty($entity->created)) {
          $entity->created = REQUEST_TIME;
        }
      }

      // set initial granted time
      if (empty($entity->granted) && $entity
        ->is_allowed()) {
        $entity->granted = REQUEST_TIME;
      }

      // clone for save so that we dont alter entity object to the serialized arrays
      $clone = clone $entity;
      $return = parent::save($clone, $transaction);

      // alter actual entity after successful save
      if ($return) {
        unset($entity->is_new);
        unset($entity->original);

        // add id
        if ($is_new) {
          $entity->{$this->idKey} = $clone->{$this->idKey};
        }
      }
      return $return;
    } catch (Exception $e) {
      $transaction
        ->rollback();
      watchdog_exception($this->entityType, $e);
      throw $e;
    }
  }

  /**
   * Implements EntityAPIControllerInterface::delete().
   * Deletes multiple entities by ID.
   *
   * @param $ids
   *   An array of entity IDs to delete.
   *
   * @param $transaction
   *   Optionally a DatabaseTransaction object to use. Allows overrides to pass
   *   in their transaction object.
   */
  public function delete($ids, DatabaseTransaction $transaction = NULL) {
    if (empty($ids)) {
      return TRUE;
    }

    // load entities
    $entities = $this
      ->load($ids);
    if (empty($entities)) {
      return TRUE;
    }

    // initialize transaction db
    $transaction = isset($transaction) ? $transaction : db_transaction();

    // delete licenses
    try {
      parent::delete($ids, $transaction);
    } catch (Exception $e) {
      $transaction
        ->rollback();
      watchdog_exception($this->entityType, $e);
      throw $e;
    }

    // delete logs for the license ids

    /** @todo should we delete logs also ? *************************************/
    db_delete('commerce_file_license_log')
      ->condition($this->idKey, $ids, 'IN')
      ->execute();
    watchdog('commerce_file', 'Deleted file licenses: @ids.', array(
      '@ids' => implode(', ', $ids),
    ), WATCHDOG_NOTICE);
    return TRUE;
  }

  /**
   * Access callback
   */
  public function access($op = 'view', $entity = NULL, $account = NULL) {
    return entity_access($op, $this->entityType, $entity, $account);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CommerceFileLicenseEntityController::access public function Access callback
CommerceFileLicenseEntityController::attachLoad public function Unserializes the data property of loaded licenses. Overrides DrupalDefaultEntityController::attachLoad
CommerceFileLicenseEntityController::create public function Implements EntityAPIControllerInterface::create(). Overrides EntityAPIController::create
CommerceFileLicenseEntityController::delete public function Implements EntityAPIControllerInterface::delete(). Deletes multiple entities by ID. Overrides EntityAPIController::delete
CommerceFileLicenseEntityController::save public function Implements EntityAPIControllerInterface::save() Overrides EntityAPIController::save
DrupalDefaultEntityController::$cache protected property Whether this entity type should use the static cache.
DrupalDefaultEntityController::$entityCache protected property Static cache of entities, keyed by entity ID.
DrupalDefaultEntityController::$entityInfo protected property Array of information about the entity.
DrupalDefaultEntityController::$entityType protected property Entity type for this controller instance.
DrupalDefaultEntityController::$hookLoadArguments protected property Additional arguments to pass to hook_TYPE_load().
DrupalDefaultEntityController::$idKey protected property Name of the entity's ID field in the entity database table.
DrupalDefaultEntityController::$revisionKey protected property Name of entity's revision database table field, if it supports revisions.
DrupalDefaultEntityController::$revisionTable protected property The table that stores revisions, if the entity supports revisions.
DrupalDefaultEntityController::cacheGet protected function Gets entities from the static cache. 1
DrupalDefaultEntityController::cacheSet protected function Stores entities in the static entity cache.
DrupalDefaultEntityController::cleanIds protected function Ensures integer entity IDs are valid.
DrupalDefaultEntityController::filterId protected function Callback for array_filter that removes non-integer IDs.
EntityAPIController::$bundleKey protected property
EntityAPIController::$cacheComplete protected property
EntityAPIController::$defaultRevisionKey protected property
EntityAPIController::buildContent public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::buildContent
EntityAPIController::buildQuery protected function Overrides DrupalDefaultEntityController::buildQuery(). Overrides DrupalDefaultEntityController::buildQuery 1
EntityAPIController::deleteRevision public function Implements EntityAPIControllerRevisionableInterface::deleteRevision(). Overrides EntityAPIControllerRevisionableInterface::deleteRevision
EntityAPIController::export public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::export 1
EntityAPIController::import public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::import
EntityAPIController::invoke public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::invoke 1
EntityAPIController::load public function Overridden. Overrides DrupalDefaultEntityController::load 1
EntityAPIController::query public function Builds and executes the query for loading.
EntityAPIController::renderEntityProperty protected function Renders a single entity property.
EntityAPIController::resetCache public function Overrides DrupalDefaultEntityController::resetCache(). Overrides DrupalDefaultEntityController::resetCache 1
EntityAPIController::saveRevision protected function Saves an entity revision.
EntityAPIController::view public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::view 1
EntityAPIController::__construct public function Overridden. Overrides DrupalDefaultEntityController::__construct 1