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; } } ?>