diff --git a/lib/Form/Block/Date.php b/lib/Form/Block/Date.php index 249a44e298..90a7fafc4b 100644 --- a/lib/Form/Block/Date.php +++ b/lib/Form/Block/Date.php @@ -5,6 +5,7 @@ namespace MailPoet\Form\Block; use MailPoet\Form\BlockStylesRenderer; use MailPoet\Form\BlockWrapperRenderer; use MailPoet\WP\Functions as WPFunctions; +use MailPoetVendor\Carbon\CarbonImmutable; class Date { @@ -124,8 +125,13 @@ class Date { 'selected' => null, ]; - // is default today - if (!empty($block['params']['is_default_today'])) { + if (!empty($block['params']['value'])) { + $date = CarbonImmutable::createFromFormat('Y-m-d H:i:s', $block['params']['value']); + if ($date instanceof CarbonImmutable) { + $defaults['selected'] = (int)strftime('%m', $date->getTimestamp()); + } + } elseif (!empty($block['params']['is_default_today'])) { + // is default today $defaults['selected'] = (int)strftime('%m'); } // merge block with defaults @@ -155,8 +161,13 @@ class Date { 'to' => (int)strftime('%Y'), ]; - // is default today - if (!empty($block['params']['is_default_today'])) { + if (!empty($block['params']['value'])) { + $date = CarbonImmutable::createFromFormat('Y-m-d H:i:s', $block['params']['value']); + if ($date instanceof CarbonImmutable) { + $defaults['selected'] = (int)strftime('%Y', $date->getTimestamp()); + } + } elseif (!empty($block['params']['is_default_today'])) { + // is default today $defaults['selected'] = (int)strftime('%Y'); } @@ -181,8 +192,13 @@ class Date { $defaults = [ 'selected' => null, ]; - // is default today - if (!empty($block['params']['is_default_today'])) { + if (!empty($block['params']['value'])) { + $date = CarbonImmutable::createFromFormat('Y-m-d H:i:s', $block['params']['value']); + if ($date instanceof CarbonImmutable) { + $defaults['selected'] = (int)strftime('%d', $date->getTimestamp()); + } + } elseif (!empty($block['params']['is_default_today'])) { + // is default today $defaults['selected'] = (int)strftime('%d'); } diff --git a/tests/unit/Form/Block/DateTest.php b/tests/unit/Form/Block/DateTest.php index 8432c284d0..91e17766b1 100644 --- a/tests/unit/Form/Block/DateTest.php +++ b/tests/unit/Form/Block/DateTest.php @@ -108,4 +108,25 @@ class DateTest extends \MailPoetUnitTest { $selectedYear = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 2); expect($selectedYear->textContent)->equals($currentYear); } + + public function testItShouldAddValue() { + $this->baseMock->expects($this->once())->method('renderLabel')->willReturn(''); + $this->baseMock->expects($this->once())->method('getFieldName')->willReturn('Field name'); + $this->baseMock->expects($this->any())->method('getInputValidation')->willReturn(' validation="1" '); + + $block = $this->block; + $block['params']['date_type'] = 'year_month_day'; + $block['params']['date_format'] = 'MM/DD/YYYY'; + $block['params']['is_default_today'] = ''; + $block['params']['value'] = '2009-02-09 00:00:00'; + + $html = $this->date->render($block, []); + + $selectedMonth = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 0); + expect($selectedMonth->textContent)->equals('February'); + $selectedDay = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 1); + expect($selectedDay->textContent)->equals('9'); + $selectedYear = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 2); + expect($selectedYear->textContent)->equals('2009'); + } }