Esempio n. 1
0
 /**
  * This function deletes the activity record related to contact record.
  *
  * This is conditional on there being no target and assignee record
  * with other contacts.
  *
  * @param int $contactId
  *   ContactId.
  *
  * @return true/null
  */
 public static function cleanupActivity($contactId)
 {
     $result = NULL;
     if (!$contactId) {
         return $result;
     }
     $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name');
     $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts);
     $transaction = new CRM_Core_Transaction();
     // delete activity if there is no record in civicrm_activity_contact
     // pointing to any other contact record
     $activityContact = new CRM_Activity_DAO_ActivityContact();
     $activityContact->contact_id = $contactId;
     $activityContact->record_type_id = $sourceID;
     $activityContact->find();
     while ($activityContact->fetch()) {
         // delete activity_contact record for the deleted contact
         $activityContact->delete();
         $activityContactOther = new CRM_Activity_DAO_ActivityContact();
         $activityContactOther->activity_id = $activityContact->activity_id;
         // delete activity only if no other contacts connected
         if (!$activityContactOther->find(TRUE)) {
             $activityParams = array('id' => $activityContact->activity_id);
             $result = self::deleteActivity($activityParams);
         }
         $activityContactOther->free();
     }
     $activityContact->free();
     $transaction->commit();
     return $result;
 }