/**
 * 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);
}
Example #2
0
    /**
     * 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;
 }