예제 #1
0
 public function add(CDRFlow $cdr_flow)
 {
     $time = $cdr_flow->getTime();
     if ($time <= Parser::timeDay()) {
         $h = 0;
     } elseif ($time >= Parser::timeDayEnd()) {
         $h = 23;
     } else {
         $h = (int) date("G", $time);
     }
     self::$data[$h][] = $cdr_flow->getAsString();
 }
예제 #2
0
 protected function isDublicate(CDRFlow $cdr_flow)
 {
     $i = ['datet', 'duration', 'A164', 'B164'];
     $c = $cdr_flow->get();
     $num_str = $cdr_flow->getNumStr();
     if (isset($this->dublicates[$c[$i[0]]][$c[$i[1]]][$c[$i[2]]][$c[$i[3]]])) {
         $vals = $this->dublicates[$c[$i[0]]][$c[$i[1]]][$c[$i[2]]][$c[$i[3]]];
         $cdr_str = $cdr_flow->getAsString();
         $dublicated_str = implode(', ', $vals);
         Log::instance()->warning("CDR #{$num_str} is dublicated CDR(s) #{$dublicated_str} ({$cdr_str})");
         $this->dublicates[$c[$i[0]]][$c[$i[1]]][$c[$i[2]]][$c[$i[3]]][] = $num_str;
         return TRUE;
     }
     $this->dublicates = array_slice($this->dublicates, -$this->dublicates_limit - 1);
     $this->dublicates[$c[$i[0]]][$c[$i[1]]][$c[$i[2]]][$c[$i[3]]][] = $num_str;
     return FALSE;
 }