/** * OSS_Date modifier * * @category OSS * @package OSS_Smarty * @subpackage Modifier * * @param string $string String to modify * @param string|int $format * @return string */ function smarty_modifier_ossDate($string, $format = "d/m/Y") { $date = new DateTime($string); if (!$format) { $format = "d/m/Y"; } return is_numeric($format) ? $date->format(OSS_Date::getPhpFormat($format)) : $date->format($format); }
/** * Helper for date form * * @param string $name * @param null|strint $value * @param null|array $attribs * @return string */ public function dateForm($name, $value = null, $attribs = null) { // are we in a subform? if (mb_strpos($name, ']') !== false) { $dateId = mb_substr($name, strrpos($name, '[') + 1, -1); $dateName = mb_substr($name, 0, -1); } else { $dateId = $name; $dateName = $name; } if (!isset($attribs['data-dateformat'])) { $attribs['data-dateformat'] = OSS_Date::DF_EUROPEAN; } $attribs['placeholder'] = OSS_Date::getFormat($attribs['data-dateformat']); $jqDateFormat = OSS_Date::getDatepickerFormat($attribs['data-dateformat']); $html = $this->view->formText($dateName, $value, array_merge($attribs, array('id' => $dateId, 'style' => 'width: 90px;', 'maxlength' => 10))); $html .= ' <script type="text/javascript" id="' . $dateId . '_script"> $( document ).ready( function(){ $( "#' . $dateId . '" ).datepicker({ dateFormat: "' . $jqDateFormat . '", constrainInput: true, changeMonth: true, changeYear: true,'; if (isset($attribs['data-mindate'])) { $html .= ' minDate: "' . $attribs['data-mindate'] . '",'; } if (isset($attribs['data-maxdate'])) { $html .= ' maxDate: "' . $attribs['data-maxdate'] . '",'; } if (!isset($attribs['data-yearRange'])) { $html .= ' yearRange: "2012:' . date('Y') . '"'; } else { $html .= ' yearRange: "' . $attribs['data-yearRange'] . '"'; } $html .= ' }); $( "#' . $dateId . '_date_pick" ).bind( "click", function( e ){ $( "#' . $dateId . '" ).datepicker( "show" ); }); }); </script>'; return $html; }
/** * It will if check if given date is European * * @param strig $value Date string * @param null|mixed $context * @return bool */ public function isValid($value, $context = null) { if ((trim($value) == "" || trim($value) == "--") && $this->getIgnoreEmpty()) { return true; } $ts = OSS_Date::getTimestamp($value, $this->_dateFormat); if ($ts === false) { $this->_error(self::INVALID_DATE); return false; } $dparts = OSS_Date::dateSplit($value, $this->_dateFormat); $value = sprintf("%02d/%02d/%d", $dparts[0], $dparts[1], $dparts[2]); if ($value != date("d/m/Y", mktime(0, 0, 0, $dparts[1], $dparts[0], $dparts[2]))) { $this->_error(self::INVALID_DATE); return false; } return true; }