1 node.entity.inc public NodeStorageController::delete($ids)

Overrides EntityDatabaseStorageController::delete().

Overrides EntityDatabaseStorageController::delete

File

core/modules/node/node.entity.inc, line 415
Entity controller and class for nodes.

Class

NodeStorageController
Controller class for nodes.

Code

public function delete($ids) {
  $entities = $ids ? $this->load($ids) : FALSE;
  if (!$entities) {
    // If no IDs or invalid IDs were passed, do nothing.
    return;
  }
  $transaction = db_transaction();

  try {
    $this->preDelete($entities);
    foreach ($entities as $id => $entity) {
      $this->invokeHook('predelete', $entity);
    }
    $ids = array_keys($entities);

    db_delete($this->entityInfo['base table'])
      ->condition($this->idKey, $ids, 'IN')
      ->execute();

    if ($this->revisionKey) {
      db_delete($this->revisionTable)
        ->condition($this->idKey, $ids, 'IN')
        ->execute();
    }

    // Reset the cache as soon as the changes have been applied.
    $this->resetCache($ids);

    $this->postDelete($entities);
    foreach ($entities as $id => $entity) {
      $this->invokeHook('delete', $entity);
    }
    // Ignore replica server temporarily.
    db_ignore_replica();
  }
  catch (Exception $e) {
    $transaction->rollback();
    watchdog_exception($this->entityType, $e);
    throw new EntityStorageException($e->getMessage(), (int) $e->getCode(), $e);
  }
}