'; $html .= $this->renderLabel($block); $html .= $this->renderDateSelect($block); $html .= '

'; return $html; } private function renderDateSelect($block = []) { $html = ''; $fieldName = 'data[' . $this->getFieldName($block) . ']'; $dateFormats = $this->getDateFormats(); // automatically select first date format $dateFormat = $dateFormats[$block['params']['date_type']][0]; // set date format if specified if (isset($block['params']['date_format']) && strlen(trim($block['params']['date_format'])) > 0) { $dateFormat = $block['params']['date_format']; } // generate an array of selectors based on date format $dateSelectors = explode('/', $dateFormat); foreach ($dateSelectors as $dateSelector) { if ($dateSelector === 'DD') { $html .= ''; } else if ($dateSelector === 'MM') { $html .= ''; } else if ($dateSelector === 'YYYY') { $html .= ''; } } $html .= ''; return $html; } public function getDateTypes() { return [ 'year_month_day' => WPFunctions::get()->__('Year, month, day', 'mailpoet'), 'year_month' => WPFunctions::get()->__('Year, month', 'mailpoet'), 'month' => WPFunctions::get()->__('Month (January, February,...)', 'mailpoet'), 'year' => WPFunctions::get()->__('Year', 'mailpoet'), ]; } public function getDateFormats() { return [ 'year_month_day' => ['MM/DD/YYYY', 'DD/MM/YYYY', 'YYYY/MM/DD'], 'year_month' => ['MM/YYYY', 'YYYY/MM'], 'year' => ['YYYY'], 'month' => ['MM'], ]; } public function getMonthNames() { return [__('January', 'mailpoet'), WPFunctions::get()->__('February', 'mailpoet'), WPFunctions::get()->__('March', 'mailpoet'), WPFunctions::get()->__('April', 'mailpoet'), WPFunctions::get()->__('May', 'mailpoet'), WPFunctions::get()->__('June', 'mailpoet'), WPFunctions::get()->__('July', 'mailpoet'), WPFunctions::get()->__('August', 'mailpoet'), WPFunctions::get()->__('September', 'mailpoet'), WPFunctions::get()->__('October', 'mailpoet'), WPFunctions::get()->__('November', 'mailpoet'), WPFunctions::get()->__('December', 'mailpoet'), ]; } private function getMonths($block = []) { $defaults = [ 'selected' => null, ]; // is default today if (!empty($block['params']['is_default_today'])) { $defaults['selected'] = (int)strftime('%m'); } // merge block with defaults $block = array_merge($defaults, $block); $monthNames = $this->getMonthNames(); $html = ''; // empty value label $html .= ''; for ($i = 1; $i < 13; $i++) { $isSelected = ($i === $block['selected']) ? 'selected="selected"' : ''; $html .= ''; } return $html; } private function getYears($block = []) { $defaults = [ 'selected' => null, 'from' => (int)strftime('%Y') - 100, 'to' => (int)strftime('%Y'), ]; // is default today if (!empty($block['params']['is_default_today'])) { $defaults['selected'] = (int)strftime('%Y'); } // merge block with defaults $block = array_merge($defaults, $block); $html = ''; // empty value label $html .= ''; // return years as an array for ($i = (int)$block['to']; $i > (int)($block['from'] - 1); $i--) { $isSelected = ($i === $block['selected']) ? 'selected="selected"' : ''; $html .= ''; } return $html; } private function getDays($block = []) { $defaults = [ 'selected' => null, ]; // is default today if (!empty($block['params']['is_default_today'])) { $defaults['selected'] = (int)strftime('%d'); } // merge block with defaults $block = array_merge($defaults, $block); $html = ''; // empty value label $html .= ''; // return days as an array for ($i = 1; $i < 32; $i++) { $isSelected = ($i === $block['selected']) ? 'selected="selected"' : ''; $html .= ''; } return $html; } }