Merge pull request #7969 from monishdeb/CRM-18224
authorMonish Deb <monish.deb@webaccessglobal.com>
Mon, 14 Mar 2016 12:54:59 +0000 (18:24 +0530)
committerMonish Deb <monish.deb@webaccessglobal.com>
Mon, 14 Mar 2016 12:54:59 +0000 (18:24 +0530)
CRM-18224 fix

13 files changed:
CRM/Contact/Form/Task/AddToHousehold.php
CRM/Contact/Form/Task/AddToOrganization.php
CRM/Contribute/BAO/Premium.php
CRM/Contribute/Form/Contribution.php
CRM/Core/PseudoConstant.php
CRM/Dedupe/Merger.php
CRM/Export/BAO/Export.php
CRM/Export/Form/Select.php
CRM/Pledge/BAO/Pledge.php
CRM/UF/Page/Field.php
CRM/UF/Page/Group.php
CRM/Utils/System/Base.php
tests/phpunit/CRM/Core/BAO/ActionScheduleTest.php

index b6a1443b325c880f889aded63f1abaca7edf858f..95298009b372032fcdef10c397aabfb680a104fd 100644 (file)
@@ -93,7 +93,7 @@ class CRM_Contact_Form_Task_AddToHousehold extends CRM_Contact_Form_Task_AddToPa
 
     $this->set('searchDone', 0);
     if (!empty($_POST['_qf_AddToHousehold_refresh'])) {
-      $searchParams['contact_type'] = array('Household' => 'Household');
+      $searchParams['contact_type'] = 'Household';
       $searchParams['rel_contact'] = $this->params['name'];
       $this->search($this, $searchParams);
       $this->set('searchDone', 1);
index d1eb806a430b361807a4caa398de34113ded57a8..145d77323aea77e26626c87c2a4babc49027851a 100644 (file)
@@ -101,7 +101,7 @@ class CRM_Contact_Form_Task_AddToOrganization extends CRM_Contact_Form_Task_AddT
 
     $this->set('searchDone', 0);
     if (!empty($_POST['_qf_AddToOrganization_refresh'])) {
-      $searchParams['contact_type'] = array('Organization' => 'Organization');
+      $searchParams['contact_type'] = 'Organization';
       $searchParams['rel_contact'] = $this->params['name'];
       $this->search($this, $searchParams);
       $this->set('searchDone', 1);
index 1d7449b4ca3af0ef2e09211bd0185848b8b0bfa5..eff02f0cd21c07f185269d5c3a033f7464100c1d 100644 (file)
@@ -34,6 +34,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
 
   /**
    * Product information.
+   *
    * @var array
    */
   private static $productInfo;
@@ -53,7 +54,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
    * @param array $defaults
    *   (reference ) an assoc array to hold the flattened values.
    *
-   * @return CRM_Contribute_BAO_ManagePremium
+   * @return CRM_Contribute_DAO_Product
    */
   public static function retrieve(&$params, &$defaults) {
     $premium = new CRM_Contribute_DAO_Product();
@@ -84,12 +85,8 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
    * Delete financial Types.
    *
    * @param int $premiumID
-   *
    */
   public static function del($premiumID) {
-    //check dependencies
-
-    //delete from financial Type table
     $premium = new CRM_Contribute_DAO_Premium();
     $premium->id = $premiumID;
     $premium->delete();
@@ -102,8 +99,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
    * @param int $pageID
    * @param bool $formItems
    * @param int $selectedProductID
-   * @param null $selectedOption
-   *
+   * @param string $selectedOption
    */
   public static function buildPremiumBlock(&$form, $pageID, $formItems = FALSE, $selectedProductID = NULL, $selectedOption = NULL) {
     $form->add('hidden', "selectProduct", $selectedProductID, array('id' => 'selectProduct'));
@@ -175,7 +171,6 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
    * @param CRM_Core_Form $form
    * @param int $productID
    * @param int $premiumProductID
-   *
    */
   public function buildPremiumPreviewBlock($form, $productID, $premiumProductID = NULL) {
     if ($premiumProductID) {
@@ -213,7 +208,6 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium {
    * Delete premium associated w/ contribution page.
    *
    * @param int $contributionPageID
-   *
    */
   public static function deletePremium($contributionPageID) {
     if (!$contributionPageID) {
index 4e286e39979ec54966928ee1c67d292fd927d20c..2c90c8159d0e7ae928933f1bcb36e52affacbde0 100644 (file)
@@ -705,6 +705,11 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       $name = CRM_Utils_Array::value($contributionStatus, $statusName);
       switch ($name) {
         case 'Completed':
+          // [CRM-17498] Removing unsupported status change options.
+          unset($status[CRM_Utils_Array::key('Pending', $statusName)]);
+          unset($status[CRM_Utils_Array::key('Failed', $statusName)]);
+          unset($status[CRM_Utils_Array::key('Partially paid', $statusName)]);
+          unset($status[CRM_Utils_Array::key('Pending refund', $statusName)]);
         case 'Cancelled':
         case 'Chargeback':
         case 'Refunded':
index 16a6ef8933d91e728827171c7d3f9dfbcc3f8127..509a3ea29d55f8308f8ac27dc3cd64c3eb0781d4 100644 (file)
@@ -77,7 +77,7 @@ class CRM_Core_PseudoConstant {
    * States/provinces abbreviations
    * @var array
    */
-  private static $stateProvinceAbbreviation;
+  private static $stateProvinceAbbreviation = array();
 
   /**
    * Country.
@@ -738,22 +738,22 @@ class CRM_Core_PseudoConstant {
    *   array reference of all State/Province abbreviations.
    */
   public static function stateProvinceAbbreviation($id = FALSE, $limit = TRUE) {
-    if ($id > 1) {
-      $query = "
-SELECT abbreviation
+    if ($id && is_numeric($id)) {
+      if (!array_key_exists($id, (array) self::$stateProvinceAbbreviation)) {
+        $query = "SELECT abbreviation
 FROM   civicrm_state_province
 WHERE  id = %1";
-      $params = array(
-        1 => array(
-          $id,
-          'Integer',
-        ),
-      );
-      return CRM_Core_DAO::singleValueQuery($query, $params);
+        $params = array(
+          1 => array(
+            $id,
+            'Integer',
+          ),
+        );
+        self::$stateProvinceAbbreviation[$id] = CRM_Core_DAO::singleValueQuery($query, $params);
+      }
+      return self::$stateProvinceAbbreviation[$id];
     }
-
-    if (!self::$stateProvinceAbbreviation || !$id) {
-
+    else {
       $whereClause = FALSE;
 
       if ($limit) {
@@ -774,15 +774,6 @@ WHERE  id = %1";
       self::populate(self::$stateProvinceAbbreviation, 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', $whereClause);
     }
 
-    if ($id) {
-      if (array_key_exists($id, self::$stateProvinceAbbreviation)) {
-        return self::$stateProvinceAbbreviation[$id];
-      }
-      else {
-        $result = NULL;
-        return $result;
-      }
-    }
     return self::$stateProvinceAbbreviation;
   }
 
index d2e0b6f72e760b608cfcf5e13956285a05f2e814..0426c6cca654d19e97f2e729700f1f0b5fcaaf87 100644 (file)
@@ -979,11 +979,7 @@ INNER JOIN  civicrm_membership membership2 ON membership1.membership_type_id = m
       $$moniker = $result['values'][$cid];
     }
 
-    static $fields = array();
-    if (empty($fields)) {
-      $fields = CRM_Contact_DAO_Contact::fields();
-      CRM_Core_DAO::freeResult();
-    }
+    $fields = CRM_Contact_DAO_Contact::fields();
 
     // FIXME: there must be a better way
     foreach (array('main', 'other') as $moniker) {
index 0bb887c7d565b6c947a69ac130e2b8d5e222f292..c17e424ee969172c16dfd9d9bfd88610e0276b19 100644 (file)
@@ -98,6 +98,7 @@ class CRM_Export_BAO_Export {
    */
   public static function defaultReturnProperty($exportMode) {
     // hack to add default return property based on export mode
+    $property = NULL;
     if ($exportMode == CRM_Export_Form_Select::CONTRIBUTE_EXPORT) {
       $property = 'contribution_id';
     }
@@ -119,9 +120,6 @@ class CRM_Export_BAO_Export {
     elseif ($exportMode == CRM_Export_Form_Select::ACTIVITY_EXPORT) {
       $property = 'activity_id';
     }
-    elseif ($exportMode == CRM_Export_Form_Select::CONTACT_EXPORT) {
-      $property = 'contact_id';
-    }
     return $property;
   }
 
@@ -434,7 +432,9 @@ class CRM_Export_BAO_Export {
           }
         }
       }
-      $returnProperties[self::defaultReturnProperty($exportMode)] = 1;
+      if (!empty(self::defaultReturnProperty($exportMode))) {
+        $returnProperties[self::defaultReturnProperty($exportMode)] = 1;
+      }
     }
     else {
       $primary = TRUE;
@@ -560,7 +560,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c
     list($select, $from, $where, $having) = $query->query();
 
     if ($mergeSameHousehold == 1) {
-      if (!$returnProperties['id']) {
+      if (empty($returnProperties['id'])) {
         $returnProperties['id'] = 1;
       }
 
index c2dac7b530d859b707ce3c181d71bae6035dfc4e..4349d3427a1016f50ee4a89ba6a7c027d224efe8 100644 (file)
@@ -444,7 +444,7 @@ FROM   {$this->_componentTable}
    * @return string
    */
   public function getTitle() {
-    return ts('Export All or Selected Fields');
+    return ts('Export Options');
   }
 
   /**
index b6835b238568690d4e41d1b46b41b12a014c9baa..7b5137e7ba54a279034b99b3ca92df25c9434d1c 100644 (file)
@@ -1013,11 +1013,13 @@ SELECT  pledge.contact_id              as contact_id,
 
         if (empty($details['reminder_date'])) {
           $nextReminderDate = new DateTime($details['scheduled_date']);
+          $details['initial_reminder_day'] = empty($details['initial_reminder_day']) ? 0 : $details['initial_reminder_day'];
           $nextReminderDate->modify("-" . $details['initial_reminder_day'] . "day");
           $nextReminderDate = $nextReminderDate->format("Ymd");
         }
         else {
           $nextReminderDate = new DateTime($details['reminder_date']);
+          $details['additional_reminder_day'] = empty($details['additional_reminder_day']) ? 0 : $details['additional_reminder_day'];
           $nextReminderDate->modify("+" . $details['additional_reminder_day'] . "day");
           $nextReminderDate = $nextReminderDate->format("Ymd");
         }
index c2cec5186e358b8e81fd62277c4f1fbbecc868af..7fb6b880eb03be003ca612ccf13304570a35349e 100644 (file)
@@ -125,8 +125,8 @@ class CRM_UF_Page_Field extends CRM_Core_Page {
     $isGroupReserved = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_gid, 'is_reserved');
     $this->assign('isGroupReserved', $isGroupReserved);
 
-    $profileType = CRM_Core_BAO_UFField::getProfileType($this->_gid);
-    if ($profileType == 'Contribution' || $profileType == 'Membership' || $profileType == 'Activity' || $profileType == 'Participant') {
+    $isMixedProfile = CRM_Core_BAO_UFField::checkProfileType($this->_gid);
+    if ($isMixedProfile) {
       $this->assign('skipCreate', TRUE);
     }
 
index 273dfab8fae523f578faad0c67565838944f0a16..aa60dd5e571cc0fd0fd05d74ad498936c8ac96b6 100644 (file)
@@ -351,10 +351,13 @@ class CRM_UF_Page_Group extends CRM_Core_Page {
       $groupTypes = self::extractGroupTypes($value['group_type']);
 
       // drop Create, Edit and View mode links if profile group_type is one of the following:
-      $groupComponents = array('Contribution', 'Membership', 'Activity', 'Participant', 'Case');
-      $componentFound = array_intersect($groupComponents, array_keys($groupTypes));
-      if (!empty($componentFound)) {
+      // Contribution, Membership, Activity, Participant, Case, Grant
+      $isMixedProfile = CRM_Core_BAO_UFField::checkProfileType($id);
+      if ($isMixedProfile) {
         $action -= CRM_Core_Action::ADD;
+        $action -= CRM_Core_Action::ADVANCED;
+        $action -= CRM_Core_Action::BASIC;
+        $action -= CRM_Core_Action::PROFILE;
       }
 
       $ufGroup[$id]['group_type'] = self::formatGroupTypes($groupTypes);
index 292d18fa529f0eb49e62ef755fa841837ea34c04..b3f8dcb4435bd0d70dadc74ea61f3787d5e7960f 100644 (file)
@@ -691,7 +691,7 @@ abstract class CRM_Utils_System_Base {
   public function getTimeZoneOffset() {
     $timezone = $this->getTimeZoneString();
     if ($timezone) {
-      if ($timezone == 'UTC') {
+      if ($timezone == 'UTC' || $timezone == 'Etc/UTC') {
         // CRM-17072 Let's short-circuit all the zero handling & return it here!
         return '+00:00';
       }
index 6e46bfe5e9adcbab1846e665ef98647455a95d6e..75d65ed1b6d324f1a070a074e1f826e268cad544 100644 (file)
@@ -1186,6 +1186,7 @@ class CRM_Core_BAO_ActionScheduleTest extends CiviUnitTestCase {
   public function testContactModifiedAnniversary() {
     $contact = $this->callAPISuccess('Contact', 'create', $this->fixtures['contact_birthdate']);
     $this->_testObjects['CRM_Contact_DAO_Contact'][] = $contact['id'];
+    $modifiedDate = $this->callAPISuccess('Contact', 'getvalue', array('id' => $contact['id'], 'return' => 'modified_date'));
     $actionSchedule = $this->fixtures['sched_contact_mod_anniv'];
     $actionScheduleDao = CRM_Core_BAO_ActionSchedule::add($actionSchedule);
     $this->assertTrue(is_numeric($actionScheduleDao->id));
@@ -1197,7 +1198,7 @@ class CRM_Core_BAO_ActionScheduleTest extends CiviUnitTestCase {
       ),
       array(
         // On the eve of 3 years after they were modified, send an email.
-        'time' => date('Y-m-d H:i:s', strtotime($contact['values'][$contact['id']]['modified_date'] . ' +3 years -23 hours')),
+        'time' => date('Y-m-d H:i:s', strtotime($modifiedDate . ' +3 years -1 day')),
         'recipients' => array(array('test-bday@example.com')),
       ),
     ));