handle recurring entity delete
authorpriyankakaran26 <priyanka.karan26@gmail.com>
Mon, 29 Sep 2014 14:31:14 +0000 (15:31 +0100)
committerdeepak-srivastava <deepak.srivastava.0303@gmail.com>
Fri, 3 Oct 2014 09:08:27 +0000 (10:08 +0100)
CRM/Core/BAO/RecurringEntity.php
CRM/Core/DAO.php

index dfef78a31c1872eec1b98c7481857e534258453c..687c856997804a2ec2a0a59e8e2916f491fb8c39 100644 (file)
@@ -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
    * 
index 445576fa5f56fe7436a90a17e417854ab3bdc3ea..41335ca5cbadc285926a2b3cc528cae21725f399 100644 (file)
@@ -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
    */