CRM-12276 Use default option_value to set default activity.status_id when creating...
authorDave Greenberg <dave@civicrm.org>
Fri, 5 Apr 2013 23:04:31 +0000 (16:04 -0700)
committerDave Greenberg <dave@civicrm.org>
Fri, 5 Apr 2013 23:04:31 +0000 (16:04 -0700)
----------------------------------------
* CRM-12276: Changing default option in Activity Status does not change the default when creating an activity
  http://issues.civicrm.org/jira/browse/CRM-12276

CRM/Activity/Form/Activity.php
CRM/Core/OptionGroup.php

index a9eeb1bede1b3186287f7186a2d9280dcaa74ff7..d8f8a61da679b92cacbdfef22d8ef99215de9fcf 100644 (file)
@@ -600,6 +600,9 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
       $priority = CRM_Core_PseudoConstant::priority();
       $defaults['priority_id'] = array_search('Normal', $priority);
     }
+    if (!CRM_Utils_Array::value('status_id', $defaults)) {
+      $defaults['status_id'] = CRM_Core_OptionGroup::getDefaultValue('activity_status');
+    }
     return $defaults;
   }
 
index 1e3438966540eef596728393d8d29042418caebe..08bf0844dbdb2f5025a9911d0a80a924b5e6b203 100644 (file)
@@ -354,6 +354,38 @@ WHERE  v.option_group_id = g.id
     return NULL;
   }
 
+  /**
+   * Get option_value.value from default option_value row for an option group
+   *
+   * @param string $groupName the name of the option group
+   *
+   * @access public
+   * @static
+   *
+   * @return string   the value from the row where is_default = true
+   */   
+  static function getDefaultValue($groupName) {
+    if (empty($groupName)) {
+      return NULL;
+    }
+    $query = "
+SELECT v.value
+FROM   civicrm_option_value v,
+       civicrm_option_group g
+WHERE  v.option_group_id = g.id
+  AND  g.name            = %1
+  AND  v.is_active       = 1
+  AND  g.is_active       = 1
+  AND  v.is_default      = 1
+";
+    if (in_array($groupName, self::$_domainIDGroups)) {
+      $query .= " AND v.domain_id = " . CRM_Core_Config::domainID();
+    }
+
+    $p = array(1 => array($groupName, 'String'));
+    return CRM_Core_DAO::singleValueQuery($query, $p);
+  }
+  
   /**
    * Creates a new option group with the passed in values
    * @TODO: Should update the group if it already exists intelligently, so multi-lingual is