Пример #1
0
 public function select()
 {
     $this->_columnHeaders = array();
     parent::select();
     //total_amount was affected by sum as it is considered as one of the stat field
     //so it is been replaced with correct alias, CRM-13833
     $this->_select = str_replace("sum({$this->_aliases['civicrm_contribution']}.total_amount)", "{$this->_aliases['civicrm_contribution']}.total_amount", $this->_select);
 }
Пример #2
0
 function select($recordType = NULL)
 {
     if (!array_key_exists("contact_{$recordType}", $this->_params['fields']) && $recordType != 'final') {
         $this->_nonDisplayFields[] = "civicrm_contact_contact_{$recordType}";
         $this->_params['fields']["contact_{$recordType}"] = 1;
     }
     parent::select();
     if ($recordType == 'final' && !empty($this->_nonDisplayFields)) {
         foreach ($this->_nonDisplayFields as $fieldName) {
             unset($this->_columnHeaders[$fieldName]);
         }
     }
     if (empty($this->_selectAliasesTotal)) {
         $this->_selectAliasesTotal = $this->_selectAliases;
     }
     $removeKeys = array();
     if ($recordType == 'target') {
         foreach ($this->_selectClauses as $key => $clause) {
             if (strstr($clause, 'civicrm_contact_assignee.') || strstr($clause, 'civicrm_contact_source.') || strstr($clause, 'civicrm_email_assignee.') || strstr($clause, 'civicrm_email_source.')) {
                 $removeKeys[] = $key;
                 unset($this->_selectClauses[$key]);
             }
         }
     } else {
         if ($recordType == 'assignee') {
             foreach ($this->_selectClauses as $key => $clause) {
                 if (strstr($clause, 'civicrm_contact_target.') || strstr($clause, 'civicrm_contact_source.') || strstr($clause, 'civicrm_email_target.') || strstr($clause, 'civicrm_email_source.')) {
                     $removeKeys[] = $key;
                     unset($this->_selectClauses[$key]);
                 }
             }
         } else {
             if ($recordType == 'source') {
                 foreach ($this->_selectClauses as $key => $clause) {
                     if (strstr($clause, 'civicrm_contact_target.') || strstr($clause, 'civicrm_contact_assignee.') || strstr($clause, 'civicrm_email_target.') || strstr($clause, 'civicrm_email_assignee.')) {
                         $removeKeys[] = $key;
                         unset($this->_selectClauses[$key]);
                     }
                 }
             } else {
                 if ($recordType == 'final') {
                     $this->_selectClauses = $this->_selectAliasesTotal;
                     foreach ($this->_selectClauses as $key => $clause) {
                         if (strstr($clause, 'civicrm_contact_contact_target') || strstr($clause, 'civicrm_contact_contact_assignee') || strstr($clause, 'civicrm_contact_contact_source')) {
                             $this->_selectClauses[$key] = "GROUP_CONCAT({$clause} SEPARATOR ';') as {$clause}";
                         }
                     }
                 }
             }
         }
     }
     if ($recordType) {
         foreach ($removeKeys as $key) {
             unset($this->_selectAliases[$key]);
         }
         $this->_select = "SELECT " . implode(', ', $this->_selectClauses) . " ";
     }
 }
Пример #3
0
 public function select()
 {
     $select = $columns = array();
     foreach ($this->_columns as $tableName => $table) {
         if (array_key_exists('fields', $table)) {
             foreach ($table['fields'] as $fieldName => $field) {
                 if (!empty($field['required']) || !empty($this->_params['fields'][$fieldName])) {
                     if (in_array($fieldName, array('unsubscribe_id', 'optout_id', 'forward_id', 'reply_id'))) {
                         $select[] = "IF({$field['dbAlias']} IS NULL, 'No', 'Yes') as {$tableName}_{$fieldName}";
                         $this->_columnHeaders["{$tableName}_{$fieldName}"]['type'] = CRM_Utils_Array::value('type', $field);
                         $this->_columnHeaders["{$tableName}_{$fieldName}"]['no_display'] = CRM_Utils_Array::value('no_display', $field);
                         $this->_columnHeaders["{$tableName}_{$fieldName}"]['title'] = CRM_Utils_Array::value('title', $field);
                         unset($this->_columns[$tableName]['fields'][$fieldName]);
                         $columns[$tableName][$fieldName] = $field;
                     } elseif ($fieldName == 'delivery_id') {
                         $select[] = "IF(mailing_event_bounce_civireport.id IS NOT NULL, 'Bounced', IF(mailing_event_delivered_civireport.id IS NOT NULL, 'Successful', 'Unknown')) as {$tableName}_{$fieldName}";
                         $this->_columnHeaders["{$tableName}_{$fieldName}"]['type'] = CRM_Utils_Array::value('type', $field);
                         $this->_columnHeaders["{$tableName}_{$fieldName}"]['no_display'] = CRM_Utils_Array::value('no_display', $field);
                         $this->_columnHeaders["{$tableName}_{$fieldName}"]['title'] = CRM_Utils_Array::value('title', $field);
                         unset($this->_columns[$tableName]['fields'][$fieldName]);
                         $columns[$tableName][$fieldName] = $field;
                     }
                 }
             }
         }
     }
     parent::select();
     if (!empty($select)) {
         $this->_select .= ', ' . implode(', ', $select) . " ";
     }
     // put the fields that were unset, back in place
     foreach ($columns as $tableName => $table) {
         foreach ($table as $fieldName => $fields) {
             $this->_columns[$tableName]['fields'][$fieldName] = $fields;
         }
     }
     // simple sort
     ksort($this->_columnHeaders);
 }
Пример #4
0
 function select()
 {
     parent::select();
 }
Пример #5
0
 /**
  * @param null $recordType
  */
 public function select($recordType = NULL)
 {
     if (!array_key_exists("contact_{$recordType}", $this->_params['fields']) && $recordType != 'final') {
         $this->_nonDisplayFields[] = "civicrm_contact_contact_{$recordType}";
     }
     parent::select();
     if ($recordType == 'final' && !empty($this->_nonDisplayFields)) {
         foreach ($this->_nonDisplayFields as $fieldName) {
             unset($this->_columnHeaders[$fieldName]);
         }
     }
     if (empty($this->_selectAliasesTotal)) {
         $this->_selectAliasesTotal = $this->_selectAliases;
     }
     $removeKeys = array();
     if ($recordType == 'target') {
         foreach ($this->_selectClauses as $key => $clause) {
             if (strstr($clause, 'civicrm_contact_assignee.') || strstr($clause, 'civicrm_contact_source.') || strstr($clause, 'civicrm_email_assignee.') || strstr($clause, 'civicrm_email_source.')) {
                 $removeKeys[] = $key;
                 unset($this->_selectClauses[$key]);
             }
         }
     } elseif ($recordType == 'assignee') {
         foreach ($this->_selectClauses as $key => $clause) {
             if (strstr($clause, 'civicrm_contact_target.') || strstr($clause, 'civicrm_contact_source.') || strstr($clause, 'civicrm_email_target.') || strstr($clause, 'civicrm_email_source.')) {
                 $removeKeys[] = $key;
                 unset($this->_selectClauses[$key]);
             }
         }
     } elseif ($recordType == 'source') {
         foreach ($this->_selectClauses as $key => $clause) {
             if (strstr($clause, 'civicrm_contact_target.') || strstr($clause, 'civicrm_contact_assignee.') || strstr($clause, 'civicrm_email_target.') || strstr($clause, 'civicrm_email_assignee.')) {
                 $removeKeys[] = $key;
                 unset($this->_selectClauses[$key]);
             }
         }
     } elseif ($recordType == 'final') {
         $this->_selectClauses = $this->_selectAliasesTotal;
         foreach ($this->_selectClauses as $key => $clause) {
             if (strstr($clause, 'civicrm_contact_contact_target') || strstr($clause, 'civicrm_contact_contact_assignee') || strstr($clause, 'civicrm_contact_contact_source')) {
                 $this->_selectClauses[$key] = "GROUP_CONCAT({$clause} SEPARATOR ';') as {$clause}";
             }
         }
     }
     if ($recordType) {
         foreach ($removeKeys as $key) {
             unset($this->_selectAliases[$key]);
         }
         if ($recordType != 'final') {
             foreach ($this->_columns['civicrm_address']['order_bys'] as $fieldName => $field) {
                 $orderByFld = $this->_columns['civicrm_address']['order_bys'][$fieldName];
                 $fldInfo = $this->_columns['civicrm_address']['fields'][$fieldName];
                 $this->_selectAliases[] = $orderByFld['dbAlias'];
                 $this->_selectClauses[] = "{$fldInfo['dbAlias']} as {$orderByFld['dbAlias']}";
             }
             $this->_selectAliases[] = $this->_aliases['civicrm_option_value'];
             $this->_selectClauses[] = "{$this->_aliases['civicrm_option_value']}.label as {$this->_aliases['civicrm_option_value']}";
             $this->_selectAliases = array_unique($this->_selectAliases);
             $this->_selectClauses = array_unique($this->_selectClauses);
         }
         $this->_select = "SELECT " . implode(', ', $this->_selectClauses) . " ";
     }
 }
Пример #6
0
  /**
   * Select function.
   */
  function select() {
    if ($this->_preConstrain && !$this->_preConstrained) {
      $this->_select = " SELECT DISTINCT {$this->_aliases[$this->_baseTable]}.id";
      return;
    }

    if ($this->_customGroupAggregates) {
      return;
    }
    $this->storeGroupByArray();
    $this->unsetBaseTableStatsFieldsWhereNoGroupBy();
    foreach ($this->_params['fields'] as $fieldName => $field) {
      if (substr($fieldName, 0, 7) == 'custom_') {
        foreach ($this->_columns as $table => $specs) {
          if (CRM_Utils_Array::value($fieldName, $specs['fields'])) {
            if ($specs['fields'][$fieldName]['dataType'] == 'ContactReference') {
              $this->_columns[$table]['fields'][$fieldName . '_id'] = $specs['fields'][$fieldName];
              $this->_columns[$table]['fields'][$fieldName . '_id']['name'] = 'id';
              $this->_columns[$table]['fields'][$fieldName . '_id']['title'] .= ' Id';
              $this->_columns[$table]['fields'][$fieldName . '_id']['dbAlias'] = $this->_columns[$table]['fields'][$fieldName]['alias'] . '.id';
              $this->_columns[$table]['fields'][$fieldName . '_id']['dataType'] = 'Text';
              $this->_columns[$table]['fields'][$fieldName . '_id']['hidden'] = 'TRUE';
              $this->_params['fields'][$fieldName . '_id'] = 1;
            }
          }
        }
      }
    }
    parent::select();

    if (empty($this->_select) || strtolower(trim($this->_select)) == 'select') {
      $this->_select = " SELECT 1 ";
    }
  }
Пример #7
0
 function select()
 {
     $this->_columnHeaders = array();
     foreach ($this->_columns as $tableName => $table) {
         if (array_key_exists('fields', $table)) {
             foreach ($table['fields'] as $fieldName => $field) {
                 if (CRM_Utils_Array::value('required', $field) || CRM_Utils_Array::value($fieldName, $this->_params['fields'])) {
                     if ($tableName == 'civicrm_email_honor') {
                         $this->_emailFieldHonor = TRUE;
                     }
                     if ($tableName == 'civicrm_contact_honor') {
                         $this->_nameFieldHonor = TRUE;
                     }
                 }
             }
         }
     }
     parent::select();
 }
 /**
  * Build the select for the query.
  */
 public function select()
 {
     parent::select();
     if (!empty($this->_params['fields']['event_id']) && !empty($this->_params['fields']['event_id2'])) {
         // $this->_select .= ", (100*((COUNT(DISTINCT {$this->_aliases['civicrm_participant']}.event_id) - COUNT(DISTINCT {$this->_aliases['civicrm_participant2']}.event_id)) / COUNT(DISTINCT {$this->_aliases['civicrm_participant2']}.event_id))) as event_id_pctchange";
         $this->_columnHeaders['event_id_pctchange']['title'] = ts('Events Attended Percent Change');
         $this->_columnHeaders['event_id_pctchange']['type'] = CRM_Utils_Type::T_FLOAT;
         // $this->_statFields[ts('Events Attended Percent Change')] = 'event_id_pctchange';
         // $this->_selectAliases[] = 'event_id_pctchange';
     }
     if (!empty($this->_params['fields']['unique_staff']) && !empty($this->_params['fields']['unique_staff2'])) {
         // $this->_select .= ", (100*((COUNT(DISTINCT {$this->_aliases['civicrm_participant']}.contact_id) - COUNT(DISTINCT {$this->_aliases['civicrm_participant2']}.contact_id)) / COUNT(DISTINCT {$this->_aliases['civicrm_participant2']}.contact_id))) as unique_staff_pctchange";
         $this->_columnHeaders['unique_staff_pctchange']['title'] = ts('Unique Staff Percent Change');
         $this->_columnHeaders['unique_staff_pctchange']['type'] = CRM_Utils_Type::T_FLOAT;
         // $this->_statFields[ts('Unique Staff Percent Change')] = 'unique_staff_pctchange';
         // $this->_selectAliases[] = 'unique_staff_pctchange';
     }
 }