Exemplo n.º 1
0
 /**
  * Returns all active options ordered by weight for a given field
  *
  * @param  int      $fieldId         field whose options are needed
  * @param  boolean  $inactiveNeeded  do we need inactive options ?
  *
  * @return array $customOption all active options for fieldId
  * @static
  */
 static function getCustomOption($fieldID, $inactiveNeeded = FALSE)
 {
     $options = array();
     if (!$fieldID) {
         return $options;
     }
     $field = CRM_Core_BAO_CustomField::getFieldObject($fieldID);
     // get the option group id
     $optionGroupID = $field->option_group_id;
     if (!$optionGroupID) {
         return $options;
     }
     $optionValues = CRM_Core_BAO_OptionValue::getOptionValuesArray($optionGroupID);
     foreach ($optionValues as $id => $value) {
         if (!$inactiveNeeded && empty($value['is_active'])) {
             continue;
         }
         $options[$id] = array();
         $options[$id]['id'] = $id;
         $options[$id]['label'] = $value['label'];
         $options[$id]['value'] = $value['value'];
     }
     CRM_Utils_Hook::customFieldOptions($fieldID, $options, TRUE);
     return $options;
 }
Exemplo n.º 2
0
 /**
  * wrapper for ajax option selector.
  *
  * @param array $params
  *   Associated array for params record id.
  *
  * @return array
  *   associated array of option list
  *   -rp = rowcount
  *   -page= offset
  */
 public static function getOptionListSelector(&$params)
 {
     $options = array();
     //get the default value from custom fields
     $customFieldBAO = new CRM_Core_BAO_CustomField();
     $customFieldBAO->id = $params['fid'];
     if ($customFieldBAO->find(TRUE)) {
         $defaultValue = $customFieldBAO->default_value;
         $fieldHtmlType = $customFieldBAO->html_type;
     } else {
         CRM_Core_Error::fatal();
     }
     $defVal = explode(CRM_Core_DAO::VALUE_SEPARATOR, substr($defaultValue, 1, -1));
     // format the params
     $params['offset'] = ($params['page'] - 1) * $params['rp'];
     $params['rowCount'] = $params['rp'];
     $field = CRM_Core_BAO_CustomField::getFieldObject($params['fid']);
     // get the option group id
     $optionGroupID = $field->option_group_id;
     if (!$optionGroupID) {
         return $options;
     }
     $queryParams = array(1 => array($optionGroupID, 'Integer'));
     $total = "SELECT COUNT(*) FROM civicrm_option_value WHERE option_group_id = %1";
     $params['total'] = CRM_Core_DAO::singleValueQuery($total, $queryParams);
     $limit = " LIMIT {$params['offset']}, {$params['rowCount']} ";
     $orderBy = ' ORDER BY options.weight asc';
     $query = "SELECT * FROM civicrm_option_value as options WHERE option_group_id = %1 {$orderBy} {$limit}";
     $dao = CRM_Core_DAO::executeQuery($query, $queryParams);
     $links = CRM_Custom_Page_Option::actionLinks();
     $fields = array('id', 'label', 'value');
     $config = CRM_Core_Config::singleton();
     while ($dao->fetch()) {
         $options[$dao->id] = array();
         foreach ($fields as $k) {
             $options[$dao->id][$k] = $dao->{$k};
         }
         $action = array_sum(array_keys($links));
         $class = 'crm-entity';
         // update enable/disable links depending on custom_field properties.
         if ($dao->is_active) {
             $action -= CRM_Core_Action::ENABLE;
         } else {
             $class .= ' disabled';
             $action -= CRM_Core_Action::DISABLE;
         }
         if ($fieldHtmlType == 'CheckBox' || $fieldHtmlType == 'AdvMulti-Select' || $fieldHtmlType == 'Multi-Select') {
             if (in_array($dao->value, $defVal)) {
                 $options[$dao->id]['is_default'] = '<img src="' . $config->resourceBase . 'i/check.gif" />';
             } else {
                 $options[$dao->id]['is_default'] = '';
             }
         } else {
             if ($defaultValue == $dao->value) {
                 $options[$dao->id]['is_default'] = '<img src="' . $config->resourceBase . 'i/check.gif" />';
             } else {
                 $options[$dao->id]['is_default'] = '';
             }
         }
         $options[$dao->id]['class'] = $dao->id . ',' . $class;
         $options[$dao->id]['is_active'] = !empty($dao->is_active) ? 'Yes' : 'No';
         $options[$dao->id]['links'] = CRM_Core_Action::formLink($links, $action, array('id' => $dao->id, 'fid' => $params['fid'], 'gid' => $params['gid']), ts('more'), FALSE, 'customOption.row.actions', 'customOption', $dao->id);
     }
     return $options;
 }