Merge branch 4.6 into master
[civicrm-core.git] / CRM / Core / BAO / RecurringEntity.php
index 9fd18cf64fb48766f9b3ba2a84658c9d6ac8d8ac..cbcee177399ad4b8d99a97d4072ae6c7b34b6d6d 100644 (file)
@@ -3,7 +3,7 @@
  +--------------------------------------------------------------------+
  | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014                                |
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
  | GNU Affero General Public License or the licensing of CiviCRM,     |
  | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
  +--------------------------------------------------------------------+
-*/
+ */
 
 /**
  *
  * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2014
+ * @copyright CiviCRM LLC (c) 2004-2015
  * $Id$
  *
  */
 
 require_once 'packages/When/When.php';
 
+/**
+ * Class CRM_Core_BAO_RecurringEntity
+ */
 class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
 
   const RUNNING = 1;
@@ -58,34 +61,34 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
 
   public static $status = NULL;
 
-  static $_recurringEntityHelper =
-    array(
+  static $_recurringEntityHelper
+    array(
       'civicrm_event' => array(
         'helper_class' => 'CRM_Event_DAO_Event',
         'delete_func' => 'delete',
-        'pre_delete_func' => 'CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents'
+        'pre_delete_func' => 'CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents',
       ),
       'civicrm_activity' => array(
         'helper_class' => 'CRM_Activity_DAO_Activity',
         'delete_func' => 'delete',
-        'pre_delete_func' => ''
-      )
+        'pre_delete_func' => '',
+      ),
     );
 
-  static $_dateColumns =
-    array(
+  static $_dateColumns
+    array(
       'civicrm_event' => array(
         'dateColumns' => array('start_date'),
         'excludeDateRangeColumns' => array('start_date', 'end_date'),
-        'intervalDateColumns' => array('end_date')
+        'intervalDateColumns' => array('end_date'),
       ),
       'civicrm_activity' => array(
         'dateColumns' => array('activity_date_time'),
-      )
+      ),
     );
 
-  static $_tableDAOMapper =
-    array(
+  static $_tableDAOMapper
+    array(
       'civicrm_event' => 'CRM_Event_DAO_Event',
       'civicrm_price_set_entity' => 'CRM_Price_DAO_PriceSetEntity',
       'civicrm_uf_join' => 'CRM_Core_DAO_UFJoin',
@@ -95,19 +98,19 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
       'civicrm_activity_contact' => 'CRM_Activity_DAO_ActivityContact',
     );
 
-  static $_updateSkipFields =
-    array(
+  static $_updateSkipFields
+    array(
       'civicrm_event' => array('start_date', 'end_date'),
       'civicrm_tell_friend' => array('entity_id'),
       'civicrm_pcp_block' => array('entity_id'),
       'civicrm_activity' => array('activity_date_time'),
     );
 
-  static $_linkedEntitiesInfo =
-    array(
+  static $_linkedEntitiesInfo
+    array(
       'civicrm_tell_friend' => array(
         'entity_id_col' => 'entity_id',
-        'entity_table_col' => 'entity_table'
+        'entity_table_col' => 'entity_table',
       ),
       'civicrm_price_set_entity' => array(
         'entity_id_col' => 'entity_id',
@@ -121,30 +124,38 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
       ),
       'civicrm_pcp_block' => array(
         'entity_id_col' => 'entity_id',
-        'entity_table_col' => 'entity_table'
+        'entity_table_col' => 'entity_table',
       ),
     );
 
+  /**
+   * Getter for status.
+   *
+   * @return string
+   */
   public static function getStatus() {
     return self::$status;
   }
 
+  /**
+   * Setter for status.
+   *
+   * @param string $status
+   */
   public static function setStatus($status) {
     self::$status = $status;
   }
 
   /**
-   * Save records in civicrm_recujrring_entity table
+   * Save records in civicrm_recurring_entity table.
    *
    * @param array $params
-   *   Reference array contains the values submitted by the form .
-   *
-   * @static
+   *   Reference array contains the values submitted by the form.
    *
    * @return object
    */
   public static function add(&$params) {
-    if (CRM_Utils_Array::value('id', $params)) {
+    if (!empty($params['id'])) {
       CRM_Utils_Hook::pre('edit', 'RecurringEntity', $params['id'], $params);
     }
     else {
@@ -156,7 +167,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
     $daoRecurringEntity->find(TRUE);
     $result = $daoRecurringEntity->save();
 
-    if (CRM_Utils_Array::value('id', $params)) {
+    if (!empty($params['id'])) {
       CRM_Utils_Hook::post('edit', 'RecurringEntity', $daoRecurringEntity->id, $daoRecurringEntity);
     }
     else {
@@ -175,22 +186,21 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * @param string $entityTable
    *   Name of the entity table .
    *
-   * @static
    *
    * @return object
    */
   public static function quickAdd($parentId, $entityId, $entityTable) {
-    $params =
-      array(
+    $params
+      array(
         'parent_id' => $parentId,
         'entity_id' => $entityId,
-        'entity_table' => $entityTable
+        'entity_table' => $entityTable,
       );
     return self::add($params);
   }
 
   /**
-   * This function updates the mode column in the civicrm_recurring_entity table
+   * This function updates the mode column in the civicrm_recurring_entity table.
    *
    * @param int $mode
    *   Mode of the entity to cascade changes across parent/child relations eg 1 - only this entity, 2 - this and the following entities, 3 - All the entity .
@@ -212,7 +222,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
   }
 
   /**
-   * This function generates all new entities based on object vars
+   * This function generates all new entities based on object vars.
    *
    * @return array
    */
@@ -249,7 +259,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
   }
 
   /**
-   * Generate new DAOs and along with entries in civicrm_recurring_entity table
+   * Generate new DAOs and along with entries in civicrm_recurring_entity table.
    *
    * @return array
    */
@@ -351,8 +361,8 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
           $recursionDates[$count][$col] = CRM_Utils_Date::processDate($newDate->format('Y-m-d H:i:s'));
         }
         if ($exRangeStart) {
-          $exRangeStartDate = CRM_Utils_Date::processDate($recursionDates[$count][$exRangeStart], NULL, FALSE, 'Ymd');
-          $exRangeEndDate = CRM_Utils_Date::processDate($recursionDates[$count][$exRangeEnd], NULL, FALSE, 'Ymd');
+          $exRangeStartDate = CRM_Utils_Date::processDate(CRM_Utils_Array::value($exRangeStart, $recursionDates[$count]), NULL, FALSE, 'Ymd');
+          $exRangeEndDate = CRM_Utils_Date::processDate(CRM_Utils_Array::value($exRangeEnd, $recursionDates[$count]), NULL, FALSE, 'Ymd');
         }
 
         foreach ($this->excludeDates as $exDate) {
@@ -391,7 +401,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
   }
 
   /**
-   * This function gets all the children for a particular parent entity
+   * This function gets all the children for a particular parent entity.
    *
    * @param int $parentId
    *   Parent entity id .
@@ -404,7 +414,6 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * @param int $initiatorId
    *   The instance where this function is invoked from .
    *
-   * @static
    *
    * @return array
    *   an array of child ids
@@ -436,10 +445,12 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
       $query .= " AND entity_id != " . ($initiatorId ? "%3" : "%1");
     }
 
-    if ($mode == '1') { // MODE = SINGLE
+    // MODE = SINGLE
+    if ($mode == '1') {
       $query .= " AND entity_id = %3";
     }
-    elseif ($mode == '2') { // MODE = FUTURE
+    // MODE = FUTURE
+    elseif ($mode == '2') {
       $recurringEntityID = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_recurring_entity WHERE entity_id = %3 AND entity_table = %2", $queryParams);
       if ($recurringEntityID) {
         $query .= $includeParent ? " AND id >= %4" : " AND id > %4";
@@ -473,7 +484,6 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * @param int $mode
    *   1. retrieve only one entity. 2. retrieve all future entities in the repeating set. 3. all entities in the repeating set. .
    *
-   * @static
    *
    * @return array
    *   array of connected ids
@@ -487,7 +497,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
   }
 
   /**
-   * This function gets the parent for the entity id passed to it
+   * This function gets the parent for the entity id passed to it.
    *
    * @param int $entityId
    *   Entity ID .
@@ -496,7 +506,6 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * @param bool $includeParent
    *   Include parent in result set .
    *
-   * @static
    *
    * @return int
    *   unsigned $parentId Parent ID
@@ -513,8 +522,8 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
     if (!$includeParent) {
       $query .= " AND parent_id != %1";
     }
-    $parentId =
-      CRM_Core_DAO::singleValueQuery($query,
+    $parentId
+      CRM_Core_DAO::singleValueQuery($query,
         array(
           1 => array($entityId, 'Integer'),
           2 => array($entityTable, 'String'),
@@ -524,7 +533,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
   }
 
   /**
-   * This function copies the information from parent entity and creates other entities with same information
+   * This function copies the information from parent entity and creates other entities with same information.
    *
    * @param string $entityTable
    *   Entity table name .
@@ -535,7 +544,6 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * @param bool $createRecurringEntity
    *   If to create a record in recurring_entity table .
    *
-   * @static
    *
    * @return object
    */
@@ -565,7 +573,6 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * @param object $event
    *   An object of /Civi/Core/DAO/Event/PostUpdate containing dao object that was just updated .
    *
-   * @static
    *
    * @return void
    */
@@ -638,7 +645,6 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * @param object $event
    *   An object of /Civi/Core/DAO/Event/PostUpdate containing dao object that was just inserted .
    *
-   * @static
    *
    * @return void
    */
@@ -722,7 +728,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
                 // linked entity doesn't exist. lets create them
                 $newCriteria = array(
                   $idCol => $val['id'],
-                  $tableCol => $val['table']
+                  $tableCol => $val['table'],
                 );
                 $linkedObj = CRM_Core_BAO_RecurringEntity::copyCreateEntity($obj->__table,
                   array('id' => $obj->id),
@@ -749,7 +755,6 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * @param object $event
    *   An object of /Civi/Core/DAO/Event/PostUpdate containing dao object that was just deleted .
    *
-   * @static
    *
    * @return void
    */
@@ -789,13 +794,12 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * This function deletes main entity and related linked entities from recurring-entity table
    *
    * @param int $entityId
-   *   Entity id .
+   *   Entity id
    * @param string $entityTable
-   *   Name of the entity table .
+   *   Name of the entity table
    *
-   * @static
    *
-   * @return boolean|object Returns either boolean value or CRM_Core_DAO_RecurringEntity object
+   * @return bool|CRM_Core_DAO_RecurringEntity
    */
   static public function delEntity($entityId, $entityTable, $isDelLinkedEntities = FALSE) {
     if (empty($entityId) || empty($entityTable)) {
@@ -830,7 +834,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
   }
 
   /**
-   * This function maps values posted from form to civicrm_action_schedule columns
+   * This function maps values posted from form to civicrm_action_schedule columns.
    *
    * @param array $formParams
    *   And array of form values posted .
@@ -839,39 +843,39 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    */
   public function mapFormValuesToDB($formParams = array()) {
     $dbParams = array();
-    if (CRM_Utils_Array::value('used_for', $formParams)) {
+    if (!empty($formParams['used_for'])) {
       $dbParams['used_for'] = $formParams['used_for'];
     }
 
-    if (CRM_Utils_Array::value('entity_id', $formParams)) {
+    if (!empty($formParams['entity_id'])) {
       $dbParams['entity_value'] = $formParams['entity_id'];
     }
 
-    if (CRM_Utils_Array::value('repetition_start_date', $formParams)) {
-      if (CRM_Utils_Array::value('repetition_start_date_display', $formParams)) {
+    if (!empty($formParams['repetition_start_date'])) {
+      if (!empty($formParams['repetition_start_date_display'])) {
         $repetitionStartDate = $formParams['repetition_start_date_display'];
       }
       else {
         $repetitionStartDate = $formParams['repetition_start_date'];
       }
-      if (CRM_Utils_Array::value('repetition_start_date_time', $formParams)) {
+      if (!empty($formParams['repetition_start_date_time'])) {
         $repetitionStartDate = $repetitionStartDate . " " . $formParams['repetition_start_date_time'];
       }
       $repetition_start_date = new DateTime($repetitionStartDate);
       $dbParams['start_action_date'] = CRM_Utils_Date::processDate($repetition_start_date->format('Y-m-d H:i:s'));
     }
 
-    if (CRM_Utils_Array::value('repetition_frequency_unit', $formParams)) {
+    if (!empty($formParams['repetition_frequency_unit'])) {
       $dbParams['repetition_frequency_unit'] = $formParams['repetition_frequency_unit'];
     }
 
-    if (CRM_Utils_Array::value('repetition_frequency_interval', $formParams)) {
+    if (!empty($formParams['repetition_frequency_interval'])) {
       $dbParams['repetition_frequency_interval'] = $formParams['repetition_frequency_interval'];
     }
 
     //For Repeats on:(weekly case)
     if ($formParams['repetition_frequency_unit'] == 'week') {
-      if (CRM_Utils_Array::value('start_action_condition', $formParams)) {
+      if (!empty($formParams['start_action_condition'])) {
         $repeats_on = CRM_Utils_Array::value('start_action_condition', $formParams);
         $dbParams['start_action_condition'] = implode(",", array_keys($repeats_on));
       }
@@ -880,7 +884,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
     //For Repeats By:(monthly case)
     if ($formParams['repetition_frequency_unit'] == 'month') {
       if ($formParams['repeats_by'] == 1) {
-        if (CRM_Utils_Array::value('limit_to', $formParams)) {
+        if (!empty($formParams['limit_to'])) {
           $dbParams['limit_to'] = $formParams['limit_to'];
         }
       }
@@ -893,14 +897,14 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
 
     //For "Ends" - After:
     if ($formParams['ends'] == 1) {
-      if (CRM_Utils_Array::value('start_action_offset', $formParams)) {
+      if (!empty($formParams['start_action_offset'])) {
         $dbParams['start_action_offset'] = $formParams['start_action_offset'];
       }
     }
 
     //For "Ends" - On:
     if ($formParams['ends'] == 2) {
-      if (CRM_Utils_Array::value('repeat_absolute_date', $formParams)) {
+      if (!empty($formParams['repeat_absolute_date'])) {
         $dbParams['absolute_date'] = CRM_Utils_Date::processDate($formParams['repeat_absolute_date']);
       }
     }
@@ -913,7 +917,6 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
    * @param int $scheduleReminderId
    *   Primary key of civicrm_action_schedule table .
    *
-   * @static
    *
    * @return object
    */
@@ -926,7 +929,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
     }
     $dao = CRM_Core_DAO::executeQuery($query,
       array(
-        1 => array($scheduleReminderId, 'Integer')
+        1 => array($scheduleReminderId, 'Integer'),
       )
     );
     $dao->fetch();
@@ -934,7 +937,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
   }
 
   /**
-   * wrapper of getScheduleReminderDetailsById function
+   * wrapper of getScheduleReminderDetailsById function.
    *
    * @param int $scheduleReminderId
    *   Primary key of civicrm_action_schedule table .
@@ -1043,7 +1046,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
         $r->count($scheduleReminderDetails['start_action_offset']);
       }
 
-      if (CRM_Utils_Array::value('absolute_date', $scheduleReminderDetails)) {
+      if (!empty($scheduleReminderDetails['absolute_date'])) {
         $absoluteDate = CRM_Utils_Date::setDateDefaults($scheduleReminderDetails['absolute_date']);
         $endDate = new DateTime($absoluteDate[0] . ' ' . $absoluteDate[1]);
         $endDate->modify('+1 day');
@@ -1062,14 +1065,13 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
 
 
   /**
-   * This function gets time difference between the two datetime object
+   * This function gets time difference between the two datetime object.
    *
    * @param DateTime $startDate
    *   Start Date .
    * @param DateTime $endDate
    *   End Date .
    *
-   * @static
    *
    * @return object
    *   DateTime object which contain time difference
@@ -1083,14 +1085,13 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
   }
 
   /**
-   * This function gets all columns from civicrm_action_schedule on the basis of event id
+   * This function gets all columns from civicrm_action_schedule on the basis of event id.
    *
    * @param int $entityId
    *   Entity ID .
    * @param string $used_for
    *   Specifies for which entity type it's used for .
    *
-   * @static
    *
    * @return object
    */
@@ -1105,7 +1106,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
       }
       $params = array(
         1 => array($entityId, 'Integer'),
-        2 => array($used_for, 'String')
+        2 => array($used_for, 'String'),
       );
       $dao = CRM_Core_DAO::executeQuery($query, $params);
       $dao->fetch();
@@ -1114,7 +1115,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
   }
 
   /**
-   * Update mode column in civicrm_recurring_entity table for event related tabs
+   * Update mode column in civicrm_recurring_entity table for event related tabs.
    *
    * @param int $entityId
    *   Event id .
@@ -1130,20 +1131,21 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity {
       }
       else {
         CRM_Core_Session::setStatus('Could not update mode for linked entities');
-        return;
+        return NULL;
       }
       $entityTable = $linkedEntityTable;
       $params = array(
         'entity_id' => $entityId,
-        'entity_table' => $mainEntityTable
+        'entity_table' => $mainEntityTable,
       );
       $defaults = array();
       CRM_Core_DAO::commonRetrieve($dao, $params, $defaults);
-      if (CRM_Utils_Array::value('id', $defaults)) {
+      if (!empty($defaults['id'])) {
         $result['entityId'] = $defaults['id'];
         $result['entityTable'] = $entityTable;
       }
     }
     return $result;
   }
+
 }