Ignore:
Timestamp:
Sep 5, 2012, 5:15:35 PM (12 years ago)
Author:
grum
Message:

version 0.1.0b

. fix bug on period tab (empty period is managed)
. fix bug on date/time filter (+set time as mandatory value)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/EStat/lib/statDB.class.inc.php

    r17758 r17760  
    865865
    866866
     867
     868  /**
     869   * to be used with Date filter: replace the given operator with 'between' or 'not between'
     870   *
     871   * @param Array $value
     872   * @return Array
     873   */
     874  protected function checkDateFilter($value)
     875  {
     876    if(is_array($value))
     877    {
     878      if(isset($value['operator']))
     879      {
     880        if($value['operator']=='=' or
     881           $value['operator']=='like')
     882        {
     883          $value['operator']='between';
     884          $value['minValue']=$value['value'];
     885          $value['maxValue']=$value['value'];
     886          $value['value']=null;
     887        }
     888        elseif($value['operator']=='!=' or
     889               $value['operator']=='not like')
     890        {
     891          $value['operator']='not between';
     892          $value['minValue']=$value['value'];
     893          $value['maxValue']=$value['value'];
     894          $value['value']=null;
     895        }
     896      }
     897    }
     898    return($value);
     899  } // checkDateFilter
     900
     901
     902
     903
    867904  /**
    868905   * check if value is a valid operator array
     
    902939              {
    903940                case 'date':
    904                   $value['value']=$this->checkValueDate($value['value']);
     941                  switch($value['operator'])
     942                  {
     943                    case '>':
     944                    case '<=':
     945                      $value['value']=$this->checkValueDate($value['value'], 'E');
     946                      break;
     947                    case '<':
     948                    case '>=':
     949                    default:
     950                      $value['value']=$this->checkValueDate($value['value'], 'B');
     951                      break;
     952                  }
    905953                  if($value['value']==null) return(null);
    906954                  $value['value']=$value['value'];
     
    9581006              {
    9591007                case 'date':
    960                   $value['minValue']=$this->checkValueDate($value['minValue']);
     1008                  $value['minValue']=$this->checkValueDate($value['minValue'], 'B');
    9611009                  if($value['minValue']==null) return(null);
    962                   $value['maxValue']=$this->checkValueDate($value['maxValue']);
     1010                  $value['maxValue']=$this->checkValueDate($value['maxValue'], 'E');
    9631011                  if($value['maxValue']==null) return(null);
    9641012                  break;
     
    9931041  /**
    9941042   * check if date is Ok
    995    * return the date completed (YYYY-MM-DD => YYYY-MM-DD 00:00:00) or null if not valid
     1043   * return the date completed
     1044   *      (YYYY-MM-DD => YYYY-MM-DD 00:00:00) if $mode='B'
     1045   *  or  (YYYY-MM-DD => YYYY-MM-DD 23:59:59) if $mode='E'
     1046   *  or  null if not valid
    9961047   *
    9971048   * @param String $value
     1049   * @param String $mode: 'B' for begin or 'E' for end
    9981050   * @return String
    9991051   */
    1000   protected function checkValueDate($value)
     1052  protected function checkValueDate($value, $mode='B')
    10011053  {
    10021054    $returned=null;
    10031055    $result=array();
    1004     if(preg_match('/^(\d{4}-\d{2}-\d{2})(?:(\s{1}\d{2}:\d{2})(:\d{2})?)?$/', $value, $result)>0)
     1056    if(preg_match('/^(\d{4}-\d{2}-\d{2})(?:(\s{1}\d{2}:\d{2})(:\d{2})?)?$/', trim($value), $result)>0)
    10051057    {
    10061058      $returned=$result[1];
     
    10121064          $returned.=$result[3];
    10131065        }
    1014         else $returned.=':00';
    1015       }
    1016       else $returned.=' 00:00:00';
     1066        else
     1067        {
     1068          $returned.=($mode=='B')?':00':':59';
     1069        }
     1070      }
     1071      else
     1072      {
     1073        $returned.=($mode=='B')?' 00:00:00':' 23:59:59';
     1074      }
    10171075    }
    10181076    return(strtotime($returned));
Note: See TracChangeset for help on using the changeset viewer.