/** * Delete the CiviCRM mailing corresponding to the SimpleMail mailing currently being deleted, as it would indirectly * cause deletion of SimpleMail mailing and any associated scheduled mailing jobs * * @param bool $useWhere * * @return mixed|void * @throws \CRM_Extension_Exception */ public function delete($useWhere = FALSE) { if (!static::authorised(SM_PERMISSION_DELETE)) { throw new CRM_Extension_Exception('Sorry! You do not have permission to delete mailings', 500); } if (!static::isActionAllowed(static::ACTION_ALLOWED_DELETE, $this->toArray())) { throw new CRM_Extension_Exception('Cannot delete a scheduled/running mailing', 405); } if (!$this->crm_mailing_id) { throw new CRM_Extension_Exception('Failed to delete mailing it does not have a corresponding CiviCRM mailing associated', 500); } // Delete the inline attachments first, because they are tied to a cascade delete on the simple mailing table $attachments = CRM_Simplemail_BAO_SimpleMailInlineAttachment::removeAll((int) $this->id); $civiMailing = new CRM_Mailing_BAO_Mailing(); $civiMailing->id = (int) $this->crm_mailing_id; $civiMailing->find(TRUE); $civiMailing->delete(); // This will cascade and delete the corresponding SimpleMail mailing and mailing jobs }