X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FOptionGroup.php;h=7770090bd2bd7a72af7db7dd5be9af361664e53b;hb=4cc3a97e0eb464ef3182f28f1d7fe94606b5b056;hp=961d7aa9427690f5095ba383bc1d28e4b3f0aae7;hpb=1024e1784fb68b8529a77143f5191a60d70837cf;p=civicrm-core.git diff --git a/CRM/Core/OptionGroup.php b/CRM/Core/OptionGroup.php index 961d7aa942..7770090bd2 100644 --- a/CRM/Core/OptionGroup.php +++ b/CRM/Core/OptionGroup.php @@ -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. | | | @@ -23,12 +23,12 @@ | 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$ * */ @@ -36,10 +36,9 @@ class CRM_Core_OptionGroup { static $_values = array(); static $_cache = array(); - /* + /** * $_domainIDGroups array maintains the list of option groups for whom * domainID is to be considered. - * */ static $_domainIDGroups = array( 'from_email_address', @@ -55,7 +54,7 @@ class CRM_Core_OptionGroup { * * @return array */ - static function &valuesCommon( + public static function &valuesCommon( $dao, $flip = FALSE, $grouping = FALSE, $localize = FALSE, $valueColumnName = 'label' ) { @@ -92,22 +91,31 @@ class CRM_Core_OptionGroup { * (radio, select, checkbox etc). OptionGroups for most cases have the * 'label' in the label colum and the 'id' or 'name' in the value column * - * @param $name string name of the option group - * @param $flip boolean results are return in id => label format if false + * @param string $name + * name of the option group. + * @param bool $flip + * results are return in id => label format if false. * if true, the results are reversed - * @param $grouping boolean if true, return the value in 'grouping' column - * @param $localize boolean if true, localize the results before returning - * @param $condition string add another condition to the sql query - * @param $labelColumnName string the column to use for 'label' - * @param $onlyActive boolean return only the action option values - * @param $fresh boolean ignore cache entries and go back to DB - * @param $keyColumnName string the column to use for 'key' + * @param bool $grouping + * if true, return the value in 'grouping' column. + * @param bool $localize + * if true, localize the results before returning. + * @param string $condition + * add another condition to the sql query. + * @param string $labelColumnName + * the column to use for 'label'. + * @param bool $onlyActive + * return only the action option values. + * @param bool $fresh + * ignore cache entries and go back to DB. + * @param string $keyColumnName + * the column to use for 'key'. * - * @return array the values as specified by the above params - * @static + * @return array + * the values as specified by the above params * @void */ - static function &values( + public static function &values( $name, $flip = FALSE, $grouping = FALSE, $localize = FALSE, $condition = NULL, $labelColumnName = 'label', $onlyActive = TRUE, $fresh = FALSE, $keyColumnName = 'value' @@ -190,23 +198,27 @@ WHERE v.option_group_id = g.id } /** - * This function retrieves all the values for the specific option group by id + * This function retrieves all the values for the specific option group by id. * this is primarily used to create various html based form elements * (radio, select, checkbox etc). OptionGroups for most cases have the * 'label' in the label colum and the 'id' or 'name' in the value column * - * @param $id integer id of the option group - * @param $flip boolean results are return in id => label format if false - * if true, the results are reversed - * @param $grouping boolean if true, return the value in 'grouping' column - * @param $localize boolean if true, localize the results before returning - * @param $labelColumnName string the column to use for 'label' - * + * @param int $id + * id of the option group. + * @param bool $flip + * results are return in id => label format if false. + * if true, the results are reversed + * @param bool $grouping + * if true, return the value in 'grouping' column. + * @param bool $localize + * if true, localize the results before returning. + * @param string $labelColumnName + * the column to use for 'label'. * @param bool $onlyActive * @param bool $fresh * - * @return array the values as specified by the above params - * @static + * @return array + * Array of values as specified by the above params * @void */ public static function &valuesByID($id, $flip = FALSE, $grouping = FALSE, $localize = FALSE, $labelColumnName = 'label', $onlyActive = TRUE, $fresh = FALSE) { @@ -246,23 +258,23 @@ WHERE v.option_group_id = g.id * is assigned a new fieldname by id or id's by title * (each within a specificied option_group) * - * @param array $params Reference array of values submitted by the form. Based on - * $flip, creates new elements in $params for each field in - * the $names array. - * If $flip = false, adds root field name => title - * If $flip = true, adds actual field name => id + * @param array $params + * Reference array of values submitted by the form. Based on. + * $flip, creates new elements in $params for each field in + * the $names array. + * If $flip = false, adds root field name => title + * If $flip = true, adds actual field name => id * - * @param array $names Reference array of fieldnames we want transformed. - * Array key = 'postName' (field name submitted by form in $params). - * Array value = array( - 'newName' => $newName, 'groupName' => $groupName). + * @param array $names + * Reference array of fieldnames we want transformed. + * Array key = 'postName' (field name submitted by form in $params). + * Array value = array('newName' => $newName, 'groupName' => $groupName). * * - * @param boolean $flip + * @param bool $flip * * @return void * - * @static */ public static function lookupValues(&$params, &$names, $flip = FALSE) { foreach ($names as $postName => $value) { @@ -289,14 +301,14 @@ WHERE v.option_group_id = g.id } if ($flip) { - $p = array(1 => array($postValue, 'String')); + $p = array(1 => array($postValue, 'String')); $lookupBy = 'v.label= %1'; - $select = "v.value"; + $select = "v.value"; } else { - $p = array(1 => array($postValue, 'Integer')); + $p = array(1 => array($postValue, 'Integer')); $lookupBy = 'v.value = %1'; - $select = "v.label"; + $select = "v.label"; } $p[2] = array($value['groupName'], 'String'); @@ -342,7 +354,8 @@ WHERE v.option_group_id = g.id if ($onlyActiveValue) { $query .= " AND v.is_active = 1 "; } - $p = array(1 => array($groupName, 'String'), + $p = array( + 1 => array($groupName, 'String'), 2 => array($value, 'Integer'), ); $dao = CRM_Core_DAO::executeQuery($query, $p); @@ -361,10 +374,11 @@ WHERE v.option_group_id = g.id * * @return null */ - static function getValue($groupName, + public static function getValue( + $groupName, $label, $labelField = 'label', - $labelType = 'String', + $labelType = 'String', $valueField = 'value' ) { if (empty($label)) { @@ -382,7 +396,8 @@ WHERE v.option_group_id = g.id AND v.$labelField = %2 "; - $p = array(1 => array($groupName, 'String'), + $p = array( + 1 => array($groupName, 'String'), 2 => array($label, $labelType), ); $dao = CRM_Core_DAO::executeQuery($query, $p); @@ -397,11 +412,12 @@ WHERE v.option_group_id = g.id /** * Get option_value.value from default option_value row for an option group * - * @param string $groupName the name of the option group + * @param string $groupName + * The name of the option group. * - * @static * - * @return string the value from the row where is_default = true + * @return string + * the value from the row where is_default = true */ public static function getDefaultValue($groupName) { if (empty($groupName)) { @@ -426,12 +442,14 @@ WHERE v.option_group_id = g.id } /** - * Creates a new option group with the passed in values + * Creates a new option group with the passed in values. * @TODO: Should update the group if it already exists intelligently, so multi-lingual is * not messed up. Currently deletes the old group * - * @param string $groupName the name of the option group - make sure there is no conflict - * @param array $values the associative array that has information on the option values + * @param string $groupName + * The name of the option group - make sure there is no conflict. + * @param array $values + * The associative array that has information on the option values. * the keys of this array are: * string 'title' (required) * string 'value' (required) @@ -440,21 +458,23 @@ WHERE v.option_group_id = g.id * int 'weight' (optional) - the order in which the value are displayed * bool 'is_default' (optional) - is this the default one to display when rendered in form * bool 'is_active' (optional) - should this element be rendered - * @param int $defaultID (reference) - the option value ID of the default element (if set) is returned else 'null' - * @param null $groupTitle the optional label of the option group else set to group name + * @param int $defaultID + * (reference) - the option value ID of the default element (if set) is returned else 'null'. + * @param null $groupTitle + * The optional label of the option group else set to group name. * - * @static * - * @return int the option group ID + * @return int + * the option group ID */ public static function createAssoc($groupName, &$values, &$defaultID, $groupTitle = NULL) { self::deleteAssoc($groupName); if (!empty($values)) { - $group = new CRM_Core_DAO_OptionGroup(); - $group->name = $groupName; - $group->title = empty($groupTitle) ? $groupName : $groupTitle; + $group = new CRM_Core_DAO_OptionGroup(); + $group->name = $groupName; + $group->title = empty($groupTitle) ? $groupName : $groupTitle; $group->is_reserved = 1; - $group->is_active = 1; + $group->is_active = 1; $group->save(); foreach ($values as $v) { @@ -558,7 +578,8 @@ SELECT v.label WHERE g.id = v.option_group_id AND g.name = %1 AND v.value = %2"; - $params = array(1 => array($groupName, 'String'), + $params = array( + 1 => array($groupName, 'String'), 2 => array($value, 'String'), ); return CRM_Core_DAO::singleValueQuery($query, $params); @@ -570,11 +591,14 @@ SELECT v.label * @param string $field * @param string $fieldType * @param bool $active + * @param bool $localize + * if true, localize the results before returning. * * @return array */ - static function getRowValues($groupName, $fieldValue, $field = 'name', - $fieldType = 'String', $active = TRUE + public static function getRowValues( + $groupName, $fieldValue, $field = 'name', + $fieldType = 'String', $active = TRUE, $localize = FALSE ) { $query = " SELECT v.id, v.label, v.value, v.name, v.weight, v.description @@ -590,7 +614,8 @@ WHERE v.option_group_id = g.id $query .= " AND v.is_active = 1"; } - $p = array(1 => array($groupName, 'String'), + $p = array( + 1 => array($groupName, 'String'), 2 => array($fieldValue, $fieldType), ); $dao = CRM_Core_DAO::executeQuery($query, $p); @@ -598,27 +623,39 @@ WHERE v.option_group_id = g.id if ($dao->fetch()) { foreach (array( - 'id', 'name', 'value', 'label', 'weight', 'description') as $fld) { + 'id', + 'name', + 'value', + 'label', + 'weight', + 'description', + ) as $fld) { $row[$fld] = $dao->$fld; } } + + if ($localize) { + foreach (array('label', 'description') as $f) { + $row[$f] = ts($row[$f]); + } + } + return $row; } - /* - * Wrapper for calling values with fresh set to true to empty the given value + /** + * Wrapper for calling values with fresh set to true to empty the given value. * * Since there appears to be some inconsistency * (@todo remove inconsistency) around the pseudoconstant operations * (for example CRM_Contribution_Pseudoconstant::paymentInstrument doesn't specify isActive * which is part of the cache key * will do a couple of variations & aspire to someone cleaning it up later - */ - /** - * @param $name + * + * @param string $name * @param array $params */ - public static function flush($name, $params = array()){ + public static function flush($name, $params = array()) { $defaults = array( 'flip' => FALSE, 'grouping' => FALSE, @@ -655,4 +692,5 @@ WHERE v.option_group_id = g.id self::$_cache = array(); CRM_Utils_Cache::singleton()->flush(); } + }