Fix more schema checks to use mysql DATABASE() function, deprecate php function
authorEileen McNaughton <emcnaughton@wikimedia.org>
Thu, 16 Feb 2023 03:50:40 +0000 (16:50 +1300)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Thu, 16 Feb 2023 04:04:56 +0000 (17:04 +1300)
CRM/Core/DAO.php
CRM/Core/InnoDBIndexer.php
CRM/Upgrade/Snapshot.php

index eb84c1651ca9286d5f9912a503ba771ae12a7285..b8c672a596dd715afc24e560692d67d1a99cc3b7 100644 (file)
@@ -1108,7 +1108,7 @@ class CRM_Core_DAO extends DB_DataObject {
     $dao = CRM_Core_DAO::executeQuery(
       "SELECT TABLE_NAME
        FROM information_schema.TABLES
-       WHERE TABLE_SCHEMA = '" . CRM_Core_DAO::getDatabaseName() . "'
+       WHERE TABLE_SCHEMA = DATABASE()
          AND TABLE_NAME LIKE 'civicrm_%'
          AND TABLE_NAME NOT LIKE '%_tmp%'
       ");
@@ -1130,7 +1130,7 @@ class CRM_Core_DAO extends DB_DataObject {
       "SELECT count(*)
        FROM information_schema.TABLES
        WHERE ENGINE = 'MyISAM'
-         AND TABLE_SCHEMA = '" . CRM_Core_DAO::getDatabaseName() . "'
+         AND TABLE_SCHEMA = DATABASE()
          AND TABLE_NAME LIKE 'civicrm_%'
          AND TABLE_NAME NOT LIKE 'civicrm_tmp_%'
       ");
@@ -1139,11 +1139,12 @@ class CRM_Core_DAO extends DB_DataObject {
   /**
    * Get the name of the CiviCRM database.
    *
+   * @deprecated use mysql DATABASE() within the query.
+   *
    * @return string
    */
-  public static function getDatabaseName() {
-    $daoObj = new CRM_Core_DAO();
-    return $daoObj->database();
+  public static function getDatabaseName(): string {
+    return (new CRM_Core_DAO())->database();
   }
 
   /**
index d10c4c2e18b1c320ba4ea2133923eabebe8205e1..18532d452aeaa209278c59085b5b8dfe5cb0c118 100644 (file)
@@ -163,7 +163,7 @@ class CRM_Core_InnoDBIndexer {
     $dao = CRM_Core_DAO::executeQuery("
   SELECT index_name as index_name
   FROM information_Schema.STATISTICS
-  WHERE table_schema = '" . CRM_Core_DAO::getDatabaseName() . "'
+  WHERE table_schema = DATABASE()
     AND table_name = '$table'
     AND index_type = 'FULLTEXT'
   GROUP BY index_name
index 941f1fe127c523924922d42a3efec16f434f1338..90b66e418bf09a02f980d2f2eb6e799fda0be534 100644 (file)
@@ -207,12 +207,11 @@ class CRM_Upgrade_Snapshot {
     $query = '
       SELECT TABLE_NAME as tableName
       FROM   INFORMATION_SCHEMA.TABLES
-      WHERE  TABLE_SCHEMA = %1
-      AND TABLE_NAME LIKE %2
+      WHERE  TABLE_SCHEMA = DATABASE()
+      AND TABLE_NAME LIKE %1
     ';
     $tables = CRM_Core_DAO::executeQuery($query, [
-      1 => [$dao->database(), 'String'],
-      2 => ["snap_{$owner}_v%", 'String'],
+      1 => ["snap_{$owner}_v%", 'String'],
     ])->fetchMap('tableName', 'tableName');
 
     $oldTables = array_filter($tables, function($table) use ($owner, $cutoff) {