From: eileen Date: Sat, 27 Apr 2019 06:48:09 +0000 (+1200) Subject: [cleanup] remove CRM_Report_Form_Extended X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=afd20cb9a50d412a903fc871338946c94db2dee8;p=civicrm-core.git [cleanup] remove CRM_Report_Form_Extended This file was added to core around 4.2 but for various reasons the ExtendedReport intiative moved to an extension & it was never used. This just removes it --- diff --git a/CRM/Report/Form/Extended.php b/CRM/Report/Form/Extended.php deleted file mode 100644 index 873665e8cd..0000000000 --- a/CRM/Report/Form/Extended.php +++ /dev/null @@ -1,1420 +0,0 @@ -_baseTable)) { - $this->buildACLClause($this->_aliases['civicrm_contact']); - $this->_from = "FROM {$this->_baseTable} {$this->_aliases[$this->_baseTable]}"; - $availableClauses = $this->getAvailableJoins(); - foreach ($this->fromClauses() as $fromClause) { - $fn = $availableClauses[$fromClause]['callback']; - $this->$fn(); - } - if (strstr($this->_from, 'civicrm_contact')) { - $this->_from .= $this->_aclFrom; - } - } - } - - /** - * Define any from clauses in use (child classes to override) - * - * @return array - */ - public function fromClauses() { - return []; - } - - public function groupBy() { - parent::groupBy(); - //@todo - need to re-visit this - bad behaviour from pa - if ($this->_groupBy == 'GROUP BY') { - $this->_groupBY = NULL; - } - // if a stat field has been selected the do a group by - if (!empty($this->_statFields) && empty($this->_groupBy)) { - $this->_groupBy[] = $this->_aliases[$this->_baseTable] . ".id"; - } - //@todo - this should be in the parent function or at parent level - perhaps build query should do this? - if (!empty($this->_groupBy) && is_array($this->_groupBy)) { - $this->_groupBy = 'GROUP BY ' . implode(',', $this->_groupBy); - } - } - - public function orderBy() { - parent::orderBy(); - } - - /** - * @param array $rows - * - * @return array - */ - public function statistics(&$rows) { - return parent::statistics($rows); - } - - public function postProcess() { - if (!empty($this->_aclTable) && !empty($this->_aliases[$this->_aclTable])) { - $this->buildACLClause($this->_aliases[$this->_aclTable]); - } - parent::postProcess(); - } - - /** - * Alter display of rows. - * - * Iterate through the rows retrieved via SQL and make changes for display purposes, - * such as rendering contacts as links. - * - * @param array $rows - * Rows generated by SQL, with an array for each row. - */ - public function alterDisplay(&$rows) { - parent::alterDisplay($rows); - - //THis is all generic functionality which can hopefully go into the parent class - // it introduces the option of defining an alter display function as part of the column definition - // @tod tidy up the iteration so it happens in this function - list($firstRow) = $rows; - // no result to alter - if (empty($firstRow)) { - return; - } - $selectedFields = array_keys($firstRow); - - $alterfunctions = $altermap = []; - foreach ($this->_columns as $tablename => $table) { - if (array_key_exists('fields', $table)) { - foreach ($table['fields'] as $field => $specs) { - if (in_array($tablename . '_' . $field, $selectedFields) && - array_key_exists('alter_display', $specs) - ) { - $alterfunctions[$tablename . '_' . - $field] = $specs['alter_display']; - $altermap[$tablename . '_' . $field] = $field; - } - } - } - } - if (empty($alterfunctions)) { - // - no manipulation to be done - return; - } - - foreach ($rows as $index => & $row) { - foreach ($row as $selectedfield => $value) { - if (array_key_exists($selectedfield, $alterfunctions)) { - $rows[$index][$selectedfield] = $this->{$alterfunctions[$selectedfield]}($value, $row, $selectedfield, $altermap[$selectedfield]); - } - } - } - } - - /** - * @return array - */ - public function getLineItemColumns() { - return [ - 'civicrm_line_item' => [ - 'dao' => 'CRM_Price_BAO_LineItem', - 'fields' => [ - 'qty' => [ - 'title' => ts('Quantity'), - 'type' => CRM_Utils_Type::T_INT, - 'statistics' => ['sum' => ts('Total Quantity Selected')], - ], - 'unit_price' => [ - 'title' => ts('Unit Price'), - ], - 'line_total' => [ - 'title' => ts('Line Total'), - 'type' => CRM_Utils_Type::T_MONEY, - 'statistics' => ['sum' => ts('Total of Line Items')], - ], - ], - 'participant_count' => [ - 'title' => ts('Participant Count'), - 'statistics' => ['sum' => ts('Total Participants')], - ], - 'filters' => [ - 'qty' => [ - 'title' => ts('Quantity'), - 'type' => CRM_Utils_Type::T_INT, - 'operator' => CRM_Report_Form::OP_INT, - ], - ], - 'group_bys' => [ - 'price_field_id' => [ - 'title' => ts('Price Field'), - ], - 'price_field_value_id' => [ - 'title' => ts('Price Field Option'), - ], - 'line_item_id' => [ - 'title' => ts('Individual Line Item'), - 'name' => 'id', - ], - ], - ], - ]; - } - - /** - * @return array - */ - public function getPriceFieldValueColumns() { - return [ - 'civicrm_price_field_value' => [ - 'dao' => 'CRM_Price_BAO_PriceFieldValue', - 'fields' => [ - 'price_field_value_label' => [ - 'title' => ts('Price Field Value Label'), - 'name' => 'label', - ], - ], - 'filters' => [ - 'price_field_value_label' => [ - 'title' => ts('Price Fields Value Label'), - 'type' => CRM_Utils_Type::T_STRING, - 'operator' => 'like', - 'name' => 'label', - ], - ], - 'order_bys' => [ - 'label' => [ - 'title' => ts('Price Field Value Label'), - ], - ], - //note that we have a requirement to group by label such that all 'Promo book' lines - 'group_bys' => - // are grouped together across price sets but there may be a separate need to group - // by id so that entries in one price set are distinct from others. Not quite sure what - // to call the distinction for end users benefit - [ - 'price_field_value_label' => [ - 'title' => ts('Price Field Value Label'), - 'name' => 'label', - ], - ], - ], - ]; - } - - /** - * @return array - */ - public function getPriceFieldColumns() { - return [ - 'civicrm_price_field' => [ - 'dao' => 'CRM_Price_BAO_PriceField', - 'fields' => [ - 'price_field_label' => [ - 'title' => ts('Price Field Label'), - 'name' => 'label', - ], - ], - 'filters' => [ - 'price_field_label' => [ - 'title' => ts('Price Field Label'), - 'type' => CRM_Utils_Type::T_STRING, - 'operator' => 'like', - 'name' => 'label', - ], - ], - 'order_bys' => [ - 'price_field_label' => [ - 'title' => ts('Price Field Label'), - 'name' => 'label', - ], - ], - 'group_bys' => [ - 'price_field_label' => [ - 'title' => ts('Price Field Label'), - 'name' => 'label', - ], - ], - ], - ]; - } - - /** - * @return array - */ - public function getParticipantColumns() { - static $_events = []; - if (!isset($_events['all'])) { - CRM_Core_PseudoConstant::populate($_events['all'], 'CRM_Event_DAO_Event', FALSE, 'title', 'is_active', "is_template IS NULL OR is_template = 0", 'end_date DESC'); - } - return [ - 'civicrm_participant' => [ - 'dao' => 'CRM_Event_DAO_Participant', - 'fields' => [ - 'participant_id' => ['title' => ts('Participant ID')], - 'participant_record' => [ - 'name' => 'id', - 'title' => ts('Participant ID'), - ], - 'event_id' => [ - 'title' => ts('Event ID'), - 'type' => CRM_Utils_Type::T_STRING, - 'alter_display' => 'alterEventID', - ], - 'status_id' => [ - 'title' => ts('Status'), - 'alter_display' => 'alterParticipantStatus', - ], - 'role_id' => [ - 'title' => ts('Role'), - 'alter_display' => 'alterParticipantRole', - ], - 'participant_fee_level' => NULL, - 'participant_fee_amount' => NULL, - 'participant_register_date' => ['title' => ts('Registration Date')], - ], - 'grouping' => 'event-fields', - 'filters' => [ - 'event_id' => [ - 'name' => 'event_id', - 'title' => ts('Event'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => $_events['all'], - ], - 'sid' => [ - 'name' => 'status_id', - 'title' => ts('Participant Status'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Event_PseudoConstant::participantStatus(NULL, NULL, 'label'), - ], - 'rid' => [ - 'name' => 'role_id', - 'title' => ts('Participant Role'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Event_PseudoConstant::participantRole(), - ], - 'participant_register_date' => [ - 'title' => ts('Registration Date'), - 'operatorType' => CRM_Report_Form::OP_DATE, - ], - ], - 'order_bys' => [ - 'event_id' => [ - 'title' => ts('Event'), - 'default_weight' => '1', - 'default_order' => 'ASC', - ], - ], - 'group_bys' => [ - 'event_id' => ['title' => ts('Event')], - ], - ], - ]; - } - - /** - * @return array - */ - public function getMembershipColumns() { - return [ - 'civicrm_membership' => [ - 'dao' => 'CRM_Member_DAO_Membership', - 'grouping' => 'member-fields', - 'fields' => [ - 'membership_type_id' => [ - 'title' => ts('Membership Type'), - 'required' => TRUE, - 'alter_display' => 'alterMembershipTypeID', - ], - 'status_id' => [ - 'title' => ts('Membership Status'), - 'required' => TRUE, - 'alter_display' => 'alterMembershipStatusID', - ], - 'join_date' => NULL, - 'start_date' => [ - 'title' => ts('Current Cycle Start Date'), - ], - 'end_date' => [ - 'title' => ts('Current Membership Cycle End Date'), - ], - ], - 'group_bys' => [ - 'membership_type_id' => [ - 'title' => ts('Membership Type'), - ], - ], - 'filters' => [ - 'join_date' => [ - 'type' => CRM_Utils_Type::T_DATE, - 'operatorType' => CRM_Report_Form::OP_DATE, - ], - ], - ], - ]; - } - - /** - * @return array - */ - public function getMembershipTypeColumns() { - return [ - 'civicrm_membership_type' => [ - 'dao' => 'CRM_Member_DAO_MembershipType', - 'grouping' => 'member-fields', - 'filters' => [ - 'gid' => [ - 'name' => 'id', - 'title' => ts('Membership Types'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'type' => CRM_Utils_Type::T_INT + CRM_Utils_Type::T_ENUM, - 'options' => CRM_Member_PseudoConstant::membershipType(), - ], - ], - ], - ]; - } - - /** - * @return array - */ - public function getEventColumns() { - return [ - 'civicrm_event' => [ - 'dao' => 'CRM_Event_DAO_Event', - 'fields' => [ - 'id' => [ - 'no_display' => TRUE, - 'required' => TRUE, - ], - 'title' => [ - 'title' => ts('Event Title'), - 'required' => TRUE, - ], - 'event_type_id' => [ - 'title' => ts('Event Type'), - 'required' => TRUE, - 'alter_display' => 'alterEventType', - ], - 'fee_label' => ['title' => ts('Fee Label')], - 'event_start_date' => [ - 'title' => ts('Event Start Date'), - ], - 'event_end_date' => ['title' => ts('Event End Date')], - 'max_participants' => [ - 'title' => ts('Capacity'), - 'type' => CRM_Utils_Type::T_INT, - ], - ], - 'grouping' => 'event-fields', - 'filters' => [ - 'event_type_id' => [ - 'name' => 'event_type_id', - 'title' => ts('Event Type'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Core_OptionGroup::values('event_type'), - ], - 'event_title' => [ - 'name' => 'title', - 'title' => ts('Event Title'), - 'operatorType' => CRM_Report_Form::OP_STRING, - ], - ], - 'order_bys' => [ - 'event_type_id' => [ - 'title' => ts('Event Type'), - 'default_weight' => '2', - 'default_order' => 'ASC', - ], - ], - 'group_bys' => [ - 'event_type_id' => [ - 'title' => ts('Event Type'), - ], - ], - ], - ]; - } - - /** - * @return array - */ - public function getContributionColumns() { - return [ - 'civicrm_contribution' => [ - 'dao' => 'CRM_Contribute_DAO_Contribution', - 'fields' => [ - 'contribution_id' => [ - 'name' => 'id', - ], - 'financial_type_id' => [ - 'title' => ts('Financial Type'), - 'default' => TRUE, - 'alter_display' => 'alterContributionType', - ], - 'payment_instrument_id' => [ - 'title' => ts('Payment Method'), - 'alter_display' => 'alterPaymentType', - ], - 'source' => ['title' => ts('Contribution Source')], - 'trxn_id' => NULL, - 'receive_date' => ['default' => TRUE], - 'receipt_date' => NULL, - 'fee_amount' => NULL, - 'net_amount' => NULL, - 'total_amount' => [ - 'title' => ts('Amount'), - 'statistics' => ['sum' => ts('Total Amount')], - 'type' => CRM_Utils_Type::T_MONEY, - ], - ], - 'filters' => [ - 'receive_date' => ['operatorType' => CRM_Report_Form::OP_DATE], - 'financial_type_id' => [ - 'title' => ts('Financial Type'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Contribute_PseudoConstant::financialType(), - ], - 'payment_instrument_id' => [ - 'title' => ts('Payment Type'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Contribute_PseudoConstant::paymentInstrument(), - ], - 'contribution_status_id' => [ - 'title' => ts('Contribution Status'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Contribute_PseudoConstant::contributionStatus(), - ], - 'total_amount' => ['title' => ts('Contribution Amount')], - ], - 'order_bys' => [ - 'payment_instrument_id' => [ - 'title' => ts('Payment Method'), - ], - 'financial_type_id' => [ - 'title' => ts('Financial Type'), - ], - ], - 'group_bys' => [ - 'financial_type_id' => ['title' => ts('Financial Type')], - 'payment_instrument_id' => ['title' => ts('Payment Method')], - 'contribution_id' => [ - 'title' => ts('Individual Contribution'), - 'name' => 'id', - ], - 'source' => ['title' => ts('Contribution Source')], - ], - 'grouping' => 'contribution-fields', - ], - ]; - } - - /** - * @return array - */ - public function getContactColumns() { - return [ - 'civicrm_contact' => [ - 'dao' => 'CRM_Contact_DAO_Contact', - 'fields' => [ - 'display_name' => [ - 'title' => ts('Contact Name'), - ], - 'id' => [ - 'title' => ts('Contact ID'), - 'alter_display' => 'alterContactID', - ], - 'first_name' => [ - 'title' => ts('First Name'), - ], - 'last_name' => [ - 'title' => ts('Last Name'), - ], - 'nick_name' => [ - 'title' => ts('Nickname'), - 'alter_display' => 'alterNickname', - ], - ], - 'filters' => [ - 'id' => [ - 'title' => ts('Contact ID'), - ], - 'sort_name' => [ - 'title' => ts('Contact Name'), - ], - ], - 'grouping' => 'contact-fields', - 'order_bys' => [ - 'sort_name' => [ - 'title' => ts('Last Name, First Name'), - 'default' => '1', - 'default_weight' => '0', - 'default_order' => 'ASC', - ], - ], - ], - ]; - } - - /** - * @return array - */ - public function getCaseColumns() { - return [ - 'civicrm_case' => [ - 'dao' => 'CRM_Case_DAO_Case', - 'fields' => [ - 'id' => [ - 'title' => ts('Case ID'), - 'required' => FALSE, - ], - 'subject' => [ - 'title' => ts('Case Subject'), - 'default' => TRUE, - ], - 'status_id' => [ - 'title' => ts('Status'), - 'default' => TRUE, - ], - 'case_type_id' => [ - 'title' => ts('Case Type'), - 'default' => TRUE, - ], - 'case_start_date' => [ - 'title' => ts('Case Start Date'), - 'name' => 'start_date', - 'default' => TRUE, - ], - 'case_end_date' => [ - 'title' => ts('Case End Date'), - 'name' => 'end_date', - 'default' => TRUE, - ], - 'case_duration' => [ - 'name' => 'duration', - 'title' => ts('Duration (Days)'), - 'default' => FALSE, - ], - 'case_is_deleted' => [ - 'name' => 'is_deleted', - 'title' => ts('Case Deleted?'), - 'default' => FALSE, - 'type' => CRM_Utils_Type::T_INT, - ], - ], - 'filters' => [ - 'case_start_date' => [ - 'title' => ts('Case Start Date'), - 'operatorType' => CRM_Report_Form::OP_DATE, - 'type' => CRM_Utils_Type::T_DATE, - 'name' => 'start_date', - ], - 'case_end_date' => [ - 'title' => ts('Case End Date'), - 'operatorType' => CRM_Report_Form::OP_DATE, - 'type' => CRM_Utils_Type::T_DATE, - 'name' => 'end_date', - ], - 'case_type_id' => [ - 'title' => ts('Case Type'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => $this->case_types, - ], - 'case_status_id' => [ - 'title' => ts('Case Status'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => $this->case_statuses, - 'name' => 'status_id', - ], - 'case_is_deleted' => [ - 'title' => ts('Case Deleted?'), - 'type' => CRM_Report_Form::OP_INT, - 'operatorType' => CRM_Report_Form::OP_SELECT, - 'options' => $this->deleted_labels, - 'default' => 0, - 'name' => 'is_deleted', - ], - ], - ], - ]; - } - - /** - * Get address columns to add to array. - * - * @param array $options - * Options for the report. - * - prefix prefix to add (e.g. 'honor' when getting address details for honor contact - * - prefix_label optional prefix lable eg. "Honoree " for front end - * - group_by enable these fields for group by - default false - * - order_by enable these fields for order by - * - filters enable these fields for filtering - * - defaults - (is this working?) values to pre-populate - * - * @return array - * address columns definition - */ - public function getAddressColumns($options = []) { - $defaultOptions = [ - 'prefix' => '', - 'prefix_label' => '', - 'group_by' => FALSE, - 'order_by' => TRUE, - 'filters' => TRUE, - 'defaults' => [ - 'country_id' => TRUE, - ], - ]; - - $options = array_merge($defaultOptions, $options); - - $addressFields = [ - $options['prefix'] . 'civicrm_address' => [ - 'dao' => 'CRM_Core_DAO_Address', - 'name' => 'civicrm_address', - 'alias' => $options['prefix'] . 'civicrm_address', - 'fields' => [ - $options['prefix'] . 'name' => [ - 'title' => ts($options['prefix_label'] . 'Address Name'), - 'default' => CRM_Utils_Array::value('name', $options['defaults'], FALSE), - 'name' => 'name', - ], - $options['prefix'] . 'street_address' => [ - 'title' => ts($options['prefix_label'] . 'Street Address'), - 'default' => CRM_Utils_Array::value('street_address', $options['defaults'], FALSE), - 'name' => 'street_address', - ], - $options['prefix'] . 'supplemental_address_1' => [ - 'title' => ts($options['prefix_label'] . - 'Supplementary Address Field 1'), - 'default' => CRM_Utils_Array::value('supplemental_address_1', $options['defaults'], FALSE), - 'name' => 'supplemental_address_1', - ], - $options['prefix'] . 'supplemental_address_2' => [ - 'title' => ts($options['prefix_label'] . - 'Supplementary Address Field 2'), - 'default' => CRM_Utils_Array::value('supplemental_address_2', $options['defaults'], FALSE), - 'name' => 'supplemental_address_2', - ], - $options['prefix'] . 'supplemental_address_3' => [ - 'title' => ts($options['prefix_label'] . - 'Supplementary Address Field 3'), - 'default' => CRM_Utils_Array::value('supplemental_address_3', $options['defaults'], FALSE), - 'name' => 'supplemental_address_3', - ], - $options['prefix'] . 'street_number' => [ - 'name' => 'street_number', - 'title' => ts($options['prefix_label'] . 'Street Number'), - 'type' => 1, - 'default' => CRM_Utils_Array::value('street_number', $options['defaults'], FALSE), - ], - $options['prefix'] . 'street_name' => [ - 'name' => 'street_name', - 'title' => ts($options['prefix_label'] . 'Street Name'), - 'type' => 1, - 'default' => CRM_Utils_Array::value('street_name', $options['defaults'], FALSE), - ], - $options['prefix'] . 'street_unit' => [ - 'name' => 'street_unit', - 'title' => ts($options['prefix_label'] . 'Street Unit'), - 'type' => 1, - 'default' => CRM_Utils_Array::value('street_unit', $options['defaults'], FALSE), - ], - $options['prefix'] . 'city' => [ - 'title' => ts($options['prefix_label'] . 'City'), - 'default' => CRM_Utils_Array::value('city', $options['defaults'], FALSE), - 'name' => 'city', - ], - $options['prefix'] . 'postal_code' => [ - 'title' => ts($options['prefix_label'] . 'Postal Code'), - 'default' => CRM_Utils_Array::value('postal_code', $options['defaults'], FALSE), - 'name' => 'postal_code', - ], - $options['prefix'] . 'county_id' => [ - 'title' => ts($options['prefix_label'] . 'County'), - 'default' => CRM_Utils_Array::value('county_id', $options['defaults'], FALSE), - 'alter_display' => 'alterCountyID', - 'name' => 'county_id', - ], - $options['prefix'] . 'state_province_id' => [ - 'title' => ts($options['prefix_label'] . 'State/Province'), - 'default' => CRM_Utils_Array::value('state_province_id', $options['defaults'], FALSE), - 'alter_display' => 'alterStateProvinceID', - 'name' => 'state_province_id', - ], - $options['prefix'] . 'country_id' => [ - 'title' => ts($options['prefix_label'] . 'Country'), - 'default' => CRM_Utils_Array::value('country_id', $options['defaults'], FALSE), - 'alter_display' => 'alterCountryID', - 'name' => 'country_id', - ], - ], - 'grouping' => 'location-fields', - ], - ]; - - if ($options['filters']) { - $addressFields[$options['prefix'] . 'civicrm_address']['filters'] = [ - $options['prefix'] . 'street_number' => [ - 'title' => ts($options['prefix_label'] . 'Street Number'), - 'type' => 1, - 'name' => 'street_number', - ], - $options['prefix'] . 'street_name' => [ - 'title' => ts($options['prefix_label'] . 'Street Name'), - 'name' => $options['prefix'] . 'street_name', - 'operator' => 'like', - ], - $options['prefix'] . 'postal_code' => [ - 'title' => ts($options['prefix_label'] . 'Postal Code'), - 'type' => 1, - 'name' => 'postal_code', - ], - $options['prefix'] . 'city' => [ - 'title' => ts($options['prefix_label'] . 'City'), - 'operator' => 'like', - 'name' => 'city', - ], - $options['prefix'] . 'county_id' => [ - 'name' => 'county_id', - 'title' => ts($options['prefix_label'] . 'County'), - 'type' => CRM_Utils_Type::T_INT, - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Core_PseudoConstant::county(), - ], - $options['prefix'] . 'state_province_id' => [ - 'name' => 'state_province_id', - 'title' => ts($options['prefix_label'] . 'State/Province'), - 'type' => CRM_Utils_Type::T_INT, - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Core_PseudoConstant::stateProvince(), - ], - $options['prefix'] . 'country_id' => [ - 'name' => 'country_id', - 'title' => ts($options['prefix_label'] . 'Country'), - 'type' => CRM_Utils_Type::T_INT, - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Core_PseudoConstant::country(), - ], - ]; - } - - if ($options['order_by']) { - $addressFields[$options['prefix'] . - 'civicrm_address']['order_bys'] = [ - $options['prefix'] . 'street_name' => [ - 'title' => ts($options['prefix_label'] . 'Street Name'), - 'name' => 'street_name', - ], - $options['prefix'] . 'street_number' => [ - 'title' => ts($options['prefix_label'] . 'Odd / Even Street Number'), - 'name' => 'street_number', - ], - $options['prefix'] . 'street_address' => [ - 'title' => ts($options['prefix_label'] . 'Street Address'), - 'name' => 'street_address', - ], - $options['prefix'] . 'city' => [ - 'title' => ts($options['prefix_label'] . 'City'), - 'name' => 'city', - ], - $options['prefix'] . 'postal_code' => [ - 'title' => ts($options['prefix_label'] . 'Post Code'), - 'name' => 'postal_code', - ], - ]; - } - - if ($options['group_by']) { - $addressFields['civicrm_address']['group_bys'] = [ - $options['prefix'] . 'street_address' => [ - 'title' => ts($options['prefix_label'] . 'Street Address'), - 'name' => 'street_address', - ], - $options['prefix'] . 'city' => [ - 'title' => ts($options['prefix_label'] . 'City'), - 'name' => 'city', - ], - $options['prefix'] . 'postal_code' => [ - 'title' => ts($options['prefix_label'] . 'Post Code'), - 'name' => 'postal_code', - ], - $options['prefix'] . 'state_province_id' => [ - 'title' => ts($options['prefix_label'] . 'State/Province'), - 'name' => 'state_province_id', - ], - $options['prefix'] . 'country_id' => [ - 'title' => ts($options['prefix_label'] . 'Country'), - 'name' => 'country_id', - ], - $options['prefix'] . 'county_id' => [ - 'title' => ts($options['prefix_label'] . 'County'), - 'name' => 'county_id', - ], - ]; - } - return $addressFields; - } - - /** - * Get Information about advertised Joins. - * - * @return array - */ - public function getAvailableJoins() { - return [ - 'priceFieldValue_from_lineItem' => [ - 'leftTable' => 'civicrm_line_item', - 'rightTable' => 'civicrm_price_field_value', - 'callback' => 'joinPriceFieldValueFromLineItem', - ], - 'priceField_from_lineItem' => [ - 'leftTable' => 'civicrm_line_item', - 'rightTable' => 'civicrm_price_field', - 'callback' => 'joinPriceFieldFromLineItem', - ], - 'participant_from_lineItem' => [ - 'leftTable' => 'civicrm_line_item', - 'rightTable' => 'civicrm_participant', - 'callback' => 'joinParticipantFromLineItem', - ], - 'contribution_from_lineItem' => [ - 'leftTable' => 'civicrm_line_item', - 'rightTable' => 'civicrm_contribution', - 'callback' => 'joinContributionFromLineItem', - ], - 'membership_from_lineItem' => [ - 'leftTable' => 'civicrm_line_item', - 'rightTable' => 'civicrm_membership', - 'callback' => 'joinMembershipFromLineItem', - ], - 'contribution_from_participant' => [ - 'leftTable' => 'civicrm_participant', - 'rightTable' => 'civicrm_contribution', - 'callback' => 'joinContributionFromParticipant', - ], - 'contribution_from_membership' => [ - 'leftTable' => 'civicrm_membership', - 'rightTable' => 'civicrm_contribution', - 'callback' => 'joinContributionFromMembership', - ], - 'membership_from_contribution' => [ - 'leftTable' => 'civicrm_contribution', - 'rightTable' => 'civicrm_membership', - 'callback' => 'joinMembershipFromContribution', - ], - 'membershipType_from_membership' => [ - 'leftTable' => 'civicrm_membership', - 'rightTable' => 'civicrm_membership_type', - 'callback' => 'joinMembershipTypeFromMembership', - ], - 'lineItem_from_contribution' => [ - 'leftTable' => 'civicrm_contribution', - 'rightTable' => 'civicrm_line_item', - 'callback' => 'joinLineItemFromContribution', - ], - 'lineItem_from_membership' => [ - 'leftTable' => 'civicrm_membership', - 'rightTable' => 'civicrm_line_item', - 'callback' => 'joinLineItemFromMembership', - ], - 'contact_from_participant' => [ - 'leftTable' => 'civicrm_participant', - 'rightTable' => 'civicrm_contact', - 'callback' => 'joinContactFromParticipant', - ], - 'contact_from_membership' => [ - 'leftTable' => 'civicrm_membership', - 'rightTable' => 'civicrm_contact', - 'callback' => 'joinContactFromMembership', - ], - 'contact_from_contribution' => [ - 'leftTable' => 'civicrm_contribution', - 'rightTable' => 'civicrm_contact', - 'callback' => 'joinContactFromContribution', - ], - 'event_from_participant' => [ - 'leftTable' => 'civicrm_participant', - 'rightTable' => 'civicrm_event', - 'callback' => 'joinEventFromParticipant', - ], - 'address_from_contact' => [ - 'leftTable' => 'civicrm_contact', - 'rightTable' => 'civicrm_address', - 'callback' => 'joinAddressFromContact', - ], - ]; - } - - /** - * Add join from contact table to address. Prefix will be added to both tables - * as it's assumed you are using it to get address of a secondary contact - * - * @param string $prefix - */ - public function joinAddressFromContact($prefix = '') { - $this->_from .= " LEFT JOIN civicrm_address {$this->_aliases[$prefix . - 'civicrm_address']} - ON {$this->_aliases[$prefix . - 'civicrm_address']}.contact_id = {$this->_aliases[$prefix . - 'civicrm_contact']}.id"; - } - - public function joinPriceFieldValueFromLineItem() { - $this->_from .= " LEFT JOIN civicrm_price_field_value {$this->_aliases['civicrm_price_field_value']} - ON {$this->_aliases['civicrm_line_item']}.price_field_value_id = {$this->_aliases['civicrm_price_field_value']}.id"; - } - - public function joinPriceFieldFromLineItem() { - $this->_from .= " - LEFT JOIN civicrm_price_field {$this->_aliases['civicrm_price_field']} - ON {$this->_aliases['civicrm_line_item']}.price_field_id = {$this->_aliases['civicrm_price_field']}.id - "; - } - - /** - * Define join from line item table to participant table. - */ - public function joinParticipantFromLineItem() { - $this->_from .= " LEFT JOIN civicrm_participant {$this->_aliases['civicrm_participant']} - ON ( {$this->_aliases['civicrm_line_item']}.entity_id = {$this->_aliases['civicrm_participant']}.id - AND {$this->_aliases['civicrm_line_item']}.entity_table = 'civicrm_participant') - "; - } - - /** - * Define join from line item table to Membership table. Seems to be still via contribution - * as the entity. Have made 'inner' to restrict does that make sense? - */ - public function joinMembershipFromLineItem() { - $this->_from .= " INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} - ON ( {$this->_aliases['civicrm_line_item']}.entity_id = {$this->_aliases['civicrm_contribution']}.id - AND {$this->_aliases['civicrm_line_item']}.entity_table = 'civicrm_contribution') - LEFT JOIN civicrm_membership_payment pp - ON {$this->_aliases['civicrm_contribution']}.id = pp.contribution_id - LEFT JOIN civicrm_membership {$this->_aliases['civicrm_membership']} - ON pp.membership_id = {$this->_aliases['civicrm_membership']}.id - "; - } - - /** - * Define join from Participant to Contribution table. - */ - public function joinContributionFromParticipant() { - $this->_from .= " LEFT JOIN civicrm_participant_payment pp - ON {$this->_aliases['civicrm_participant']}.id = pp.participant_id - LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} - ON pp.contribution_id = {$this->_aliases['civicrm_contribution']}.id - "; - } - - /** - * Define join from Membership to Contribution table. - */ - public function joinContributionFromMembership() { - $this->_from .= " LEFT JOIN civicrm_membership_payment pp - ON {$this->_aliases['civicrm_membership']}.id = pp.membership_id - LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} - ON pp.contribution_id = {$this->_aliases['civicrm_contribution']}.id - "; - } - - public function joinParticipantFromContribution() { - $this->_from .= " LEFT JOIN civicrm_participant_payment pp - ON {$this->_aliases['civicrm_contribution']}.id = pp.contribution_id - LEFT JOIN civicrm_participant {$this->_aliases['civicrm_participant']} - ON pp.participant_id = {$this->_aliases['civicrm_participant']}.id"; - } - - public function joinMembershipFromContribution() { - $this->_from .= " - LEFT JOIN civicrm_membership_payment pp - ON {$this->_aliases['civicrm_contribution']}.id = pp.contribution_id - LEFT JOIN civicrm_membership {$this->_aliases['civicrm_membership']} - ON pp.membership_id = {$this->_aliases['civicrm_membership']}.id"; - } - - public function joinMembershipTypeFromMembership() { - $this->_from .= " - LEFT JOIN civicrm_membership_type {$this->_aliases['civicrm_membership_type']} - ON {$this->_aliases['civicrm_membership']}.membership_type_id = {$this->_aliases['civicrm_membership_type']}.id - "; - } - - public function joinContributionFromLineItem() { - - // this can be stored as a temp table & indexed for more speed. Not done at this state. - // another option is to cache it but I haven't tried to put that code in yet (have used it before for one hour caching - $this->_from .= " LEFT JOIN (SELECT line_item_civireport.id as lid, contribution_civireport_direct.* -FROM civicrm_line_item line_item_civireport -LEFT JOIN civicrm_contribution contribution_civireport_direct - ON (line_item_civireport.line_total > 0 AND line_item_civireport.entity_id = contribution_civireport_direct.id AND line_item_civireport.entity_table = 'civicrm_contribution') - - -WHERE contribution_civireport_direct.id IS NOT NULL - -UNION SELECT line_item_civireport.id as lid, contribution_civireport.* - FROM civicrm_line_item line_item_civireport - LEFT JOIN civicrm_participant participant_civireport - ON (line_item_civireport.line_total > 0 AND line_item_civireport.entity_id = participant_civireport.id AND line_item_civireport.entity_table = 'civicrm_participant') - -LEFT JOIN civicrm_participant_payment pp - ON participant_civireport.id = pp.participant_id - LEFT JOIN civicrm_contribution contribution_civireport - ON pp.contribution_id = contribution_civireport.id - -UNION SELECT line_item_civireport.id as lid,contribution_civireport.* - FROM civicrm_line_item line_item_civireport - LEFT JOIN civicrm_membership membership_civireport - ON (line_item_civireport.line_total > 0 AND line_item_civireport.entity_id =membership_civireport.id AND line_item_civireport.entity_table = 'civicrm_membership') - -LEFT JOIN civicrm_membership_payment pp - ON membership_civireport.id = pp.membership_id - LEFT JOIN civicrm_contribution contribution_civireport - ON pp.contribution_id = contribution_civireport.id -) as {$this->_aliases['civicrm_contribution']} - ON {$this->_aliases['civicrm_contribution']}.lid = {$this->_aliases['civicrm_line_item']}.id - "; - } - - public function joinLineItemFromContribution() { - - // this can be stored as a temp table & indexed for more speed. Not done at this stage. - // another option is to cache it but I haven't tried to put that code in yet (have used it before for one hour caching - $this->_from .= " - LEFT JOIN ( -SELECT contribution_civireport_direct.id AS contid, line_item_civireport.* -FROM civicrm_contribution contribution_civireport_direct -LEFT JOIN civicrm_line_item line_item_civireport ON (line_item_civireport.line_total > 0 AND line_item_civireport.entity_id = contribution_civireport_direct.id AND line_item_civireport.entity_table = 'civicrm_contribution') -WHERE line_item_civireport.id IS NOT NULL - -UNION -SELECT contribution_civireport_direct.id AS contid, line_item_civireport.* -FROM civicrm_contribution contribution_civireport_direct -LEFT JOIN civicrm_participant_payment pp ON contribution_civireport_direct.id = pp.contribution_id -LEFT JOIN civicrm_participant p ON pp.participant_id = p.id -LEFT JOIN civicrm_line_item line_item_civireport ON (line_item_civireport.line_total > 0 AND line_item_civireport.entity_id = p.id AND line_item_civireport.entity_table = 'civicrm_participant') -WHERE line_item_civireport.id IS NOT NULL - -UNION - -SELECT contribution_civireport_direct.id AS contid, line_item_civireport.* -FROM civicrm_contribution contribution_civireport_direct -LEFT JOIN civicrm_membership_payment pp ON contribution_civireport_direct.id = pp.contribution_id -LEFT JOIN civicrm_membership p ON pp.membership_id = p.id -LEFT JOIN civicrm_line_item line_item_civireport ON (line_item_civireport.line_total > 0 AND line_item_civireport.entity_id = p.id AND line_item_civireport.entity_table = 'civicrm_membership') -WHERE line_item_civireport.id IS NOT NULL -) as {$this->_aliases['civicrm_line_item']} - ON {$this->_aliases['civicrm_line_item']}.contid = {$this->_aliases['civicrm_contribution']}.id - - - "; - } - - public function joinLineItemFromMembership() { - - // this can be stored as a temp table & indexed for more speed. Not done at this stage. - // another option is to cache it but I haven't tried to put that code in yet (have used it before for one hour caching - $this->_from .= " - LEFT JOIN ( -SELECT contribution_civireport_direct.id AS contid, line_item_civireport.* -FROM civicrm_contribution contribution_civireport_direct -LEFT JOIN civicrm_line_item line_item_civireport -ON (line_item_civireport.line_total > 0 AND line_item_civireport.entity_id = contribution_civireport_direct.id AND line_item_civireport.entity_table = 'civicrm_contribution') - -WHERE line_item_civireport.id IS NOT NULL - -UNION - -SELECT contribution_civireport_direct.id AS contid, line_item_civireport.* -FROM civicrm_contribution contribution_civireport_direct -LEFT JOIN civicrm_membership_payment pp ON contribution_civireport_direct.id = pp.contribution_id -LEFT JOIN civicrm_membership p ON pp.membership_id = p.id -LEFT JOIN civicrm_line_item line_item_civireport ON (line_item_civireport.line_total > 0 AND line_item_civireport.entity_id = p.id AND line_item_civireport.entity_table = 'civicrm_membership') -WHERE line_item_civireport.id IS NOT NULL -) as {$this->_aliases['civicrm_line_item']} - ON {$this->_aliases['civicrm_line_item']}.contid = {$this->_aliases['civicrm_contribution']}.id - "; - } - - public function joinContactFromParticipant() { - $this->_from .= " LEFT JOIN civicrm_contact {$this->_aliases['civicrm_contact']} - ON {$this->_aliases['civicrm_participant']}.contact_id = {$this->_aliases['civicrm_contact']}.id"; - } - - public function joinContactFromMembership() { - $this->_from .= " LEFT JOIN civicrm_contact {$this->_aliases['civicrm_contact']} - ON {$this->_aliases['civicrm_membership']}.contact_id = {$this->_aliases['civicrm_contact']}.id"; - } - - public function joinContactFromContribution() { - $this->_from .= " LEFT JOIN civicrm_contact {$this->_aliases['civicrm_contact']} - ON {$this->_aliases['civicrm_contribution']}.contact_id = {$this->_aliases['civicrm_contact']}.id"; - } - - public function joinEventFromParticipant() { - $this->_from .= " LEFT JOIN civicrm_event {$this->_aliases['civicrm_event']} - ON ({$this->_aliases['civicrm_event']}.id = {$this->_aliases['civicrm_participant']}.event_id ) AND - ({$this->_aliases['civicrm_event']}.is_template IS NULL OR - {$this->_aliases['civicrm_event']}.is_template = 0)"; - } - - /** - * Retrieve text for financial type from pseudoconstant. - * - * @param $value - * @param array $row - * - * @return string - */ - public function alterNickName($value, &$row) { - if (empty($row['civicrm_contact_id'])) { - return NULL; - } - $contactID = $row['civicrm_contact_id']; - return "
- - " . $value . "
"; - } - - /** - * Retrieve text for contribution type from pseudoconstant. - * - * @param $value - * @param array $row - * - * @return array|string - */ - public function alterContributionType($value, &$row) { - return is_string(CRM_Contribute_PseudoConstant::financialType($value, FALSE)) ? CRM_Contribute_PseudoConstant::financialType($value, FALSE) : ''; - } - - /** - * Retrieve text for contribution status from pseudoconstant. - * - * @param $value - * @param array $row - * - * @return array - */ - public function alterContributionStatus($value, &$row) { - return CRM_Contribute_PseudoConstant::contributionStatus($value); - } - - /** - * Retrieve text for payment instrument from pseudoconstant. - * - * @param $value - * @param array $row - * - * @return array - */ - public function alterEventType($value, &$row) { - return CRM_Event_PseudoConstant::eventType($value); - } - - /** - * @param $value - * @param array $row - * - * @return array|string - */ - public function alterEventID($value, &$row) { - return is_string(CRM_Event_PseudoConstant::event($value, FALSE)) ? CRM_Event_PseudoConstant::event($value, FALSE) : ''; - } - - /** - * @param $value - * @param array $row - * - * @return array|string - */ - public function alterMembershipTypeID($value, &$row) { - return is_string(CRM_Member_PseudoConstant::membershipType($value, FALSE)) ? CRM_Member_PseudoConstant::membershipType($value, FALSE) : ''; - } - - /** - * @param $value - * @param array $row - * - * @return array|string - */ - public function alterMembershipStatusID($value, &$row) { - return is_string(CRM_Member_PseudoConstant::membershipStatus($value, FALSE)) ? CRM_Member_PseudoConstant::membershipStatus($value, FALSE) : ''; - } - - /** - * @param $value - * @param array $row - * @param $selectedfield - * @param string $criteriaFieldName - * - * @return array - */ - public function alterCountryID($value, &$row, $selectedfield, $criteriaFieldName) { - $url = CRM_Utils_System::url(CRM_Utils_System::currentPath(), "reset=1&force=1&{$criteriaFieldName}_op=in&{$criteriaFieldName}_value={$value}", $this->_absoluteUrl); - $row[$selectedfield . '_link'] = $url; - $row[$selectedfield . - '_hover'] = ts("%1 for this country.", [1 => $value]); - $countries = CRM_Core_PseudoConstant::country($value, FALSE); - if (!is_array($countries)) { - return $countries; - } - } - - /** - * @param $value - * @param array $row - * @param $selectedfield - * @param string $criteriaFieldName - * - * @return array - */ - public function alterCountyID($value, &$row, $selectedfield, $criteriaFieldName) { - $url = CRM_Utils_System::url(CRM_Utils_System::currentPath(), "reset=1&force=1&{$criteriaFieldName}_op=in&{$criteriaFieldName}_value={$value}", $this->_absoluteUrl); - $row[$selectedfield . '_link'] = $url; - $row[$selectedfield . - '_hover'] = ts("%1 for this county.", [1 => $value]); - $counties = CRM_Core_PseudoConstant::county($value, FALSE); - if (!is_array($counties)) { - return $counties; - } - } - - /** - * @param $value - * @param array $row - * @param $selectedfield - * @param string $criteriaFieldName - * - * @return array - */ - public function alterStateProvinceID($value, &$row, $selectedfield, $criteriaFieldName) { - $url = CRM_Utils_System::url(CRM_Utils_System::currentPath(), "reset=1&force=1&{$criteriaFieldName}_op=in&{$criteriaFieldName}_value={$value}", $this->_absoluteUrl); - $row[$selectedfield . '_link'] = $url; - $row[$selectedfield . - '_hover'] = ts("%1 for this state.", [1 => $value]); - - $states = CRM_Core_PseudoConstant::stateProvince($value, FALSE); - if (!is_array($states)) { - return $states; - } - } - - /** - * @param $value - * @param array $row - * @param string $fieldname - * - * @return mixed - */ - public function alterContactID($value, &$row, $fieldname) { - $row[$fieldname . '_link'] = CRM_Utils_System::url("civicrm/contact/view", - 'reset=1&cid=' . $value, $this->_absoluteUrl); - return $value; - } - - /** - * @param $value - * - * @return array - */ - public function alterParticipantStatus($value) { - if (empty($value)) { - return NULL; - } - return CRM_Event_PseudoConstant::participantStatus($value, FALSE, 'label'); - } - - /** - * @param $value - * - * @return string|void - */ - public function alterParticipantRole($value) { - if (empty($value)) { - return NULL; - } - $roles = explode(CRM_Core_DAO::VALUE_SEPARATOR, $value); - $value = []; - foreach ($roles as $role) { - $value[$role] = CRM_Event_PseudoConstant::participantRole($role, FALSE); - } - return implode(', ', $value); - } - - /** - * @param $value - * - * @return mixed - */ - public function alterPaymentType($value) { - $paymentInstruments = CRM_Contribute_PseudoConstant::paymentInstrument(); - return $paymentInstruments[$value]; - } - -}