From 9d4ac960a77a66263ddf072b4451556705f6c30b Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Fri, 22 Sep 2017 13:55:14 +0100 Subject: [PATCH 1/3] Use Datetime::now() for last edited updates in OrderableRows --- code/GridFieldOrderableRows.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/GridFieldOrderableRows.php b/code/GridFieldOrderableRows.php index 5b5c670..0479f34 100755 --- a/code/GridFieldOrderableRows.php +++ b/code/GridFieldOrderableRows.php @@ -470,12 +470,13 @@ class GridFieldOrderableRows extends RequestHandler implements $sortTable = $this->getSortTable($list); $additionalSQL = ''; $baseTable = $sortTable; + $now = SS_Datetime::now()->Rfc2822(); if(class_exists($sortTable)) { $baseTable = singleton($sortTable)->baseTable(); } $isBaseTable = ($baseTable == $sortTable); if(!$list instanceof ManyManyList && $isBaseTable){ - $additionalSQL = ', "LastEdited" = NOW()'; + $additionalSQL = ", \"LastEdited\" = '$now'"; } foreach($sortedIDs as $sortValue => $id) { @@ -491,7 +492,7 @@ class GridFieldOrderableRows extends RequestHandler implements if(!$isBaseTable) { DB::query(sprintf( - 'UPDATE "%s" SET "LastEdited" = NOW() WHERE %s', + "UPDATE \"%s\" SET \"LastEdited\" = '$now' WHERE %s", $baseTable, $this->getSortTableClauseForIds($list, $id) )); @@ -520,6 +521,7 @@ class GridFieldOrderableRows extends RequestHandler implements $field = $this->getSortField(); $table = $this->getSortTable($list); $clause = sprintf('"%s"."%s" = 0', $table, $this->getSortField()); + $now = SS_Datetime::now()->Rfc2822(); $additionalSQL = ''; $baseTable = $table; @@ -528,7 +530,7 @@ class GridFieldOrderableRows extends RequestHandler implements } $isBaseTable = ($baseTable == $table); if(!$list instanceof ManyManyList && $isBaseTable){ - $additionalSQL = ', "LastEdited" = NOW()'; + $additionalSQL = ", \"LastEdited\" = '$now'"; } foreach($list->where($clause)->column('ID') as $id) { @@ -546,7 +548,7 @@ class GridFieldOrderableRows extends RequestHandler implements if(!$isBaseTable) { DB::query(sprintf( - 'UPDATE "%s" SET "LastEdited" = NOW() WHERE %s', + "UPDATE \"%s\" SET \"LastEdited\" = '$now' WHERE %s", $baseTable, $this->getSortTableClauseForIds($list, $id) )); From 23c0a58e481296f8561ba874dfeabb9b037b2afc Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Fri, 22 Sep 2017 13:50:25 +0100 Subject: [PATCH 2/3] TEST Cover base table last edited update --- tests/GridFieldOrderableRowsTest.php | 52 ++++++++++++++++++++++++++++ tests/GridFieldOrderableRowsTest.yml | 31 +++++++++++++---- 2 files changed, 76 insertions(+), 7 deletions(-) diff --git a/tests/GridFieldOrderableRowsTest.php b/tests/GridFieldOrderableRowsTest.php index 1b10f66..4d88606 100644 --- a/tests/GridFieldOrderableRowsTest.php +++ b/tests/GridFieldOrderableRowsTest.php @@ -12,6 +12,8 @@ class GridFieldOrderableRowsTest extends SapphireTest { 'GridFieldOrderableRowsTest_Parent', 'GridFieldOrderableRowsTest_Ordered', 'GridFieldOrderableRowsTest_Subclass', + 'GridFieldOrderableRowsTest_Unorderable', + 'GridFieldOrderableRowsTest_OrderableChild', ); public function testReorderItems() { @@ -49,6 +51,35 @@ class GridFieldOrderableRowsTest extends SapphireTest { } + public function testSortableChildClass() { + $orderable = new GridFieldOrderableRows('Sort'); + $reflection = new ReflectionMethod($orderable, 'executeReorder'); + $reflection->setAccessible(true); + + $parent = $this->objFromFixture('GridFieldOrderableRowsTest_Ordered', 'nestedtest'); + + $config = new GridFieldConfig_RelationEditor(); + $config->addComponent($orderable); + + $grid = new GridField( + 'Children', + 'Children', + $parent->Children(), + $config + ); + + $originalOrder = $parent->Children()->column('ID'); + $desiredOrder = array_reverse($originalOrder); + + $this->assertNotEquals($originalOrder, $desiredOrder); + + $reflection->invoke($orderable, $grid, $desiredOrder); + + $newOrder = $parent->Children()->column('ID'); + + $this->assertEquals($desiredOrder, $newOrder); + } + /** * @covers GridFieldOrderableRows::getSortTable */ @@ -112,6 +143,10 @@ class GridFieldOrderableRowsTest_Ordered extends DataObject implements TestOnly 'Parent' => 'GridFieldOrderableRowsTest_Parent' ); + private static $has_many = array( + 'Children' => 'GridFieldOrderableRowsTest_OrderableChild', + ); + private static $belongs_many_many =array( 'MyManyMany' => 'GridFieldOrderableRowsTest_Parent', ); @@ -121,4 +156,21 @@ class GridFieldOrderableRowsTest_Ordered extends DataObject implements TestOnly class GridFieldOrderableRowsTest_Subclass extends GridFieldOrderableRowsTest_Ordered implements TestOnly { } +class GridFieldOrderableRowsTest_Unorderable extends DataObject implements TestOnly { +} + +class GridFieldOrderableRowsTest_OrderableChild extends GridFieldOrderableRowsTest_Unorderable implements TestOnly { + + private static $db = array( + 'Sort' => 'Int', + ); + + private static $has_one = array( + 'Parent' => 'GridFieldOrderableRowsTest_Ordered', + ); + + private static $default_sort = '"Sort" ASC'; + +} + /**#@-*/ diff --git a/tests/GridFieldOrderableRowsTest.yml b/tests/GridFieldOrderableRowsTest.yml index 30b7e79..87c5961 100644 --- a/tests/GridFieldOrderableRowsTest.yml +++ b/tests/GridFieldOrderableRowsTest.yml @@ -1,10 +1,3 @@ -GridFieldOrderableRowsTest_Ordered: - item1: - item2: - item3: - item4: - item5: - item6: GridFieldOrderableRowsTest_Parent: parent: MyManyMany: @@ -20,3 +13,27 @@ GridFieldOrderableRowsTest_Parent: ManyManySort: 108 - 5: =>GridFieldOrderableRowsTest_Ordered.item6 ManyManySort: 108 +GridFieldOrderableRowsTest_OrderableChild: + item1: + Sort: 1 + item2: + Sort: 2 + item3: + Sort: 3 + item4: + Sort: 4 +GridFieldOrderableRowsTest_Ordered: + item1: + Sort: 1 + item2: + Sort: 2 + item3: + Sort: 3 + item4: + Sort: 4 + item5: + Sort: 5 + item6: + Sort: 6 + nestedtest: + Children: =>GridFieldOrderableRowsTest_OrderableChild.item1,=>GridFieldOrderableRowsTest_OrderableChild.item2,=>GridFieldOrderableRowsTest_OrderableChild.item3,=>GridFieldOrderableRowsTest_OrderableChild.item4 From fdbac6030007ff89bc8a563a61250d709e6e0608 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Wed, 8 Nov 2017 15:22:13 +1300 Subject: [PATCH 3/3] Remove PHP 5.3 from Travis builds --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8425684..8789d4d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,6 @@ sudo: false language: php php: - - 5.3 - 5.4 - 5.5 - 5.6