X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FLogging%2FSchema.php;h=d9a633c77d7dfbfe9852be07f19e88baf95e1394;hb=1e134c589990013a8c8da28b7163d927e02d3c00;hp=85bd657a6207864817c8b268e9ee394896d06044;hpb=4941e62842f19db831e4bf41408323a627fedb3a;p=civicrm-core.git diff --git a/CRM/Logging/Schema.php b/CRM/Logging/Schema.php index 85bd657a62..d9a633c77d 100644 --- a/CRM/Logging/Schema.php +++ b/CRM/Logging/Schema.php @@ -131,6 +131,15 @@ AND TABLE_NAME LIKE 'civicrm_%' while ($dao->fetch()) { $this->tables[] = $dao->TABLE_NAME; } + // Get any non standard table names used for custom groups. + // include these BEFORE the hook is called. + $customFieldDAO = CRM_Core_DAO::executeQuery(" + SELECT DISTINCT table_name as TABLE_NAME FROM civicrm_custom_group + where table_name NOT LIKE 'civicrm_%'; + "); + while ($customFieldDAO->fetch()) { + $this->tables[] = $customFieldDAO->TABLE_NAME; + } // do not log temp import, cache, menu and log tables $this->tables = preg_grep('/^civicrm_import_job_/', $this->tables, PREG_GREP_INVERT); @@ -420,16 +429,18 @@ AND (TABLE_NAME LIKE 'log_civicrm_%' $nonStandardTableNameString ) * name of the relevant table. * @param array $cols * Mixed array of columns to add or null (to check for the missing columns). - * - * @return bool */ - public function fixSchemaDifferencesFor($table, $cols = []) { - if (empty($table)) { - return FALSE; + public function fixSchemaDifferencesFor(string $table, array $cols = []): void { + if (!in_array($table, $this->tables, TRUE)) { + // Create the table if the log table does not exist and + // the table is in 'this->tables'. This latter array + // could have been altered by a hook if the site does not + // want to log a specific table. + return; } if (empty($this->logs[$table])) { $this->createLogTableFor($table); - return TRUE; + return; } if (empty($cols)) { @@ -471,8 +482,6 @@ AND (TABLE_NAME LIKE 'log_civicrm_%' $nonStandardTableNameString ) } $this->resetSchemaCacheForTable("log_$table"); - - return TRUE; } /** @@ -503,7 +512,7 @@ AND (TABLE_NAME LIKE 'log_civicrm_%' $nonStandardTableNameString ) * Get column query. * * @param string $col - * @param bool $createQuery + * @param array $createQuery * * @return array|mixed|string */