}
public function buildTempTable() {
- $randomNum = md5(uniqid());
- $this->_tableName = "civicrm_temp_custom_details_{$randomNum}";
+ $table = CRM_Utils_SQL_TempTable::build()->setCategory('custom')->setMemory()->setUtf8();
+ $this->_tableName = $table->getName();
$this->_tableFields = array(
'id' => 'int unsigned NOT NULL AUTO_INCREMENT',
);
$sql = "
-CREATE TEMPORARY TABLE {$this->_tableName} (
";
foreach ($this->_tableFields as $name => $desc) {
$sql .= "
PRIMARY KEY ( id )
-) ENGINE=HEAP DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
";
- CRM_Core_DAO::executeQuery($sql);
+ $table->createWithColumns($sql);
- $this->_entityIDTableName = "civicrm_temp_custom_entityID_{$randomNum}";
+ $entityIdTable = CRM_Utils_SQL_TempTable::build()->setCategory('custom')->setMemory()->setUtf8();
+ $this->_entityIDTableName = $entityIdTable->getName();
$sql = "
-CREATE TEMPORARY TABLE {$this->_entityIDTableName} (
id int unsigned NOT NULL AUTO_INCREMENT,
entity_id int unsigned NOT NULL,
UNIQUE INDEX unique_entity_id ( entity_id ),
PRIMARY KEY ( id )
-) ENGINE=HEAP DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
";
- CRM_Core_DAO::executeQuery($sql);
+ $entityIdTable->createWithColumns($sql);
if (!empty($this->_formValues['is_unit_test'])) {
$this->_tableNameForTest = $this->_tableName;
}
CRM_Utils_Hook::alterReportVar('sql', $this, $this);
- // store the duration count in temp table
- $this->_tempTableName = CRM_Core_DAO::createTempTableName('civicrm_activity');
-
// build temporary table column names base on column headers of result
$dbColumns = array();
foreach ($this->_columnHeaders as $fieldName => $dontCare) {
}
// create temp table to store main result
- $tempQuery = "CREATE TEMPORARY TABLE {$this->_tempTableName} (
- id int unsigned NOT NULL AUTO_INCREMENT, " . implode(', ', $dbColumns) . ' , PRIMARY KEY (id))'
- . $this->_databaseAttributes;
- CRM_Core_DAO::executeQuery($tempQuery);
+ $this->_tempTableName = $this->createTemporaryTable('tempTable', "
+ id int unsigned NOT NULL AUTO_INCREMENT, " . implode(', ', $dbColumns) . ' , PRIMARY KEY (id)',
+ TRUE);
// build main report query
$sql = "{$this->_select} {$this->_from} {$this->_where} {$this->_groupBy} {$this->_having} {$this->_orderBy} {$this->_limit}";
$sql = "SELECT SUM(activity_civireport.duration) as civicrm_activity_duration_total {$this->_from} {$this->_where} {$this->_groupBy} {$this->_having} {$this->_orderBy} {$this->_limit}";
// create temp table to store duration
- $this->_tempDurationSumTableName = CRM_Core_DAO::createTempTableName('civicrm_activity');
- $tempQuery = "CREATE TEMPORARY TABLE {$this->_tempDurationSumTableName} (
- id int unsigned NOT NULL AUTO_INCREMENT, civicrm_activity_duration_total VARCHAR(128), PRIMARY KEY (id))"
- . $this->_databaseAttributes;
- CRM_Core_DAO::executeQuery($tempQuery);
+ $this->_tempDurationSumTableName = $this->createTemporaryTable('tempDurationSumTable', "
+ id int unsigned NOT NULL AUTO_INCREMENT, civicrm_activity_duration_total VARCHAR(128), PRIMARY KEY (id)",
+ TRUE);
// store the result in temporary table
$insertQuery = "INSERT INTO {$this->_tempDurationSumTableName} (civicrm_activity_duration_total)
*/
protected $groupFilterNotOptimised = TRUE;
+ protected $tableName;
+
/**
* Class constructor.
*/
public function from() {
$this->_from = "
- FROM civireport_membership_contribution_detail
+ FROM {$this->tableName}
INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']}
- ON (civireport_membership_contribution_detail.contribution_id = {$this->_aliases['civicrm_contribution']}.id)
+ ON ({$this->tableName}.contribution_id = {$this->_aliases['civicrm_contribution']}.id)
LEFT JOIN civicrm_membership {$this->_aliases['civicrm_membership']}
- ON (civireport_membership_contribution_detail.membership_id = {$this->_aliases['civicrm_membership']}.id)
+ ON ({$this->tableName}.membership_id = {$this->_aliases['civicrm_membership']}.id)
INNER JOIN civicrm_contact {$this->_aliases['civicrm_contact']}
- ON (civireport_membership_contribution_detail.contact_id = {$this->_aliases['civicrm_contact']}.id)
+ ON ({$this->tableName}.contact_id = {$this->_aliases['civicrm_contact']}.id)
LEFT JOIN civicrm_membership_status {$this->_aliases['civicrm_membership_status']}
ON {$this->_aliases['civicrm_membership_status']}.id =
{$this->_aliases['civicrm_membership']}.status_id
*/
public function tempTable($applyLimit = TRUE) {
// create temp table with contact ids,contribtuion id,membership id
- $dropTempTable = 'DROP TEMPORARY TABLE IF EXISTS civireport_membership_contribution_detail';
- CRM_Core_DAO::executeQuery($dropTempTable);
-
- $sql = 'CREATE TEMPORARY TABLE civireport_membership_contribution_detail
- (contribution_id int, INDEX USING HASH(contribution_id), contact_id int, INDEX USING HASH(contact_id),
- membership_id int, INDEX USING HASH(membership_id), payment_id int, INDEX USING HASH(payment_id)) ENGINE=MEMORY' . $this->_databaseAttributes;
- CRM_Core_DAO::executeQuery($sql);
+ $this->tableName = $this->createTemporaryTable('table', '
+ contribution_id int, INDEX USING HASH(contribution_id), contact_id int, INDEX USING HASH(contact_id),
+ membership_id int, INDEX USING HASH(membership_id), payment_id int, INDEX USING HASH(payment_id)', TRUE, TRUE);
$fillTemp = "
- INSERT INTO civireport_membership_contribution_detail (contribution_id, contact_id, membership_id)
+ INSERT INTO {$this->tableName} (contribution_id, contact_id, membership_id)
SELECT contribution.id, {$this->_aliases['civicrm_contact']}.id, m.id
FROM civicrm_contribution contribution
INNER JOIN civicrm_contact {$this->_aliases['civicrm_contact']}