You are here

class BrightcoveVideoEntityController in Brightcove Video Connect 7.6

Same name and namespace in other branches
  1. 7.7 brightcove.video.inc \BrightcoveVideoEntityController

Entity controller class for Brightcove video.

brightcove_video entities and videos in the Britghtcove cloud can (and will) get out of sync in the sense that there can be entities that are not in the Brightcove cloud and there can be videos in the cloud we don't have an entity for.

Hierarchy

Expanded class hierarchy of BrightcoveVideoEntityController

1 string reference to 'BrightcoveVideoEntityController'
brightcove_entity_info in ./brightcove.module
Implements hook_entity_info().

File

./brightcove.video.inc, line 15
Brightcove video related functions.

View source
class BrightcoveVideoEntityController extends EntityAPIController {

  /**
   * {@inheritdoc}
   */
  public function create(array $values = []) {
    brightcove_load_lib();

    // Add is_new property if it is not set.
    $values += [
      'is_new' => TRUE,
    ];
    if (empty($values['client']) || !$values['client'] instanceof Entity) {
      throw new Exception(t('Cannot create a brightcove_video entity without a client.'));
    }
    if (empty($values['video_id'])) {
      $values['video'] = new \Brightcove\Object\Video\Video();
      $values['video_id'] = NULL;
    }
    elseif ($video = brightcove_load_video($values['video_id'], $values['client'])) {
      $values['video'] = $video;
      $values['account_id'] = $values['client']->account_id;
      $values['label'] = $video
        ->getName();
    }
    else {
      throw new Exception(t('Failure to load the video @video with client @client', [
        '@video' => $values['video_id'],
        '@client' => $values['client']->bcid,
      ]));
    }

    // Add a Video object to the entity object.
    brightcove_load_lib();
    $video_entity = new Entity($values, $this->entityType);
    return $video_entity;
  }

  /**
   * {@inheritdoc}
   */
  public function load($ids = [], $conditions = []) {
    $entities = parent::load($ids, $conditions);

    // Add the Video object to each entity object.
    foreach ($entities as $key => $entity) {
      if (empty($entity->video) || !$entity->video instanceof \Brightcove\Object\Video\Video) {
        if (empty($entity->client) || !$entity->client instanceof Entity) {
          $clients = brightcove_get_clients_by_account_id($entity->account_id);
          $found_client = FALSE;
          foreach ($clients as $client) {
            if ($video = brightcove_load_video($entity->video_id, $client)) {
              $entity->video = $video;
              $entity->client = $client;
              $found_client = TRUE;
              break;
            }
          }
          if (!$found_client) {
            $video_id = $entity->video_id;
            unset($entities[$key]);
            watchdog('brightcove', 'Could not load the video @video_id.', [
              '@video_id' => $video_id,
            ], WATCHDOG_WARNING);
          }
        }
        else {
          $entity->video = brightcove_load_video($entity->video_id, $entity->client);
        }
      }
      $entity->label = $entity->video
        ->getName();
    }
    return $entities;
  }

  /**
   * {@inheritdoc}
   */
  public function save($entity, DatabaseTransaction $transaction = NULL) {
    if (empty($entity->videoSaved)) {
      $entity->video = brightcove_save_video($entity->video, $entity->client);
    }
    $entity->account_id = $entity->client->account_id;
    if (empty($entity->video_id)) {
      $entity->video_id = $entity->video
        ->getId();
    }
    return parent::save($entity, $transaction);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
BrightcoveVideoEntityController::create public function Implements EntityAPIControllerInterface. Overrides EntityAPIController::create
BrightcoveVideoEntityController::load public function Overridden. Overrides EntityAPIController::load
BrightcoveVideoEntityController::save public function Implements EntityAPIControllerInterface. 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::attachLoad protected function Attaches data to entities upon loading. 4
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::delete public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::delete 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::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