getAttrSetting('mand'))
$defval = date('Y-m-d');
else
$defval = '';
$cv = $this->getCurVal();
$tpl = '';
return $tpl;
}
function lPost() {
$time = strtotime($_POST[$this->attr_name] . ' 00:00:00');
if ( $time == false ) {
$time = $_POST[$this->attr_name];
}
if (empty($_POST[$this->attr_name]) && !$this->getAttrSetting('mand') ) {
$time = 0;
}
$this->obj->set($this->attr_name, $time);
}
function render_text( $crop = false ) {
if ( $this->getCurVal() ) {
return date('d.m.Y',$this->getCurVal());
} else {
return '';
}
}
function getFilter( $sql_where = '' ) {
$fname = $this->obj->obj_name . '_' . $this->attr_name;
if (!isset($_GET[$fname.'_year'])) $_GET[$fname.'_year'] = 0;
if (!isset($_GET[$fname.'_month'])) $_GET[$fname.'_month'] = 0;
if (!isset($_GET[$fname.'_week'])) $_GET[$fname.'_week'] = 0;
if (!isset($_GET[$fname.'_sday'])) $_GET[$fname.'_sday'] = 0;
$y = intval( $_GET[$fname.'_year'] );
$m = intval( $_GET[$fname.'_month'] );
$w = intval( $_GET[$fname.'_week'] );
$d = intval( $_GET[$fname.'_sday'] );
$ret = '';
// Display
// By date
// year
$nofirst = true ;
if ($y=='0')
$html.="Все";
else
$html.="Все";
for ($year=2010;$year<=date('Y')+2;$year++) {
if ( $nofirst ) {
$html .= ' | ';
}
$nofirst = true;
$html.="";
if ($y==$year)
$html.= "$year";
else
$html.= "$year";
$html.="";
}
$html.= "
";
// month
if ($m=='0')
$html.="Все";
else
$html.="Все";
for ($month=1;$month<=12;$month++) {
$html .= ' | ';
$html.="";
if ($m==$month)
$html.= ""._getMonthName($month)."";
else
$html.= _getMonthName($month);
$html.="";
}
$html.= "
";
// week
if ( $sql_where != 'noweek' ) {
if ($w=='0')
$html.="Все";
else
$html.="Все";
$weeks = $this->getSeven(mktime(0,0,0, $m, 1, $y));
foreach ($weeks as $k=>$week) {
if ($k == 0) continue;
$html .= ' | ';
$html .="";
if ($w==$k)
$html .= "".date('d', $weeks[($k-1)]).'-'.date('d', $week)."";
else
$html .= date('d', $weeks[($k-1)]).'-'.date('d', $week);
$html.="";
}
$html .= "
";
// day
if ( $sql_where != 'nodays' ) {
if ($d=='0')
$html.= "Все";
else
$html.= "Все";
for ($i=1; $i<=date("t", mktime(0,0,0,$m,1,$y)); $i++) {
if ($i == 0) continue;
$html .= ' | ';
$html .= "";
if ($d==$i)
$html.= "".$i."";
else
$html.= $i;
$html.="";
}
$html .= "
";
$html.= "";
if ( ( $d == date('d') ) && ($y == date('Y') ) && ($m == date('m') ) ) {
$html .="Сегодня";
} else {
$html .="Сегодня";
}
$html .="";
}
}
// SQL
$range = $this->getTimeRangeMonth($y, $m);
if ( $w ) {
$ret .= ' AND
( '. ($this->obj->obj_name?($this->obj->obj_name. '.'):'') . $this->attr_name .' >= ' . $weeks[($w-1)] . '
AND
'. ($this->obj->obj_name?($this->obj->obj_name. '.'):'') . $this->attr_name .' <= ' . $weeks[$w] . ' )';
}elseif ( $d ) {
$ret .= ' AND
( '. ($this->obj->obj_name?($this->obj->obj_name. '.'):'') . $this->attr_name .' >= ' . mktime(0,0,0,$m, $d, $y) . '
AND
'. ($this->obj->obj_name?($this->obj->obj_name. '.'):'') . $this->attr_name .' <= ' . mktime(23,59,59,$m, $d, $y) . ' )';
} else {
$ret .= ' AND
( '. ($this->obj->obj_name?($this->obj->obj_name. '.'):'') . $this->attr_name .' >= ' . $range['first'] . '
AND
'. ($this->obj->obj_name?($this->obj->obj_name. '.'):'') . $this->attr_name .' <= ' . $range['last'] . ' )';
}
$r['sql'] = $ret;
$r['html'] = $html;
return $r; }
function getTimeRangeMonth($year, $month) {
if ($year && $month) {
$ret['first'] = mktime(0,0,0,$month,1,$year);
$ret['last'] = mktime(23,59,59,$month,date("t", $ret['first']),$year);
}
else {
if ($year) {
$ret['first'] = mktime(0,0,0,1,1,$year);
$ret['last'] = mktime(23,59,59,12,31,$year);
}
else {
$ret['first'] = 0;
$ret['last'] = 999999999999;
}
}
return $ret;
}
function getSeven ($date) { // С шагом в 7 дней
$day = date('d', $date);
$first_day = mktime(0,0,0,date('m', $date),1,date('Y', $date));
$last_day = mktime(23,59,59,date('m', $date),date('t', $date),date('Y', $date));
$ret[] = $first_day;
$tmp = $first_day;
while ( $tmp < $last_day ) {
$tmp = mktime(0,0,0,date('m', $tmp),date('d', $tmp)+7,date('Y', $tmp));
if ($tmp > $last_day)
$ret[] = $last_day;
else
$ret[] = $tmp;
}
return $ret;
}
}
?>