Skip to content

Commit

Permalink
Fix default value for modManagerLog.occurred column (#16526)
Browse files Browse the repository at this point in the history
### What does it do?
Adds a default value for the datetime column in the modx_manager_log
table that is compatible with strict modes, which may be enabled in some
environments.

Re-up of #15736 with migration
Re-up of #16520 to target 3.0.x

### Why is it needed?
Beginning with MySQL > 5.7.8 added strict modes
ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, NO_ZERO_IN_DATE. With these
strict modes enabled, a datetime default value cannot be NULL and must
be > '0000-00-00'.

### How to test
Install/update on MySQL 5.7.8

### Related issue(s)/PR(s)
Re-up of #15736
Re-up of #16520

---------

Co-authored-by: Mark Hamstra <hello@markhamstra.com>
  • Loading branch information
opengeek and Mark-H committed Mar 25, 2024
1 parent b459625 commit 3bf35e8
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 4 deletions.
2 changes: 1 addition & 1 deletion core/model/schema/modx.mysql.schema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -646,7 +646,7 @@

<object class="modManagerLog" table="manager_log" extends="xPDO\Om\xPDOSimpleObject">
<field key="user" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="occurred" dbtype="datetime" phptype="datetime" null="true" default="NULL" />
<field key="occurred" dbtype="datetime" phptype="datetime" null="false" default="CURRENT_TIMESTAMP" />
<field key="action" dbtype="varchar" precision="100" phptype="string" null="false" default="" />
<field key="classKey" dbtype="varchar" precision="100" phptype="string" null="false" default="" />
<field key="item" dbtype="varchar" precision="255" phptype="string" null="false" default="0" />
Expand Down
6 changes: 3 additions & 3 deletions core/src/Revolution/mysql/modManagerLog.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class modManagerLog extends \MODX\Revolution\modManagerLog
'fields' =>
array (
'user' => 0,
'occurred' => NULL,
'occurred' => 'CURRENT_TIMESTAMP',
'action' => '',
'classKey' => '',
'item' => '0',
Expand All @@ -38,8 +38,8 @@ class modManagerLog extends \MODX\Revolution\modManagerLog
array (
'dbtype' => 'datetime',
'phptype' => 'datetime',
'null' => true,
'default' => NULL,
'null' => false,
'default' => 'CURRENT_TIMESTAMP',
),
'action' =>
array (
Expand Down
12 changes: 12 additions & 0 deletions setup/includes/upgrades/common/3.0.5-db-changes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

/**
* Database changes for 3.0.5
*
* @var modX $modx
* @package setup
*/

$manager = $modx->getManager();

$manager->alterField(\MODX\Revolution\modManagerLog::class, 'occurred');
11 changes: 11 additions & 0 deletions setup/includes/upgrades/mysql/3.0.5-pl.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php
/**
* Specific upgrades for Revolution 3.0.5-pl
*
* @var modX $modx
* @package setup
* @subpackage upgrades
*/

/* run upgrades common to all db platforms */
include dirname(__DIR__) . '/common/3.0.5-db-changes.php';

0 comments on commit 3bf35e8

Please sign in to comment.