You are here

public function CerHandler::dereference in Corresponding Entity References 7.2

Implements CerHandlerInterface::dereference().

Overrides CerHandlerInterface::dereference

2 calls to CerHandler::dereference()
CerHandler::delete in ./handler.inc
Implements CerHandlerInterface::delete().
CerHandler::update in ./handler.inc
Implements CerHandlerInterface::update().

File

./handler.inc, line 294
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 dereference($entity) {
  if ($this
    ->references($entity)) {
    $id = $this
      ->getRemoteEntityID($entity);
    foreach ($this->entity->{$this->local['field_name']} as $language => $references) {
      foreach ($references as $delta => $reference) {
        if ($reference['target_id'] == $id) {
          unset($this->entity->{$this->local['field_name']}[$language][$delta]);
        }
      }
    }
  }
  if ($this
    ->referencedBy($entity)) {
    foreach ($entity->{$this->remote['field_name']} as $language => $references) {
      foreach ($references as $delta => $reference) {
        if ($reference['target_id'] == $this->id) {
          unset($entity->{$this->remote['field_name']}[$language][$delta]);
        }
      }
    }
  }
}