From 1c3d574cbdac5607ba79c6bcbec24c0f7bb35788 Mon Sep 17 00:00:00 2001 From: colemanw Date: Mon, 2 Oct 2023 16:56:38 -0400 Subject: [PATCH] APIv4 - Convert mysql-style CURRENT_TIMESTAMP to api-style 'now' --- Civi/Api4/Utils/FormattingUtil.php | 9 ++++++++- tests/phpunit/api/v4/Action/GetFieldsTest.php | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Civi/Api4/Utils/FormattingUtil.php b/Civi/Api4/Utils/FormattingUtil.php index e05f3bd7f5..ba93b4a278 100644 --- a/Civi/Api4/Utils/FormattingUtil.php +++ b/Civi/Api4/Utils/FormattingUtil.php @@ -401,9 +401,16 @@ class FormattingUtil { case 'Float': return (float) $value; + case 'Timestamp': case 'Date': + // Convert mysql-style default to api-style default + if (str_contains($value, 'CURRENT_TIMESTAMP')) { + return 'now'; + } // Strip time from date-only fields - return substr($value, 0, 10); + if ($dataType === 'Date' && $value) { + return substr($value, 0, 10); + } } } return $value; diff --git a/tests/phpunit/api/v4/Action/GetFieldsTest.php b/tests/phpunit/api/v4/Action/GetFieldsTest.php index 9d148e8a8c..8a3bea82be 100644 --- a/tests/phpunit/api/v4/Action/GetFieldsTest.php +++ b/tests/phpunit/api/v4/Action/GetFieldsTest.php @@ -162,6 +162,8 @@ class GetFieldsTest extends Api4TestBase implements TransactionalInterface { $this->assertTrue($actFields['subject']['nullable']); $this->assertFalse($actFields['subject']['deprecated']); $this->assertTrue($actFields['phone_id']['deprecated']); + $this->assertEquals('now', $actFields['created_date']['default_value']); + $this->assertEquals('now', $actFields['activity_date_time']['default_value']); $getFields = Activity::getFields(FALSE) ->setAction('get') -- 2.25.1