Fixed CRM-19334
authorBernardo Araujo <hotwer.nevermore@gmail.com>
Fri, 16 Sep 2016 22:04:41 +0000 (19:04 -0300)
committerBernardo Araujo <hotwer.nevermore@gmail.com>
Fri, 16 Sep 2016 22:04:41 +0000 (19:04 -0300)
CRM/Contact/Form/Search/Criteria.php

index ae312775481d476ccf99c3249b9ba1b5a92fbcaf..4c2446cba42fa94d5c7ab8eb7fc8bb01d35469e8 100644 (file)
@@ -159,6 +159,8 @@ class CRM_Contact_Form_Search_Criteria {
 
     $componentModes = CRM_Contact_Form_Search::getModeSelect();
 
+    self::validatePossibleComponents($componentModes);
+
     // unset contributions or participants if user does not have
     // permission on them
     if (!CRM_Core_Permission::access('CiviContribute')) {
@@ -539,4 +541,19 @@ class CRM_Contact_Form_Search_Criteria {
     CRM_Case_BAO_Query::buildSearchForm($form);
   }
 
+  public static function getEnabledComponents() {
+    $apiResult = civicrm_api3('Setting', 'Get', array());
+    return $apiResult['values'][1]['enable_components'];
+  }
+
+  //the idea is to validate everything in here and remove based on possible situations
+  public static function validatePossibleComponents(&$componentModes) {
+    $enabledComponents = self::getEnabledComponents();
+
+    //e.g. this validation that removes the 'Mailing' option if CiviMail is not enabled
+    if (!in_array('CiviMail', $enabledComponents)) {
+      unset($componentModes['8']);
+    }
+  }
+
 }