Merge pull request #22471 from eileenmcnaughton/noticesm
[civicrm-core.git] / CRM / Campaign / BAO / Survey.php
index 93b487982be9d7366851a1cc25296566c28f7dbe..b05fce5c9611cbd00e09c1806f99c5fbfdc10f9c 100644 (file)
@@ -18,7 +18,7 @@
 /**
  * Class CRM_Campaign_BAO_Survey.
  */
-class CRM_Campaign_BAO_Survey extends CRM_Campaign_DAO_Survey {
+class CRM_Campaign_BAO_Survey extends CRM_Campaign_DAO_Survey implements Civi\Test\HookInterface {
 
   /**
    * Retrieve DB object based on input parameters.
@@ -74,9 +74,6 @@ class CRM_Campaign_BAO_Survey extends CRM_Campaign_DAO_Survey {
 
     $dao = self::writeRecord($params);
 
-    if (!empty($params['custom']) && is_array($params['custom'])) {
-      CRM_Core_BAO_CustomValueTable::store($params['custom'], 'civicrm_survey', $dao->id);
-    }
     return $dao;
   }
 
@@ -366,24 +363,31 @@ SELECT  survey.id    as id,
   }
 
   /**
-   * Delete the survey.
+   * Delete a survey.
    *
    * @param int $id
-   *   Survey id.
-   *
+   * @deprecated
    * @return mixed|null
    */
   public static function del($id) {
     if (!$id) {
       return NULL;
     }
-    $reportId = CRM_Campaign_BAO_Survey::getReportID($id);
-    if ($reportId) {
-      CRM_Report_BAO_ReportInstance::del($reportId);
+    self::deleteRecord(['id' => $id]);
+    return 1;
+  }
+
+  /**
+   * Event fired prior to modifying a Survey.
+   * @param \Civi\Core\Event\PreEvent $event
+   */
+  public static function self_hook_civicrm_pre(\Civi\Core\Event\PreEvent $event) {
+    if ($event->action === 'delete' && $event->id) {
+      $reportId = self::getReportID($event->id);
+      if ($reportId) {
+        CRM_Report_BAO_ReportInstance::deleteRecord(['id' => $reportId]);
+      }
     }
-    $dao = new CRM_Campaign_DAO_Survey();
-    $dao->id = $id;
-    return $dao->delete();
   }
 
   /**
@@ -545,8 +549,8 @@ INNER JOIN  civicrm_activity_contact activityAssignment
    * @param array $voterIds
    * @param bool $onlyCount
    *
-   * @return array
-   *   An array of survey activity.
+   * @return array|int
+   *   An array of survey activity, or an int if $onlyCount is set to TRUE
    */
   public static function getSurveyActivities(
     $surveyId,