From 97c4fe768f8f0d26eddd3a6da23d4f2700102dc0 Mon Sep 17 00:00:00 2001 From: priyankakaran26 Date: Mon, 29 Sep 2014 15:31:14 +0100 Subject: [PATCH] handle recurring entity delete --- CRM/Core/BAO/RecurringEntity.php | 34 ++++++++++++++++++++++++++++++++ CRM/Core/DAO.php | 8 ++++++++ 2 files changed, 42 insertions(+) diff --git a/CRM/Core/BAO/RecurringEntity.php b/CRM/Core/BAO/RecurringEntity.php index dfef78a31c..687c856997 100644 --- a/CRM/Core/BAO/RecurringEntity.php +++ b/CRM/Core/BAO/RecurringEntity.php @@ -529,6 +529,40 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity { unset($processedEntities); } + static public function triggerDelete($obj){ + // if DB version is earlier than 4.6 skip any processing + static $currentVer = NULL; + if (!$currentVer) { + $currentVer = CRM_Core_BAO_Domain::version(); + } + if (version_compare($currentVer, '4.6.alpha1') < 0) { + return; + } + + static $processedEntities = array(); + if (empty($obj->id) || empty($obj->__table)) { + return FALSE; + } + $key = "{$obj->__table}_{$obj->id}"; + CRM_Core_Error::debug_var('$key', $key); + + if (array_key_exists($key, $processedEntities)) { + // already processed + return NULL; + } + + // mark being processed + $processedEntities[$key] = 1; + + $parentID = self::getParentFor($obj->id, $obj->__table, FALSE); + if ($parentID) { + $dao = new CRM_Core_DAO_RecurringEntity(); + $dao->entity_id = $obj->id; + $dao->entity_table = $obj->__table; + $dao->delete(); + } + } + /** * This function maps values posted from form to civicrm_action_schedule columns * diff --git a/CRM/Core/DAO.php b/CRM/Core/DAO.php index 445576fa5f..41335ca5cb 100644 --- a/CRM/Core/DAO.php +++ b/CRM/Core/DAO.php @@ -462,6 +462,14 @@ class CRM_Core_DAO extends DB_DataObject { return $this; } + function delete($useWhere = FALSE) { + $result = parent::delete($useWhere); + if ($result) { + CRM_Core_BAO_RecurringEntity::triggerDelete($this); + } + return $result; + } + /** * @param bool $created */ -- 2.25.1