dev/core#2066 Further cleanup on search actions
authoreileen <emcnaughton@wikimedia.org>
Fri, 16 Oct 2020 01:59:42 +0000 (14:59 +1300)
committereileen <emcnaughton@wikimedia.org>
Fri, 16 Oct 2020 04:10:07 +0000 (17:10 +1300)
Most of the noise is in the shared pre-process code so my focus is on paring that down

CRM/Activity/Export/Form/Select.php
CRM/Contact/Export/Form/Select.php
CRM/Contribute/Export/Form/Select.php
CRM/Core/Form/Task.php
CRM/Event/Export/Form/Select.php
CRM/Export/Form/Select.php
CRM/Export/Form/Select/Case.php
CRM/Grant/Export/Form/Select.php
CRM/Member/Export/Form/Select.php
CRM/Pledge/Export/Form/Select.php

index ef856053fc3f9d72d09cdeacd1630d3cac4625be..d50e2a83297bdfcdca0f8df288d94279a1344915 100644 (file)
@@ -36,4 +36,22 @@ class CRM_Activity_Export_Form_Select extends CRM_Export_Form_Select {
     return FALSE;
   }
 
+  /**
+   * Get the name of the table for the relevant entity.
+   *
+   * @return string
+   */
+  public function getTableName() {
+    return 'civicrm_activity';
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getEntityAliasField() {
+    return 'activity_id';
+  }
+
 }
index d15ff7afd0bbc0183610703fbc752beeacecdaae..41fe6c5e3aa9c21da9a75f203a2d8ae90819d796 100644 (file)
@@ -36,4 +36,22 @@ class CRM_Contact_Export_Form_Select extends CRM_Export_Form_Select {
     return TRUE;
   }
 
+  /**
+   * Get the name of the table for the relevant entity.
+   *
+   * @return string
+   */
+  public function getTableName() {
+    return 'civicrm_contact';
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getEntityAliasField() {
+    return 'contact_id';
+  }
+
 }
index 921c0595644d55ef4680d6a0be6e5f2682085943..9ad30badd631521ec3e5ad89264893618ce7b849 100644 (file)
@@ -36,4 +36,22 @@ class CRM_Contribute_Export_Form_Select extends CRM_Export_Form_Select {
     return FALSE;
   }
 
+  /**
+   * Get the name of the table for the relevant entity.
+   *
+   * @return string
+   */
+  public function getTableName() {
+    return 'civicrm_contribution';
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getEntityAliasField() {
+    return 'contribution_id';
+  }
+
 }
index 4dd9e128b867fcf82d96bb525a4eae9545713b7b..d23f253c73375f64c0cdda76b847cc28d16995ab 100644 (file)
@@ -156,17 +156,17 @@ abstract class CRM_Core_Form_Task extends CRM_Core_Form {
       }
 
       $query = new CRM_Contact_BAO_Query($queryParams, NULL, NULL, FALSE, FALSE, $form->getQueryMode());
-      $query->_distinctComponentClause = " ( " . $form::$tableName . ".id )";
-      $query->_groupByComponentClause = " GROUP BY " . $form::$tableName . ".id ";
+      $query->_distinctComponentClause = $form->getDistinctComponentClause();
+      $query->_groupByComponentClause = $form->getGroupByComponentClause();
       $result = $query->searchQuery(0, 0, $sortOrder);
-      $selector = $form::$entityShortname . '_id';
+      $selector = $form->getEntityAliasField();
       while ($result->fetch()) {
         $entityIds[] = $result->$selector;
       }
     }
 
     if (!empty($entityIds)) {
-      $form->_componentClause = ' ' . $form::$tableName . '.id IN ( ' . implode(',', $entityIds) . ' ) ';
+      $form->_componentClause = ' ' . $form->getTableName() . '.id IN ( ' . implode(',', $entityIds) . ' ) ';
       $form->assign('totalSelected' . ucfirst($form::$entityShortname) . 's', count($entityIds));
     }
 
@@ -187,7 +187,7 @@ abstract class CRM_Core_Form_Task extends CRM_Core_Form {
    */
   public function setContactIDs() {
     $this->_contactIds = CRM_Core_DAO::getContactIDsFromComponent($this->_entityIds,
-      $this::$tableName
+      $this->getTableName()
     );
   }
 
@@ -297,4 +297,42 @@ SELECT contact_id
     return $this->controller->exportValues('Basic');
   }
 
+  /**
+   * Get the name of the table for the relevant entity.
+   *
+   * @return string
+   */
+  public function getTableName() {
+    CRM_Core_Error::deprecatedFunctionWarning('function should be overridden');
+    return $this::$tableName;
+  }
+
+  /**
+   * Get the clause for grouping by the component.
+   *
+   * @return string
+   */
+  public function getDistinctComponentClause() {
+    return " ( " . $this->getTableName() . ".id )";
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getGroupByComponentClause() {
+    return " GROUP BY " . $this->getTableName() . ".id ";
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getEntityAliasField() {
+    CRM_Core_Error::deprecatedFunctionWarning('function should be overridden');
+    return $this::$entityShortname . '_id';
+  }
+
 }
index f281decc2312f739d585b64e1b6e148a4ee04bf9..835200669ddf6f25a34bc1138ce7f9a2828e874e 100644 (file)
@@ -36,4 +36,22 @@ class CRM_Event_Export_Form_Select extends CRM_Export_Form_Select {
     return FALSE;
   }
 
+  /**
+   * Get the name of the table for the relevant entity.
+   *
+   * @return string
+   */
+  public function getTableName() {
+    return 'civicrm_participant';
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getEntityAliasField() {
+    return 'participant_id';
+  }
+
 }
index 95a9e3a83e3d29b7c778ad3c873dff7adb9cf320..82ddb1b7b43c70ebb8585e3eccaa9593d564cd1b 100644 (file)
@@ -95,19 +95,8 @@ class CRM_Export_Form_Select extends CRM_Core_Form_Task {
       throw new CRM_Core_Exception('Unreachable code');
     }
     $this->_exportMode = constant('CRM_Export_Form_Select::' . strtoupper($entityShortname) . '_EXPORT');
-    $formTaskClassName = "CRM_{$entityShortname}_Form_Task";
-
-    if (isset($formTaskClassName::$entityShortname)) {
-      $this::$entityShortname = $formTaskClassName::$entityShortname;
-      if (isset($formTaskClassName::$tableName)) {
-        $this::$tableName = $formTaskClassName::$tableName;
-      }
-    }
-    else {
-      $this::$entityShortname = $entityShortname;
-      $this::$tableName = CRM_Core_DAO_AllCoreTables::getTableForClass(CRM_Core_DAO_AllCoreTables::getFullName($this->getDAOName()));
-    }
 
+    $this::$entityShortname = strtolower($entityShortname);
     $values = $this->getSearchFormValues();
 
     $count = 0;
@@ -159,7 +148,14 @@ FROM   {$this->_componentTable}
     $this->set('selectAll', $this->_selectAll);
     $this->set('exportMode', $this->_exportMode);
     $this->set('componentClause', $this->_componentClause);
-    $this->set('componentTable', $this->_componentTable);
+    $this->set('componentTable', $this->getTableName());
+  }
+
+  /**
+   * Get the name of the table for the relevant entity.
+   */
+  public function getTableName() {
+    throw new CRM_Core_Exception('should be over-riden');
   }
 
   /**
index cb7ac3e1c759c7db391637354e5acedb1576342e..fe2356e85f08e1fbb771d2a23bf6dee7b9a7722d 100644 (file)
@@ -41,4 +41,22 @@ class CRM_Export_Form_Select_Case extends CRM_Export_Form_Select {
     return FALSE;
   }
 
+  /**
+   * Get the name of the table for the relevant entity.
+   *
+   * @return string
+   */
+  public function getTableName() {
+    return 'civicrm_case';
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getEntityAliasField() {
+    return 'case_id';
+  }
+
 }
index a8c8d0df80e6bffb19eeae0d6d6ad5733e93bccd..6bade5bccdc681eae4ef3b391c354de3ad1d5cf0 100644 (file)
@@ -36,4 +36,22 @@ class CRM_Grant_Export_Form_Select extends CRM_Export_Form_Select {
     return FALSE;
   }
 
+  /**
+   * Get the name of the table for the relevant entity.
+   *
+   * @return string
+   */
+  public function getTableName() {
+    return 'civicrm_grant';
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getEntityAliasField() {
+    return 'grant_id';
+  }
+
 }
index 61896fe7663e5d7cd25447ab716306fb645c2a39..764784f535aac9d5edcf70535003647e6e6e3be2 100644 (file)
@@ -36,4 +36,22 @@ class CRM_Member_Export_Form_Select extends CRM_Export_Form_Select {
     return FALSE;
   }
 
+  /**
+   * Get the name of the table for the relevant entity.
+   *
+   * @return string
+   */
+  public function getTableName() {
+    return 'civicrm_membership';
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getEntityAliasField() {
+    return 'membership_id';
+  }
+
 }
index 55e77b1ed435f64d9921a44bb70ee1c5a9db7baf..d7495ed2103cc74c2273aeecf25cb32232b6b013 100644 (file)
@@ -36,4 +36,22 @@ class CRM_Pledge_Export_Form_Select extends CRM_Export_Form_Select {
     return FALSE;
   }
 
+  /**
+   * Get the name of the table for the relevant entity.
+   *
+   * @return string
+   */
+  public function getTableName() {
+    return 'civicrm_pledge';
+  }
+
+  /**
+   * Get the group by clause for the component.
+   *
+   * @return string
+   */
+  public function getEntityAliasField() {
+    return 'pledge_id';
+  }
+
 }