Changeset 17760


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)

Location:
extensions/EStat
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • extensions/EStat/estat_ajax.php

    r17758 r17760  
    11511151
    11521152          $tmp=$statFile->getStatPeriod(0, 0, $fields['total'], $filter, $sort);
    1153           $returned['total']=array('', $tmp[0]['T'], $tmp[0]['C'], $tmp[0]['I'], $tmp[0]['A']);
     1153          if(isset($tmp[0]))
     1154          {
     1155            $returned['total']=array('', $tmp[0]['T'], $tmp[0]['C'], $tmp[0]['I'], $tmp[0]['A']);
     1156          }
     1157          else
     1158          {
     1159            $returned['total']=array('', '0', '0', '0', '0');
     1160          }
    11541161          break;
    11551162        case 'y':
     
    11701177
    11711178          $tmp=$statFile->getStatPeriod(0, 0, $fields['total'], $filter, $sort);
    1172           $returned['total']=array('', $tmp[0][0]['T'], $tmp[0][0]['C'], $tmp[0][0]['I'], $tmp[0][0]['A']);
     1179          if(isset($tmp[0]))
     1180          {
     1181            $returned['total']=array('', $tmp[0][0]['T'], $tmp[0][0]['C'], $tmp[0][0]['I'], $tmp[0][0]['A']);
     1182          }
     1183          else
     1184          {
     1185            $returned['total']=array('', '0', '0', '0', '0');
     1186          }
    11731187          break;
    11741188        default:
     
    11891203          }
    11901204          $tmp=$statFile->getStatPeriod(0, 0, $fields['total'], $filter, $sort);
    1191           $returned['total']=array('', $tmp[0][0]['T'], $tmp[0][0]['C'], $tmp[0][0]['I'], $tmp[0][0]['A']);
     1205          if(isset($tmp[0]))
     1206          {
     1207            $returned['total']=array('', $tmp[0][0]['T'], $tmp[0][0]['C'], $tmp[0][0]['I'], $tmp[0][0]['A']);
     1208          }
     1209          else
     1210          {
     1211            $returned['total']=array('', '0', '0', '0', '0');
     1212          }
    11921213          break;
    11931214      }
  • 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));
  • extensions/EStat/lib/statDBMonth.class.inc.php

    r17758 r17760  
    257257    if(!isset($filter['uaType'])) $filter['uaType']=null;
    258258
     259    $filter['date']=$this->checkDateFilter($filter['date']);
    259260    $filter['IPadress']=$this->checkIPFilter($filter['IPadress']);
    260261    // check filter values - getOperator check and 'clean' the filter
Note: See TracChangeset for help on using the changeset viewer.