Пример #1
0
function validMonthAndDay($mon, $day)
{
    $months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
    for ($i = 0; $i < count($months); $i++) {
        echo $i . " " . validDay($mon, $day);
        if ($months[$i] == $mon) {
            return validDay($mon, $day);
        }
        return false;
    }
}
Пример #2
0
    function initForm() {

        // form els added below must have global vars
        foreach ($this->FormElements as $_el) {
            global ${$_el};
            ${$_el} = trim($_REQUEST[$_el]);
        }

        $action         = "search";

        if ($this->CDRTool['filter']['gateway']) {
            $gateway=$this->CDRTool["filter"]["gateway"];
        }

        if ($this->CDRTool['filter']['aNumber']) {
            $UserName=$this->CDRTool['filter']['aNumber'];
        }

        if ($this->CDRTool['filter']['domain']) {
            $Realm  = $this->CDRTool['filter']['domain'];
        }

        if (!$maxrowsperpage) $maxrowsperpage=15;

        $this->f = new form;

        if (isset($this->CDRTool['dataSourcesAllowed'])) {
            while (list($k,$v)=each($this->CDRTool['dataSourcesAllowed'])) {
                if ($this->DATASOURCES[$v]['invisible']) continue;
                $cdr_source_els[]=array("label"=>$this->DATASOURCES[$v]['name'],"value"=>$v);
            }
        }

        if (!$cdr_source) $cdr_source=$cdr_source_els[0]['value'];

        $this->f->add_element(array("name"=>"cdr_source",
                                    "type"=>"select",
                                    "options"=>$cdr_source_els,
                                    "size"=>"1",
                                    "extrahtml"=>"class=span2 onChange=\"document.datasource.submit.disabled = true; location.href = 'callsearch.phtml?cdr_source=' + this.options[this.selectedIndex].value\"",
                                    "value"=>"$cdr_source"
                              )
                       );

        $cdr_table_els=array();
        foreach ($this->tables as $_table) {
            if (preg_match("/^.*(\d{6})$/",$_table,$m)) {
                $cdr_table_els[]=array("label"=>$m[1],"value"=>$_table);
            } else {
                $cdr_table_els[]=array("label"=>$_table,"value"=>$_table);
            }
        }

        $this->f->add_element(array(  "name"=>"cdr_table",
                                "type"=>"select",
                                "options"=>$cdr_table_els,
                                "size"=>"1",
                                "class"=>"span2",
                                "value"=>$cdr_table,
                                "extrahtml"=>"class=span2"
                                ));

        if ($begin_datetime) {
            preg_match("/^(\d\d\d\d)-(\d+)-(\d+)\s+(\d\d):(\d\d)/", "$begin_datetime", $parts);
            $begin_year    =date(Y,$begin_datetime);
            $begin_month   =date(m,$begin_datetime);
            $begin_day     =date(d,$begin_datetime);
            $begin_hour    =date(H,$begin_datetime);
            $begin_min     =date(i,$begin_datetime);
        } else {
            $begin_day      = $_REQUEST["begin_day"];
            $begin_month    = $_REQUEST["begin_month"];
            $begin_year     = $_REQUEST["begin_year"];
            $begin_hour     = $_REQUEST["begin_hour"];
            $begin_min      = $_REQUEST["begin_min"];
            list($begin_hour,$begin_min)=explode(":",$begin_time);
            list($begin_year,$begin_month,$begin_day)=explode("-",$begin_date);
        }

        if ($end_datetime) {
            preg_match("/^(\d\d\d\d)-(\d+)-(\d+)\s+(\d\d):(\d\d)/", "$end_datetime", $parts);
            $end_year    =date(Y,$end_datetime);
            $end_month   =date(m,$end_datetime);
            $end_day     =date(d,$end_datetime);
            $end_hour    =date(H,$end_datetime);
            $end_min     =date(i,$end_datetime);
        }  else {
            $end_day        = $_REQUEST["end_day"];
            $end_month      = $_REQUEST["end_month"];
            $end_year       = $_REQUEST["end_year"];
            $end_hour       = $_REQUEST["end_hour"];
            $end_min        = $_REQUEST["end_min"];
            list($end_hour,$end_min)=explode(":",$end_time);
            list($end_year,$end_month,$end_day)=explode("-",$end_date);
        }

        // corect last day of the month to be valid day
        $begin_day = validDay($begin_month,$begin_day,$begin_year);
        $end_day   = validDay($end_month,$end_day,$end_year);

        $default_year  = Date("Y");
        $default_month = Date("m");
        $default_day   = Date("d");
        $default_hour  = Date(H,time());

        if ($default_hour > 1) $default_hour=$default_hour-1;

        $default_hour = preg_replace("/^(\d)$/","0$1",$default_hour);
        $default_min  = Date("i");

        if ($default_min > 10) {
            $default_min=$default_min-10;
            $default_min=preg_replace("/^(\d)$/","0$1",$default_min);
        }

        if (!$begin_hour)  $begin_hour  = $default_hour;
        if (!$begin_min)   $begin_min   = $default_min;
        if (!$begin_day)   $begin_day   = $default_day;
        if (!$begin_month) $begin_month = $default_month;
        if (!$begin_year)  $begin_year  = $default_year;

        if (!$end_hour)  $end_hour  = 23;
        if (!$end_min)   $end_min   = 55;
        if (!$end_day)   $end_day   = $default_day;
        if (!$end_month) $end_month = $default_month;
        if (!$end_year)  $end_year  = $default_year;

        $this->f->add_element(array(
                    "name"=>"begin_time",
                    "size"=>"1",
		            "type"=>"text",
                    "extrahtml"=>"id='timepicker1' class=\"input-small\" data-show-meridian='false' data-minute-step='1' data-default-time='$begin_hour:$begin_min'"
                    ));
        $this->f->add_element(array(
                    "name"=>"end_time",
                    "size"=>"1",
		            "type"=>"text",
                    "extrahtml"=>"id='timepicker2' class=\"input-small\" data-show-meridian='false' data-minute-step='1' data-default-time='$end_hour:$end_min'"
                    ));
        $this->f->add_element(array(    "name"=>"call_id",
                                "type"=>"text",
                                "size"=>"50",
                                "maxlength"=>"100",
                                "extrahtml"=>"class=span4"
                    ));

        $this->f->add_element(array(    "name"=>"UserName",
                                "type"=>"text",
                                "size"=>"25",
                                "maxlength"=>"255",
                                "extrahtml"=>"class=span2"
                    ));

        $this->f->add_element(array(    "name"=>"a_number",
                                "type"=>"text",
                                "size"=>"25",
                                "maxlength"=>"255",
                                "extrahtml"=>"class=span2"
                    ));
        $this->f->add_element(array(    "name"=>"BillingId",
                                "type"=>"text",
                                "size"=>"25",
                                "maxlength"=>"255",
                                "extra_html"=>"class=span2"
                    ));
        $this->f->add_element(array(    "name"=>"c_number",
                                "type"=>"text",
                                "size"=>"25",
                                "maxlength"=>"255",
                                "extrahtml"=>"class=span2"
                    ));
        $this->f->add_element(array(  "name"=>"sip_status",
                                "type"=>"select",
                                "options"=>$this->disconnectCodesElements,
                                "size"=>"1",
                                "value"=>$sip_status,
                                "extrahtml"=>"class=span3"
                                ));
        $this->f->add_element(array(  "name"=>"sip_status_class",
                                "type"=>"select",
                                "options"=>$this->disconnectCodesClassElements,
                                "size"=>"1",
                                "extrahtml"=>"class=span3"
                                ));

        if (!$this->CDRTool['filter']['aNumber']) {
            $durations_els = array(
                array("label"=>"All calls","value"=>""),
                array("label"=>"0 seconds","value"=>"zero"),
                array("label"=>"non 0 seconds","value"=>"nonzero"),
                array("label"=>"non 0 seconds without price","value"=>"zeroprice"),
                array("label"=>"less than 5 seconds","value"=>"< 5"),
                array("label"=>"more than 5 seconds","value"=>"> 5"),
                array("label"=>"less than 60 seconds","value"=>"< 60"),
                array("label"=>"greater than 1 hour","value"=>"> 3600"),
                array("label"=>"one hour","value"=>"onehour"),
                array("label"=>"greater than 5 hours","value"=>"> 18000"),
                array("label"=>"Un-normalized calls","value"=>"unnormalized"),
                array("label"=>"Un-normalized calls > 0s","value"=>"unnormalized_duration"),
                array("label"=>"One way media","value"=>"onewaymedia"),
                array("label"=>"No media","value"=>"nomedia")
                );
        } else {
            $durations_els = array(
                array("label"=>"All calls","value"=>""),
                array("label"=>"0 seconds call","value"=>"zero"),
                array("label"=>"Succesfull calls","value"=>"nonzero"),
                array("label"=>"less than 60 seconds","value"=>"< 60"),
                array("label"=>"greater than 1 hour","value"=>"> 3600")
                );
            $this->GROUPBY=array(
                           'UserName'             => 'SIP Billing Party',
                           'CallingStationId'     => 'SIP Caller Party',
                           'DestinationId'        => 'SIP Destination Id',
                           'SipApplicationType'   => 'Application',
                               ' '                => '-------------',
                           'hour'                 => 'Hour of day',
                           'DAYOFWEEK'            => 'Day of Week',
                           'DAYOFMONTH'           => 'Day of Month',
                           'DAYOFYEAR'            => 'Day of Year',
                           'BYMONTH'              => 'Month',
                           'BYYEAR'               => 'Year'

                           );

        }

        $flow_els = array(
                array("label"=>"Any Call Flow","value"=>""),
                array("label"=>"On Net","value"=>"on-net"),
                array("label"=>"Incoming","value"=>"incoming"),
                array("label"=>"Outgoing","value"=>"outgoing"),
                array("label"=>"Transit","value"=>"transit"),
                array("label"=>"Diverted On Net","value"=>"diverted-on-net"),
                array("label"=>"Diverted Off Net","value"=>"diverted-off-net"),
                array("label"=>"On Net Diverted On Net","value"=>"on-net-diverted-on-net"),
                array("label"=>"On Net Diverted Off Net","value"=>"on-net-diverted-off-net"),
                array("label"=>"Unknown Flow","value"=>"Sip-Session")
                );

        $this->f->add_element(array(    "name"=>"flow",
                                "type"=>"select",
                                "options"=>$flow_els,
                                "value"=>"",
                                "size"=>"1",
                                "extrahtml"=>"class=span3"
                    ));

        $this->f->add_element(array(    "name"=>"duration",
                                "type"=>"select",
                                "options"=>$durations_els,
                                "value"=>"All",
                                "size"=>"1",
                                "extrahtml"=>"class=span3"
                    ));
        $comp_ops_els = array(
                array("label"=>"Begins with","value"=>"begin"),
                array("label"=>"Contains","value"=>"contain"),
                array("label"=>"Is empty","value"=>"empty"),
                array("label"=>"Equal","value"=>"equal")
                );
        $this->f->add_element(array(    "name"=>"a_number_comp",
                                "type"=>"select",
                                "options"=>$comp_ops_els,
                                "value"=>"begin",
                                "size"=>"1",
                                "extrahtml"=>"class=span2"
                    ));
        $this->f->add_element(array(    "name"=>"c_number_comp",
                                "type"=>"select",
                                "options"=>$comp_ops_els,
                                "value"=>"begin",
                                "size"=>"1",
                                "extrahtml"=>"class=span2"
                    ));
        $this->f->add_element(array(    "name"=>"UserName_comp",
                                "type"=>"select",
                                "options"=>$comp_ops_els,
                                "value"=>"begin",
                                "size"=>"1",
                                "extrahtml"=>"class=span2"
                    ));
        $this->f->add_element(array(    "name"=>"Realm",
                                "type"=>"text",
                                "size"=>"25",
                                "maxlength"=>"25",
                                "extrahtml"=>"class=span2"
                    ));

        $media_info_els=array(
                array("label"=>"","value"=>""),
                        array("label"=>"Timeout","value"=>"timeout"),
                        array("label"=>"ICE session","value"=>"ICE session")
                );

        $this->f->add_element(array(    "name"=>"media_info",
                                "type"=>"select",
                                "options"=>$media_info_els,
                                "size"=>"1",
                                "value"=>"",
                                "extrahtml"=>"class=span2"
                    ));

        $this->f->add_element(array("type"=>"submit",
                              "name"=>"submit",
                              "value"=>"Search","extrahtml"=>"class=btn"
                    ));
        $max_els=array(
                array("label"=>"5","value"=>"5"),
                        array("label"=>"10","value"=>"10"),
                        array("label"=>"15","value"=>"15"),
                        array("label"=>"25","value"=>"25"),
                        array("label"=>"50","value"=>"50"),
                        array("label"=>"100","value"=>"100"),
                        array("label"=>"500","value"=>"500")
                );
        $this->f->add_element(array(    "name"=>"maxrowsperpage",
                                "type"=>"select",
                                "options"=>$max_els,
                                "size"=>"1",
                                "value"=>"25",
                                "extrahtml"=>"class=span2"
                    ));
        $order_type_els=array(
                        array("label"=>"Descending","value"=>"DESC"),
                        array("label"=>"Ascending","value"=>"ASC")
                        );
        $this->f->add_element(array(    "name"=>"order_type",
                                "type"=>"select",
                                "options"=>$order_type_els,
                                "size"=>"1",
                                "extrahtml"=>"class=span2"
                    ));
        $this->f->add_element(array("type"=>"hidden",
                              "name"=>"action",
                              "value"=>$action
                ));

        $order_by_els=array(array("label"=>"Id","value"=>"RadAcctId"),
                            array("label"=>"Date","value"=>"AcctStopTime"),
                            array("label"=>"Billing Party","value"=>"UserName"),
                            array("label"=>"Remote Party Id","value"=>"SipRPID"),
                            array("label"=>"Caller Party","value"=>"CallingStationId"),
                            array("label"=>"Destination","value"=>"CalledStationId"),
                            array("label"=>"Duration","value"=>"AcctSessionTime"),
                            array("label"=>"Input traffic","value"=>"AcctInputOctets"),
                            array("label"=>"Output traffic","value"=>"AcctOutputOctets"),
                            array("label"=>"Price","value"=>"Price"),
                            array("label"=>"Failures(%)","value"=>"zeroP"),
                            array("label"=>"Success(%)","value"=>"nonzeroP"),
                            array("label"=>"Group by","value"=>"group_by")
        );

        $group_by_els[]=array("label"=>"","value"=>"");

        while (list($k,$v)=each($this->GROUPBY)) {
            $group_by_els[]=array("label"=>$v,"value"=>$k);
        }

        $this->f->add_element(array("name"=>"order_by",
                                    "type"=>"select",
                                    "options"=>$order_by_els,
                                    "value"=>$order_by,
                                    "size"=>"1",
                                    "extrahtml"=>"class=span3"
                                ));
        $this->f->add_element(array("name"=>"group_by",
                                    "type"=>"select",
                                    "options"=>$group_by_els,
                                    "value"=>$group_by,
                                    "size"=>"1",
                                    "extrahtml"=>"class=span3"
                                ));
        $application_els=array(
                               array("label"=>"Any Application",          "value"=>""),
                               array("label"=>"Audio",        "value"=>"audio"),
                               array("label"=>"Video",        "value"=>"video"),
                               array("label"=>"Message" ,         "value"=>"message"),
                               array("label"=>"IM Chat" ,     "value"=>"chat"),
                               array("label"=>"Audio + Chat" ,     "value"=>"audio=2C chat"),
                               array("label"=>"File Transfer","value"=>"file-transfer")
                               );

        $this->f->add_element(array("name"=>"application",
                                    "type"=>"select",
                                    "options"=>$application_els,
                                    "value"=>$application,
                                    "size"=>"1",
                                    "extrahtml"=>"class=span2"
                                ));
        $this->f->add_element(array("name"=>"UserAgent",
                                    "type"=>"text",
                                    "size"=>"25",
                                    "maxlength"=>"50",
                                    "value"=>$UserAgent,
                                    "extrahtml"=>"class=span2"
                    ));
        $this->f->add_element(array("name"=>"SipCodec",
                                    "type"=>"text",
                                    "size"=>"10",
                                    "maxlength"=>"50",
                                    "value"=>$SipCodec,
                                    "extrahtml"=>"class=span2"
                    ));
        $this->f->add_element(array("name"=>"sip_proxy",
                                    "type"=>"text",
                                    "size"=>"25",
                                    "maxlength"=>"255",
                                    "value"=>$sip_proxy,
                                    "extrahtml"=>"class=span2"
                                    ));
        $this->f->add_element(array("name"=>"gateway",
                                    "type"=>"text",
                                    "size"=>"25",
                                    "maxlength"=>"255",
                                    "value"=>$gateway,
                                    "extrahtml"=>"class=span2"
                                    ));
        $this->f->add_element(array("name"=>"DestinationId",
                                    "type"=>"text",
                                    "size"=>"10",
                                    "extrahtml"=>"class=span3"
                                ));
        $this->f->add_element(array(    "name"=>"ExcludeDestinations",
                                "type"=>"text",
                                "size"=>"20",
                                "maxlength"=>"255",
                                "extrahtml"=>"class=span3"
                    ));
        $this->f->load_defaults();
        $this->f->add_element(array(
                    "name"=>"begin_date",
                    "size"=>"10",
                    "maxlength"=>"10",
                    "type"=>"text",
                    "value"=>"$begin_year-$begin_month-$begin_day",
                    "extrahtml"=>"id='begin_date' data-date-format=\"yyyy-mm-dd\" class=\"span2\""
                    ));
        $this->f->add_element(array(
                    "name"=>"end_date",
                    "size"=>"1",
                    "type"=>"text",
                    "value"=>"$end_year-$end_month-$end_day",
                    "extrahtml"=>"id='end_date' data-date-format=\"yyyy-mm-dd\" class=\"span2\""
                    ));

    }