diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE index e918b596..c4d3b83c 100644 --- a/agc_2-X/trunk/UPGRADE +++ b/agc_2-X/trunk/UPGRADE @@ -189,6 +189,10 @@ OTHER CHANGES: calls sent to a message to play a different message depending on whether a wildcard text string is present in a selected lead data field. +46. Added Cached Realtime Carrier Stats option to System Settings to have the + Carrier Log Stats generated once per minute system-wide instead of every + time the realtime report refreshes on every screen. + diff --git a/agc_2-X/trunk/bin/AST_VDadapt.pl b/agc_2-X/trunk/bin/AST_VDadapt.pl index 37456ee0..00b39fbd 100644 --- a/agc_2-X/trunk/bin/AST_VDadapt.pl +++ b/agc_2-X/trunk/bin/AST_VDadapt.pl @@ -1,12 +1,12 @@ #!/usr/bin/perl # -# AST_VDadapt.pl version 2.10 +# AST_VDadapt.pl version 2.12 # # DESCRIPTION: # adjusts the auto_dial_level for vicidial adaptive-predictive campaigns. # gather call stats for campaigns and in-groups # -# Copyright (C) 2014 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2015 Matt Florell LICENSE: AGPLv2 # # CHANGELOG # 60823-1302 - First build from AST_VDhopper.pl @@ -41,6 +41,7 @@ # 131122-1314 - Added several missing sthA->finish # 141109-1957 - Fixed issue #793 # 141113-1616 - Added concurrency check +# 151124-1235 - Added function to cache carrier log stats # # constants @@ -55,6 +56,7 @@ $run_check=1; # concurrency check $vicidial_closer_log = 'vicidial_closer_log FORCE INDEX (call_date) '; # $vicidial_closer_log = 'vicidial_closer_log'; +$generate_carrier_stats=1; $i=0; $daily_stats=1; @@ -620,6 +622,24 @@ while ($master_loop < $CLIloops) &launch_max_calls_gather; } + if ( (($stat_count =~ /00$|50$/) || ($stat_count==1)) ) + { + $stmtA = "SELECT cache_carrier_stats_realtime from system_settings;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $generate_carrier_stats = $aryA[0]; + } + $sthA->finish(); + if ($generate_carrier_stats > 0) + { + &launch_carrier_stats_gather; + } + } + if ($RESETdiff_ratio_updater > 0) {$RESETdiff_ratio_updater=0; $diff_ratio_updater=0;} if ($RESETdrop_count_updater > 0) {$RESETdrop_count_updater=0; $drop_count_updater=0;} $diff_ratio_updater = ($diff_ratio_updater + $CLIdelay); @@ -1619,6 +1639,313 @@ sub launch_max_calls_gather ################################################################################ } + + +sub launch_carrier_stats_gather + { + ################################################################################ + #### BEGIN gather carrier stats for real-time report + ################################################################################ + $TFhour_total=0; @TFhour_status=@MT; @TFhour_count=@MT; + $SIXhour_total=0; @SIXhour_status=@MT; @SIXhour_count=@MT; + $ONEhour_total=0; @ONEhour_status=@MT; @ONEhour_count=@MT; + $FTminute_total=0; @FTminute_status=@MT; @FTminute_count=@MT; + $FIVEminute_total=0; @FIVEminute_status=@MT; @FIVEminute_count=@MT; + $ONEminute_total=0; @ONEminute_status=@MT; @ONEminute_count=@MT; + + ### BEGIN calculate times needed for queries ### + $secC = time(); + $epochONEminuteAGO = ($secC - 60); + $epochFIVEminutesAGO = ($secC - 300); + $epochFIFTEENminutesAGO = ($secC - 900); + $epochONEhourAGO = ($secC - 3600); + $epochSIXhoursAGO = ($secC - 21600); + $epochTWENTYFOURhoursAGO = ($secC - 86400); + + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($secC); + $mon++; $year = ($year + 1900); + if ($mon < 10) {$mon = "0$mon";} + if ($mday < 10) {$mday = "0$mday";} + if ($hour < 10) {$hour = "0$hour";} + if ($min < 10) {$min = "0$min";} + if ($sec < 10) {$sec = "0$sec";} + $timeNOW = "$year-$mon-$mday $hour:$min:$sec"; + + ($Osec,$Omin,$Ohour,$Omday,$Omon,$Oyear,$Owday,$Oyday,$Oisdst) = localtime($epochONEminuteAGO); + $Omon++; $Oyear = ($Oyear + 1900); + if ($Omon < 10) {$Omon = "0$Omon";} + if ($Omday < 10) {$Omday = "0$Omday";} + if ($Ohour < 10) {$Ohour = "0$Ohour";} + if ($Omin < 10) {$Omin = "0$Omin";} + if ($Osec < 10) {$Osec = "0$Osec";} + $timeONEminuteAGO = "$Oyear-$Omon-$Omday $Ohour:$Omin:$Osec"; + + ($Fsec,$Fmin,$Fhour,$Fmday,$Fmon,$Fyear,$Fwday,$Fyday,$Fisdst) = localtime($epochFIVEminutesAGO); + $Fmon++; $Fyear = ($Fyear + 1900); + if ($Fmon < 10) {$Fmon = "0$Fmon";} + if ($Fmday < 10) {$Fmday = "0$Fmday";} + if ($Fhour < 10) {$Fhour = "0$Fhour";} + if ($Fmin < 10) {$Fmin = "0$Fmin";} + if ($Fsec < 10) {$Fsec = "0$Fsec";} + $timeFIVEminutesAGO = "$Fyear-$Fmon-$Fmday $Fhour:$Fmin:$Fsec"; + + ($Isec,$Imin,$Ihour,$Imday,$Imon,$Iyear,$Iwday,$Iyday,$Iisdst) = localtime($epochFIFTEENminutesAGO); + $Imon++; $Iyear = ($Iyear + 1900); + if ($Imon < 10) {$Imon = "0$Imon";} + if ($Imday < 10) {$Imday = "0$Imday";} + if ($Ihour < 10) {$Ihour = "0$Ihour";} + if ($Imin < 10) {$Imin = "0$Imin";} + if ($Isec < 10) {$Isec = "0$Isec";} + $timeFIFTEENminutesAGO = "$Iyear-$Imon-$Imday $Ihour:$Imin:$Isec"; + + ($Hsec,$Hmin,$Hhour,$Hmday,$Hmon,$Hyear,$Hwday,$Hyday,$Hisdst) = localtime($epochONEhourAGO); + $Hmon++; $Hyear = ($Hyear + 1900); + if ($Hmon < 10) {$Hmon = "0$Hmon";} + if ($Hmday < 10) {$Hmday = "0$Hmday";} + if ($Hhour < 10) {$Hhour = "0$Hhour";} + if ($Hmin < 10) {$Hmin = "0$Hmin";} + if ($Hsec < 10) {$Hsec = "0$Hsec";} + $timeONEhourAGO = "$Hyear-$Hmon-$Hmday $Hhour:$Hmin:$Hsec"; + + ($Ssec,$Smin,$Shour,$Smday,$Smon,$Syear,$Swday,$Syday,$Sisdst) = localtime($epochSIXhoursAGO); + $Smon++; $Syear = ($Syear + 1900); + if ($Smon < 10) {$Smon = "0$Smon";} + if ($Smday < 10) {$Smday = "0$Smday";} + if ($Shour < 10) {$Shour = "0$Shour";} + if ($Smin < 10) {$Smin = "0$Smin";} + if ($Ssec < 10) {$Ssec = "0$Ssec";} + $timeSIXhoursAGO = "$Syear-$Smon-$Smday $Shour:$Smin:$Ssec"; + + ($Wsec,$Wmin,$Whour,$Wmday,$Wmon,$Wyear,$Wwday,$Wyday,$Wisdst) = localtime($epochTWENTYFOURhoursAGO); + $Wmon++; $Wyear = ($Wyear + 1900); + if ($Wmon < 10) {$Wmon = "0$Wmon";} + if ($Wmday < 10) {$Wmday = "0$Wmday";} + if ($Whour < 10) {$Whour = "0$Whour";} + if ($Wmin < 10) {$Wmin = "0$Wmin";} + if ($Wsec < 10) {$Wsec = "0$Wsec";} + $timeTWENTYFOURhoursAGO = "$Wyear-$Wmon-$Wmday $Whour:$Wmin:$Wsec"; + + if ($DB > 0) + { + print "Carrier stats gather starting now:\n"; + print "Time now: $timeNOW\n"; + } + if ($DBX > 0) + { + print "Time one minute ago: $timeONEminuteAGO\n"; + print "Time five minutes ago: $timeFIVEminutesAGO\n"; + print "Time fifteen minutes ago: $timeFIFTEENminutesAGO\n"; + print "Time one hour ago: $timeONEhourAGO\n"; + print "Time six hours ago: $timeSIXhoursAGO\n"; + print "Time twenty four hours ago: $timeTWENTYFOURhoursAGO\n"; + } + ### END calculate times needed for queries ### + + $CARRIERstatsHTML=''; + $stmtA="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeTWENTYFOURhoursAGO\" group by dialstatus;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + $ctp=0; + while ($sthArows > $ctp) + { + @aryA = $sthA->fetchrow_array; + $TFhour_status[$ctp] = $aryA[0]; + $TFhour_count[$ctp] = $aryA[1]; + $TFhour_total = ($TFhour_total + $aryA[1]); + $dialstatuses .= "'$aryA[0]',"; + $ctp++; + } + $sthA->finish(); + $dialstatuses =~ s/,$//gi; + + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + + if (length($dialstatuses) > 1) + { + $stmtA="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeSIXhoursAGO\" group by dialstatus;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + $print_sctp=0; + while ($sthArows > $print_sctp) + { + @aryA = $sthA->fetchrow_array; + $SIXhour_total+=$aryA[1]; + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == "$aryA[0]") + {$SIXhour_count[$print_ctp] = $aryA[1];} + $print_ctp++; + } + $print_sctp++; + } + $sthA->finish(); + + $stmtA="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeONEhourAGO\" group by dialstatus;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + $print_sctp=0; + while ($sthArows > $print_sctp) + { + @aryA = $sthA->fetchrow_array; + $ONEhour_total = ($ONEhour_total + $aryA[1]); + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == "$aryA[0]") + {$ONEhour_count[$print_ctp] = $aryA[1];} + $print_ctp++; + } + $print_sctp++; + } + $sthA->finish(); + + $stmtA="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeFIFTEENminutesAGO\" group by dialstatus;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + $print_sctp=0; + while ($sthArows > $print_sctp) + { + @aryA = $sthA->fetchrow_array; + $FTminute_total = ($FTminute_total + $aryA[1]); + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == "$aryA[0]") + {$FTminute_count[$print_ctp] = $aryA[1];} + $print_ctp++; + } + $print_sctp++; + } + $sthA->finish(); + + $stmtA="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeFIVEminutesAGO\" group by dialstatus;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + $print_sctp=0; + while ($sthArows > $print_sctp) + { + @aryA = $sthA->fetchrow_array; + $FIVEminute_total = ($FIVEminute_total + $aryA[1]); + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == "$aryA[0]") + {$FIVEminute_count[$print_ctp] = $aryA[1];} + $print_ctp++; + } + $print_sctp++; + } + $sthA->finish(); + + $stmtA="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeONEminuteAGO\" group by dialstatus;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + $print_sctp=0; + while ($sthArows > $print_sctp) + { + @aryA = $sthA->fetchrow_array; + $ONEminute_total = ($ONEminute_total + $aryA[1]); + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == "$aryA[0]") + {$ONEminute_count[$print_ctp] = $aryA[1];} + $print_ctp++; + } + $print_sctp++; + } + $sthA->finish(); + + $print_ctp=0; + while ($print_ctp < $ctp) + { + if (length($TFhour_count[$print_ctp])<1) {$TFhour_count[$print_ctp]=0;} + if (length($SIXhour_count[$print_ctp])<1) {$SIXhour_count[$print_ctp]=0;} + if (length($ONEhour_count[$print_ctp])<1) {$ONEhour_count[$print_ctp]=0;} + if (length($FTminute_count[$print_ctp])<1) {$FTminute_count[$print_ctp]=0;} + if (length($FIVEminute_count[$print_ctp])<1) {$FIVEminute_count[$print_ctp]=0;} + if (length($ONEminute_count[$print_ctp])<1) {$ONEminute_count[$print_ctp]=0;} + + $dividend=$TFhour_count[$print_ctp]; $divisor=$TFhour_total; $TFhour_prw = &MathZDC; + $dividend=$SIXhour_count[$print_ctp]; $divisor=$SIXhour_total; $SIXhour_prw = &MathZDC; + $dividend=$ONEhour_count[$print_ctp]; $divisor=$ONEhour_total; $ONEhour_prw = &MathZDC; + $dividend=$FTminute_count[$print_ctp]; $divisor=$FTminute_total; $TFminute_prw = &MathZDC; + $dividend=$FIVEminute_count[$print_ctp]; $divisor=$FIVEminute_total; $FIVEminute_prw = &MathZDC; + $dividend=$ONEminute_count[$print_ctp]; $divisor=$ONEminute_total; $ONEminute_prw = &MathZDC; + + $TFhour_pct = (100 * $TFhour_prw); + $SIXhour_pct = (100 * $SIXhour_prw); + $ONEhour_pct = (100 * $ONEhour_prw); + $TFminute_pct = (100 * $TFminute_prw); + $FIVEminute_pct = (100 * $FIVEminute_prw); + $ONEminute_pct = (100 * $ONEminute_prw); + + # if ($DBX) + # { + # print "$TFhour_prw | ($TFhour_count[$print_ctp], $TFhour_total)\n"; + # print "$SIXhour_prw | ($SIXhour_count[$print_ctp], $SIXhour_total)\n"; + # print "$ONEhour_prw | ($ONEhour_count[$print_ctp], $ONEhour_total)\n"; + # print "$TFminute_prw | ($FTminute_count[$print_ctp], $FTminute_total)\n"; + # print "$FIVEminute_prw | ($FIVEminute_count[$print_ctp], $FIVEminute_total)\n"; + # print "$ONEminute_prw | ($ONEminute_count[$print_ctp], $ONEminute_total)\n"; + # } + + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $print_ctp++; + } + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + } + else + { + $CARRIERstatsHTML .= ""; + } + $CARRIERstatsHTML .= "
CARRIER STATS:                 HANGUP STATUS     24 HOURS     6 HOURS     1 HOUR     15 MIN     5 MIN     1 MIN  
     $TFhour_status[$print_ctp] $TFhour_count[$print_ctp]  ".sprintf("%01.1f", $TFhour_pct)."% $SIXhour_count[$print_ctp]  ".sprintf("%01.1f", $SIXhour_pct)."% $ONEhour_count[$print_ctp]  ".sprintf("%01.1f", $ONEhour_pct)."% $FTminute_count[$print_ctp]  ".sprintf("%01.1f", $TFminute_pct)."% $FIVEminute_count[$print_ctp]  ".sprintf("%01.1f", $FIVEminute_pct)."% $ONEminute_count[$print_ctp]  ".sprintf("%01.1f", $ONEminute_pct)."%
generated: $timeNOW    TOTALS ".($TFhour_total+0)." ".($SIXhour_total+0)." ".($ONEhour_total+0)." ".($FTminute_total+0)." ".($FIVEminute_total+0)." ".($ONEminute_total+0)."
no carrier log entries in last 24 hours
"; + $CARRIERstatsHTML .= ""; + + $stmtA="INSERT IGNORE INTO vicidial_html_cache_stats SET stats_type='carrier_stats',stats_id='ALL',stats_date=NOW(),stats_count='$TFhour_total',stats_html=\"$CARRIERstatsHTML\" ON DUPLICATE KEY UPDATE stats_date=NOW(),stats_count='$TFhour_total',stats_html=\"$CARRIERstatsHTML\";"; + $affected_rows = $dbhA->do($stmtA); + if ($DB) {print "CARRIER STATS INSERT/UPDATE TOTAL|$affected_rows|$stmtA|\n";} + ################################################################################ + #### END gather carrier stats for real-time report + ################################################################################ + } + sub launch_inbound_gather { ################################################################################ @@ -2275,3 +2602,27 @@ sub calculate_dial_level } ##### END calculate the proper dial level ##### + +##### BEGIN math divisor sub ##### +sub MathZDC + { + $quotient=0; +# if ($DBX) {print "MathZDC sub DEBUG: dividend: $dividend divisor: $divisor\n";} + + if ( ($divisor == '0') || (length($divisor) < 1) ) + { + return $quotient; + } + else + { + if ($dividend == '0') + { + return 0; + } + else + { + $percent = ($dividend/$divisor); + return $percent; + } + } + } diff --git a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql index 6b38c39b..69634083 100644 --- a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql +++ b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql @@ -1622,7 +1622,8 @@ default_language VARCHAR(100) default 'default English', agent_whisper_enabled ENUM('0','1') default '0', user_hide_realtime_enabled ENUM('0','1') default '0', custom_reports_use_slave_db VARCHAR(2000) default '', -usacan_phone_dialcode_fix ENUM('0','1') default '0' +usacan_phone_dialcode_fix ENUM('0','1') default '0', +cache_carrier_stats_realtime ENUM('0','1') default '0' ) ENGINE=MyISAM; CREATE TABLE vicidial_campaigns_list_mix ( @@ -3370,6 +3371,15 @@ PRIMARY KEY (amm_id), KEY vicidial_AMM_multi_campaign_id_key (campaign_id) ) ENGINE=MyISAM CHARSET=utf8 COLLATE=utf8_unicode_ci; +CREATE TABLE vicidial_html_cache_stats ( +stats_type VARCHAR(20) NOT NULL, +stats_id VARCHAR(20) NOT NULL, +stats_date DATETIME NOT NULL, +stats_count INT(9) UNSIGNED default '0', +stats_html MEDIUMTEXT, +UNIQUE KEY vicidial_html_cache_stats_key (stats_type,stats_id) +) ENGINE=MyISAM CHARSET=utf8 COLLATE=utf8_unicode_ci; + ALTER TABLE vicidial_email_list MODIFY message text character set utf8; @@ -3619,4 +3629,4 @@ UPDATE vicidial_configuration set value='1766' where name='qc_database_version'; UPDATE system_settings set vdc_agent_api_active='1'; -UPDATE system_settings SET db_schema_version='1435',db_schema_update_date=NOW(),reload_timestamp=NOW(); +UPDATE system_settings SET db_schema_version='1436',db_schema_update_date=NOW(),reload_timestamp=NOW(); diff --git a/agc_2-X/trunk/extras/upgrade_2.12.sql b/agc_2-X/trunk/extras/upgrade_2.12.sql index 00aab821..e3390f33 100644 --- a/agc_2-X/trunk/extras/upgrade_2.12.sql +++ b/agc_2-X/trunk/extras/upgrade_2.12.sql @@ -362,3 +362,16 @@ KEY vicidial_AMM_multi_campaign_id_key (campaign_id) ALTER TABLE vicidial_campaigns ADD am_message_wildcards ENUM('Y','N') default 'N'; UPDATE system_settings SET db_schema_version='1435',db_schema_update_date=NOW() where db_schema_version < 1435; + +CREATE TABLE vicidial_html_cache_stats ( +stats_type VARCHAR(20) NOT NULL, +stats_id VARCHAR(20) NOT NULL, +stats_date DATETIME NOT NULL, +stats_count INT(9) UNSIGNED default '0', +stats_html MEDIUMTEXT, +UNIQUE KEY vicidial_html_cache_stats_key (stats_type,stats_id) +) ENGINE=MyISAM CHARSET=utf8 COLLATE=utf8_unicode_ci; + +ALTER TABLE system_settings ADD cache_carrier_stats_realtime ENUM('0','1') default '0'; + +UPDATE system_settings SET db_schema_version='1436',db_schema_update_date=NOW() where db_schema_version < 1436; diff --git a/agc_2-X/trunk/www/vicidial/AST_timeonVDADall.php b/agc_2-X/trunk/www/vicidial/AST_timeonVDADall.php index 2e0608f6..a01c3648 100644 --- a/agc_2-X/trunk/www/vicidial/AST_timeonVDADall.php +++ b/agc_2-X/trunk/www/vicidial/AST_timeonVDADall.php @@ -181,7 +181,7 @@ $db_source = 'M'; ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,outbound_autodial_active,slave_db_server,reports_use_slave_db,enable_languages,language_method,agent_whisper_enabled,allow_chats FROM system_settings;"; +$stmt = "SELECT use_non_latin,outbound_autodial_active,slave_db_server,reports_use_slave_db,enable_languages,language_method,agent_whisper_enabled,allow_chats,cache_carrier_stats_realtime FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -196,6 +196,7 @@ if ($qm_conf_ct > 0) $SSlanguage_method = $row[5]; $agent_whisper_enabled = $row[6]; $allow_chats = $row[7]; + $cache_carrier_stats_realtime = $row[8]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -1333,180 +1334,195 @@ if ( ($DROPINGROUPstats > 0) and (!preg_match("/ALL-ACTIVE/",$group_string)) ) $CARRIERstatsHTML=''; if ($CARRIERstats > 0) { - $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeTWENTYFOURhoursAGO\" group by dialstatus;"; - if ($DB > 0) {echo "\n|$stmtB|\n";} - $rslt=mysql_to_mysqli($stmtB, $link); - $car_to_print = mysqli_num_rows($rslt); - $ctp=0; - while ($car_to_print > $ctp) + if ($cache_carrier_stats_realtime > 0) { - $row=mysqli_fetch_row($rslt); - $TFhour_status[$ctp] = $row[0]; - $TFhour_count[$ctp] = $row[1]; - $TFhour_total+=$row[1]; - $dialstatuses .= "'$row[0]',"; - $ctp++; - } - $dialstatuses = preg_replace("/,$/",'',$dialstatuses); - - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - - if (strlen($dialstatuses) > 1) - { - $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeSIXhoursAGO\" group by dialstatus;"; + $stmtB="SELECT stats_html from vicidial_html_cache_stats where stats_type='carrier_stats' and stats_id='ALL';"; if ($DB > 0) {echo "\n|$stmtB|\n";} $rslt=mysql_to_mysqli($stmtB, $link); - $scar_to_print = mysqli_num_rows($rslt); - $print_sctp=0; - while ($scar_to_print > $print_sctp) + $csh_to_print = mysqli_num_rows($rslt); + if ($csh_to_print > 0) { $row=mysqli_fetch_row($rslt); - $SIXhour_total+=$row[1]; - $print_ctp=0; - while ($print_ctp < $ctp) - { - if ($TFhour_status[$print_ctp] == $row[0]) - {$SIXhour_count[$print_ctp] = $row[1];} - $print_ctp++; - } - $print_sctp++; + $CARRIERstatsHTML = $row[0]; } - - $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeONEhourAGO\" group by dialstatus;"; - if ($DB > 0) {echo "\n|$stmtB|\n";} - $rslt=mysql_to_mysqli($stmtB, $link); - $scar_to_print = mysqli_num_rows($rslt); - $print_sctp=0; - while ($scar_to_print > $print_sctp) - { - $row=mysqli_fetch_row($rslt); - $ONEhour_total+=$row[1]; - $print_ctp=0; - while ($print_ctp < $ctp) - { - if ($TFhour_status[$print_ctp] == $row[0]) - {$ONEhour_count[$print_ctp] = $row[1];} - $print_ctp++; - } - $print_sctp++; - } - - $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeFIFTEENminutesAGO\" group by dialstatus;"; - if ($DB > 0) {echo "\n|$stmtB|\n";} - $rslt=mysql_to_mysqli($stmtB, $link); - $scar_to_print = mysqli_num_rows($rslt); - $print_sctp=0; - while ($scar_to_print > $print_sctp) - { - $row=mysqli_fetch_row($rslt); - $FTminute_total+=$row[1]; - $print_ctp=0; - while ($print_ctp < $ctp) - { - if ($TFhour_status[$print_ctp] == $row[0]) - {$FTminute_count[$print_ctp] = $row[1];} - $print_ctp++; - } - $print_sctp++; - } - - $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeFIVEminutesAGO\" group by dialstatus;"; - if ($DB > 0) {echo "\n|$stmtB|\n";} - $rslt=mysql_to_mysqli($stmtB, $link); - $scar_to_print = mysqli_num_rows($rslt); - $print_sctp=0; - while ($scar_to_print > $print_sctp) - { - $row=mysqli_fetch_row($rslt); - $FIVEminute_total+=$row[1]; - $print_ctp=0; - while ($print_ctp < $ctp) - { - if ($TFhour_status[$print_ctp] == $row[0]) - {$FIVEminute_count[$print_ctp] = $row[1];} - $print_ctp++; - } - $print_sctp++; - } - - $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeONEminuteAGO\" group by dialstatus;"; - if ($DB > 0) {echo "\n|$stmtB|\n";} - $rslt=mysql_to_mysqli($stmtB, $link); - $scar_to_print = mysqli_num_rows($rslt); - $print_sctp=0; - while ($scar_to_print > $print_sctp) - { - $row=mysqli_fetch_row($rslt); - $ONEminute_total+=$row[1]; - $print_ctp=0; - while ($print_ctp < $ctp) - { - if ($TFhour_status[$print_ctp] == $row[0]) - {$ONEminute_count[$print_ctp] = $row[1];} - $print_ctp++; - } - $print_sctp++; - } - - - $print_ctp=0; - while ($print_ctp < $ctp) - { - if (strlen($TFhour_count[$print_ctp])<1) {$TFhour_count[$print_ctp]=0;} - if (strlen($SIXhour_count[$print_ctp])<1) {$SIXhour_count[$print_ctp]=0;} - if (strlen($ONEhour_count[$print_ctp])<1) {$ONEhour_count[$print_ctp]=0;} - if (strlen($FTminute_count[$print_ctp])<1) {$FTminute_count[$print_ctp]=0;} - if (strlen($FIVEminute_count[$print_ctp])<1) {$FIVEminute_count[$print_ctp]=0;} - if (strlen($ONEminute_count[$print_ctp])<1) {$ONEminute_count[$print_ctp]=0;} - - $TFhour_pct = (100*MathZDC($TFhour_count[$print_ctp], $TFhour_total)); - $SIXhour_pct = (100*MathZDC($SIXhour_count[$print_ctp], $SIXhour_total)); - $ONEhour_pct = (100*MathZDC($ONEhour_count[$print_ctp], $ONEhour_total)); - $TFminute_pct = (100*MathZDC($FTminute_count[$print_ctp], $FTminute_total)); - $FIVEminute_pct = (100*MathZDC($FIVEminute_count[$print_ctp], $FIVEminute_total)); - $ONEminute_pct = (100*MathZDC($ONEminute_count[$print_ctp], $ONEminute_total)); - - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $print_ctp++; - } - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - $CARRIERstatsHTML .= ""; - } else { - $CARRIERstatsHTML .= ""; + $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeTWENTYFOURhoursAGO\" group by dialstatus;"; + if ($DB > 0) {echo "\n|$stmtB|\n";} + $rslt=mysql_to_mysqli($stmtB, $link); + $car_to_print = mysqli_num_rows($rslt); + $ctp=0; + while ($car_to_print > $ctp) + { + $row=mysqli_fetch_row($rslt); + $TFhour_status[$ctp] = $row[0]; + $TFhour_count[$ctp] = $row[1]; + $TFhour_total+=$row[1]; + $dialstatuses .= "'$row[0]',"; + $ctp++; + } + $dialstatuses = preg_replace("/,$/",'',$dialstatuses); + + $CARRIERstatsHTML .= ""; } - $CARRIERstatsHTML .= "
"._QXZ("CARRIER STATS").":                 "._QXZ("HANGUP STATUS")."     "._QXZ("24 HOURS")."     "._QXZ("6 HOURS")."     "._QXZ("1 HOUR")."     "._QXZ("15 MIN")."     "._QXZ("5 MIN")."     "._QXZ("1 MIN")."  
     $TFhour_status[$print_ctp] $TFhour_count[$print_ctp]  ".sprintf("%01.1f", $TFhour_pct)."% $SIXhour_count[$print_ctp]  ".sprintf("%01.1f", $SIXhour_pct)."% $ONEhour_count[$print_ctp]  ".sprintf("%01.1f", $ONEhour_pct)."% $FTminute_count[$print_ctp]  ".sprintf("%01.1f", $TFminute_pct)."% $FIVEminute_count[$print_ctp]  ".sprintf("%01.1f", $FIVEminute_pct)."% $ONEminute_count[$print_ctp]  ".sprintf("%01.1f", $ONEminute_pct)."%
     "._QXZ("TOTALS")." ".($TFhour_total+0)." ".($SIXhour_total+0)." ".($ONEhour_total+0)." ".($FTminute_total+0)." ".($FIVEminute_total+0)." ".($ONEminute_total+0)."
"._QXZ("no log entries")."
"; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + + if (strlen($dialstatuses) > 1) + { + $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeSIXhoursAGO\" group by dialstatus;"; + if ($DB > 0) {echo "\n|$stmtB|\n";} + $rslt=mysql_to_mysqli($stmtB, $link); + $scar_to_print = mysqli_num_rows($rslt); + $print_sctp=0; + while ($scar_to_print > $print_sctp) + { + $row=mysqli_fetch_row($rslt); + $SIXhour_total+=$row[1]; + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == $row[0]) + {$SIXhour_count[$print_ctp] = $row[1];} + $print_ctp++; + } + $print_sctp++; + } + + $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeONEhourAGO\" group by dialstatus;"; + if ($DB > 0) {echo "\n|$stmtB|\n";} + $rslt=mysql_to_mysqli($stmtB, $link); + $scar_to_print = mysqli_num_rows($rslt); + $print_sctp=0; + while ($scar_to_print > $print_sctp) + { + $row=mysqli_fetch_row($rslt); + $ONEhour_total+=$row[1]; + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == $row[0]) + {$ONEhour_count[$print_ctp] = $row[1];} + $print_ctp++; + } + $print_sctp++; + } + + $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeFIFTEENminutesAGO\" group by dialstatus;"; + if ($DB > 0) {echo "\n|$stmtB|\n";} + $rslt=mysql_to_mysqli($stmtB, $link); + $scar_to_print = mysqli_num_rows($rslt); + $print_sctp=0; + while ($scar_to_print > $print_sctp) + { + $row=mysqli_fetch_row($rslt); + $FTminute_total+=$row[1]; + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == $row[0]) + {$FTminute_count[$print_ctp] = $row[1];} + $print_ctp++; + } + $print_sctp++; + } + + $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeFIVEminutesAGO\" group by dialstatus;"; + if ($DB > 0) {echo "\n|$stmtB|\n";} + $rslt=mysql_to_mysqli($stmtB, $link); + $scar_to_print = mysqli_num_rows($rslt); + $print_sctp=0; + while ($scar_to_print > $print_sctp) + { + $row=mysqli_fetch_row($rslt); + $FIVEminute_total+=$row[1]; + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == $row[0]) + {$FIVEminute_count[$print_ctp] = $row[1];} + $print_ctp++; + } + $print_sctp++; + } + + $stmtB="SELECT dialstatus,count(*) from vicidial_carrier_log where call_date >= \"$timeONEminuteAGO\" group by dialstatus;"; + if ($DB > 0) {echo "\n|$stmtB|\n";} + $rslt=mysql_to_mysqli($stmtB, $link); + $scar_to_print = mysqli_num_rows($rslt); + $print_sctp=0; + while ($scar_to_print > $print_sctp) + { + $row=mysqli_fetch_row($rslt); + $ONEminute_total+=$row[1]; + $print_ctp=0; + while ($print_ctp < $ctp) + { + if ($TFhour_status[$print_ctp] == $row[0]) + {$ONEminute_count[$print_ctp] = $row[1];} + $print_ctp++; + } + $print_sctp++; + } + + + $print_ctp=0; + while ($print_ctp < $ctp) + { + if (strlen($TFhour_count[$print_ctp])<1) {$TFhour_count[$print_ctp]=0;} + if (strlen($SIXhour_count[$print_ctp])<1) {$SIXhour_count[$print_ctp]=0;} + if (strlen($ONEhour_count[$print_ctp])<1) {$ONEhour_count[$print_ctp]=0;} + if (strlen($FTminute_count[$print_ctp])<1) {$FTminute_count[$print_ctp]=0;} + if (strlen($FIVEminute_count[$print_ctp])<1) {$FIVEminute_count[$print_ctp]=0;} + if (strlen($ONEminute_count[$print_ctp])<1) {$ONEminute_count[$print_ctp]=0;} + + $TFhour_pct = (100*MathZDC($TFhour_count[$print_ctp], $TFhour_total)); + $SIXhour_pct = (100*MathZDC($SIXhour_count[$print_ctp], $SIXhour_total)); + $ONEhour_pct = (100*MathZDC($ONEhour_count[$print_ctp], $ONEhour_total)); + $TFminute_pct = (100*MathZDC($FTminute_count[$print_ctp], $FTminute_total)); + $FIVEminute_pct = (100*MathZDC($FIVEminute_count[$print_ctp], $FIVEminute_total)); + $ONEminute_pct = (100*MathZDC($ONEminute_count[$print_ctp], $ONEminute_total)); + + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $print_ctp++; + } + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + $CARRIERstatsHTML .= ""; + + } + else + { + $CARRIERstatsHTML .= ""; + } + $CARRIERstatsHTML .= "
"._QXZ("CARRIER STATS").":                 "._QXZ("HANGUP STATUS")."     "._QXZ("24 HOURS")."     "._QXZ("6 HOURS")."     "._QXZ("1 HOUR")."     "._QXZ("15 MIN")."     "._QXZ("5 MIN")."     "._QXZ("1 MIN")."  
     $TFhour_status[$print_ctp] $TFhour_count[$print_ctp]  ".sprintf("%01.1f", $TFhour_pct)."% $SIXhour_count[$print_ctp]  ".sprintf("%01.1f", $SIXhour_pct)."% $ONEhour_count[$print_ctp]  ".sprintf("%01.1f", $ONEhour_pct)."% $FTminute_count[$print_ctp]  ".sprintf("%01.1f", $TFminute_pct)."% $FIVEminute_count[$print_ctp]  ".sprintf("%01.1f", $FIVEminute_pct)."% $ONEminute_count[$print_ctp]  ".sprintf("%01.1f", $ONEminute_pct)."%
     "._QXZ("TOTALS")." ".($TFhour_total+0)." ".($SIXhour_total+0)." ".($ONEhour_total+0)." ".($FTminute_total+0)." ".($FIVEminute_total+0)." ".($ONEminute_total+0)."
"._QXZ("no log entries")."
"; + $CARRIERstatsHTML .= "
"; - $CARRIERstatsHTML .= ""; } diff --git a/agc_2-X/trunk/www/vicidial/admin.php b/agc_2-X/trunk/www/vicidial/admin.php index b63dc16c..24e45b1a 100644 --- a/agc_2-X/trunk/www/vicidial/admin.php +++ b/agc_2-X/trunk/www/vicidial/admin.php @@ -1998,6 +1998,8 @@ if (isset($_GET["usacan_phone_dialcode_fix"])) {$usacan_phone_dialcode_fix=$_ elseif (isset($_POST["usacan_phone_dialcode_fix"])) {$usacan_phone_dialcode_fix=$_POST["usacan_phone_dialcode_fix"];} if (isset($_GET["am_message_wildcards"])) {$am_message_wildcards=$_GET["am_message_wildcards"];} elseif (isset($_POST["am_message_wildcards"])) {$am_message_wildcards=$_POST["am_message_wildcards"];} +if (isset($_GET["cache_carrier_stats_realtime"])) {$cache_carrier_stats_realtime=$_GET["cache_carrier_stats_realtime"];} + elseif (isset($_POST["cache_carrier_stats_realtime"])) {$cache_carrier_stats_realtime=$_POST["cache_carrier_stats_realtime"];} if (isset($script_id)) {$script_id= strtoupper($script_id);} @@ -2361,6 +2363,7 @@ if ($non_latin < 1) $min_sec = preg_replace('/[^0-9]/','',$min_sec); $max_sec = preg_replace('/[^0-9]/','',$max_sec); $usacan_phone_dialcode_fix = preg_replace('/[^0-9]/','',$usacan_phone_dialcode_fix); + $cache_carrier_stats_realtime = preg_replace('/[^0-9]/','',$cache_carrier_stats_realtime); $drop_call_seconds = preg_replace('/[^-0-9]/','',$drop_call_seconds); $timer_alt_seconds = preg_replace('/[^-0-9]/','',$timer_alt_seconds); @@ -3629,12 +3632,13 @@ else # 151022-1404 - Added status groups admin, Added custom reports display and admin # 151030-0636 - Added usacan_phone_dialcode_fix system setting option, executed by keepalive at timeclock end of day # 151104-1518 - Added am_message_wildcards campaign option and amm-multi admin page +# 151124-1141 - Added cache_carrier_stats_realtime settings option # # make sure you have added a user to the vicidial_users MySQL table with at least user_level 9 to access this page the first time -$admin_version = '2.12-518a'; -$build = '151104-1518'; +$admin_version = '2.12-519a'; +$build = '151124-1141'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -15476,7 +15480,7 @@ if ($ADD==411111111111111) $custom_reports_slave_SQL=",custom_reports_use_slave_db='$custom_reports_slave_SQL'"; } - $stmt="UPDATE system_settings set use_non_latin='$use_non_latin',webroot_writable='$webroot_writable',enable_queuemetrics_logging='$enable_queuemetrics_logging',queuemetrics_server_ip='$queuemetrics_server_ip',queuemetrics_dbname='$queuemetrics_dbname',queuemetrics_login='$queuemetrics_login',queuemetrics_pass='$queuemetrics_pass',queuemetrics_url='$queuemetrics_url',queuemetrics_log_id='$queuemetrics_log_id',queuemetrics_eq_prepend='$queuemetrics_eq_prepend',vicidial_agent_disable='$vicidial_agent_disable',allow_sipsak_messages='$allow_sipsak_messages',admin_home_url='$admin_home_url',enable_agc_xfer_log='$enable_agc_xfer_log',timeclock_end_of_day='$timeclock_end_of_day',vdc_header_date_format='$vdc_header_date_format',vdc_customer_date_format='$vdc_customer_date_format',vdc_header_phone_format='$vdc_header_phone_format',vdc_agent_api_active='$vdc_agent_api_active',enable_vtiger_integration='$enable_vtiger_integration',vtiger_server_ip='$vtiger_server_ip',vtiger_dbname='$vtiger_dbname',vtiger_login='$vtiger_login',vtiger_pass='$vtiger_pass',vtiger_url='$vtiger_url',qc_features_active='$qc_features_active',outbound_autodial_active='$outbound_autodial_active',outbound_calls_per_second='$outbound_calls_per_second',enable_tts_integration='$enable_tts_integration',agentonly_callback_campaign_lock='$agentonly_callback_campaign_lock',sounds_central_control_active='$sounds_central_control_active',sounds_web_server='$sounds_web_server',sounds_web_directory='$sounds_web_directory',active_voicemail_server='$active_voicemail_server',auto_dial_limit='$auto_dial_limit',user_territories_active='$user_territories_active',allow_custom_dialplan='$allow_custom_dialplan',enable_second_webform='$enable_second_webform',default_webphone='$default_webphone',default_external_server_ip='$default_external_server_ip',webphone_url='" . mysqli_real_escape_string($link, $webphone_url) . "',enable_agc_dispo_log='$enable_agc_dispo_log',queuemetrics_loginout='$queuemetrics_loginout',callcard_enabled='$callcard_enabled',queuemetrics_callstatus='$queuemetrics_callstatus',default_codecs='$default_codecs',admin_web_directory='$admin_web_directory',label_title='$label_title',label_first_name='$label_first_name',label_middle_initial='$label_middle_initial',label_last_name='$label_last_name',label_address1='$label_address1',label_address2='$label_address2',label_address3='$label_address3',label_city='$label_city',label_state='$label_state',label_province='$label_province',label_postal_code='$label_postal_code',label_vendor_lead_code='$label_vendor_lead_code',label_gender='$label_gender',label_phone_number='$label_phone_number',label_phone_code='$label_phone_code',label_alt_phone='$label_alt_phone',label_security_phrase='$label_security_phrase',label_email='$label_email',label_comments='$label_comments',custom_fields_enabled='$custom_fields_enabled',slave_db_server='$slave_db_server',reports_use_slave_db='$reports_use_slave_db'$custom_reports_slave_SQL,webphone_systemkey='$webphone_systemkey',first_login_trigger='$first_login_trigger',default_phone_registration_password='$default_phone_registration_password',default_phone_login_password='$default_phone_login_password',default_server_password='$default_server_password',admin_modify_refresh='$admin_modify_refresh',nocache_admin='$nocache_admin',generate_cross_server_exten='$generate_cross_server_exten',queuemetrics_addmember_enabled='$queuemetrics_addmember_enabled',queuemetrics_dispo_pause='$queuemetrics_dispo_pause',label_hide_field_logs='$label_hide_field_logs',queuemetrics_pe_phone_append='$queuemetrics_pe_phone_append',test_campaign_calls='$test_campaign_calls',agents_calls_reset='$agents_calls_reset',default_voicemail_timezone='$default_voicemail_timezone',default_local_gmt='$default_local_gmt',noanswer_log='$noanswer_log',alt_log_server_ip='$alt_log_server_ip',alt_log_dbname='$alt_log_dbname',alt_log_login='$alt_log_login',alt_log_pass='$alt_log_pass',tables_use_alt_log_db='$tables_use_alt_log_db',did_agent_log='$did_agent_log',campaign_cid_areacodes_enabled='$campaign_cid_areacodes_enabled',pllb_grouping_limit='$pllb_grouping_limit',did_ra_extensions_enabled='$did_ra_extensions_enabled',expanded_list_stats='$expanded_list_stats',contacts_enabled='$contacts_enabled',call_menu_qualify_enabled='$call_menu_qualify_enabled',admin_list_counts='$admin_list_counts',allow_voicemail_greeting='$allow_voicemail_greeting',queuemetrics_socket='$queuemetrics_socket',queuemetrics_socket_url='$queuemetrics_socket_url',enhanced_disconnect_logging='$enhanced_disconnect_logging',allow_emails='$allow_emails',level_8_disable_add='$level_8_disable_add',queuemetrics_record_hold='$queuemetrics_record_hold',country_code_list_stats='$country_code_list_stats',queuemetrics_pause_type='$queuemetrics_pause_type',frozen_server_call_clear='$frozen_server_call_clear',callback_time_24hour='$callback_time_24hour',enable_languages='$enable_languages',language_method='$language_method',meetme_enter_login_filename='$meetme_enter_login_filename',meetme_enter_leave3way_filename='$meetme_enter_leave3way_filename',enable_did_entry_list_id='$enable_did_entry_list_id',enable_third_webform='$enable_third_webform',allow_chats='$allow_chats',chat_url='$chat_url',chat_timeout='$chat_timeout',agent_debug_logging='$agent_debug_logging',default_language='$default_language',agent_whisper_enabled='$agent_whisper_enabled',user_hide_realtime_enabled='$user_hide_realtime_enabled',usacan_phone_dialcode_fix='$usacan_phone_dialcode_fix'$custom_dialplanSQL;"; + $stmt="UPDATE system_settings set use_non_latin='$use_non_latin',webroot_writable='$webroot_writable',enable_queuemetrics_logging='$enable_queuemetrics_logging',queuemetrics_server_ip='$queuemetrics_server_ip',queuemetrics_dbname='$queuemetrics_dbname',queuemetrics_login='$queuemetrics_login',queuemetrics_pass='$queuemetrics_pass',queuemetrics_url='$queuemetrics_url',queuemetrics_log_id='$queuemetrics_log_id',queuemetrics_eq_prepend='$queuemetrics_eq_prepend',vicidial_agent_disable='$vicidial_agent_disable',allow_sipsak_messages='$allow_sipsak_messages',admin_home_url='$admin_home_url',enable_agc_xfer_log='$enable_agc_xfer_log',timeclock_end_of_day='$timeclock_end_of_day',vdc_header_date_format='$vdc_header_date_format',vdc_customer_date_format='$vdc_customer_date_format',vdc_header_phone_format='$vdc_header_phone_format',vdc_agent_api_active='$vdc_agent_api_active',enable_vtiger_integration='$enable_vtiger_integration',vtiger_server_ip='$vtiger_server_ip',vtiger_dbname='$vtiger_dbname',vtiger_login='$vtiger_login',vtiger_pass='$vtiger_pass',vtiger_url='$vtiger_url',qc_features_active='$qc_features_active',outbound_autodial_active='$outbound_autodial_active',outbound_calls_per_second='$outbound_calls_per_second',enable_tts_integration='$enable_tts_integration',agentonly_callback_campaign_lock='$agentonly_callback_campaign_lock',sounds_central_control_active='$sounds_central_control_active',sounds_web_server='$sounds_web_server',sounds_web_directory='$sounds_web_directory',active_voicemail_server='$active_voicemail_server',auto_dial_limit='$auto_dial_limit',user_territories_active='$user_territories_active',allow_custom_dialplan='$allow_custom_dialplan',enable_second_webform='$enable_second_webform',default_webphone='$default_webphone',default_external_server_ip='$default_external_server_ip',webphone_url='" . mysqli_real_escape_string($link, $webphone_url) . "',enable_agc_dispo_log='$enable_agc_dispo_log',queuemetrics_loginout='$queuemetrics_loginout',callcard_enabled='$callcard_enabled',queuemetrics_callstatus='$queuemetrics_callstatus',default_codecs='$default_codecs',admin_web_directory='$admin_web_directory',label_title='$label_title',label_first_name='$label_first_name',label_middle_initial='$label_middle_initial',label_last_name='$label_last_name',label_address1='$label_address1',label_address2='$label_address2',label_address3='$label_address3',label_city='$label_city',label_state='$label_state',label_province='$label_province',label_postal_code='$label_postal_code',label_vendor_lead_code='$label_vendor_lead_code',label_gender='$label_gender',label_phone_number='$label_phone_number',label_phone_code='$label_phone_code',label_alt_phone='$label_alt_phone',label_security_phrase='$label_security_phrase',label_email='$label_email',label_comments='$label_comments',custom_fields_enabled='$custom_fields_enabled',slave_db_server='$slave_db_server',reports_use_slave_db='$reports_use_slave_db'$custom_reports_slave_SQL,webphone_systemkey='$webphone_systemkey',first_login_trigger='$first_login_trigger',default_phone_registration_password='$default_phone_registration_password',default_phone_login_password='$default_phone_login_password',default_server_password='$default_server_password',admin_modify_refresh='$admin_modify_refresh',nocache_admin='$nocache_admin',generate_cross_server_exten='$generate_cross_server_exten',queuemetrics_addmember_enabled='$queuemetrics_addmember_enabled',queuemetrics_dispo_pause='$queuemetrics_dispo_pause',label_hide_field_logs='$label_hide_field_logs',queuemetrics_pe_phone_append='$queuemetrics_pe_phone_append',test_campaign_calls='$test_campaign_calls',agents_calls_reset='$agents_calls_reset',default_voicemail_timezone='$default_voicemail_timezone',default_local_gmt='$default_local_gmt',noanswer_log='$noanswer_log',alt_log_server_ip='$alt_log_server_ip',alt_log_dbname='$alt_log_dbname',alt_log_login='$alt_log_login',alt_log_pass='$alt_log_pass',tables_use_alt_log_db='$tables_use_alt_log_db',did_agent_log='$did_agent_log',campaign_cid_areacodes_enabled='$campaign_cid_areacodes_enabled',pllb_grouping_limit='$pllb_grouping_limit',did_ra_extensions_enabled='$did_ra_extensions_enabled',expanded_list_stats='$expanded_list_stats',contacts_enabled='$contacts_enabled',call_menu_qualify_enabled='$call_menu_qualify_enabled',admin_list_counts='$admin_list_counts',allow_voicemail_greeting='$allow_voicemail_greeting',queuemetrics_socket='$queuemetrics_socket',queuemetrics_socket_url='$queuemetrics_socket_url',enhanced_disconnect_logging='$enhanced_disconnect_logging',allow_emails='$allow_emails',level_8_disable_add='$level_8_disable_add',queuemetrics_record_hold='$queuemetrics_record_hold',country_code_list_stats='$country_code_list_stats',queuemetrics_pause_type='$queuemetrics_pause_type',frozen_server_call_clear='$frozen_server_call_clear',callback_time_24hour='$callback_time_24hour',enable_languages='$enable_languages',language_method='$language_method',meetme_enter_login_filename='$meetme_enter_login_filename',meetme_enter_leave3way_filename='$meetme_enter_leave3way_filename',enable_did_entry_list_id='$enable_did_entry_list_id',enable_third_webform='$enable_third_webform',allow_chats='$allow_chats',chat_url='$chat_url',chat_timeout='$chat_timeout',agent_debug_logging='$agent_debug_logging',default_language='$default_language',agent_whisper_enabled='$agent_whisper_enabled',user_hide_realtime_enabled='$user_hide_realtime_enabled',usacan_phone_dialcode_fix='$usacan_phone_dialcode_fix',cache_carrier_stats_realtime='$cache_carrier_stats_realtime'$custom_dialplanSQL;"; $rslt=mysql_to_mysqli($stmt, $link); if ( ($meetme_enter_login_filename != $SSmeetme_enter_login_filename) or ($meetme_enter_leave3way_filename != $SSmeetme_enter_leave3way_filename) ) @@ -31688,7 +31692,7 @@ if ($ADD==311111111111111) $ALLagent_count = $rowx[2]; } - $stmt="SELECT version,install_date,use_non_latin,webroot_writable,enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_url,queuemetrics_log_id,queuemetrics_eq_prepend,vicidial_agent_disable,allow_sipsak_messages,admin_home_url,enable_agc_xfer_log,db_schema_version,auto_user_add_value,timeclock_end_of_day,timeclock_last_reset_date,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,vdc_agent_api_active,qc_last_pull_time,enable_vtiger_integration,vtiger_server_ip,vtiger_dbname,vtiger_login,vtiger_pass,vtiger_url,qc_features_active,outbound_autodial_active,outbound_calls_per_second,enable_tts_integration,agentonly_callback_campaign_lock,sounds_central_control_active,sounds_web_server,sounds_web_directory,active_voicemail_server,auto_dial_limit,user_territories_active,allow_custom_dialplan,db_schema_update_date,enable_second_webform,default_webphone,default_external_server_ip,webphone_url,enable_agc_dispo_log,custom_dialplan_entry,queuemetrics_loginout,callcard_enabled,queuemetrics_callstatus,default_codecs,admin_web_directory,label_title,label_first_name,label_middle_initial,label_last_name,label_address1,label_address2,label_address3,label_city,label_state,label_province,label_postal_code,label_vendor_lead_code,label_gender,label_phone_number,label_phone_code,label_alt_phone,label_security_phrase,label_email,label_comments,custom_fields_enabled,slave_db_server,reports_use_slave_db,webphone_systemkey,first_login_trigger,default_phone_registration_password,default_phone_login_password,default_server_password,admin_modify_refresh,nocache_admin,generate_cross_server_exten,queuemetrics_addmember_enabled,queuemetrics_dispo_pause,label_hide_field_logs,queuemetrics_pe_phone_append,test_campaign_calls,agents_calls_reset,default_voicemail_timezone,default_local_gmt,noanswer_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_agent_log,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,queuemetrics_socket,queuemetrics_socket_url,enhanced_disconnect_logging,allow_emails,level_8_disable_add,pass_hash_enabled,pass_key,pass_cost,disable_auto_dial,queuemetrics_record_hold,country_code_list_stats,reload_timestamp,queuemetrics_pause_type,frozen_server_call_clear,callback_time_24hour,allow_chats,chat_url,chat_timeout,enable_languages,language_method,meetme_enter_login_filename,meetme_enter_leave3way_filename,enable_did_entry_list_id,enable_third_webform,agent_debug_logging,default_language,agent_whisper_enabled,user_hide_realtime_enabled,usacan_phone_dialcode_fix from system_settings;"; + $stmt="SELECT version,install_date,use_non_latin,webroot_writable,enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_url,queuemetrics_log_id,queuemetrics_eq_prepend,vicidial_agent_disable,allow_sipsak_messages,admin_home_url,enable_agc_xfer_log,db_schema_version,auto_user_add_value,timeclock_end_of_day,timeclock_last_reset_date,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,vdc_agent_api_active,qc_last_pull_time,enable_vtiger_integration,vtiger_server_ip,vtiger_dbname,vtiger_login,vtiger_pass,vtiger_url,qc_features_active,outbound_autodial_active,outbound_calls_per_second,enable_tts_integration,agentonly_callback_campaign_lock,sounds_central_control_active,sounds_web_server,sounds_web_directory,active_voicemail_server,auto_dial_limit,user_territories_active,allow_custom_dialplan,db_schema_update_date,enable_second_webform,default_webphone,default_external_server_ip,webphone_url,enable_agc_dispo_log,custom_dialplan_entry,queuemetrics_loginout,callcard_enabled,queuemetrics_callstatus,default_codecs,admin_web_directory,label_title,label_first_name,label_middle_initial,label_last_name,label_address1,label_address2,label_address3,label_city,label_state,label_province,label_postal_code,label_vendor_lead_code,label_gender,label_phone_number,label_phone_code,label_alt_phone,label_security_phrase,label_email,label_comments,custom_fields_enabled,slave_db_server,reports_use_slave_db,webphone_systemkey,first_login_trigger,default_phone_registration_password,default_phone_login_password,default_server_password,admin_modify_refresh,nocache_admin,generate_cross_server_exten,queuemetrics_addmember_enabled,queuemetrics_dispo_pause,label_hide_field_logs,queuemetrics_pe_phone_append,test_campaign_calls,agents_calls_reset,default_voicemail_timezone,default_local_gmt,noanswer_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_agent_log,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,queuemetrics_socket,queuemetrics_socket_url,enhanced_disconnect_logging,allow_emails,level_8_disable_add,pass_hash_enabled,pass_key,pass_cost,disable_auto_dial,queuemetrics_record_hold,country_code_list_stats,reload_timestamp,queuemetrics_pause_type,frozen_server_call_clear,callback_time_24hour,allow_chats,chat_url,chat_timeout,enable_languages,language_method,meetme_enter_login_filename,meetme_enter_leave3way_filename,enable_did_entry_list_id,enable_third_webform,agent_debug_logging,default_language,agent_whisper_enabled,user_hide_realtime_enabled,usacan_phone_dialcode_fix,cache_carrier_stats_realtime from system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $version = $row[0]; @@ -31829,6 +31833,7 @@ if ($ADD==311111111111111) $agent_whisper_enabled = $row[135]; $user_hide_realtime_enabled = $row[136]; $usacan_phone_dialcode_fix = $row[137]; + $cache_carrier_stats_realtime = $row[138]; if ($pass_hash_enabled > 0) {$pass_hash_enabled = 'ENABLED';} else {$pass_hash_enabled = 'DISABLED';} @@ -32072,6 +32077,8 @@ if ($ADD==311111111111111) echo ""._QXZ("Enhanced Disconnect Logging").": $NWB#settings-enhanced_disconnect_logging$NWE\n"; + echo ""._QXZ("Cached Realtime Carrier Stats").": $NWB#settings-cache_carrier_stats_realtime$NWE\n"; + echo ""._QXZ("Enable Campaign Areacode CID").": $NWB#settings-campaign_cid_areacodes_enabled$NWE\n"; echo ""._QXZ("Enable Remote Agent Extension Overrides").": $NWB#settings-did_ra_extensions_enabled$NWE\n"; diff --git a/agc_2-X/trunk/www/vicidial/admin_languages.php b/agc_2-X/trunk/www/vicidial/admin_languages.php index fd574c3d..5b2c640b 100644 --- a/agc_2-X/trunk/www/vicidial/admin_languages.php +++ b/agc_2-X/trunk/www/vicidial/admin_languages.php @@ -76,7 +76,7 @@ $PHP_SELF=$_SERVER['PHP_SELF']; ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,auto_dial_limit,user_territories_active,allow_custom_dialplan,callcard_enabled,admin_modify_refresh,nocache_admin,webroot_writable,allow_emails,active_modules,sounds_central_control_active,qc_features_active,contacts_enabled,enable_languages,language_method FROM system_settings;"; +$stmt = "SELECT use_non_latin,auto_dial_limit,user_territories_active,allow_custom_dialplan,callcard_enabled,admin_modify_refresh,nocache_admin,webroot_writable,allow_emails,active_modules,sounds_central_control_active,qc_features_active,contacts_enabled,enable_languages,language_method,admin_web_directory FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -98,6 +98,7 @@ if ($qm_conf_ct > 0) $SScontacts_enabled = $row[12]; $SSenable_languages = $row[13]; $SSlanguage_method = $row[14]; + $SSadmin_web_directory = $row[15]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -1372,7 +1373,7 @@ if ($ADD==363111111111) echo "\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "\n"; diff --git a/agc_2-X/trunk/www/vicidial/functions.php b/agc_2-X/trunk/www/vicidial/functions.php index 4a16623f..ade65ef1 100644 --- a/agc_2-X/trunk/www/vicidial/functions.php +++ b/agc_2-X/trunk/www/vicidial/functions.php @@ -1245,6 +1245,21 @@ function MathZDC($dividend, $divisor, $quotient=0) } } +function use_archive_table($table_name) + { + global $link; + $tbl_stmt="show tables like '".$table_name."_archive'"; + $tbl_rslt=mysql_to_mysqli($tbl_stmt, $link); + if (mysqli_num_rows($tbl_rslt)>0) + { + $tbl_row=mysqli_fetch_row($tbl_rslt); + return $tbl_row[0]; + } + else + { + return $table_name; + } + } # function to print/echo content, options for length, alignment and ordered internal variables are included function _QXZ($English_text, $sprintf=0, $align="l", $v_one='', $v_two='', $v_three='', $v_four='', $v_five='', $v_six='', $v_seven='', $v_eight='', $v_nine='') diff --git a/agc_2-X/trunk/www/vicidial/help.php b/agc_2-X/trunk/www/vicidial/help.php index a0040804..c195a746 100644 --- a/agc_2-X/trunk/www/vicidial/help.php +++ b/agc_2-X/trunk/www/vicidial/help.php @@ -66,6 +66,7 @@ # 151020-0704 - Added Status Groups and Custom Reports entries # 151030-0639 - Added usacan_phone_dialcode_fix entry # 151104-1541 - Added am_message_wildcards entry +# 151121-1144 - Added cache_carrier_stats_realtime # @@ -4885,6 +4886,11 @@ FR_SPAC 00 00 00 00 00 - - +
+ +
+ - +