You are here

public function CerHandler::update in Corresponding Entity References 7.2

Implements CerHandlerInterface::update().

Overrides CerHandlerInterface::update

File

./handler.inc, line 190
Contains base code for CER handlers, which are objects responsible for creating, updating and deleting corresponding references between entities.

Class

CerHandler
@class Generic CER handler with rudimentary language handling.

Code

public function update() {
  $original = isset($this->entity->original) ? $this->entity->original : $this->entity;
  $deleted = array_diff($this
    ->getReferenceIDs($original, $this->local), $this
    ->getLocalReferenceIDs());
  if ($deleted) {
    $entities = entity_load($this->remote['entity_type'], $deleted);
    foreach ($entities as $referenced_entity) {
      $this
        ->dereference($referenced_entity);
      _cer_update($this->remote['entity_type'], $referenced_entity);
    }
  }
  $added = array_diff($this
    ->getLocalReferenceIDs(), $this
    ->getReferenceIDs($original, $this->local));
  if (!empty($added)) {
    $this
      ->insert($added);
  }
}