X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FReport%2FForm.php;h=de0ad122ad2921679a4b411027f07d64bbfbbe7d;hb=2fb3d9211f103aa26d5284d771382a1da47c867f;hp=ccbaea07be552c104879a2e478fa419b4212de8a;hpb=5ef26a4125a1bc057d401962fb1c9bb3032c333a;p=civicrm-core.git diff --git a/CRM/Report/Form.php b/CRM/Report/Form.php index ccbaea07be..de0ad122ad 100644 --- a/CRM/Report/Form.php +++ b/CRM/Report/Form.php @@ -88,7 +88,7 @@ class CRM_Report_Form extends CRM_Core_Form { * * @var array */ - protected $_options = array(); + public $_options = array(); /** * By default most reports hide contact id. @@ -441,6 +441,11 @@ class CRM_Report_Form extends CRM_Core_Form { */ protected $rollupRow = array(); + /** + * @var string Database attributes - character set and collation + */ + protected $_databaseAttributes = 'DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci'; + /** * SQL being run in this report. * @@ -519,21 +524,11 @@ class CRM_Report_Form extends CRM_Core_Form { * @throws \Exception */ public function preProcessCommon() { - $this->_force - = CRM_Utils_Request::retrieve( - 'force', - 'Boolean', - CRM_Core_DAO::$_nullObject - ); + $this->_force = CRM_Utils_Request::retrieve('force', 'Boolean'); - $this->_dashBoardRowCount - = CRM_Utils_Request::retrieve( - 'rowCount', - 'Integer', - CRM_Core_DAO::$_nullObject - ); + $this->_dashBoardRowCount = CRM_Utils_Request::retrieve('rowCount', 'Integer'); - $this->_section = CRM_Utils_Request::retrieve('section', 'Integer', CRM_Core_DAO::$_nullObject); + $this->_section = CRM_Utils_Request::retrieve('section', 'Integer'); $this->assign('section', $this->_section); CRM_Core_Region::instance('page-header')->add(array( @@ -3324,7 +3319,7 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND if ($this->addPaging) { $this->_select = str_ireplace('SELECT ', 'SELECT SQL_CALC_FOUND_ROWS ', $this->_select); - $pageId = CRM_Utils_Request::retrieve('crmPID', 'Integer', CRM_Core_DAO::$_nullObject); + $pageId = CRM_Utils_Request::retrieve('crmPID', 'Integer'); // @todo all http vars should be extracted in the preProcess // - not randomly in the class @@ -3746,6 +3741,15 @@ ORDER BY cg.weight, cf.weight"; $curFilters[$fieldName]['type'] = CRM_Utils_Type::T_STRING; } + // CRM-19401 fix + if ($customDAO->html_type == 'Select' && !array_key_exists('options', $curFilters[$fieldName])) { + $options = CRM_Core_PseudoConstant::get('CRM_Core_BAO_CustomField', 'custom_' . $customDAO->cf_id, array(), 'search'); + if ($options !== FALSE) { + $curFilters[$fieldName]['operatorType'] = CRM_Core_BAO_CustomField::isSerialized($customDAO) ? CRM_Report_Form::OP_MULTISELECT_SEPARATOR : CRM_Report_Form::OP_MULTISELECT; + $curFilters[$fieldName]['options'] = $options; + } + } + if (!array_key_exists('type', $curFields[$fieldName])) { $curFields[$fieldName]['type'] = CRM_Utils_Array::value('type', $curFilters[$fieldName], array()); } @@ -4049,6 +4053,20 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a * address fields for construct clause */ public function addAddressFields($groupBy = TRUE, $orderBy = FALSE, $filters = TRUE, $defaults = array('country_id' => TRUE)) { + $defaultAddressFields = array( + 'street_address' => ts('Street Address'), + 'supplemental_address_1' => ts('Supplementary Address Field 1'), + 'supplemental_address_2' => ts('Supplementary Address Field 2'), + 'street_number' => ts('Street Number'), + 'street_name' => ts('Street Name'), + 'street_unit' => ts('Street Unit'), + 'city' => ts('City'), + 'postal_code' => ts('Postal Code'), + 'postal_code_suffix' => ts('Postal Code Suffix'), + 'country_id' => ts('Country'), + 'state_province_id' => ts('State/Province'), + 'county_id' => ts('County'), + ); $addressFields = array( 'civicrm_address' => array( 'dao' => 'CRM_Core_DAO_Address', @@ -4058,65 +4076,18 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'default' => CRM_Utils_Array::value('name', $defaults, FALSE), 'name' => 'name', ), - 'street_address' => array( - 'title' => ts('Street Address'), - 'default' => CRM_Utils_Array::value('street_address', $defaults, FALSE), - ), - 'supplemental_address_1' => array( - 'title' => ts('Supplementary Address Field 1'), - 'default' => CRM_Utils_Array::value('supplemental_address_1', $defaults, FALSE), - ), - 'supplemental_address_2' => array( - 'title' => ts('Supplementary Address Field 2'), - 'default' => CRM_Utils_Array::value('supplemental_address_2', $defaults, FALSE), - ), - 'street_number' => array( - 'name' => 'street_number', - 'title' => ts('Street Number'), - 'type' => 1, - 'default' => CRM_Utils_Array::value('street_number', $defaults, FALSE), - ), - 'street_name' => array( - 'name' => 'street_name', - 'title' => ts('Street Name'), - 'type' => 1, - 'default' => CRM_Utils_Array::value('street_name', $defaults, FALSE), - ), - 'street_unit' => array( - 'name' => 'street_unit', - 'title' => ts('Street Unit'), - 'type' => 1, - 'default' => CRM_Utils_Array::value('street_unit', $defaults, FALSE), - ), - 'city' => array( - 'title' => ts('City'), - 'default' => CRM_Utils_Array::value('city', $defaults, FALSE), - ), - 'postal_code' => array( - 'title' => ts('Postal Code'), - 'default' => CRM_Utils_Array::value('postal_code', $defaults, FALSE), - ), - 'postal_code_suffix' => array( - 'title' => ts('Postal Code Suffix'), - 'default' => CRM_Utils_Array::value('postal_code_suffix', $defaults, FALSE), - ), - 'country_id' => array( - 'title' => ts('Country'), - 'default' => CRM_Utils_Array::value('country_id', $defaults, FALSE), - ), - 'state_province_id' => array( - 'title' => ts('State/Province'), - 'default' => CRM_Utils_Array::value('state_province_id', $defaults, FALSE), - ), - 'county_id' => array( - 'title' => ts('County'), - 'default' => CRM_Utils_Array::value('county_id', $defaults, FALSE), - ), ), 'grouping' => 'location-fields', ), ); + foreach ($defaultAddressFields as $fieldName => $fieldLabel) { + $addressFields['civicrm_address']['fields'][$fieldName] = array( + 'title' => $fieldLabel, + 'default' => CRM_Utils_Array::value($fieldName, $defaults, FALSE), + ); + } + $street_address_filters = $general_address_filters = array(); if ($filters) { // Address filter depends on whether street address parsing is enabled. // (CRM-18696) @@ -4127,13 +4098,13 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a $street_address_filters = array( 'street_number' => array( 'title' => ts('Street Number'), - 'type' => 1, + 'type' => CRM_Utils_Type::T_INT, 'name' => 'street_number', ), 'street_name' => array( 'title' => ts('Street Name'), 'name' => 'street_name', - 'operator' => 'like', + 'type' => CRM_Utils_Type::T_STRING, ), ); } @@ -4141,7 +4112,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a $street_address_filters = array( 'street_address' => array( 'title' => ts('Street Address'), - 'operator' => 'like', + 'type' => CRM_Utils_Type::T_STRING, 'name' => 'street_address', ), ); @@ -4149,12 +4120,12 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a $general_address_filters = array( 'postal_code' => array( 'title' => ts('Postal Code'), - 'type' => 1, + 'type' => CRM_Utils_Type::T_STRING, 'name' => 'postal_code', ), 'city' => array( 'title' => ts('City'), - 'operator' => 'like', + 'type' => CRM_Utils_Type::T_STRING, 'name' => 'city', ), 'country_id' => array( @@ -4300,10 +4271,17 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a // There is no reason not to add links for all fields but it seems a bit odd to be able to click on // 'Mrs'. Also, we don't have metadata about the title. So, add selectively to addLinks. $addLinks = array('gender_id' => 'Gender'); - foreach (array('prefix_id', 'suffix_id', 'gender_id') as $fieldName) { + foreach (array('prefix_id', 'suffix_id', 'gender_id', 'contact_sub_type', 'preferred_language') as $fieldName) { if (array_key_exists('civicrm_contact_' . $fieldName, $row)) { if (($value = $row['civicrm_contact_' . $fieldName]) != FALSE) { - $rows[$rowNum]['civicrm_contact_' . $fieldName] = CRM_Core_Pseudoconstant::getLabel('CRM_Contact_BAO_Contact', $fieldName, $value); + $rowValues = explode(CRM_Core_DAO::VALUE_SEPARATOR, $value); + $rowLabels = array(); + foreach ($rowValues as $rowValue) { + if ($rowValue) { + $rowLabels[] = CRM_Core_Pseudoconstant::getLabel('CRM_Contact_BAO_Contact', $fieldName, $rowValue); + } + } + $rows[$rowNum]['civicrm_contact_' . $fieldName] = implode(', ', $rowLabels); if ($baseUrl && ($title = CRM_Utils_Array::value($fieldName, $addLinks)) != FALSE) { $this->addLinkToRow($rows[$rowNum], $baseUrl, $linkText, $value, $fieldName, 'civicrm_contact', $title); } @@ -4504,6 +4482,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'do_not_sms' => array(), 'is_opt_out' => array(), 'is_deceased' => array(), + 'preferred_language' => array(), ); } @@ -4570,6 +4549,9 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'title' => ts('Do not bulk email'), 'type' => CRM_Utils_Type::T_BOOLEAN, ), + 'preferred_language' => array( + 'title' => ts('Preferred Language'), + ), ); } @@ -4620,12 +4602,9 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a // upload strictly for '.png' images $name = trim(basename(CRM_Utils_Request::retrieve('name', 'String', CRM_Core_DAO::$_nullObject, FALSE, NULL, 'GET'))); if (preg_match('/\.png$/', $name)) { - // - // POST data is usually string data, but we are passing a RAW .png - // so PHP is a bit confused and $_POST is empty. But it has saved - // the raw bits into $HTTP_RAW_POST_DATA - // - $httpRawPostData = $GLOBALS['HTTP_RAW_POST_DATA']; + + // Get the RAW .png from the input. + $httpRawPostData = file_get_contents("php://input"); // prepare the directory $config = CRM_Core_Config::singleton();