├── README.md ├── agents.txt ├── answered.php ├── asmanager.php ├── auxstate_helper.php ├── bar.swf ├── barstack.swf ├── config.php ├── css ├── basic.css ├── fixed-all.css ├── fixed-ie.css ├── tab.css └── table.css ├── db.sql ├── dblib.php ├── distribution.php ├── export.php ├── font ├── courier.php ├── helvetica.php ├── helveticab.php ├── helveticabi.php ├── helveticai.php ├── symbol.php ├── times.php ├── timesb.php ├── timesbi.php ├── timesi.php └── zapfdingbats.php ├── fpdf.php ├── images ├── blank.gif ├── col_bg.gif ├── excel.gif ├── go-first.png ├── go-last.png ├── go-next.png ├── go-previous.png ├── go-up.png ├── pdf.gif └── vertical_logo.gif ├── index.php ├── js ├── flashobject.js ├── prototype-1.4.0.js ├── sorttable.js ├── validmonth.js └── wz_tooltip.js ├── lang ├── de.php ├── en.php ├── es.php ├── fr.php ├── pt_BR.php └── ru.php ├── logout.php ├── menu.php ├── misc.php ├── pngbehavior.htc ├── realtime.php ├── realtime_agents.php ├── realtime_functions.php ├── realtime_qdetail.php ├── realtime_qsummary.php ├── sesvars.php ├── set_sesvar.php ├── stats.php └── unanswered.php /README.md: -------------------------------------------------------------------------------- 1 | # queue-stats 2 | Asterisk Call Center Stats Extended 3 | https://asterisk-pbx.ru/wiki/soft/call_center/asternic-call-center-stats 4 | -------------------------------------------------------------------------------- /agents.txt: -------------------------------------------------------------------------------- 1 | 2nX9F,Agent 1 -------------------------------------------------------------------------------- /asmanager.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | // AMI Class based on phpagi-asmanager.php by 23 | // Matthew Asham 24 | 25 | class AsteriskManager 26 | { 27 | var $socket = NULL; 28 | var $server; 29 | var $port; 30 | 31 | function AsteriskManager() { } 32 | 33 | function send_request($action, $parameters=array()) { 34 | $command = "Action: $action\r\n"; 35 | foreach($parameters as $var=>$val) { 36 | $command .= "$var: $val\r\n"; 37 | } 38 | $command .= "\r\n"; 39 | fwrite($this->socket, $command); 40 | return $this->get_response(true); 41 | } 42 | 43 | function get_response($allow_timeout=false) { 44 | $timeout = false; 45 | do { 46 | $type = NULL; 47 | $parameters = array(); 48 | 49 | if (feof($this->socket)) { 50 | return false; 51 | } 52 | $buffer = trim(fgets($this->socket, 4096)); 53 | while($buffer != '') { 54 | $a = strpos($buffer, ':'); 55 | if($a) { 56 | if(!count($parameters)) { // first line in a response? 57 | $type = strtolower(substr($buffer, 0, $a)); 58 | if(substr($buffer, $a + 2) == 'Follows') { 59 | // A follows response means there is a multiline field that follows. 60 | $parameters['data'] = ''; 61 | $buff = fgets($this->socket, 4096); 62 | while(substr($buff, 0, 6) != '--END ') { 63 | $parameters['data'] .= $buff; 64 | $buff = fgets($this->socket, 4096); 65 | } 66 | } 67 | } 68 | 69 | // store parameter in $parameters 70 | $parameters[substr($buffer, 0, $a)] = substr($buffer, $a + 2); 71 | } 72 | $buffer = trim(fgets($this->socket, 4096)); 73 | } 74 | 75 | // process response 76 | switch($type) { 77 | case '': // timeout occured 78 | $timeout = $allow_timeout; 79 | break; 80 | case 'event': 81 | // Process event with $parameters ? 82 | break; 83 | case 'response': 84 | break; 85 | default: 86 | // $this->log('Unhandled response packet from Manager: ' . print_r($parameters, true)); 87 | break; 88 | } 89 | } while($type != 'response' && !$timeout); 90 | return $parameters; 91 | } 92 | 93 | function connect($server='localhost', $username='admin', $secret='amp111') { 94 | // Extract port if specified 95 | if(strpos($server, ':') !== false) { 96 | $parts = explode(':', $server); 97 | $this->server = $parts[0]; 98 | $this->port = $parts[1]; 99 | } else { 100 | $this->server = $server; 101 | $this->port = "5038"; 102 | } 103 | 104 | $errno = $errstr = NULL; 105 | $this->socket = @fsockopen($this->server, $this->port, $errno, $errstr); 106 | if(!$this->socket) { 107 | $this->log("Unable to connect to manager {$this->server}:{$this->port} ($errno): $errstr"); 108 | return false; 109 | } 110 | 111 | // read the header 112 | $str = fgets($this->socket); 113 | if($str == false) { 114 | $this->log("Asterisk Manager header not received."); 115 | return false; 116 | } 117 | // login 118 | $res = $this->send_request('login', array('Username'=>$username, 'Secret'=>$secret)); 119 | 120 | if(false) { 121 | $this->log("Failed to login."); 122 | $this->disconnect(); 123 | return false; 124 | } 125 | return true; 126 | } 127 | 128 | function disconnect() { 129 | $this->logoff(); 130 | fclose($this->socket); 131 | } 132 | 133 | function Command($command) { 134 | return $this->send_request('Command', array('Command'=>$command)); 135 | } 136 | 137 | function ExtensionState($exten, $context='', $actionid='') { 138 | return $this->send_request('ExtensionState', array('Exten'=>$exten, 'Context'=>$context, 'ActionID'=>$actionid)); 139 | } 140 | 141 | function Hangup($channel) { 142 | return $this->send_request('Hangup', array('Channel'=>$channel)); 143 | } 144 | 145 | function Logoff() { 146 | return $this->send_request('Logoff'); 147 | } 148 | 149 | function log($message, $level=1) 150 | { 151 | error_log(date('r') . ' - ' . $message); 152 | } 153 | } 154 | ?> 155 | -------------------------------------------------------------------------------- /auxstate_helper.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | $time = microtime(); 23 | $time = explode(' ', $time); 24 | $time = $time[1] + $time[0]; 25 | $begintime = $time; 26 | $inuse = Array(); 27 | $dict_queue = Array(); 28 | 29 | require("config.php"); 30 | require("asmanager.php"); 31 | require("realtime_functions.php"); 32 | if(isset($_SESSION['QSTATS']['hideloggedoff'])) { 33 | $ocultar= $_SESSION['QSTATS']['hideloggedoff']; 34 | } else { 35 | $ocultar="false"; 36 | } 37 | if(isset($_SESSION['QSTATS']['filter'])) { 38 | $filter= $_SESSION['QSTATS']['filter']; 39 | } else { 40 | $filter=""; 41 | } 42 | 43 | 44 | $am=new AsteriskManager(); 45 | $am->connect($manager_host,$manager_user,$manager_secret); 46 | 47 | $channels = get_channels ($am); 48 | //echo "
";print_r($channels);echo "
"; 49 | foreach($channels as $ch=>$chv) { 50 | list($chan,$ses) = explode("-",$ch,2); 51 | $inuse["$chan"]=$ch; 52 | } 53 | 54 | $queues = get_queues ($am,$channels); 55 | //echo "
 queue";print_r($queues);echo "
"; 56 | 57 | foreach ($queues as $key=>$val) { 58 | $queue[] = $key; 59 | } 60 | 61 | echo " ".$lang[$language]['hide_loggedoff']."\n"; 64 | 65 | include("realtime_agents.php"); 66 | include("realtime_qsummary.php"); 67 | include("realtime_qdetail.php"); 68 | 69 | $time = microtime(); 70 | $time = explode(" ", $time); 71 | $time = $time[1] + $time[0]; 72 | $endtime = $time; 73 | $totaltime = ($endtime - $begintime); 74 | echo "

".$lang[$language]['server_time']." ".date('Y-m-d H:i:s')."
"; 75 | echo $lang[$language]['php_parsed']." $totaltime ".$lang[$language]['seconds']; 76 | ?> 77 | 78 | -------------------------------------------------------------------------------- /bar.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/bar.swf -------------------------------------------------------------------------------- /barstack.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/barstack.swf -------------------------------------------------------------------------------- /config.php: -------------------------------------------------------------------------------- 1 | 33 | -------------------------------------------------------------------------------- /css/basic.css: -------------------------------------------------------------------------------- 1 | html { min-width: 600px; } 2 | 3 | body { 4 | font-size: 12px; 5 | font-family: verdana,sans-serif; 6 | } 7 | 8 | div, caption, td, th, h2, h3, h4 { /* redundant rules for bad browsers */ 9 | font-size: 12px; 10 | font-family: verdana,sans-serif; 11 | voice-family: "\"}\""; 12 | voice-family: inherit; 13 | color: #333; 14 | } 15 | .clearhack { display: inline; } /*Clears Box Model Hack in IE5*/ 16 | 17 | body { 18 | background: #99cccc; 19 | color: #333; 20 | margin: 0; /* margin and padding only necessary to cater for Mac IE5 */ 21 | padding: 0; 22 | } 23 | 24 | a { color: #06C; } 25 | a:hover { color: #333; } 26 | a:active { color: #000; } 27 | 28 | p { line-height: 140%; } 29 | 30 | h1,h2 { 31 | font-family: trebuchet ms; 32 | font-weight: bold; 33 | color: #333; 34 | } 35 | 36 | h1 { 37 | font-size: 180%; 38 | margin: 0; 39 | } 40 | 41 | h1 a { text-decoration: none; color: #333; } 42 | h1 a:hover { border-bottom: 1px dotted #666; color: #000; } 43 | 44 | h2 { 45 | font-size: 140%; 46 | padding-bottom: 2px; 47 | padding-top: 15px; 48 | border-bottom: 1px solid #CCC; 49 | margin: 0; 50 | } 51 | 52 | p.note { 53 | background: #EEE; 54 | padding: 4px; 55 | font-family: tahoma; 56 | font-size: 85%; 57 | line-height: 130%; 58 | margin-top: 0; 59 | } 60 | 61 | #icon { 62 | width: 16px; 63 | height: 16px; 64 | padding: 0; 65 | margin-top: 12px; 66 | margin-bottom: 12px; 67 | } 68 | 69 | #rest { 70 | width: 100%; 71 | } 72 | 73 | #left { 74 | float: left; 75 | width:45%; 76 | } 77 | #right { 78 | width: 45%; 79 | float: right; 80 | } 81 | 82 | 83 | * { 84 | margin: 0; 85 | } 86 | html, body { 87 | height: 100%; 88 | } 89 | .wrapper { 90 | min-height: 100%; 91 | height: auto !important; 92 | height: 100%; 93 | margin: 0 auto -4em; 94 | } 95 | .footer, .push { 96 | height: 4em; 97 | } 98 | 99 | -------------------------------------------------------------------------------- /css/fixed-all.css: -------------------------------------------------------------------------------- 1 | body 2 | { 3 | margin: 0; 4 | padding: 0 0 0 38px; 5 | color: #000; 6 | background: #e6e6e6; 7 | font-size: 1em; 8 | } 9 | div#sidebar 10 | /*{ 11 | overflow: auto; 12 | height: 100%; 13 | width: 37px; 14 | position: absolute; 15 | top: 0; 16 | left: 0; 17 | color: #000; 18 | background: #fffdf3; 19 | background-color: #fffdf3; 20 | background-image: url(../images/vertical_logo.gif); 21 | background-repeat: no-repeat; 22 | } */ 23 | div#content 24 | { 25 | padding:0px; 26 | background: #99cccc; 27 | } 28 | 29 | @media screen 30 | { 31 | body>div#sidebar 32 | { 33 | position: fixed; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /css/fixed-ie.css: -------------------------------------------------------------------------------- 1 | body 2 | { 3 | height: 100%; 4 | overflow: hidden; 5 | font-size: 100%; 6 | } 7 | div#content 8 | { 9 | width: 100%; 10 | height: 100%; 11 | overflow: auto; 12 | background: #99cccc; 13 | } 14 | table { 15 | width: 95%; 16 | } 17 | -------------------------------------------------------------------------------- /css/tab.css: -------------------------------------------------------------------------------- 1 | #main { 2 | border: 1px solid #666; 3 | clear: both; 4 | background: #ffffff; 5 | padding-top: 2em; 6 | } 7 | 8 | #contents { 9 | padding: 1.5em; 10 | background: #ffffff; 11 | min-height: 300px; 12 | } 13 | 14 | #header { 15 | position: relative; 16 | width: 100%; 17 | height: 2.5em; 18 | width: 70em; /* a width is required for Opera, older Mozilla browsers, and Konqueror browsers */ 19 | } 20 | 21 | #header ul#primary { 22 | margin: 0; 23 | padding: 0; 24 | position: absolute; 25 | bottom: -1px; 26 | width: 60em; /* a width is required for Opera, older Mozilla browsers, and Konqueror browsers */ 27 | } 28 | 29 | #header ul#primary li { 30 | display: inline; 31 | list-style: none; 32 | } 33 | 34 | #header ul#primary a,#header ul#primary span,#header ul#primary a.current { 35 | width: 8em; 36 | display: block; 37 | float: left; 38 | padding: 4px 0; 39 | margin: 1px 2px 0 0; 40 | text-align: center; 41 | font-family: tahoma, verdana, sans-serif; 42 | font-size: 1em; 43 | text-decoration: none; 44 | color: #333; 45 | } 46 | 47 | #header ul#primary span,#header ul#primary a.current,#header ul#primary a.current:hover { 48 | border: 1px solid #666; 49 | border-bottom: none; 50 | background: #ffffff; 51 | padding-bottom: 6px; 52 | margin-top: 0; 53 | } 54 | 55 | #header ul#primary a { 56 | background: #f0f0f5; 57 | border: 1px solid #AAA; 58 | border-bottom: none; 59 | } 60 | 61 | #header ul#primary a:hover { 62 | margin-top: 0; 63 | border-color: #666; 64 | background: #ffffff; 65 | padding-bottom: 5px; 66 | } 67 | 68 | #header ul#secondary { 69 | position: absolute; 70 | margin: 0; 71 | padding: 0; 72 | bottom: -1.4em; 73 | left: 1px; 74 | width: 75em; /* a width is required for Opera, older Mozilla browsers, and Konqueror browsers */ 75 | } 76 | 77 | #header ul#secondary li a,#header ul#secondary li span { 78 | width: auto; 79 | display: block; 80 | float: left; 81 | padding: 0 10px; 82 | margin: 0; 83 | text-align: auto; 84 | border: none; 85 | border-right: 1px dotted #AAA; 86 | background: none; 87 | 88 | } 89 | 90 | #header ul#secondary li a { 91 | color: #06C; 92 | text-decoration: underline; 93 | } 94 | 95 | #header ul#secondary li a:hover { 96 | color: #333; 97 | background: transparent; 98 | padding: 0 10px; 99 | border: none; 100 | border-right: 1px dotted #AAA; 101 | } 102 | 103 | #header ul#secondary li a:active { 104 | color: #000; 105 | background: transparent; 106 | } 107 | 108 | #header ul#secondary li:last-child a { border: none; } 109 | -------------------------------------------------------------------------------- /css/table.css: -------------------------------------------------------------------------------- 1 | /* 2 | ===================================== 3 | * Data Tables and Cascading Style Sheets Gallery * 4 | * http://icant.co.uk/csstablegallery/index.php * 5 | * Author: Velizar Garvalov at http://www.vhg-design.com/ * 6 | ===================================== 7 | */ 8 | 9 | table { 10 | width: 99%; 11 | margin:0; 12 | padding:0; 13 | font-family: "Trebuchet MS", Trebuchet, Arial, sans-serif; 14 | color: #1c5d79; 15 | 16 | } 17 | table, tr, th, td { 18 | border-collapse: collapse; 19 | } 20 | caption { 21 | margin:0; 22 | padding:0; 23 | background: #f3f3f3; 24 | height: 40px; 25 | line-height: 40px; 26 | text-indent: 2px; 27 | font-family: "Trebuchet MS", Trebuchet, Arial, sans-serif; 28 | font-size: 140%; 29 | font-weight: bold; 30 | color: #000; 31 | text-align: left; 32 | letter-spacing: 1px; 33 | border-top: dashed 1px #c2c2c2; 34 | border-bottom: dashed 1px #c2c2c2; 35 | } 36 | 37 | /* HEAD */ 38 | 39 | thead { 40 | background-color: #FFFFFF; 41 | border: none; 42 | } 43 | thead tr th { 44 | height: 32px; 45 | aline-height: 32px; 46 | text-align: center; 47 | color: #1c5d79; 48 | background-image: url(../images/col_bg.gif); 49 | background-repeat: repeat; 50 | border-left:solid 1px #FF9900; 51 | border-right:solid 1px #FF9900; 52 | border-collapse: collapse; 53 | 54 | } 55 | 56 | /* BODY */ 57 | 58 | tbody tr { 59 | background: #dfedf3; 60 | font-size: 110%; 61 | } 62 | tbody tr.odd { 63 | background: #F0FFFF; 64 | } 65 | tbody tr:hover, tbody tr.odd:hover { 66 | background: #ffffff; 67 | } 68 | tbody tr th, tbody tr td { 69 | padding: 6px; 70 | border: solid 1px #326e87; 71 | } 72 | tbody tr th { 73 | background: #1c5d79; 74 | font-family: "Trebuchet MS", Trebuchet, Arial, sans-serif; 75 | font-size: 100%; 76 | padding: 6px; 77 | text-align: center; 78 | font-weight: bold; 79 | color: #FFFFFF; 80 | border-bottom: solid 1px white; 81 | } 82 | tbody tr th:hover { 83 | background: #ffffff; 84 | 85 | } 86 | 87 | /* LINKS */ 88 | 89 | table a { 90 | color: #FF6600; 91 | text-decoration: none; 92 | font-size: 110%; 93 | //border-bottom: solid 1px white; 94 | } 95 | table a:hover { 96 | color: #FF9900; 97 | border-bottom: none; 98 | } 99 | 100 | /* FOOTER */ 101 | 102 | tfoot { 103 | background: #f3f3f3; 104 | height: 24px; 105 | line-height: 24px; 106 | font-family: "Trebuchet MS", Trebuchet, Arial, sans-serif; 107 | font-size: 120%; 108 | font-weight: bold; 109 | color: #555d6d; 110 | text-align: center; 111 | letter-spacing: 3px; 112 | border-top: solid 2px #326e87; 113 | border-bottom: dashed 1px #c2c2c2; 114 | } 115 | tfoot tr th, tfoot tr td { 116 | /*padding: .1em .6em;*/ 117 | 118 | } 119 | tfoot tr th { 120 | border-top: solid 1px #326e87; 121 | } 122 | tfoot tr td { 123 | text-align: right; 124 | 125 | } 126 | 127 | /* Sortable tables */ 128 | table.sortable a.sortheader { 129 | text-decoration: none; 130 | display: block; 131 | color: #1c5d79; 132 | xcolor: #000000; 133 | } 134 | table.sortable span.sortarrow { 135 | color: black; 136 | text-decoration: none; 137 | } 138 | -------------------------------------------------------------------------------- /db.sql: -------------------------------------------------------------------------------- 1 | -- MySQL dump 10.13 Distrib 5.7.16, for Linux (x86_64) 2 | -- 3 | -- Host: localhost Database: asterisk 4 | -- ------------------------------------------------------ 5 | -- Server version 5.7.16-0ubuntu0.16.04.1 6 | 7 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 8 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 9 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 10 | /*!40101 SET NAMES utf8 */; 11 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; 12 | /*!40103 SET TIME_ZONE='+00:00' */; 13 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 14 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 15 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 16 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 17 | 18 | -- 19 | -- Table structure for table `cdr` 20 | -- 21 | 22 | DROP TABLE IF EXISTS `cdr`; 23 | /*!40101 SET @saved_cs_client = @@character_set_client */; 24 | /*!40101 SET character_set_client = utf8 */; 25 | CREATE TABLE `cdr` ( 26 | `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 27 | `calldate` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', 28 | `clid` varchar(80) COLLATE utf8_bin NOT NULL DEFAULT '', 29 | `src` varchar(80) COLLATE utf8_bin NOT NULL DEFAULT '', 30 | `dst` varchar(80) COLLATE utf8_bin NOT NULL DEFAULT '', 31 | `dcontext` varchar(80) COLLATE utf8_bin NOT NULL DEFAULT '', 32 | `lastapp` varchar(200) COLLATE utf8_bin NOT NULL DEFAULT '', 33 | `lastdata` varchar(200) COLLATE utf8_bin NOT NULL DEFAULT '', 34 | `duration` float unsigned DEFAULT NULL, 35 | `billsec` float unsigned DEFAULT NULL, 36 | `disposition` enum('ANSWERED','BUSY','FAILED','NO ANSWER','CONGESTION') COLLATE utf8_bin DEFAULT NULL, 37 | `channel` varchar(50) COLLATE utf8_bin DEFAULT NULL, 38 | `dstchannel` varchar(50) COLLATE utf8_bin DEFAULT NULL, 39 | `amaflags` varchar(50) COLLATE utf8_bin DEFAULT NULL, 40 | `accountcode` varchar(20) COLLATE utf8_bin DEFAULT NULL, 41 | `uniqueid` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '', 42 | `userfield` float unsigned DEFAULT NULL, 43 | `answer` datetime NOT NULL, 44 | `end` datetime NOT NULL, 45 | PRIMARY KEY (`id`), 46 | KEY `calldate` (`calldate`), 47 | KEY `dst` (`dst`), 48 | KEY `src` (`src`), 49 | KEY `dcontext` (`dcontext`), 50 | KEY `clid` (`clid`) 51 | ) ENGINE=InnoDB AUTO_INCREMENT=15589 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 52 | /*!40101 SET character_set_client = @saved_cs_client */; 53 | 54 | -- 55 | -- Table structure for table `queue_log` 56 | -- 57 | 58 | DROP TABLE IF EXISTS `queue_log`; 59 | /*!40101 SET @saved_cs_client = @@character_set_client */; 60 | /*!40101 SET character_set_client = utf8 */; 61 | CREATE TABLE `queue_log` ( 62 | `time` varchar(32) DEFAULT NULL, 63 | `callid` char(64) DEFAULT NULL, 64 | `queuename` char(64) DEFAULT NULL, 65 | `agent` char(64) DEFAULT NULL, 66 | `event` char(32) DEFAULT NULL, 67 | `data` char(64) DEFAULT NULL, 68 | `data1` char(64) DEFAULT NULL, 69 | `data2` char(64) DEFAULT NULL, 70 | `data3` char(64) DEFAULT NULL, 71 | `data4` char(64) DEFAULT NULL, 72 | `data5` char(64) DEFAULT NULL 73 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 74 | /*!40101 SET character_set_client = @saved_cs_client */; 75 | /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; 76 | 77 | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 78 | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 79 | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 80 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 81 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 82 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 83 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 84 | 85 | -- Dump completed on 2016-12-26 22:31:55 86 | -------------------------------------------------------------------------------- /dblib.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | if (!isset($DB_MUERE)) { $DB_MUERE = false; } 23 | if (!isset($DB_DEBUG)) { $DB_DEBUG = true; } 24 | 25 | function conecta_db($dbhost, $dbname, $dbuser, $dbpass) { 26 | /* conecta a la base de datos $dbname en el host $dbhost con el nombre y clave 27 | * $dbuser y $dbpass. */ 28 | 29 | global $DB_MUERE, $DB_DEBUG; 30 | 31 | if (! $dbh = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname)) { 32 | if ($DB_DEBUG) { 33 | echo "

No pude conectar a $dbhost como $dbuser

"; 34 | echo "

Error de MySQL: ", mysqli_error(); 35 | } else { 36 | echo "

Error

"; 37 | } 38 | 39 | if ($DB_MUERE) { 40 | echo "

Este script no puede continuar. Abortando..."; 41 | die(); 42 | } 43 | } 44 | /* 45 | if (! mysqli_select_db($dbname)) { 46 | if ($DB_DEBUG) { 47 | echo "

Imposible seleccionar la tabla $dbname

"; 48 | echo "

Error de MySQL: ", mysql_error(); 49 | } else { 50 | echo "

Error en la Base de Datos

"; 51 | } 52 | 53 | if ($DB_MUERE) { 54 | echo "

Este script no puede continuar. Abortando..."; 55 | die(); 56 | } 57 | } 58 | */ 59 | return $dbh; 60 | } 61 | 62 | function desconecta_db() { 63 | /* desconecta de la base de datos, normalmente no se usa ya que PHP 64 | * lo hace por su cuenta */ 65 | 66 | mysqli_close(); 67 | } 68 | 69 | function consulta_db($query, $debug=false, $die_on_debug=true, $silent=false,$midb) { 70 | /* ejecuta la consulta $query en la base de datos en uso. Si $debug es verdadero 71 | * vamos a mostrar la consulta en pantalla. Si $die_on_debug es verdadero, y 72 | * $debug es verdadero, detendremos el script luego de imprimir el error, 73 | * si no ejecutaremos la consulta. Si $silent es verdadero entonces suprimiremos 74 | * todos los mensajes de error, si no diremos que ha ocurrido un error 75 | * en la base de datos */ 76 | 77 | global $DB_MUERE, $DB_DEBUG; 78 | 79 | if ($debug) { 80 | echo "

" . htmlspecialchars($query) . "
"; 81 | 82 | if ($die_on_debug) die; 83 | } 84 | 85 | $qid = mysqli_query($midb,$query); 86 | 87 | if (! $qid && ! $silent) { 88 | if ($DB_DEBUG) { 89 | echo "

No pude ejecutar la consulta

"; 90 | echo "
" . htmlspecialchars($query) . "
"; 91 | echo "

Error de MySQL: ", mysqli_error(); 92 | } else { 93 | // echo "

Error 1en la Base de Datos

"; 94 | } 95 | 96 | if ($DB_MUERE) { 97 | echo "

Este script no puede continuar. Abortando..."; 98 | die(); 99 | } 100 | } 101 | 102 | return $qid; 103 | } 104 | 105 | function db_fetch_array($qid) { 106 | /* devuelve un array asociativo con la siguiente columna devuelta por la 107 | * consulta identificada por $qid. Si no hay mas resultados, devuelve FALSE */ 108 | 109 | return mysqli_fetch_array($qid); 110 | } 111 | 112 | function db_fetch_row($qid) { 113 | /* grab the next row from the query result identifier $qid, and return it 114 | * as an array. if there are no more results, return FALSE */ 115 | 116 | return mysqli_fetch_row($qid); 117 | } 118 | 119 | function db_fetch_object($qid) { 120 | /* grab the next row from the query result identifier $qid, and return it 121 | * as an object. if there are no more results, return FALSE */ 122 | 123 | return mysqli_fetch_object($qid); 124 | } 125 | 126 | function db_num_rows($qid) { 127 | /* return the number of records (rows) returned from the SELECT query with 128 | * the query result identifier $qid. */ 129 | 130 | return mysqli_num_rows($qid); 131 | } 132 | 133 | function db_affected_rows() { 134 | /* return the number of rows affected by the last INSERT, UPDATE, or DELETE 135 | * query */ 136 | 137 | return mysqli_affected_rows(); 138 | } 139 | 140 | function db_insert_id() { 141 | /* if you just INSERTed a new row into a table with an autonumber, call this 142 | * function to give you the ID of the new autonumber value */ 143 | 144 | return mysqli_insert_id(); 145 | } 146 | 147 | function db_free_result($qid) { 148 | /* libera los recursos utilizados por la consulta identificada por $qid */ 149 | 150 | mysqli_free_result($qid); 151 | } 152 | 153 | function db_num_fields($qid) { 154 | /* devuelve el numero de campos devueltos por el SELECT identificado 155 | * por $qid */ 156 | 157 | return mysqli_num_fields($qid); 158 | } 159 | 160 | function db_field_name($qid, $fieldno) { 161 | /* devuelve el nombre del campo $fieldno devuelto por el SELECT identificado 162 | * por $qid */ 163 | 164 | return mysqli_field_name($qid, $fieldno); 165 | } 166 | 167 | function db_data_seek($qid, $row) { 168 | /* move the database cursor to row $row on the SELECT query with the identifier 169 | * $qid */ 170 | 171 | if (db_num_rows($qid)) { return mysqli_data_seek($qid, $row); } 172 | } 173 | ?> 174 | 175 | -------------------------------------------------------------------------------- /export.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | require_once("config.php"); 23 | require('fpdf.php'); 24 | 25 | class PDF extends FPDF 26 | { 27 | 28 | function Footer() 29 | { 30 | global $lang; 31 | global $language; 32 | //Go to 1.5 cm from bottom 33 | $this->SetY(-15); 34 | //Select Arial italic 8 35 | $this->SetFont('Arial','I',8); 36 | //Print centered page number 37 | $this->Cell(0,10,$lang["$language"]['page'].' '.$this->PageNo(),0,0,'C'); 38 | } 39 | 40 | function Cover($cover) 41 | { 42 | $this->SetFont('Arial','',15); 43 | $this->MultiCell(150,9,$cover); 44 | $this->Ln(); 45 | } 46 | 47 | function Header() 48 | { 49 | global $title; 50 | //Select Arial bold 15 51 | $this->SetFont('Arial','B',15); 52 | //Move to the right 53 | $this->Cell(85); 54 | //Framed title 55 | $this->Cell(30,10,$title,0,0,'C'); 56 | //Line break 57 | $this->Ln(10); 58 | } 59 | 60 | function TableHeader($header,$w) 61 | { 62 | $this->SetFillColor(255,0,0); 63 | $this->SetTextColor(255); 64 | $this->SetDrawColor(128,0,0); 65 | $this->SetLineWidth(.3); 66 | $this->SetFont('','B',11); 67 | 68 | for($i=0;$iCell($w[$i],10,$header[$i],1,0,'C',1); 70 | $this->Ln(); 71 | } 72 | 73 | //Colored table 74 | function FancyTable($header,$data,$w) 75 | { 76 | 77 | $this->TableHeader($header,$w); 78 | 79 | //Color and font restoration 80 | $this->SetFillColor(224,235,255); 81 | $this->SetTextColor(0); 82 | $this->SetFont(''); 83 | //Data 84 | $fill=0; 85 | $supercont=1; 86 | foreach($data as $row) 87 | { 88 | $contador=0; 89 | foreach($row as $valor) { 90 | $this->Cell($w[$contador],6,$valor,'LR',0,'C',$fill); 91 | $contador++; 92 | } 93 | $this->Ln(); 94 | $fill=!$fill; 95 | if($supercont%40 == 0) { 96 | $this->Cell(array_sum($w),0,'','T'); 97 | $this->AddPage(); 98 | $this->TableHeader($header,$w); 99 | $this->SetFillColor(224,235,255); 100 | $this->SetTextColor(0); 101 | $this->SetFont(''); 102 | } 103 | $supercont++; 104 | } 105 | $this->Cell(array_sum($w),0,'','T'); 106 | } 107 | } 108 | 109 | function export_csv($header,$data) 110 | { 111 | //header("Content-Type: application/csv-tab-delimited-table"); 112 | header("Content-Type: text/csv"); 113 | header("Content-disposition: filename=table.csv"); 114 | 115 | $linea=""; 116 | foreach($header as $valor) { 117 | $linea.=iconv("UTF-8", "CP1251", "$valor;"); 118 | } 119 | $linea=substr($linea,0,-1); 120 | 121 | print $linea."\r\n"; 122 | 123 | foreach($data as $valor) { 124 | $linea=""; 125 | foreach($valor as $subvalor) { 126 | $linea.=iconv("UTF-8", "CP1251", "$subvalor;"); 127 | // $linea.="\"$subvalor\","; 128 | } 129 | $linea=substr($linea,0,-1); 130 | print $linea."\r\n"; 131 | } 132 | } 133 | 134 | $header = unserialize(rawurldecode($_POST['head'])); 135 | $data = unserialize(rawurldecode($_POST['rawdata'])); 136 | $width = unserialize(rawurldecode($_POST['width'])); 137 | $title = unserialize(rawurldecode($_POST['title'])); 138 | $cover = unserialize(rawurldecode($_POST['cover'])); 139 | 140 | if(isset($_POST['pdf']) || isset($_POST['pdf_x'])) { 141 | $pdf=new PDF(); 142 | $pdf->SetFont('Arial','',12); 143 | $pdf->SetAutoPageBreak(true); 144 | $pdf->SetLeftMargin(1); 145 | $pdf->SetRightMargin(1); 146 | $pdf->AddPage(); 147 | if($cover<>"") { 148 | $pdf->Cover($cover); 149 | } 150 | $pdf->AddPage(); 151 | $pdf->FancyTable($header,$data,$width); 152 | $pdf->Output(); 153 | } else { 154 | export_csv($header,$data); 155 | } 156 | ?> 157 | -------------------------------------------------------------------------------- /font/courier.php: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /font/helvetica.php: -------------------------------------------------------------------------------- 1 | 278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, 4 | chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584, 5 | ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667, 6 | 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, 7 | 'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833, 8 | 'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556, 9 | chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, 10 | chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, 11 | chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, 12 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, 13 | chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, 14 | chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); 15 | ?> 16 | -------------------------------------------------------------------------------- /font/helveticab.php: -------------------------------------------------------------------------------- 1 | 278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, 4 | chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584, 5 | ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722, 6 | 'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, 7 | 'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889, 8 | 'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556, 9 | chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, 10 | chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, 11 | chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, 12 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, 13 | chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, 14 | chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); 15 | ?> 16 | -------------------------------------------------------------------------------- /font/helveticabi.php: -------------------------------------------------------------------------------- 1 | 278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, 4 | chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584, 5 | ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722, 6 | 'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, 7 | 'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889, 8 | 'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556, 9 | chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, 10 | chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, 11 | chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, 12 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, 13 | chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, 14 | chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); 15 | ?> 16 | -------------------------------------------------------------------------------- /font/helveticai.php: -------------------------------------------------------------------------------- 1 | 278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, 4 | chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584, 5 | ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667, 6 | 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, 7 | 'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833, 8 | 'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556, 9 | chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, 10 | chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, 11 | chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, 12 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, 13 | chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, 14 | chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); 15 | ?> 16 | -------------------------------------------------------------------------------- /font/symbol.php: -------------------------------------------------------------------------------- 1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, 4 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549, 5 | ','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722, 6 | 'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768, 7 | 'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576, 8 | 'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0, 9 | chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0, 10 | chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603, 11 | chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768, 12 | chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042, 13 | chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329, 14 | chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0); 15 | ?> 16 | -------------------------------------------------------------------------------- /font/times.php: -------------------------------------------------------------------------------- 1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, 4 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564, 5 | ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722, 6 | 'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944, 7 | 'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778, 8 | 'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, 9 | chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980, 10 | chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333, 11 | chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, 12 | chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, 13 | chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, 14 | chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500); 15 | ?> 16 | -------------------------------------------------------------------------------- /font/timesb.php: -------------------------------------------------------------------------------- 1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, 4 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570, 5 | ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722, 6 | 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000, 7 | 'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833, 8 | 'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, 9 | chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, 10 | chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333, 11 | chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, 12 | chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, 13 | chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, 14 | chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); 15 | ?> 16 | -------------------------------------------------------------------------------- /font/timesbi.php: -------------------------------------------------------------------------------- 1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, 4 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570, 5 | ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667, 6 | 'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889, 7 | 'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778, 8 | 'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, 9 | chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, 10 | chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333, 11 | chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, 12 | chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, 13 | chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, 14 | chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444); 15 | ?> 16 | -------------------------------------------------------------------------------- /font/timesi.php: -------------------------------------------------------------------------------- 1 | 250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, 4 | chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675, 5 | ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611, 6 | 'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833, 7 | 'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722, 8 | 'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, 9 | chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980, 10 | chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333, 11 | chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611, 12 | chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, 13 | chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, 14 | chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444); 15 | ?> 16 | -------------------------------------------------------------------------------- /font/zapfdingbats.php: -------------------------------------------------------------------------------- 1 | 0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0, 4 | chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939, 5 | ','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692, 6 | 'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776, 7 | 'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873, 8 | 'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317, 9 | chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0, 10 | chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788, 11 | chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788, 12 | chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918, 13 | chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874, 14 | chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0); 15 | ?> 16 | -------------------------------------------------------------------------------- /images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/blank.gif -------------------------------------------------------------------------------- /images/col_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/col_bg.gif -------------------------------------------------------------------------------- /images/excel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/excel.gif -------------------------------------------------------------------------------- /images/go-first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/go-first.png -------------------------------------------------------------------------------- /images/go-last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/go-last.png -------------------------------------------------------------------------------- /images/go-next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/go-next.png -------------------------------------------------------------------------------- /images/go-previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/go-previous.png -------------------------------------------------------------------------------- /images/go-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/go-up.png -------------------------------------------------------------------------------- /images/pdf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/pdf.gif -------------------------------------------------------------------------------- /images/vertical_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/images/vertical_logo.gif -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | require_once("config.php"); 23 | require_once("sesvars.php"); 24 | 25 | $start_today = date('Y-m-d 00:00:00'); 26 | $end_today = date('Y-m-d 23:59:59'); 27 | 28 | $start_today_ts = return_timestamp($start_today); 29 | 30 | $day = date('w',$start_today_ts); 31 | $diff_to_monday = $start_today_ts - (($day - 1) * 86400); 32 | 33 | // Start and End date for last week (it counts from the first monday back 34 | // till the next sunday 35 | $begin_week_monday = date('Y-m-d 00:00:00',$diff_to_monday); 36 | $end_week_sunday = date('Y-m-d 23:59:59',($diff_to_monday + (6 * 86400))); 37 | 38 | $end_year = date('Y'); 39 | 40 | $begin_month = date('Y-m-01 00:00:00'); 41 | $begin_month_ts = return_timestamp($begin_month); 42 | $end_month_ts = $begin_month_ts + (86400 * 32); 43 | 44 | 45 | $end_past_month_ts = $begin_month_ts - 1; 46 | $end_past_month = date('Y-m-d 23:59:59',$end_past_month_ts); 47 | $begin_past_month = date('Y-m-01 00:00:00',$end_past_month_ts); 48 | 49 | $begin_past_month_ts = return_timestamp($begin_past_month); 50 | $end_past2_month_ts = $begin_past_month_ts - 1; 51 | $end_past2_month = date('Y-m-d 23:59:59',$end_past2_month_ts); 52 | $begin_past2_month = date('Y-m-01 00:00:00',$end_past2_month_ts); 53 | 54 | for ($a=4; $a>0; $a--) { 55 | $day_number = date('d',$end_month_ts); 56 | if($day_number == 1) { 57 | $a==0; 58 | } else { 59 | $end_month_ts -= 86400; 60 | } 61 | } 62 | $end_month_ts -= 86400; 63 | 64 | $end_month = date('Y-m-d',$end_month_ts); 65 | 66 | $query = "SELECT DISTINCT(queuename) FROM queue_log ORDER BY queuename"; 67 | $res = consulta_db($query,0,0,0,$midb); 68 | while ($row = db_fetch_row($res)) { 69 | $colas[] = $row[0]; 70 | } 71 | 72 | $query = "SELECT DISTINCT(agent) FROM queue_log ORDER BY agent"; 73 | $res = consulta_db($query,0,0,0,$midb); 74 | while ($row = db_fetch_row($res)) { 75 | $agentes[] = $row[0]; 76 | } 77 | 78 | ?> 79 | 80 | 81 | 82 | 83 | Asternic Call Center Stats 84 | 85 | 86 | 87 | 88 | 89 | 91 | 95 | 266 | 269 | 280 | 281 | 282 | 283 | 284 | 285 |

286 |
287 | 288 |
289 | 290 | 291 |
292 |

293 | 294 |

295 |
296 | 308 | 309 | 310 | 311 | 324 | 332 | 344 | 345 |
312 |
313 | 323 |
325 | 326 | 327 |
328 |
329 | 330 | 331 |
333 |
334 | 343 |
346 | 347 |
348 | 402 |
 
403 |
404 |

405 |

406 | ".$lang["$language"]['today']." | "; 408 | echo "".$lang["$language"]['this_week']." | "; 409 | echo "".$lang["$language"]['this_month']." | "; 410 | echo "".$lang["$language"]['last_three_months']."
"; 411 | ?> 412 |
413 | 414 | 415 | 416 | 469 | 470 | 471 | 523 | 524 | 526 | 527 |
417 | 418 | 419 | 420 | 430 | 431 | 440 | 441 | 452 | 453 | \n"; 458 | echo "\n"; 459 | for($a=$start_year;$a<=$end_year;$a++) 460 | { 461 | echo "\n"; 464 | } 465 | echo "\n"; 466 | ?> 467 | 468 |
472 | 473 | 474 | 484 | 485 | 494 | 495 | 506 | 507 | \n"; 512 | echo "\n"; 513 | for($a=$start_year;$a<=$end_year;$a++) 514 | { 515 | echo "\n"; 518 | } 519 | echo "\n"; 520 | ?> 521 | 522 |
525 |
528 |
529 | ' onClick='return envia();'> 530 | 531 |
532 |
533 |
534 | 535 | 536 | 537 | 538 | 539 | -------------------------------------------------------------------------------- /js/flashobject.js: -------------------------------------------------------------------------------- 1 | /** 2 | * FlashObject v1.2.3: Flash detection and embed - http://blog.deconcept.com/flashobject/ 3 | * 4 | * FlashObject is (c) 2005 Geoff Stearns and is released under the MIT License: 5 | * http://www.opensource.org/licenses/mit-license.php 6 | * 7 | */ 8 | if(typeof com == "undefined") var com = new Object(); 9 | if(typeof com.deconcept == "undefined") com.deconcept = new Object(); 10 | if(typeof com.deconcept.util == "undefined") com.deconcept.util = new Object(); 11 | if(typeof com.deconcept.FlashObjectUtil == "undefined") com.deconcept.FlashObjectUtil = new Object(); 12 | com.deconcept.FlashObject = function(swf, id, w, h, ver, c, useExpressInstall, quality, redirectUrl, detectKey){ 13 | this.DETECT_KEY = detectKey ? detectKey : 'detectflash'; 14 | this.skipDetect = com.deconcept.util.getRequestParameter(this.DETECT_KEY); 15 | this.params = new Object(); 16 | this.variables = new Object(); 17 | this.attributes = new Array(); 18 | 19 | if(swf) this.setAttribute('swf', swf); 20 | if(id) this.setAttribute('id', id); 21 | if(w) this.setAttribute('width', w); 22 | if(h) this.setAttribute('height', h); 23 | if(ver) this.setAttribute('version', new com.deconcept.PlayerVersion(ver.toString().split("."))); 24 | if(c) this.addParam('bgcolor', c); 25 | var q = quality ? quality : 'high'; 26 | this.addParam('quality', q); 27 | this.setAttribute('redirectUrl', ''); 28 | if(redirectUrl) this.setAttribute('redirectUrl', redirectUrl); 29 | if(useExpressInstall) { 30 | // check to see if we need to do an express install 31 | var expressInstallReqVer = new com.deconcept.PlayerVersion([6,0,65]); 32 | var installedVer = com.deconcept.FlashObjectUtil.getPlayerVersion(); 33 | if (installedVer.versionIsValid(expressInstallReqVer) && !installedVer.versionIsValid(this.getAttribute('version'))) { 34 | this.setAttribute('doExpressInstall', true); 35 | } 36 | } else { 37 | this.setAttribute('doExpressInstall', false); 38 | } 39 | } 40 | com.deconcept.FlashObject.prototype.setAttribute = function(name, value){ 41 | this.attributes[name] = value; 42 | } 43 | com.deconcept.FlashObject.prototype.getAttribute = function(name){ 44 | return this.attributes[name]; 45 | } 46 | com.deconcept.FlashObject.prototype.getAttributes = function(){ 47 | return this.attributes; 48 | } 49 | com.deconcept.FlashObject.prototype.addParam = function(name, value){ 50 | this.params[name] = value; 51 | } 52 | com.deconcept.FlashObject.prototype.getParams = function(){ 53 | return this.params; 54 | } 55 | com.deconcept.FlashObject.prototype.getParam = function(name){ 56 | return this.params[name]; 57 | } 58 | com.deconcept.FlashObject.prototype.addVariable = function(name, value){ 59 | this.variables[name] = value; 60 | } 61 | com.deconcept.FlashObject.prototype.getVariable = function(name){ 62 | return this.variables[name]; 63 | } 64 | com.deconcept.FlashObject.prototype.getVariables = function(){ 65 | return this.variables; 66 | } 67 | com.deconcept.FlashObject.prototype.getParamTags = function(){ 68 | var paramTags = ""; var key; var params = this.getParams(); 69 | for(key in params) { 70 | paramTags += ''; 71 | } 72 | return paramTags; 73 | } 74 | com.deconcept.FlashObject.prototype.getVariablePairs = function(){ 75 | var variablePairs = new Array(); 76 | var key; 77 | var variables = this.getVariables(); 78 | for(key in variables){ 79 | variablePairs.push(key +"="+ variables[key]); 80 | } 81 | return variablePairs; 82 | } 83 | com.deconcept.FlashObject.prototype.getHTML = function() { 84 | var flashHTML = ""; 85 | if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture 86 | if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "PlugIn"); } 87 | flashHTML += ' 0){ flashHTML += ' flashvars="'+ pairs +'"'; } 92 | flashHTML += '>'; 93 | } else { // PC IE 94 | if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "ActiveX"); } 95 | flashHTML += ''; 96 | flashHTML += ''; 97 | var tags = this.getParamTags(); 98 | if(tags.length > 0){ flashHTML += tags; } 99 | var pairs = this.getVariablePairs().join("&"); 100 | if(pairs.length > 0){ flashHTML += ''; } 101 | flashHTML += ''; 102 | } 103 | return flashHTML; 104 | } 105 | com.deconcept.FlashObject.prototype.write = function(elementId){ 106 | if(this.skipDetect || this.getAttribute('doExpressInstall') || com.deconcept.FlashObjectUtil.getPlayerVersion().versionIsValid(this.getAttribute('version'))){ 107 | if(document.getElementById){ 108 | if (this.getAttribute('doExpressInstall')) { 109 | this.addVariable("MMredirectURL", escape(window.location)); 110 | document.title = document.title.slice(0, 47) + " - Flash Player Installation"; 111 | this.addVariable("MMdoctitle", document.title); 112 | } 113 | document.getElementById(elementId).innerHTML = this.getHTML(); 114 | } 115 | }else{ 116 | if(this.getAttribute('redirectUrl') != "") { 117 | document.location.replace(this.getAttribute('redirectUrl')); 118 | } 119 | } 120 | } 121 | /* ---- detection functions ---- */ 122 | com.deconcept.FlashObjectUtil.getPlayerVersion = function(){ 123 | var PlayerVersion = new com.deconcept.PlayerVersion(0,0,0); 124 | if(navigator.plugins && navigator.mimeTypes.length){ 125 | var x = navigator.plugins["Shockwave Flash"]; 126 | if(x && x.description) { 127 | PlayerVersion = new com.deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".")); 128 | } 129 | }else if (window.ActiveXObject){ 130 | try { 131 | var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); 132 | PlayerVersion = new com.deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(",")); 133 | } catch (e) {} 134 | } 135 | return PlayerVersion; 136 | } 137 | com.deconcept.PlayerVersion = function(arrVersion){ 138 | this.major = parseInt(arrVersion[0]) || 0; 139 | this.minor = parseInt(arrVersion[1]) || 0; 140 | this.rev = parseInt(arrVersion[2]) || 0; 141 | } 142 | com.deconcept.PlayerVersion.prototype.versionIsValid = function(fv){ 143 | if(this.major < fv.major) return false; 144 | if(this.major > fv.major) return true; 145 | if(this.minor < fv.minor) return false; 146 | if(this.minor > fv.minor) return true; 147 | if(this.rev < fv.rev) return false; 148 | return true; 149 | } 150 | /* ---- get value of query string param ---- */ 151 | com.deconcept.util.getRequestParameter = function(param){ 152 | var q = document.location.search || document.location.href.hash; 153 | if(q){ 154 | var startIndex = q.indexOf(param +"="); 155 | var endIndex = (q.indexOf("&", startIndex) > -1) ? q.indexOf("&", startIndex) : q.length; 156 | if (q.length > 1 && startIndex > -1) { 157 | return q.substring(q.indexOf("=", startIndex)+1, endIndex); 158 | } 159 | } 160 | return ""; 161 | } 162 | 163 | /* add Array.push if needed (ie5) */ 164 | if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }} 165 | 166 | /* add some aliases for ease of use / backwards compatibility */ 167 | var getQueryParamValue = com.deconcept.util.getRequestParameter; 168 | var FlashObject = com.deconcept.FlashObject; 169 | -------------------------------------------------------------------------------- /js/sorttable.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/revall/queue-stats/0e361192bc47b07f0e9d7b238a816a2e6d33008c/js/sorttable.js -------------------------------------------------------------------------------- /js/validmonth.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************************************** 2 | Valid month script 3 | Written by Mark Wilton-Jones, 6-7/10/2002 4 | ******************************************************************************************************** 5 | 6 | Please see http://www.howtocreate.co.uk/jslibs/ for details and a demo of this script 7 | Please see http://www.howtocreate.co.uk/jslibs/termsOfUse.html for terms of use 8 | 9 | This script monitors years and months and makes sure that the correct number of days are provided. 10 | 11 | To use: 12 | 13 | Inbetween the tags, put: 14 | 15 | 16 | 17 | To have a static year box (only allows the years defined in the HTML) 18 | 19 | Day of month select box should be in the format: 20 | 26 | 27 | Month select box should be in the format: 28 | 34 | 35 | Year select box should be in the format: 36 | 42 | 43 | You can now use: 44 | setToday('day','month','year'); 45 | to set the date to today's date (after the page has loaded) 46 | 47 | To have an extendible year box (creates dates lower/higher than the current range) 48 | 49 | Year select box should be in the format: 50 | 58 | If you do not want to have higher / lower values, simply omit the relevant option 59 | 60 | Function format: 61 | checkMore( this, CURRENT LOWEST YEAR, CURRENT HIGHEST YEAR, LOWEST POSSIBLE YEAR, HIGHEST POSSIBLE YEAR ) 62 | 63 | You can now use: 64 | reFill( 'year', 1980, 2005, true, true );setToday('day','month','year'); 65 | to set the date to today's date (after the page has loaded) 66 | 67 | Function format (make sure the range of years includes the current year): 68 | reFill( name of year select box, LOWEST YEAR, HIGHEST YEAR, ALLOW HIGHER (true/false), ALLOW LOWER (true/false) ) 69 | _____________________________________________________________________________________________________________________*/ 70 | 71 | //Opera 7 has a bug making it fail to set selectedIndex after dynamic generation of options unless there is a 0ms+ delay 72 | //I have put fixes in in all necessary places 73 | 74 | function MWJ_findSelect( oName, oDoc ) { //get a reference to the select box using its name 75 | if( !oDoc ) { oDoc = window.document; } 76 | for( var x = 0; x < oDoc.forms.length; x++ ) { if( oDoc.forms[x][oName] ) { return oDoc.forms[x][oName]; } } 77 | for( var x = 0; document.layers && x < oDoc.layers.length; x++ ) { //scan layers ... 78 | var theOb = MWJ_findObj( oName, oDoc.layers[x].document ); if( theOb ) { return theOb; } } 79 | return null; 80 | } 81 | function dateChange( d, m, y ) { 82 | d = MWJ_findSelect( d ), m = MWJ_findSelect( m ), y = MWJ_findSelect( y ); 83 | //work out if it is a leap year 84 | var IsLeap = parseInt( y.options[y.selectedIndex].value ); 85 | IsLeap = !( IsLeap % 4 ) && ( ( IsLeap % 100 ) || !( IsLeap % 400 ) ); 86 | //find the number of days in that month 87 | IsLeap = [31,(IsLeap?29:28),31,30,31,30,31,31,30,31,30,31][m.selectedIndex]; 88 | //store the current day - reduce it if the new month does not have enough days 89 | var storedDate = ( d.selectedIndex > IsLeap - 1 ) ? ( IsLeap - 1 ) : d.selectedIndex; 90 | while( d.options.length ) { d.options[0] = null; } //empty days box then refill with correct number of days 91 | for( var x = 0; x < IsLeap; x++ ) { d.options[x] = new Option( x + 1, x + 1 ); } 92 | d.options[storedDate].selected = true; //select the number that was selected before 93 | if( window.opera && document.importNode ) { window.setTimeout('MWJ_findSelect( \''+d.name+'\' ).options['+storedDate+'].selected = true;',0); } 94 | } 95 | function setToday( d, m, y ) { 96 | d = MWJ_findSelect( d ), m = MWJ_findSelect( m ), y = MWJ_findSelect( y ); 97 | var now = new Date(); var nowY = ( now.getYear() % 100 ) + ( ( ( now.getYear() % 100 ) < 39 ) ? 2000 : 1900 ); 98 | //if the relevant year exists in the box, select it 99 | for( var x = 0; x < y.options.length; x++ ) { if( y.options[x].value == '' + nowY + '' ) { y.options[x].selected = true; if( window.opera && document.importNode ) { window.setTimeout('MWJ_findSelect( \''+y.name+'\' ).options['+x+'].selected = true;',0); } } } 100 | //select the correct month, redo the days list to get the correct number, then select the relevant day 101 | m.options[now.getMonth()].selected = true; dateChange( d.name, m.name, y.name ); d.options[now.getDate()-1].selected = true; 102 | if( window.opera && document.importNode ) { window.setTimeout('MWJ_findSelect( \''+d.name+'\' ).options['+(now.getDate()-1)+'].selected = true;',0); } 103 | } 104 | function checkMore( y, curBot, curTop, min, max ) { 105 | var range = curTop - curBot; 106 | if( typeof( y.nowBot ) == 'undefined' ) { y.nowBot = curBot; y.nowTop = curTop; } 107 | if( y.options[y.selectedIndex].value == 'MWJ_DOWN' ) { //they have selected 'lower' 108 | while( y.options.length ) { y.options[0] = null; } //empty the select box 109 | y.nowBot -= range + 1; y.nowTop = range + y.nowBot; //make note of the start and end values 110 | //adjust the values as necessary if we will overstep the min value. If not, refill with the 111 | //new option for 'lower' 112 | if( min < y.nowBot ) { y.options[0] = new Option('Lower ...','MWJ_DOWN'); } else { y.nowBot = min; } 113 | for( var x = y.nowBot; x <= y.nowTop; x++ ) { y.options[y.options.length] = new Option(x,x); } 114 | y.options[y.options.length] = new Option('Higher ...','MWJ_UP'); 115 | y.options[y.options.length - 2].selected = true; //select the nearest number 116 | if( window.opera && document.importNode ) { window.setTimeout('MWJ_findSelect( \''+y.name+'\' ).options['+(y.options.length - 2)+'].selected = true;',0); } 117 | } else if( y.options[y.selectedIndex].value == 'MWJ_UP' ) { //A/A except upwards 118 | while( y.options.length ) { y.options[0] = null; } 119 | y.nowTop += range + 1; y.nowBot = y.nowTop - range; 120 | y.options[0] = new Option('Lower ...','MWJ_DOWN'); 121 | if( y.nowTop > max ) { y.nowTop = max; } 122 | for( var x = y.nowBot; x <= y.nowTop; x++ ) { y.options[y.options.length] = new Option(x,x); } 123 | if( max > y.nowTop ) { y.options[y.options.length] = new Option('Higher ...','MWJ_UP'); } 124 | y.options[1].selected = true; 125 | if( window.opera && document.importNode ) { window.setTimeout('MWJ_findSelect( \''+y.name+'\' ).options[1].selected = true;',0); } 126 | } 127 | } 128 | function reFill( y, oBot, oTop, oDown, oUp ) { 129 | y = MWJ_findSelect( y ); y.nowBot = oBot; y.nowTop = oTop; 130 | //empty and refill the select box using the range of numbers specified 131 | while( y.options.length ) { y.options[0] = null; } 132 | if( oDown ) { y.options[0] = new Option('Lower ...','MWJ_DOWN'); } 133 | for( var x = oBot; x <= oTop; x++ ) { y.options[y.options.length] = new Option(x,x); } 134 | if( oUp ) { y.options[y.options.length] = new Option('Higher ...','MWJ_UP'); } 135 | } 136 | -------------------------------------------------------------------------------- /js/wz_tooltip.js: -------------------------------------------------------------------------------- 1 | /* This notice must be untouched at all times. 2 | 3 | wz_tooltip.js v. 3.36 4 | 5 | The latest version is available at 6 | http://www.walterzorn.com 7 | or http://www.devira.com 8 | or http://www.walterzorn.de 9 | 10 | Copyright (c) 2002-2005 Walter Zorn. All rights reserved. 11 | Created 1. 12. 2002 by Walter Zorn (Web: http://www.walterzorn.com ) 12 | Last modified: 5. 11. 2005 13 | 14 | Cross-browser tooltips working even in Opera 5 and 6, 15 | as well as in NN 4, Gecko-Browsers, IE4+, Opera 7 and Konqueror. 16 | No onmouseouts required. 17 | Appearance of tooltips can be individually configured 18 | via commands within the onmouseovers. 19 | 20 | LICENSE: LGPL 21 | 22 | This library is free software; you can redistribute it and/or 23 | modify it under the terms of the GNU Lesser General Public 24 | License (LGPL) as published by the Free Software Foundation; either 25 | version 2.1 of the License, or (at your option) any later version. 26 | 27 | This library is distributed in the hope that it will be useful, 28 | but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 30 | 31 | For more details on the GNU Lesser General Public License, 32 | see http://www.gnu.org/copyleft/lesser.html 33 | */ 34 | 35 | 36 | 37 | //////////////// GLOBAL TOOPTIP CONFIGURATION ///////////////////// 38 | var ttAbove = true; // tooltip above mousepointer? Alternative: true 39 | var ttBgColor = "#eaeaea"; 40 | var ttBgImg = ""; // path to background image; 41 | var ttBorderColor = "#eaeaea"; 42 | var ttBorderWidth = 1; 43 | var ttDelay = 300; // time span until tooltip shows up [milliseconds] 44 | var ttFontColor = "#101060"; 45 | var ttFontFace = "verdana,arial,helvetica,sans-serif"; 46 | var ttFontSize = "11px"; 47 | var ttFontWeight = "normal"; // alternative: "bold"; 48 | var ttLeft = false; // tooltip on the left of the mouse? Alternative: true 49 | var ttOffsetX = 12; // horizontal offset of left-top corner from mousepointer 50 | var ttOffsetY = 15; // vertical offset " 51 | var ttOpacity = 90; // opacity of tooltip in percent (must be integer between 0 and 100) 52 | var ttPadding = 4; // spacing between border and content 53 | var ttShadowColor = ""; 54 | var ttShadowWidth = 0; 55 | var ttStatic = false; // tooltip NOT move with the mouse? Alternative: true 56 | var ttSticky = false; // do NOT hide tooltip on mouseout? Alternative: true 57 | var ttTemp = 0; // time span after which the tooltip disappears; 0 (zero) means "infinite timespan" 58 | var ttTextAlign = "left"; 59 | var ttTitle = ""; 60 | var ttTitleColor = "#000000"; // color of caption text 61 | var ttWidth = 300; 62 | //////////////////// END OF TOOLTIP CONFIG //////////////////////// 63 | 64 | 65 | 66 | ////////////// TAGS WITH TOOLTIP FUNCTIONALITY //////////////////// 67 | // List may be extended or shortened: 68 | var tt_tags = new Array("a","area","b","big","caption","center","code","dd","div","dl","dt","em","h1","h2","h3","h4","h5","h6","i","img","input","li","map","ol","p","pre","s", "select", "small","span","strike","strong","sub","sup","table","td","th","tr","tt","u","var","ul","layer"); 69 | ///////////////////////////////////////////////////////////////////// 70 | 71 | 72 | 73 | ///////// DON'T CHANGE ANYTHING BELOW THIS LINE ///////////////////// 74 | var tt_obj, // current tooltip 75 | tt_ifrm, // iframe to cover windowed controls in IE 76 | tt_objW = 0, tt_objH = 0, // width and height of tt_obj 77 | tt_objX = 0, tt_objY = 0, 78 | tt_offX = 0, tt_offY = 0, 79 | xlim = 0, ylim = 0, // right and bottom borders of visible client area 80 | tt_sup = false, // true if T_ABOVE cmd 81 | tt_sticky = false, // tt_obj sticky? 82 | tt_wait = false, 83 | tt_act = false, // tooltip visibility flag 84 | tt_sub = false, // true while tooltip below mousepointer 85 | tt_u = "undefined", 86 | tt_mf, // stores previous mousemove evthandler 87 | // Opera: disable href when hovering 88 | tt_tag = null; // stores hovered dom node, href and previous statusbar txt 89 | 90 | 91 | var tt_db = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body? document.body : null, 92 | tt_n = navigator.userAgent.toLowerCase(), 93 | tt_nv = navigator.appVersion; 94 | // Browser flags 95 | var tt_op = !!(window.opera && document.getElementById), 96 | tt_op6 = tt_op && !document.defaultView, 97 | tt_op7 = tt_op && !tt_op6, 98 | tt_ie = tt_n.indexOf("msie") != -1 && document.all && tt_db && !tt_op, 99 | tt_ie6 = tt_ie && parseFloat(tt_nv.substring(tt_nv.indexOf("MSIE")+5)) >= 5.5; 100 | tt_n4 = (document.layers && typeof document.classes != tt_u), 101 | tt_n6 = (!tt_op && document.defaultView && typeof document.defaultView.getComputedStyle != tt_u), 102 | tt_w3c = !tt_ie && !tt_n6 && !tt_op && document.getElementById; 103 | 104 | function tt_Int(t_x) 105 | { 106 | var t_y; 107 | return isNaN(t_y = parseInt(t_x))? 0 : t_y; 108 | } 109 | function wzReplace(t_x, t_y) 110 | { 111 | var t_ret = "", 112 | t_str = this, 113 | t_xI; 114 | while((t_xI = t_str.indexOf(t_x)) != -1) 115 | { 116 | t_ret += t_str.substring(0, t_xI) + t_y; 117 | t_str = t_str.substring(t_xI + t_x.length); 118 | } 119 | return t_ret+t_str; 120 | } 121 | String.prototype.wzReplace = wzReplace; 122 | function tt_N4Tags(tagtyp, t_d, t_y) 123 | { 124 | t_d = t_d || document; 125 | t_y = t_y || new Array(); 126 | var t_x = (tagtyp=="a")? t_d.links : t_d.layers; 127 | for(var z = t_x.length; z--;) t_y[t_y.length] = t_x[z]; 128 | for(z = t_d.layers.length; z--;) t_y = tt_N4Tags(tagtyp, t_d.layers[z].document, t_y); 129 | return t_y; 130 | } 131 | function tt_Htm(tt, t_id, txt) 132 | { 133 | var t_bgc = (typeof tt.T_BGCOLOR != tt_u)? tt.T_BGCOLOR : ttBgColor, 134 | t_bgimg = (typeof tt.T_BGIMG != tt_u)? tt.T_BGIMG : ttBgImg, 135 | t_bc = (typeof tt.T_BORDERCOLOR != tt_u)? tt.T_BORDERCOLOR : ttBorderColor, 136 | t_bw = (typeof tt.T_BORDERWIDTH != tt_u)? tt.T_BORDERWIDTH : ttBorderWidth, 137 | t_ff = (typeof tt.T_FONTFACE != tt_u)? tt.T_FONTFACE : ttFontFace, 138 | t_fc = (typeof tt.T_FONTCOLOR != tt_u)? tt.T_FONTCOLOR : ttFontColor, 139 | t_fsz = (typeof tt.T_FONTSIZE != tt_u)? tt.T_FONTSIZE : ttFontSize, 140 | t_fwght = (typeof tt.T_FONTWEIGHT != tt_u)? tt.T_FONTWEIGHT : ttFontWeight, 141 | t_opa = (typeof tt.T_OPACITY != tt_u)? tt.T_OPACITY : ttOpacity, 142 | t_padd = (typeof tt.T_PADDING != tt_u)? tt.T_PADDING : ttPadding, 143 | t_shc = (typeof tt.T_SHADOWCOLOR != tt_u)? tt.T_SHADOWCOLOR : (ttShadowColor || 0), 144 | t_shw = (typeof tt.T_SHADOWWIDTH != tt_u)? tt.T_SHADOWWIDTH : (ttShadowWidth || 0), 145 | t_algn = (typeof tt.T_TEXTALIGN != tt_u)? tt.T_TEXTALIGN : ttTextAlign, 146 | t_tit = (typeof tt.T_TITLE != tt_u)? tt.T_TITLE : ttTitle, 147 | t_titc = (typeof tt.T_TITLECOLOR != tt_u)? tt.T_TITLECOLOR : ttTitleColor, 148 | t_w = (typeof tt.T_WIDTH != tt_u)? tt.T_WIDTH : ttWidth; 149 | if(t_shc || t_shw) 150 | { 151 | t_shc = t_shc || "#cccccc"; 152 | t_shw = t_shw || 5; 153 | } 154 | if(tt_n4 && (t_fsz == "10px" || t_fsz == "11px")) t_fsz = "12px"; 155 | 156 | var t_optx = (tt_n4? '' : tt_n6? ('-moz-opacity:'+(t_opa/100.0)) : tt_ie? ('filter:Alpha(opacity='+t_opa+')') : ('opacity:'+(t_opa/100.0))) + ';'; 157 | var t_y = '
' + 159 | ''; 160 | if(t_tit) 161 | { 162 | t_y += ''; 165 | } 166 | t_y += '
' + 164 | (tt_n4? ' ' : '')+t_tit+'
' + 167 | ''; 171 | if(t_fwght == 'bold') t_y += ''; 172 | t_y += txt; 173 | if(t_fwght == 'bold') t_y += ''; 174 | t_y += '
'; 175 | if(t_shw) 176 | { 177 | var t_spct = Math.round(t_shw*1.3); 178 | if(tt_n4) 179 | { 180 | t_y += '' + 181 | ''; 182 | } 183 | else 184 | { 185 | t_optx = tt_n6? '-moz-opacity:0.85;' : tt_ie? 'filter:Alpha(opacity=85);' : 'opacity:0.85;'; 186 | t_y += '
' + 187 | '
'; 188 | } 189 | } 190 | return(t_y+'
' + 191 | (tt_ie6 ? '' : '')); 192 | } 193 | function tt_EvX(t_e) 194 | { 195 | var t_y = tt_Int(t_e.pageX || t_e.clientX || 0) + 196 | tt_Int(tt_ie? tt_db.scrollLeft : 0) + 197 | tt_offX; 198 | if(t_y > xlim) t_y = xlim; 199 | var t_scr = tt_Int(window.pageXOffset || (tt_db? tt_db.scrollLeft : 0) || 0); 200 | if(t_y < t_scr) t_y = t_scr; 201 | return t_y; 202 | } 203 | function tt_EvY(t_e) 204 | { 205 | var t_y = tt_Int(t_e.pageY || t_e.clientY || 0) + 206 | tt_Int(tt_ie? tt_db.scrollTop : 0); 207 | if(tt_sup) t_y -= (tt_objH + tt_offY - 15); 208 | else if(t_y > ylim || !tt_sub && t_y > ylim-24) 209 | { 210 | t_y -= (tt_objH + 5); 211 | tt_sub = false; 212 | } 213 | else 214 | { 215 | t_y += tt_offY; 216 | tt_sub = true; 217 | } 218 | return t_y; 219 | } 220 | function tt_ReleasMov() 221 | { 222 | if(document.onmousemove == tt_Move) 223 | { 224 | if(!tt_mf && document.releaseEvents) document.releaseEvents(Event.MOUSEMOVE); 225 | document.onmousemove = tt_mf; 226 | } 227 | } 228 | function tt_ShowIfrm(t_x) 229 | { 230 | if(!tt_obj || !tt_ifrm) return; 231 | if(t_x) 232 | { 233 | tt_ifrm.style.width = tt_objW+'px'; 234 | tt_ifrm.style.height = tt_objH+'px'; 235 | tt_ifrm.style.display = "block"; 236 | } 237 | else tt_ifrm.style.display = "none"; 238 | } 239 | function tt_GetDiv(t_id) 240 | { 241 | return( 242 | tt_n4? (document.layers[t_id] || null) 243 | : tt_ie? (document.all[t_id] || null) 244 | : (document.getElementById(t_id) || null) 245 | ); 246 | } 247 | function tt_GetDivW() 248 | { 249 | return tt_Int( 250 | tt_n4? tt_obj.clip.width 251 | : (tt_obj.style.pixelWidth || tt_obj.offsetWidth) 252 | ); 253 | } 254 | function tt_GetDivH() 255 | { 256 | return tt_Int( 257 | tt_n4? tt_obj.clip.height 258 | : (tt_obj.style.pixelHeight || tt_obj.offsetHeight) 259 | ); 260 | } 261 | 262 | // Compat with DragDrop Lib: Ensure that z-index of tooltip is lifted beyond toplevel dragdrop element 263 | function tt_SetDivZ() 264 | { 265 | var t_i = tt_obj.style || tt_obj; 266 | if(t_i) 267 | { 268 | if(window.dd && dd.z) 269 | t_i.zIndex = Math.max(dd.z+1, t_i.zIndex); 270 | if(tt_ifrm) tt_ifrm.style.zIndex = t_i.zIndex-1; 271 | } 272 | } 273 | function tt_SetDivPos(t_x, t_y) 274 | { 275 | var t_i = tt_obj.style || tt_obj; 276 | var t_px = (tt_op6 || tt_n4)? '' : 'px'; 277 | t_i.left = (tt_objX = t_x) + t_px; 278 | t_i.top = (tt_objY = t_y) + t_px; 279 | if(tt_ifrm) 280 | { 281 | tt_ifrm.style.left = t_i.left; 282 | tt_ifrm.style.top = t_i.top; 283 | } 284 | } 285 | function tt_ShowDiv(t_x) 286 | { 287 | tt_ShowIfrm(t_x); 288 | if(tt_n4) tt_obj.visibility = t_x? 'show' : 'hide'; 289 | else tt_obj.style.visibility = t_x? 'visible' : 'hidden'; 290 | tt_act = t_x; 291 | } 292 | function tt_OpDeHref(t_e) 293 | { 294 | var t_tag; 295 | if(t_e) 296 | { 297 | t_tag = t_e.target; 298 | while(t_tag) 299 | { 300 | if(t_tag.hasAttribute("href")) 301 | { 302 | tt_tag = t_tag 303 | tt_tag.t_href = tt_tag.getAttribute("href"); 304 | tt_tag.removeAttribute("href"); 305 | tt_tag.style.cursor = "hand"; 306 | tt_tag.onmousedown = tt_OpReHref; 307 | tt_tag.stats = window.status; 308 | window.status = tt_tag.t_href; 309 | break; 310 | } 311 | t_tag = t_tag.parentElement; 312 | } 313 | } 314 | } 315 | function tt_OpReHref() 316 | { 317 | if(tt_tag) 318 | { 319 | tt_tag.setAttribute("href", tt_tag.t_href); 320 | window.status = tt_tag.stats; 321 | tt_tag = null; 322 | } 323 | } 324 | function tt_Show(t_e, t_id, t_sup, t_delay, t_fix, t_left, t_offx, t_offy, t_static, t_sticky, t_temp) 325 | { 326 | if(tt_obj) tt_Hide(); 327 | tt_mf = document.onmousemove || null; 328 | if(window.dd && (window.DRAG && tt_mf == DRAG || window.RESIZE && tt_mf == RESIZE)) return; 329 | var t_sh, t_h; 330 | 331 | tt_obj = tt_GetDiv(t_id); 332 | if(tt_obj) 333 | { 334 | t_e = t_e || window.event; 335 | tt_sub = !(tt_sup = t_sup); 336 | tt_sticky = t_sticky; 337 | tt_objW = tt_GetDivW(); 338 | tt_objH = tt_GetDivH(); 339 | tt_offX = t_left? -(tt_objW+t_offx) : t_offx; 340 | tt_offY = t_offy; 341 | if(tt_op7) tt_OpDeHref(t_e); 342 | if(tt_n4) 343 | { 344 | if(tt_obj.document.layers.length) 345 | { 346 | t_sh = tt_obj.document.layers[0]; 347 | t_sh.clip.height = tt_objH - Math.round(t_sh.clip.width*1.3); 348 | } 349 | } 350 | else 351 | { 352 | t_sh = tt_GetDiv(t_id+'R'); 353 | if(t_sh) 354 | { 355 | t_h = tt_objH - tt_Int(t_sh.style.pixelTop || t_sh.style.top || 0); 356 | if(typeof t_sh.style.pixelHeight != tt_u) t_sh.style.pixelHeight = t_h; 357 | else t_sh.style.height = t_h+'px'; 358 | } 359 | } 360 | 361 | xlim = tt_Int((tt_db && tt_db.clientWidth)? tt_db.clientWidth : window.innerWidth) + 362 | tt_Int(window.pageXOffset || (tt_db? tt_db.scrollLeft : 0) || 0) - 363 | tt_objW - 364 | (tt_n4? 21 : 0); 365 | ylim = tt_Int(window.innerHeight || tt_db.clientHeight) + 366 | tt_Int(window.pageYOffset || (tt_db? tt_db.scrollTop : 0) || 0) - 367 | tt_objH - tt_offY; 368 | 369 | tt_SetDivZ(); 370 | if(t_fix) tt_SetDivPos(tt_Int((t_fix = t_fix.split(','))[0]), tt_Int(t_fix[1])); 371 | else tt_SetDivPos(tt_EvX(t_e), tt_EvY(t_e)); 372 | 373 | var t_txt = 'tt_ShowDiv(\'true\');'; 374 | if(t_sticky) t_txt += '{'+ 375 | 'tt_ReleasMov();'+ 376 | 'window.tt_upFunc = document.onmouseup || null;'+ 377 | 'if(document.captureEvents) document.captureEvents(Event.MOUSEUP);'+ 378 | 'document.onmouseup = new Function("window.setTimeout(\'tt_Hide();\', 10);");'+ 379 | '}'; 380 | else if(t_static) t_txt += 'tt_ReleasMov();'; 381 | if(t_temp > 0) t_txt += 'window.tt_rtm = window.setTimeout(\'tt_sticky = false; tt_Hide();\','+t_temp+');'; 382 | window.tt_rdl = window.setTimeout(t_txt, t_delay); 383 | 384 | if(!t_fix) 385 | { 386 | if(document.captureEvents) document.captureEvents(Event.MOUSEMOVE); 387 | document.onmousemove = tt_Move; 388 | } 389 | } 390 | } 391 | var tt_area = false; 392 | function tt_Move(t_ev) 393 | { 394 | if(!tt_obj) return; 395 | if(tt_n6 || tt_w3c) 396 | { 397 | if(tt_wait) return; 398 | tt_wait = true; 399 | setTimeout('tt_wait = false;', 5); 400 | } 401 | var t_e = t_ev || window.event; 402 | tt_SetDivPos(tt_EvX(t_e), tt_EvY(t_e)); 403 | if(tt_op6) 404 | { 405 | if(tt_area && t_e.target.tagName != 'AREA') tt_Hide(); 406 | else if(t_e.target.tagName == 'AREA') tt_area = true; 407 | } 408 | } 409 | function tt_Hide() 410 | { 411 | if(window.tt_obj) 412 | { 413 | if(window.tt_rdl) window.clearTimeout(tt_rdl); 414 | if(!tt_sticky || !tt_act) 415 | { 416 | if(window.tt_rtm) window.clearTimeout(tt_rtm); 417 | tt_ShowDiv(false); 418 | tt_SetDivPos(-tt_objW, -tt_objH); 419 | tt_obj = null; 420 | if(typeof window.tt_upFunc != tt_u) document.onmouseup = window.tt_upFunc; 421 | } 422 | tt_sticky = false; 423 | if(tt_op6 && tt_area) tt_area = false; 424 | tt_ReleasMov(); 425 | if(tt_op7) tt_OpReHref(); 426 | } 427 | } 428 | function tt_Init() 429 | { 430 | if(!(tt_op || tt_n4 || tt_n6 || tt_ie || tt_w3c)) return; 431 | 432 | var htm = tt_n4? '
' : '', 433 | tags, 434 | t_tj, 435 | over, 436 | esc = 'return escape('; 437 | var i = tt_tags.length; while(i--) 438 | { 439 | tags = tt_ie? (document.all.tags(tt_tags[i]) || 1) 440 | : document.getElementsByTagName? (document.getElementsByTagName(tt_tags[i]) || 1) 441 | : (!tt_n4 && tt_tags[i]=="a")? document.links 442 | : 1; 443 | if(tt_n4 && (tt_tags[i] == "a" || tt_tags[i] == "layer")) tags = tt_N4Tags(tt_tags[i]); 444 | var j = tags.length; while(j--) 445 | { 446 | if(typeof (t_tj = tags[j]).onmouseover == "function" && t_tj.onmouseover.toString().indexOf(esc) != -1 && !tt_n6 || tt_n6 && (over = t_tj.getAttribute("onmouseover")) && over.indexOf(esc) != -1) 447 | { 448 | if(over) t_tj.onmouseover = new Function(over); 449 | var txt = unescape(t_tj.onmouseover()); 450 | htm += tt_Htm( 451 | t_tj, 452 | "tOoLtIp"+i+""+j, 453 | txt.wzReplace("& ","&") 454 | ); 455 | 456 | t_tj.onmouseover = new Function('e', 457 | 'tt_Show(e,'+ 458 | '"tOoLtIp' +i+''+j+ '",'+ 459 | ((typeof t_tj.T_ABOVE != tt_u)? t_tj.T_ABOVE : ttAbove)+','+ 460 | ((typeof t_tj.T_DELAY != tt_u)? t_tj.T_DELAY : ttDelay)+','+ 461 | ((typeof t_tj.T_FIX != tt_u)? '"'+t_tj.T_FIX+'"' : '""')+','+ 462 | ((typeof t_tj.T_LEFT != tt_u)? t_tj.T_LEFT : ttLeft)+','+ 463 | ((typeof t_tj.T_OFFSETX != tt_u)? t_tj.T_OFFSETX : ttOffsetX)+','+ 464 | ((typeof t_tj.T_OFFSETY != tt_u)? t_tj.T_OFFSETY : ttOffsetY)+','+ 465 | ((typeof t_tj.T_STATIC != tt_u)? t_tj.T_STATIC : ttStatic)+','+ 466 | ((typeof t_tj.T_STICKY != tt_u)? t_tj.T_STICKY : ttSticky)+','+ 467 | ((typeof t_tj.T_TEMP != tt_u)? t_tj.T_TEMP : ttTemp)+ 468 | ');' 469 | ); 470 | t_tj.onmouseout = tt_Hide; 471 | if(t_tj.alt) t_tj.alt = ""; 472 | if(t_tj.title) t_tj.title = ""; 473 | } 474 | } 475 | } 476 | document.write(htm); 477 | if(document.getElementById) tt_ifrm = document.getElementById("TTiEiFrM"); 478 | } 479 | tt_Init(); 480 | -------------------------------------------------------------------------------- /lang/de.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | // German Translation 22 | // "Michael Hamann" 23 | 24 | $dayp[0] = "Sonntag"; 25 | $dayp[1] = "Montag"; 26 | $dayp[2] = "Dienstag"; 27 | $dayp[3] = "Mittwoch"; 28 | $dayp[4] = "Donnerstag"; 29 | $dayp[5] = "Freitag"; 30 | $dayp[6] = "Samstag"; 31 | 32 | $yearp[0] = "Januar"; 33 | $yearp[1] = "Februar"; 34 | $yearp[2] = "März"; 35 | $yearp[3] = "April"; 36 | $yearp[4] = "Mai"; 37 | $yearp[5] = "Juni"; 38 | $yearp[6] = "Juli"; 39 | $yearp[7] = "August"; 40 | $yearp[8] = "September"; 41 | $yearp[9] = "Oktober"; 42 | $yearp[10]= "November"; 43 | $yearp[11]= "Dezember"; 44 | 45 | // Menu options 46 | $lang['de']['menu_home'] = "Start"; 47 | $lang['de']['menu_answered'] = "Beantwortete"; 48 | $lang['de']['menu_unanswered'] = "Unbeantwort."; 49 | $lang['de']['menu_distribution'] = "Verteilung"; 50 | 51 | // tooltips 52 | $lang['de']['pdfhelp'] = "Export der Daten in .pdf Datei"; 53 | $lang['de']['csvhelp'] = "Export der Daten in .csv Datei"; 54 | $lang['de']['gotop'] = "nach oben"; 55 | 56 | // Index page 57 | $lang['de']['ALL'] = "ALL"; 58 | $lang['de']['lower'] = "niedriger ..."; 59 | $lang['de']['higher'] = "Höher ..."; 60 | $lang['de']['select_queue'] = "Queue auswählen"; 61 | $lang['de']['select_agent'] = "Agents auswählen"; 62 | $lang['de']['select_timeframe'] = "Zeitraum"; 63 | $lang['de']['queue'] = "Queue"; 64 | $lang['de']['start'] = "Startdatum"; 65 | $lang['de']['end'] = "Enddatum"; 66 | $lang['de']['display_report'] = "Report anzeigen"; 67 | $lang['de']['shortcuts'] = "Shortcut"; 68 | $lang['de']['today'] = "Heute"; 69 | $lang['de']['this_week'] = "Diese Woche"; 70 | $lang['de']['this_month'] = "Dieser Monat"; 71 | $lang['de']['last_three_months'] = "Letzten 3 Monate"; 72 | $lang['de']['available'] = "Verfügbar"; 73 | $lang['de']['selected'] = "Gewält"; 74 | $lang['de']['invaliddate'] = "Ungültiger Zeitraum"; 75 | 76 | // Answered page 77 | $lang['de']['answered_calls_by_agent'] = "Beantwortete Anrufe nach Agent"; 78 | $lang['de']['answered_calls_by_queue'] = "Beantwortete Anrufe nach Queue"; 79 | $lang['de']['anws_unanws_by_hour'] = "Beantwortete/unbeantwortete nach Stunden"; 80 | $lang['de']['report_info'] = "Report Info"; 81 | $lang['de']['period'] = "Zeitraum"; 82 | $lang['de']['answered_calls'] = "Beantwortete Anrufe"; 83 | $lang['de']['transferred_calls'] = "Übergebene Anrufe"; 84 | $lang['de']['secs'] = "Sek."; 85 | $lang['de']['minutes'] = "Min."; 86 | $lang['de']['hours'] = "Std."; 87 | $lang['de']['calls'] = "Anrufe"; 88 | $lang['de']['Calls'] = "Anrufe"; 89 | $lang['de']['agent'] = "Agent"; 90 | $lang['de']['avg'] = "Durchschnitt"; 91 | $lang['de']['avg_calltime'] = "Durschnittliche Dauer"; 92 | $lang['de']['avg_holdtime'] = "Durschnittliche Wartezeit"; 93 | $lang['de']['percent'] = "%"; 94 | $lang['de']['total'] = "Gesamt"; 95 | $lang['de']['calltime'] = "Anrufdauer"; 96 | $lang['de']['holdtime'] = "Wartedauer"; 97 | $lang['de']['total_time_agent'] = "Dauer je Agent (Sek.)"; 98 | $lang['de']['no_calls_agent'] = "Anzahl Anrufe je Agent"; 99 | $lang['de']['call_response'] = "Service Level"; 100 | $lang['de']['within'] = "Innerhalb "; 101 | $lang['de']['answer'] = "Answer"; 102 | $lang['de']['count'] = "Anzahl"; 103 | $lang['de']['delta'] = "Delta"; 104 | $lang['de']['disconnect_cause'] = "Auflegende Seite"; 105 | $lang['de']['cause'] = "Grund"; 106 | $lang['de']['agent_hungup'] = "Agent legte auf"; 107 | $lang['de']['caller_hungup'] = "Anrufer legte auf"; 108 | $lang['de']['caller'] = "Anrufer"; 109 | $lang['de']['transfers'] = "Transfers"; 110 | $lang['de']['to'] = "Zu"; 111 | 112 | // Unanswered page 113 | $lang['de']['unanswered_calls'] = "Unbeantwortete Anrufe"; 114 | $lang['de']['number_unanswered'] = "Anzahl unbeantworteter Anrufe"; 115 | $lang['de']['avg_wait_before_dis'] = "durchschnittliche Wartedauer vor Trennung der Verbindung"; 116 | $lang['de']['avg_queue_pos_at_dis']= "durchschnittliche Warteposition bei Trennung der Verbindung"; 117 | $lang['de']['avg_queue_start'] = "durchschnittliche Start queue Position"; 118 | $lang['de']['user_abandon'] = "Aufgabe durch Anrufer"; 119 | $lang['de']['abandon'] = "Aufgegeben"; 120 | $lang['de']['timeout'] = "Timeout"; 121 | $lang['de']['unanswered_calls_qu'] = "Unbeantwortete Anrufe nach Queue"; 122 | 123 | // Distribution 124 | $lang['de']['totals'] = "Gesamt"; 125 | $lang['de']['number_answered'] = "Anzahl beantworteter Anrufe"; 126 | $lang['de']['number_unanswered'] = "Anzahl unbeantworteter Anrufe"; 127 | $lang['de']['agent_login'] = "Agent Login"; 128 | $lang['de']['agent_logoff'] = "Agent Logoff"; 129 | $lang['de']['call_distrib_day'] = "Anrufverteilung je Tag"; 130 | $lang['de']['call_distrib_hour'] = "Anrufverteilung je Stunde"; 131 | $lang['de']['call_distrib_week'] = "Anrufverteilung je Wochentag"; 132 | $lang['de']['date'] = "Datum"; 133 | $lang['de']['day'] = "Tag"; 134 | $lang['de']['days'] = "Tage"; 135 | $lang['de']['hour'] = "Stunde"; 136 | $lang['de']['answered'] = "Beantwortet"; 137 | $lang['de']['unanswered'] = "Unbeantwortet"; 138 | $lang['de']['percent_answered'] = "% Beantw."; 139 | $lang['de']['percent_unanswered'] = "% Unbeantwort."; 140 | $lang['de']['login'] = "Login"; 141 | $lang['de']['logoff'] = "Logoff"; 142 | $lang['de']['answ_by_day'] = "Beantwortete Anrufe nach Wochentag"; 143 | $lang['de']['unansw_by_day'] = "Unbeantwortet Anrufe nach Wochentag"; 144 | $lang['de']['avg_call_time_by_day']= "Durchschnittliche Anrufdauer nach Wochentag"; 145 | $lang['de']['avg_hold_time_by_day']= "Durchschnittliche Wartedauer nach Wochentag"; 146 | $lang['de']['answ_by_hour'] = "Beantwortete Anrufe nach Tageszeit"; 147 | $lang['de']['unansw_by_hour'] = "Unbeantwortete Anrufe nach Tageszeit"; 148 | $lang['de']['avg_call_time_by_hr'] = "Durchschnittliche Anrufdauer nach Tageszeit"; 149 | $lang['de']['avg_hold_time_by_hr'] = "Durchschnittliche Wartezeit nach Tageszeit"; 150 | $lang['de']['page'] = "Seite"; 151 | $lang['de']['export'] = "Exportiere Tabelle:"; 152 | 153 | // Realtime 154 | $lang['de']['server_time'] = "Uhrzeit des Servers:"; 155 | $lang['de']['php_parsed'] = "Seite erzeugt in"; 156 | $lang['de']['seconds'] = "Sekunden"; 157 | $lang['de']['current_agent_status'] = "aktueller Agenten Status"; 158 | $lang['de']['hide_loggedoff'] = "verberge abgemeldete Agenten"; 159 | $lang['de']['agent_status'] = "Agenten Status"; 160 | $lang['de']['state'] = "Status"; 161 | $lang['de']['durat'] = "Dauer"; 162 | $lang['de']['clid'] = "Anrufer ID"; 163 | $lang['de']['last_in_call'] = "letzter eingegangener Anruf"; 164 | $lang['de']['not_in_use'] = "frei"; 165 | $lang['de']['paused'] = "pausiert"; 166 | $lang['de']['busy'] = "belegt"; 167 | $lang['de']['unavailable'] = "nicht verfügbar"; 168 | $lang['de']['unknown'] = "unbekannt"; 169 | $lang['de']['dialout'] = "klingelt"; 170 | $lang['de']['no_info'] = "keine Information verfügbar"; 171 | $lang['de']['min_ago'] = "Minuten zurvor"; 172 | $lang['de']['queue_summary'] = "Queue Zusammenfassung "; 173 | $lang['de']['staffed'] = "Besetzung"; 174 | $lang['de']['talking'] = "sprechend"; 175 | $lang['de']['paused'] = "pausiert"; 176 | $lang['de']['calls_waiting'] = "wartende Anrufe"; 177 | $lang['de']['oldest_call_waiting'] = "längster wartender Anruf"; 178 | $lang['de']['calls_waiting_detail'] = "aktuell wartende Anrufe"; 179 | $lang['de']['position'] = "Position"; 180 | $lang['de']['callerid'] = "Anrufer ID"; 181 | $lang['de']['wait_time'] = "Wartezeit"; 182 | ?> 183 | -------------------------------------------------------------------------------- /lang/en.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | $dayp[0] = "Sunday"; 23 | $dayp[1] = "Monday"; 24 | $dayp[2] = "Tuesday"; 25 | $dayp[3] = "Wednesday"; 26 | $dayp[4] = "Thursday"; 27 | $dayp[5] = "Friday"; 28 | $dayp[6] = "Saturday"; 29 | 30 | $yearp[0] = "January"; 31 | $yearp[1] = "February"; 32 | $yearp[2] = "March"; 33 | $yearp[3] = "April"; 34 | $yearp[4] = "May"; 35 | $yearp[5] = "June"; 36 | $yearp[6] = "July"; 37 | $yearp[7] = "August"; 38 | $yearp[8] = "September"; 39 | $yearp[9] = "October"; 40 | $yearp[10]= "November"; 41 | $yearp[11]= "December"; 42 | 43 | // Menu options 44 | $lang['en']['menu_home'] = "Home"; 45 | $lang['en']['menu_answered'] = "Answered"; 46 | $lang['en']['menu_unanswered'] = "Unanswered"; 47 | $lang['en']['menu_distribution'] = "Distribution"; 48 | 49 | // tooltips 50 | $lang['en']['pdfhelp'] = "Exports the data to a .pdf file"; 51 | $lang['en']['csvhelp'] = "Exports the data to a comma separated file, to be read by your spreadsheet software"; 52 | $lang['en']['gotop'] = "Goes to the top of the page"; 53 | 54 | // Index page 55 | $lang['en']['ALL'] = "ALL"; 56 | $lang['en']['lower'] = "Lower ..."; 57 | $lang['en']['higher'] = "Higher ..."; 58 | $lang['en']['select_queue'] = "Select Queues"; 59 | $lang['en']['select_agent'] = "Select Agents"; 60 | $lang['en']['select_timeframe'] = "Select Time Frame"; 61 | $lang['en']['queue'] = "Queue"; 62 | $lang['en']['start'] = "Start Date"; 63 | $lang['en']['end'] = "End Date"; 64 | $lang['en']['display_report'] = "Display Report"; 65 | $lang['en']['shortcuts'] = "Shortcuts"; 66 | $lang['en']['shift'] = "Shift"; 67 | $lang['en']['today'] = "Today"; 68 | $lang['en']['this_week'] = "This week"; 69 | $lang['en']['this_month'] = "This month"; 70 | $lang['en']['last_three_months'] = "Last 3 months"; 71 | $lang['en']['available'] = "Available"; 72 | $lang['en']['selected'] = "Selected"; 73 | $lang['en']['invaliddate'] = "Invalid date range"; 74 | 75 | // Answered page 76 | $lang['en']['answered_calls_by_agent'] = "Answered Calls by Agent"; 77 | $lang['en']['answered_calls_by_queue'] = "Answered Calls by Queue"; 78 | $lang['en']['anws_unanws_by_hour'] = "Answered/Unanswered by Hour"; 79 | $lang['en']['report_info'] = "Report Info"; 80 | $lang['en']['period'] = "Period"; 81 | $lang['en']['answered_calls'] = "Answered Calls"; 82 | $lang['en']['transferred_calls'] = "Transferred Calls"; 83 | $lang['en']['secs'] = "secs"; 84 | $lang['en']['minutes'] = "min"; 85 | $lang['en']['hours'] = "hs"; 86 | $lang['en']['calls'] = "calls"; 87 | $lang['en']['Calls'] = "Calls"; 88 | $lang['en']['agent'] = "Agent"; 89 | $lang['en']['avg'] = "Avg"; 90 | $lang['en']['avg_calltime'] = "Avg Durat."; 91 | $lang['en']['avg_holdtime'] = "Avg Hold"; 92 | $lang['en']['percent'] = "%"; 93 | $lang['en']['total'] = "Total"; 94 | $lang['en']['calltime'] = "Call Time"; 95 | $lang['en']['holdtime'] = "Hold Time"; 96 | $lang['en']['total_time_agent'] = "Total Time per Agent (secs)"; 97 | $lang['en']['no_calls_agent'] = "Number of Calls per Agent"; 98 | $lang['en']['call_response'] = "Service Level"; 99 | $lang['en']['within'] = "Within "; 100 | $lang['en']['answer'] = "Answer"; 101 | $lang['en']['count'] = "Count"; 102 | $lang['en']['delta'] = "Delta"; 103 | $lang['en']['disconnect_cause'] = "Disconnection Cause"; 104 | $lang['en']['cause'] = "Cause"; 105 | $lang['en']['agent_hungup'] = "Agent hung up"; 106 | $lang['en']['caller_hungup'] = "Caller hung up"; 107 | $lang['en']['caller'] = "Caller"; 108 | $lang['en']['transfers'] = "Transfers"; 109 | $lang['en']['to'] = "To"; 110 | 111 | // Unanswered page 112 | $lang['en']['unanswered_calls'] = "Unanswered Calls"; 113 | $lang['en']['number_unanswered'] = "Number of Unanswered Calls"; 114 | $lang['en']['avg_wait_before_dis'] = "Avg wait time before disconnect"; 115 | $lang['en']['avg_queue_pos_at_dis']= "Avg queue position at disconnection"; 116 | $lang['en']['avg_queue_start'] = "Avg start queue position"; 117 | $lang['en']['user_abandon'] = "User Abandon"; 118 | $lang['en']['abandon'] = "Abandon"; 119 | $lang['en']['timeout'] = "Timeout"; 120 | $lang['en']['unanswered_calls_qu'] = "Unanswered Calls by Queue"; 121 | 122 | // Distribution 123 | $lang['en']['totals'] = "Totals"; 124 | $lang['en']['number_answered'] = "Number of Answered Calls"; 125 | $lang['en']['number_unanswered'] = "Number of Unanswered Calls"; 126 | $lang['en']['agent_login'] = "Agent Login"; 127 | $lang['en']['agent_logoff'] = "Agent Logoff"; 128 | $lang['en']['call_distrib_day'] = "Call Distribution per day"; 129 | $lang['en']['call_distrib_hour'] = "Call Distribution per hour"; 130 | $lang['en']['call_distrib_week'] = "Call Distribution per day of week"; 131 | $lang['en']['date'] = "Date"; 132 | $lang['en']['day'] = "Day"; 133 | $lang['en']['days'] = "days"; 134 | $lang['en']['hour'] = "Hour"; 135 | $lang['en']['answered'] = "Answered"; 136 | $lang['en']['unanswered'] = "Unanswered"; 137 | $lang['en']['percent_answered'] = "% Answ"; 138 | $lang['en']['percent_unanswered'] = "% Unansw"; 139 | $lang['en']['login'] = "Login"; 140 | $lang['en']['logoff'] = "Logoff"; 141 | $lang['en']['answ_by_day'] = "Answered Calls by day of week"; 142 | $lang['en']['unansw_by_day'] = "Unanswered Calls by day of week"; 143 | $lang['en']['avg_call_time_by_day']= "Average Call Time by day of week"; 144 | $lang['en']['avg_hold_time_by_day']= "Average Hold Time by day of week"; 145 | $lang['en']['answ_by_hour'] = "Answered Calls by hour"; 146 | $lang['en']['unansw_by_hour'] = "Unanswered Calls by hour"; 147 | $lang['en']['avg_call_time_by_hr'] = "Average Call Time by hour"; 148 | $lang['en']['avg_hold_time_by_hr'] = "Average Hold Time by hour"; 149 | $lang['en']['page'] = "Page"; 150 | $lang['en']['export'] = "Export table:"; 151 | 152 | // Realtime 153 | $lang['en']['server_time'] = "Server Time:"; 154 | $lang['en']['php_parsed'] = "PHP parsed this page in "; 155 | $lang['en']['seconds'] = "seconds"; 156 | $lang['en']['current_agent_status'] = "Current agent status"; 157 | $lang['en']['hide_loggedoff'] = "Hide Logged Off"; 158 | $lang['en']['agent_status'] = "Agent Status"; 159 | $lang['en']['state'] = "State"; 160 | $lang['en']['durat'] = "Durat."; 161 | $lang['en']['clid'] = "CLID"; 162 | $lang['en']['last_in_call'] = "Last In Call"; 163 | $lang['en']['not_in_use'] = "not in use"; 164 | $lang['en']['paused'] = "paused"; 165 | $lang['en']['busy'] = "busy"; 166 | $lang['en']['unavailable'] = "unavailable"; 167 | $lang['en']['unknown'] = "unknown"; 168 | $lang['en']['dialout'] = "dialout"; 169 | $lang['en']['no_info'] = "no info available"; 170 | $lang['en']['min_ago'] = "min. ago"; 171 | $lang['en']['queue_summary'] = "Queue Summary"; 172 | $lang['en']['staffed'] = "Staffed"; 173 | $lang['en']['talking'] = "Talking"; 174 | $lang['en']['paused'] = "Paused"; 175 | $lang['en']['calls_waiting'] = "Calls Waiting"; 176 | $lang['en']['oldest_call_waiting'] = "Oldest Call Waiting"; 177 | $lang['en']['calls_waiting_detail'] = "Calls Waiting Detail"; 178 | $lang['en']['position'] = "Position"; 179 | $lang['en']['callerid'] = "Callerid"; 180 | $lang['en']['wait_time'] = "Wait time"; 181 | ?> 182 | -------------------------------------------------------------------------------- /lang/es.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | $dayp[0] = "Domingo"; 23 | $dayp[1] = "Lunes"; 24 | $dayp[2] = "Martes"; 25 | $dayp[3] = "Miercoles"; 26 | $dayp[4] = "Jueves"; 27 | $dayp[5] = "Viernes"; 28 | $dayp[6] = "Sabado"; 29 | 30 | $yearp[0] = "Enero"; 31 | $yearp[1] = "Febrero"; 32 | $yearp[2] = "Marzo"; 33 | $yearp[3] = "Abril"; 34 | $yearp[4] = "Mayo"; 35 | $yearp[5] = "Junio"; 36 | $yearp[6] = "Julio"; 37 | $yearp[7] = "Agosto"; 38 | $yearp[8] = "Septiembre"; 39 | $yearp[9] = "Octubre"; 40 | $yearp[10]= "Noviembre"; 41 | $yearp[11]= "Diciembre"; 42 | 43 | $lang['es']['menu_home'] = "Inicio"; 44 | $lang['es']['menu_answered'] = "Atendidas"; 45 | $lang['es']['menu_unanswered'] = "Sin atender"; 46 | $lang['es']['menu_distribution'] = "Distribución"; 47 | $lang['es']['ALL'] = "TODAS"; 48 | $lang['es']['lower'] = "Menor ..."; 49 | $lang['es']['higher'] = "Mayor ..."; 50 | $lang['es']['select_queue'] = "Elija Cola"; 51 | $lang['es']['select_agent'] = "Elija Agentes"; 52 | $lang['es']['select_timeframe'] = "Elija Intervalo de Tiempo"; 53 | $lang['es']['queue'] = "Cola"; 54 | $lang['es']['start'] = "Inicio"; 55 | $lang['es']['end'] = "Final"; 56 | $lang['es']['display_report'] = "Mostrar Reporte"; 57 | $lang['es']['shortcuts'] = "Atajos"; 58 | $lang['es']['today'] = "Hoy"; 59 | $lang['es']['this_week'] = "Esta semana"; 60 | $lang['es']['this_month'] = "Este mes"; 61 | $lang['es']['last_three_months'] = "Ultimos 3 meses"; 62 | $lang['es']['available'] = "Disponibles"; 63 | $lang['es']['selected'] = "Seleccionados"; 64 | $lang['es']['invaliddate'] = "Rango de fecha invalido"; 65 | 66 | // tooltips 67 | $lang['es']['pdfhelp'] = "Exporta los datos a un archivo .pdf"; 68 | $lang['es']['csvhelp'] = "Exporta los datos a un archivo separado por comas, para ser leído con su planilla de cálculo"; 69 | $lang['es']['gotop'] = "Ir al comienzo de la pagina"; 70 | 71 | // Answered page 72 | $lang['es']['answered_calls_by_agent'] = "Llamadas Atendidas por Agente"; 73 | $lang['es']['answered_calls_by_queue'] = "Llamadas Atendidas por Cola"; 74 | $lang['es']['anws_unanws_by_hour'] = "Atendidas/Desatendidas por Hora"; 75 | $lang['es']['report_info'] = "Detalles del Reporte"; 76 | $lang['es']['period'] = "Periodo"; 77 | $lang['es']['answered_calls'] = "Llamadas Atendidas"; 78 | $lang['es']['transferred_calls'] = "Llamadas Transferidas"; 79 | $lang['es']['secs'] = "segs"; 80 | $lang['es']['minutes'] = "min"; 81 | $lang['es']['hours'] = "hs"; 82 | $lang['es']['calls'] = "llamadas"; 83 | $lang['es']['Calls'] = "Llamadas"; 84 | $lang['es']['agent'] = "Agente"; 85 | $lang['es']['avg'] = "Promedio"; 86 | $lang['es']['avg_calltime'] = "Duracion media"; 87 | $lang['es']['avg_holdtime'] = "Espera media"; 88 | $lang['es']['percent'] = "%"; 89 | $lang['es']['total'] = "Total"; 90 | $lang['es']['calltime'] = "Dur. Llamada"; 91 | $lang['es']['holdtime'] = "Dur. Espera"; 92 | $lang['es']['total_time_agent'] = "Tiempo Total por Agente (segundos)"; 93 | $lang['es']['no_calls_agent'] = "Cantidad de Llamadas por Agente"; 94 | $lang['es']['call_response'] = "Nivel de Servicio"; 95 | $lang['es']['within'] = "Dentro de "; 96 | $lang['es']['answer'] = "Atendida"; 97 | $lang['es']['count'] = "Nro"; 98 | $lang['es']['delta'] = "Delta"; 99 | $lang['es']['disconnect_cause'] = "Causa de Desconexion"; 100 | $lang['es']['cause'] = "Causa"; 101 | $lang['es']['agent_hungup'] = "Corto el agente"; 102 | $lang['es']['caller_hungup'] = "Corto el usuario"; 103 | $lang['es']['caller'] = "Usuario"; 104 | $lang['es']['transfers'] = "Transferencias"; 105 | $lang['es']['to'] = "Hacia"; 106 | 107 | // Unanswered page 108 | $lang['es']['unanswered_calls'] = "Llamadas sin Atender"; 109 | $lang['es']['number_unanswered'] = "Nro de llamadas sin atender"; 110 | $lang['es']['avg_wait_before_dis'] = "Promedio de espera antes de desconectar"; 111 | $lang['es']['avg_queue_pos_at_dis']= "Posicion promedio en cola al desconectar"; 112 | $lang['es']['avg_queue_start'] = "Posicion inicial promedio en cola"; 113 | $lang['es']['user_abandon'] = "Abandonada por Usuario"; 114 | $lang['es']['abandon'] = "Abandonada"; 115 | $lang['es']['timeout'] = "Expirado"; 116 | $lang['es']['unanswered_calls_qu'] = "Llamadas sin Atender por Cola"; 117 | 118 | // Distribution 119 | $lang['es']['totals'] = "Totales"; 120 | $lang['es']['number_answered'] = "Numero de llamadas atendidas"; 121 | $lang['es']['number_unanswered'] = "Numero de llamadas sin atender"; 122 | $lang['es']['agent_login'] = "Ingresos de Agentes"; 123 | $lang['es']['agent_logoff'] = "Egresos de Agentes"; 124 | $lang['es']['call_distrib_day'] = "Distribucion de Llamados por dia"; 125 | $lang['es']['call_distrib_hour'] = "Distribucion de Llamados por hora"; 126 | $lang['es']['call_distrib_week'] = "Distribucion de Llamados por dia de semana"; 127 | $lang['es']['date'] = "Fecha"; 128 | $lang['es']['day'] = "Dia"; 129 | $lang['es']['days'] = "dias"; 130 | $lang['es']['hour'] = "Hora"; 131 | $lang['es']['answered'] = "Atendidas"; 132 | $lang['es']['unanswered'] = "Sin atender"; 133 | $lang['es']['percent_answered'] = "% Atend"; 134 | $lang['es']['percent_unanswered'] = "% Desat"; 135 | $lang['es']['login'] = "Ingresos"; 136 | $lang['es']['logoff'] = "Egresos"; 137 | $lang['es']['answ_by_day'] = "Llamadas Atendidas por dia de semana"; 138 | $lang['es']['unansw_by_day'] = "Llamadas sin Atender por dia de semana"; 139 | $lang['es']['avg_call_time_by_day']= "Duracion promedio de llamadas por dia de semana"; 140 | $lang['es']['avg_hold_time_by_day']= "Duracion promedio de espera por dia de semana"; 141 | $lang['es']['answ_by_hour'] = "Llamadas Atendidas por hora"; 142 | $lang['es']['unansw_by_hour'] = "Llamadas sin Atender por hora"; 143 | $lang['es']['avg_call_time_by_hr'] = "Duracion promedio de llamadas por hora"; 144 | $lang['es']['avg_hold_time_by_hr'] = "Duracion promedio de espera por hora"; 145 | $lang['es']['page'] = "Pagina"; 146 | $lang['es']['export'] = "Exportar tabla:"; 147 | 148 | $lang['es']['server_time'] = "Hora en el Servidor:"; 149 | $lang['es']['php_parsed'] = "PHP genero la pagina en "; 150 | $lang['es']['seconds'] = "segundos"; 151 | $lang['es']['current_agent_status'] = "Panorama Actual"; 152 | $lang['es']['hide_loggedoff'] = "Ocultar agentes deslogeados"; 153 | $lang['es']['agent_status'] = "Estado de Agentes"; 154 | $lang['es']['state'] = "Estado"; 155 | $lang['es']['durat'] = "Durac."; 156 | $lang['es']['clid'] = "CLID"; 157 | $lang['es']['last_in_call'] = "Ultimo llamado"; 158 | $lang['es']['not_in_use'] = "Libre"; 159 | $lang['es']['paused'] = "Pausa"; 160 | $lang['es']['busy'] = "Ocupado"; 161 | $lang['es']['unavailable'] = "No disponible"; 162 | $lang['es']['unknown'] = "Desconocido"; 163 | $lang['es']['dialout'] = "Llamada Saliente"; 164 | $lang['es']['no_info'] = "no hay datos"; 165 | $lang['es']['min_ago'] = "min."; 166 | $lang['es']['queue_summary'] = "Resumen de Colas"; 167 | $lang['es']['staffed'] = "Disponibles"; 168 | $lang['es']['talking'] = "Hablando"; 169 | $lang['es']['paused'] = "En Pausa"; 170 | $lang['es']['calls_waiting'] = "Llamadas en espera"; 171 | $lang['es']['oldest_call_waiting'] = "Llamada mas antigua en espera"; 172 | $lang['es']['calls_waiting_detail'] = "Detalle de Llamados en Espera"; 173 | $lang['es']['position'] = "Posicion"; 174 | $lang['es']['callerid'] = "Callerid"; 175 | $lang['es']['wait_time'] = "Espera"; 176 | ?> 177 | -------------------------------------------------------------------------------- /lang/fr.php: -------------------------------------------------------------------------------- 1 | . 18 | */ 19 | // French Translation 20 | // Sylvain Boily 21 | // sboily@proformatique.com 22 | 23 | $dayp[0] = "Dimanche"; 24 | $dayp[1] = "Lundi"; 25 | $dayp[2] = "Mardi"; 26 | $dayp[3] = "Mercredi"; 27 | $dayp[4] = "Jeudi"; 28 | $dayp[5] = "Vendredi"; 29 | $dayp[6] = "Samedi"; 30 | 31 | $yearp[0] = "Janvier"; 32 | $yearp[1] = "Février"; 33 | $yearp[2] = "Mars"; 34 | $yearp[3] = "Avril"; 35 | $yearp[4] = "Mai"; 36 | $yearp[5] = "Juin"; 37 | $yearp[6] = "Juillet"; 38 | $yearp[7] = "Aôut"; 39 | $yearp[8] = "Septembre"; 40 | $yearp[9] = "Octobre"; 41 | $yearp[10]= "Novembre"; 42 | $yearp[11]= "Décembre"; 43 | 44 | // Menu options 45 | $lang['fr']['menu_home'] = "Accueil"; 46 | $lang['fr']['menu_answered'] = "Répondu"; 47 | $lang['fr']['menu_unanswered'] = "Non répondu"; 48 | $lang['fr']['menu_distribution'] = "Répartition"; 49 | $lang['fr']['menu_realtime'] = "Temps réel"; 50 | 51 | // tooltips 52 | $lang['fr']['pdfhelp'] = "Exporter les données dans un fichier .pdf"; 53 | $lang['fr']['csvhelp'] = "Exporter les données dans un fichier avec un séparateur afin de les lire dans un tableur"; 54 | $lang['fr']['gotop'] = "Allez au début de la page"; 55 | 56 | // Index page 57 | $lang['fr']['ALL'] = "TOUS"; 58 | $lang['fr']['lower'] = "Plus petit ..."; 59 | $lang['fr']['higher'] = "Plus grand ..."; 60 | $lang['fr']['select_queue'] = "Séléctionner une file"; 61 | $lang['fr']['select_agent'] = "Séléctionner un agent"; 62 | $lang['fr']['select_timeframe'] = "Séléctionner un interval de temps"; 63 | $lang['fr']['queue'] = "File"; 64 | $lang['fr']['start'] = "Date de début"; 65 | $lang['fr']['end'] = "Date de fin"; 66 | $lang['fr']['display_report'] = "Voir le rapport"; 67 | $lang['fr']['shortcuts'] = "Raccourci"; 68 | $lang['fr']['today'] = "Aujourd'hui"; 69 | $lang['fr']['this_week'] = "Cette semaine"; 70 | $lang['fr']['this_month'] = "Ce mois"; 71 | $lang['fr']['last_three_months'] = "Derniers 3 mois"; 72 | $lang['fr']['available'] = "Disponible"; 73 | $lang['fr']['selected'] = "Selectionné"; 74 | $lang['fr']['invaliddate'] = "Interval des dates invalides"; 75 | 76 | // Answered page 77 | $lang['fr']['answered_calls_by_agent'] = "Appel répondu par agent"; 78 | $lang['fr']['answered_calls_by_queue'] = "Appel répondu par file d'attente"; 79 | $lang['fr']['anws_unanws_by_hour'] = "Répondu/non-répondu par heure"; 80 | $lang['fr']['report_info'] = "Information des rapports"; 81 | $lang['fr']['period'] = "Période"; 82 | $lang['fr']['answered_calls'] = "Appel répondu"; 83 | $lang['fr']['transferred_calls'] = "Appel transférer"; 84 | $lang['fr']['secs'] = "secs"; 85 | $lang['fr']['minutes'] = "min"; 86 | $lang['fr']['hours'] = "hs"; 87 | $lang['fr']['calls'] = "appels"; 88 | $lang['fr']['Calls'] = "Appels"; 89 | $lang['fr']['agent'] = "Agent"; 90 | $lang['fr']['avg'] = "Moy."; 91 | $lang['fr']['avg_calltime'] = "Moy. durée"; 92 | $lang['fr']['avg_holdtime'] = "Moy. attente"; 93 | $lang['fr']['percent'] = "%"; 94 | $lang['fr']['total'] = "Total"; 95 | $lang['fr']['calltime'] = "Temps d'appel"; 96 | $lang['fr']['holdtime'] = "Temps d'attente"; 97 | $lang['fr']['total_time_agent'] = "Temps total par agent (secs)"; 98 | $lang['fr']['no_calls_agent'] = "Nombre d\'appels par agent"; 99 | $lang['fr']['call_response'] = "Niveau de service"; 100 | $lang['fr']['within'] = "Avant "; 101 | $lang['fr']['answer'] = "Répondre"; 102 | $lang['fr']['count'] = "Compteur"; 103 | $lang['fr']['delta'] = "Différence"; 104 | $lang['fr']['disconnect_cause'] = "Raison de déconnexion"; 105 | $lang['fr']['cause'] = "Raison"; 106 | $lang['fr']['agent_hungup'] = "Agent raccroché"; 107 | $lang['fr']['caller_hungup'] = "Appelant raccroché"; 108 | $lang['fr']['caller'] = "Appelant"; 109 | $lang['fr']['transfers'] = "Transfert"; 110 | $lang['fr']['to'] = "Pour"; 111 | 112 | // Unanswered page 113 | $lang['fr']['unanswered_calls'] = "Appel non répondu"; 114 | $lang['fr']['number_unanswered'] = "Nombre d'appels non répondu"; 115 | $lang['fr']['avg_wait_before_dis'] = "Moy. du temps d'attente avant le raccroché"; 116 | $lang['fr']['avg_queue_pos_at_dis']= "Moy. de la position dans la file lors de la déconnexion"; 117 | $lang['fr']['avg_queue_start'] = "Moy. lors de l'arrivé dans la file"; 118 | $lang['fr']['user_abandon'] = "Abandon des utilisateurs"; 119 | $lang['fr']['abandon'] = "Abandon"; 120 | $lang['fr']['timeout'] = "Délai dépassé"; 121 | $lang['fr']['unanswered_calls_qu'] = "Appel non-répondu par file"; 122 | 123 | // Distribution 124 | $lang['fr']['totals'] = "Totals"; 125 | $lang['fr']['number_answered'] = "Nombre d'appel répondu"; 126 | $lang['fr']['number_unanswered'] = "Nombre d'appel non répondu"; 127 | $lang['fr']['agent_login'] = "Agent loggué"; 128 | $lang['fr']['agent_logoff'] = "Agent déloggué"; 129 | $lang['fr']['call_distrib_day'] = "Répartition d'appels par jour"; 130 | $lang['fr']['call_distrib_hour'] = "Répartition d'appel par heure"; 131 | $lang['fr']['call_distrib_week'] = "Répartition d'appel par jour de semaine"; 132 | $lang['fr']['date'] = "Date"; 133 | $lang['fr']['day'] = "Jour"; 134 | $lang['fr']['days'] = "jours"; 135 | $lang['fr']['hour'] = "Heure"; 136 | $lang['fr']['answered'] = "Répondu"; 137 | $lang['fr']['unanswered'] = "Non répondu"; 138 | $lang['fr']['percent_answered'] = "% répondu"; 139 | $lang['fr']['percent_unanswered'] = "% non répondu"; 140 | $lang['fr']['login'] = "Loggué"; 141 | $lang['fr']['logoff'] = "Déloggué"; 142 | $lang['fr']['answ_by_day'] = "Appels répondu par jour de la semaine"; 143 | $lang['fr']['unansw_by_day'] = "Appels non répondu par jour de la semaine"; 144 | $lang['fr']['avg_call_time_by_day']= "Moyenne du temps d\'appels pour jour de la semaine"; 145 | $lang['fr']['avg_hold_time_by_day']= "Moyenne du temps d\'attente par jour de la semaine"; 146 | $lang['fr']['answ_by_hour'] = "Appels répondu par heure"; 147 | $lang['fr']['unansw_by_hour'] = "Appel non répondu par heure"; 148 | $lang['fr']['avg_call_time_by_hr'] = "Moyenne du temps d\'appel par heure"; 149 | $lang['fr']['avg_hold_time_by_hr'] = "Moyenne du temps d\'attente par heure"; 150 | $lang['fr']['page'] = "Page"; 151 | $lang['fr']['export'] = "Exporter la table:"; 152 | 153 | // Realtime 154 | $lang['fr']['current_agent_status'] = "Gestion des agents"; 155 | $lang['fr']['agent_status'] = "Status des agents"; 156 | $lang['fr']['hide_loggedoff'] = "Cacher les agents non loggué"; 157 | $lang['fr']['calls_waiting_detail'] = "Détail des appels dans la file d'attente"; 158 | $lang['fr']['position'] = "Position"; 159 | $lang['fr']['callerid'] = "Nom appelant"; 160 | $lang['fr']['wait_time'] = "Temps attente"; 161 | $lang['fr']['state'] = "État"; 162 | $lang['fr']['staffed'] = "En ligne"; 163 | $lang['fr']['talking'] = "En communication"; 164 | $lang['fr']['paused'] = "En pause"; 165 | $lang['fr']['durat'] = "Durée"; 166 | $lang['fr']['clid'] = "CLID"; 167 | $lang['fr']['last_in_call'] = "Dernière fois en appel"; 168 | $lang['fr']['queue_summary'] = "Liste des files d'attente"; 169 | $lang['fr']['calls_waiting'] = "Appel en attente"; 170 | $lang['fr']['oldest_call_waiting'] = "Ancien appel en attente"; 171 | $lang['fr']['seconds'] = "seconds"; 172 | $lang['fr']['not_in_use'] = "au repos"; 173 | $lang['fr']['busy'] = "occupée."; 174 | $lang['fr']['unavailable'] = "indisponible"; 175 | $lang['fr']['php_parsed'] = "PHP analysé cette page"; 176 | $lang['fr']['unknown'] = "inconnu"; 177 | $lang['fr']['dialout'] = "dialout"; 178 | $lang['fr']['no_info'] = "s/i"; 179 | $lang['fr']['min_ago'] = "min. ago"; 180 | 181 | ?> 182 | -------------------------------------------------------------------------------- /lang/pt_BR.php: -------------------------------------------------------------------------------- 1 | 5 | 6 | $dayp[0] = "Domingo"; 7 | $dayp[1] = "Segunda"; 8 | $dayp[2] = "Terca"; 9 | $dayp[3] = "Quarta"; 10 | $dayp[4] = "Quinta"; 11 | $dayp[5] = "Sexta"; 12 | $dayp[6] = "Sabado"; 13 | 14 | $yearp[0] = "Janeiro"; 15 | $yearp[1] = "Fevereiro"; 16 | $yearp[2] = "Marco"; 17 | $yearp[3] = "Abril"; 18 | $yearp[4] = "Maio"; 19 | $yearp[5] = "Junho"; 20 | $yearp[6] = "Julho"; 21 | $yearp[7] = "Agosto"; 22 | $yearp[8] = "Setembro"; 23 | $yearp[9] = "Outubro"; 24 | $yearp[10]= "Novembro"; 25 | $yearp[11]= "Dezembro"; 26 | 27 | // Menu options 28 | $lang['pt_BR']['menu_home'] = "Inicio"; 29 | $lang['pt_BR']['menu_answered'] = "Atendidas"; 30 | $lang['pt_BR']['menu_unanswered'] = "Perdidas"; 31 | $lang['pt_BR']['menu_distribution'] = "Distribuição"; 32 | 33 | // tooltips 34 | $lang['pt_BR']['pdfhelp'] = "Exportar os dados para PDF"; 35 | $lang['pt_BR']['csvhelp'] = "Exportar os dados em CSV"; 36 | $lang['pt_BR']['gotop'] = "Ir para to topo da página"; 37 | 38 | // Index page 39 | $lang['pt_BR']['ALL'] = "Todos"; 40 | $lang['pt_BR']['lower'] = "Menor ..."; 41 | $lang['pt_BR']['higher'] = "Maior ..."; 42 | $lang['pt_BR']['select_queue'] = "Selecionar Fila"; 43 | $lang['pt_BR']['select_agent'] = "Selecionar Agente"; 44 | $lang['pt_BR']['select_timeframe'] = "Selecionar Fatia de Tempo"; 45 | $lang['pt_BR']['queue'] = "Fila"; 46 | $lang['pt_BR']['start'] = "Data Inicial"; 47 | $lang['pt_BR']['end'] = "Data Final"; 48 | $lang['pt_BR']['display_report'] = "Mostrar Relatório"; 49 | $lang['pt_BR']['shortcuts'] = "Atalhos"; 50 | $lang['pt_BR']['today'] = "Hoje"; 51 | $lang['pt_BR']['this_week'] = "Esta semana"; 52 | $lang['pt_BR']['this_month'] = "Este mês"; 53 | $lang['pt_BR']['last_three_months'] = "Últimos 3 meses"; 54 | $lang['pt_BR']['available'] = "Disponível"; 55 | $lang['pt_BR']['selected'] = "Selecionado"; 56 | $lang['pt_BR']['invaliddate'] = "Intervalo de data inválido"; 57 | 58 | // Answered page 59 | $lang['pt_BR']['answered_calls_by_agent'] = "Chamadas atendidas por agentes"; 60 | $lang['pt_BR']['answered_calls_by_queue'] = "Chamadas atendidas por fila"; 61 | $lang['pt_BR']['anws_unanws_by_hour'] = "Atendidas/Perdidas por Hora"; 62 | $lang['pt_BR']['report_info'] = "Informações do Relatório"; 63 | $lang['pt_BR']['period'] = "Periodo"; 64 | $lang['pt_BR']['answered_calls'] = "Chamadas Atendidas"; 65 | $lang['pt_BR']['transferred_calls'] = "Chamadas Transferidas"; 66 | $lang['pt_BR']['secs'] = "segs"; 67 | $lang['pt_BR']['minutes'] = "min"; 68 | $lang['pt_BR']['hours'] = "hs"; 69 | $lang['pt_BR']['calls'] = "chamadas"; 70 | $lang['pt_BR']['Calls'] = "Chamadas"; 71 | $lang['pt_BR']['agent'] = "Agente"; 72 | $lang['pt_BR']['avg'] = "Média"; 73 | $lang['pt_BR']['avg_calltime'] = "Duração Média"; 74 | $lang['pt_BR']['avg_holdtime'] = "Tempo de espera médio"; 75 | $lang['pt_BR']['percent'] = "%"; 76 | $lang['pt_BR']['total'] = "Total"; 77 | $lang['pt_BR']['calltime'] = "Tempo das chamadas"; 78 | $lang['pt_BR']['holdtime'] = "Tempo de espera"; 79 | $lang['pt_BR']['total_time_agent'] = "Tempo total por agente (segs)"; 80 | $lang['pt_BR']['no_calls_agent'] = "Número de chamadas por agente"; 81 | $lang['pt_BR']['call_response'] = "Nível de Servico"; 82 | $lang['pt_BR']['within'] = "Com "; 83 | $lang['pt_BR']['answer'] = "Atendidas"; 84 | $lang['pt_BR']['count'] = "Quantidade"; 85 | $lang['pt_BR']['delta'] = "Delta"; 86 | $lang['pt_BR']['disconnect_cause'] = "Causa da desconecxão"; 87 | $lang['pt_BR']['cause'] = "Causa"; 88 | $lang['pt_BR']['agent_hungup'] = "Agente desligou"; 89 | $lang['pt_BR']['caller_hungup'] = "Cliente desligou"; 90 | $lang['pt_BR']['caller'] = "Caller"; 91 | $lang['pt_BR']['transfers'] = "Transfers"; 92 | $lang['pt_BR']['to'] = "Para"; 93 | 94 | // Unanswered page 95 | $lang['pt_BR']['unanswered_calls'] = "Chamadas Perdidas"; 96 | $lang['pt_BR']['number_unanswered'] = "Número de chamadas perdidas"; 97 | $lang['pt_BR']['avg_wait_before_dis'] = "Média de tempo de espera antes de desconectar"; 98 | $lang['pt_BR']['avg_queue_pos_at_dis']= "Média de posição na fila antes de desconectar"; 99 | $lang['pt_BR']['avg_queue_start'] = "Posição média na fila de espera"; 100 | $lang['pt_BR']['user_abandon'] = "Abandono do usuário"; 101 | $lang['pt_BR']['abandon'] = "Abandono"; 102 | $lang['pt_BR']['timeout'] = "Timpo limite da chamada"; 103 | $lang['pt_BR']['unanswered_calls_qu'] = "Não respondidas por filas"; 104 | 105 | // Distribution 106 | $lang['pt_BR']['totals'] = "Totais"; 107 | $lang['pt_BR']['number_answered'] = "Número de Chamadas Atendidas"; 108 | $lang['pt_BR']['number_unanswered'] = "Número de Chamadas Perdidas"; 109 | $lang['pt_BR']['agent_login'] = "Login de Agente"; 110 | $lang['pt_BR']['agent_logoff'] = "Logoff de Agente"; 111 | $lang['pt_BR']['call_distrib_day'] = "Distribuição de Chamadas por dia"; 112 | $lang['pt_BR']['call_distrib_hour'] = "Distribuição de Chamadas por hora"; 113 | $lang['pt_BR']['call_distrib_week'] = "Distribuição de Chamadas por dia da semana"; 114 | $lang['pt_BR']['date'] = "Data"; 115 | $lang['pt_BR']['day'] = "Dia"; 116 | $lang['pt_BR']['days'] = "dias"; 117 | $lang['pt_BR']['hour'] = "Hora"; 118 | $lang['pt_BR']['answered'] = "Atendidas"; 119 | $lang['pt_BR']['unanswered'] = "Perdidas"; 120 | $lang['pt_BR']['percent_answered'] = "% Atend"; 121 | $lang['pt_BR']['percent_unanswered'] = "% Perd"; 122 | $lang['pt_BR']['login'] = "Login"; 123 | $lang['pt_BR']['logoff'] = "Logoff"; 124 | $lang['pt_BR']['answ_by_day'] = "Chamadas Atendidas por dia da semana"; 125 | $lang['pt_BR']['unansw_by_day'] = "Chamadas Perdidas por dia da semana"; 126 | $lang['pt_BR']['avg_call_time_by_day']= "Duração média de chamadas por dia da semana"; 127 | $lang['pt_BR']['avg_hold_time_by_day']= "Duração médio de espera por dia da semana"; 128 | $lang['pt_BR']['answ_by_hour'] = "Chamadas atendidas por hora"; 129 | $lang['pt_BR']['unansw_by_hour'] = "Chamadas perdidas por hora"; 130 | $lang['pt_BR']['avg_call_time_by_hr'] = "Tempo médio de chamada por hora"; 131 | $lang['pt_BR']['avg_hold_time_by_hr'] = "Tempo médio de espera por hora"; 132 | $lang['pt_BR']['page'] = "Página"; 133 | $lang['pt_BR']['export'] = "Exportar tabela:"; 134 | 135 | // Realtime 136 | $lang['pt_BR']['server_time'] = "Server Time:"; 137 | $lang['pt_BR']['php_parsed'] = "PHP parsed this page in "; 138 | $lang['pt_BR']['seconds'] = "seconds"; 139 | $lang['pt_BR']['current_agent_status'] = "Current agent status"; 140 | $lang['pt_BR']['hide_loggedoff'] = "Hide Logged Off"; 141 | $lang['pt_BR']['agent_status'] = "Agent Status"; 142 | $lang['pt_BR']['state'] = "State"; 143 | $lang['pt_BR']['durat'] = "Durat."; 144 | $lang['pt_BR']['clid'] = "CLID"; 145 | $lang['pt_BR']['last_in_call'] = "Last In Call"; 146 | $lang['pt_BR']['not_in_use'] = "not in use"; 147 | $lang['pt_BR']['paused'] = "paused"; 148 | $lang['pt_BR']['busy'] = "busy"; 149 | $lang['pt_BR']['unavailable'] = "unavailable"; 150 | $lang['pt_BR']['unknown'] = "unknown"; 151 | $lang['pt_BR']['dialout'] = "dialout"; 152 | $lang['pt_BR']['no_info'] = "no info available"; 153 | $lang['pt_BR']['min_ago'] = "min. ago"; 154 | $lang['pt_BR']['queue_summary'] = "Queue Summary"; 155 | $lang['pt_BR']['staffed'] = "Staffed"; 156 | $lang['pt_BR']['talking'] = "Talking"; 157 | $lang['pt_BR']['paused'] = "Paused"; 158 | $lang['pt_BR']['calls_waiting'] = "Calls Waiting"; 159 | $lang['pt_BR']['oldest_call_waiting'] = "Oldest Call Waiting"; 160 | $lang['pt_BR']['calls_waiting_detail'] = "Calls Waiting Detail"; 161 | $lang['pt_BR']['position'] = "Position"; 162 | $lang['pt_BR']['callerid'] = "Callerid"; 163 | $lang['pt_BR']['wait_time'] = "Wait time"; 164 | 165 | 166 | ?> 167 | -------------------------------------------------------------------------------- /lang/ru.php: -------------------------------------------------------------------------------- 1 | . 18 | */ 19 | 20 | // Russian language locale (UTF-8) 21 | // Nesterov Max 22 | // braams@yandex.ru 23 | // 13.08.2008 24 | // v0.1 for v1.0 25 | $dayp[0] = "Воскресенье"; 26 | $dayp[1] = "Понедельник"; 27 | $dayp[2] = "Вторник"; 28 | $dayp[3] = "Среда"; 29 | $dayp[4] = "Четверг"; 30 | $dayp[5] = "Пятница"; 31 | $dayp[6] = "Суббота"; 32 | 33 | $yearp[0] = "Январь"; 34 | $yearp[1] = "Февраль"; 35 | $yearp[2] = "Март"; 36 | $yearp[3] = "Апрель"; 37 | $yearp[4] = "Май"; 38 | $yearp[5] = "Июнь"; 39 | $yearp[6] = "Июль"; 40 | $yearp[7] = "Август"; 41 | $yearp[8] = "Сентябрь"; 42 | $yearp[9] = "Октябрь"; 43 | $yearp[10]= "Ноябрь"; 44 | $yearp[11]= "Декабрь"; 45 | 46 | // Menu options 47 | $lang['ru']['menu_home'] = "Главная"; 48 | $lang['ru']['menu_answered'] = "Отвеченные"; 49 | $lang['ru']['menu_unanswered'] = "Неотвеченные"; 50 | $lang['ru']['menu_distribution'] = "Распределение"; 51 | $lang['ru']['menu_stats'] = "Статистика"; 52 | 53 | // tooltips 54 | $lang['ru']['pdfhelp'] = "Экспортировать в .pdf"; 55 | $lang['ru']['csvhelp'] = "Экспортировать в CSV файл для обработки в табличном редакторе"; 56 | $lang['ru']['gotop'] = "Перейти наверх страницы"; 57 | 58 | // Index page 59 | $lang['ru']['ALL'] = "ВСЕ"; 60 | $lang['ru']['lower'] = "Ниже ..."; 61 | $lang['ru']['higher'] = "Выше ..."; 62 | $lang['ru']['select_queue'] = "Выберите очереди"; 63 | $lang['ru']['select_agent'] = "Выберите агентов"; 64 | $lang['ru']['select_timeframe'] = "Ввберите интервал времени"; 65 | $lang['ru']['queue'] = "Очередь"; 66 | $lang['ru']['start'] = "Начальная дата"; 67 | $lang['ru']['end'] = "Конечная дата"; 68 | $lang['ru']['display_report'] = "Показать отчет"; 69 | $lang['ru']['shortcuts'] = "Шаблоны"; 70 | $lang['ru']['today'] = "Сегодня"; 71 | $lang['ru']['this_week'] = "Эта неделя"; 72 | $lang['ru']['this_month'] = "Этот месяц"; 73 | $lang['ru']['last_three_months'] = "Последние 3 месяца"; 74 | $lang['ru']['available'] = "Доступные"; 75 | $lang['ru']['selected'] = "Выбранные"; 76 | $lang['ru']['invaliddate'] = "Неправильный диапазон дат"; 77 | 78 | // Answered page 79 | $lang['ru']['answered_calls_by_agent'] = "Отвеченные вызовы по агентам"; 80 | $lang['ru']['answered_calls_by_queue'] = "Отвеченные вызовы по очередям"; 81 | $lang['ru']['anws_unanws_by_hour'] = "Отвеченные/Неотвенные по часам"; 82 | $lang['ru']['report_info'] = "Информация об отчете"; 83 | $lang['ru']['period'] = "Период"; 84 | $lang['ru']['answered_calls'] = "Отвеченные вызовы"; 85 | $lang['ru']['transferred_calls'] = "Переадресованные вызовы"; 86 | $lang['ru']['secs'] = "сек"; 87 | $lang['ru']['minutes'] = "мин"; 88 | $lang['ru']['hours'] = "ч"; 89 | $lang['ru']['calls'] = "вызовы"; 90 | $lang['ru']['Calls'] = "Вызовы"; 91 | $lang['ru']['agent'] = "Агент"; 92 | $lang['ru']['avg'] = "Средн."; 93 | $lang['ru']['avg_calltime'] = "Средняя продолжительность"; 94 | $lang['ru']['avg_holdtime'] = "Среднее время ожидания"; 95 | $lang['ru']['percent'] = "%"; 96 | $lang['ru']['total'] = "Общее"; 97 | $lang['ru']['calltime'] = "Время разговора"; 98 | $lang['ru']['holdtime'] = "Время ожидания"; 99 | $lang['ru']['total_time_agent'] = "Общая длительность по агентам (сек)"; 100 | $lang['ru']['no_calls_agent'] = "Количество звонков по агентам"; 101 | $lang['ru']['call_response'] = "Уровень обслуживания"; 102 | $lang['ru']['within'] = "за "; 103 | $lang['ru']['answer'] = "Ответ"; 104 | $lang['ru']['count'] = "Количество"; 105 | $lang['ru']['delta'] = "Дельта"; 106 | $lang['ru']['disconnect_cause'] = "Причина разъединения"; 107 | $lang['ru']['cause'] = "Причина"; 108 | $lang['ru']['agent_hungup'] = "Агент отключился"; 109 | $lang['ru']['caller_hungup'] = "Звонящий отключился"; 110 | $lang['ru']['caller'] = "Звонящий"; 111 | $lang['ru']['transfers'] = "Переадресации"; 112 | $lang['ru']['to'] = "На"; 113 | 114 | // Unanswered page 115 | $lang['ru']['unanswered_calls'] = "Неотвеченные вызовы"; 116 | $lang['ru']['number_unanswered'] = "Количество неотвеченных вызовов"; 117 | $lang['ru']['avg_wait_before_dis'] = "Среднее время ожидания перед разъединением"; 118 | $lang['ru']['avg_queue_pos_at_dis']= "Средняя позиция в очереди при разъединении"; 119 | $lang['ru']['avg_queue_start'] = "Средняя начальная позиция в очереди"; 120 | $lang['ru']['user_abandon'] = "Пользователь покинул"; 121 | $lang['ru']['abandon'] = "Покинул"; 122 | $lang['ru']['timeout'] = "Тайм-аут"; 123 | $lang['ru']['unanswered_calls_qu'] = "Неотвеченные вызовы по очередям"; 124 | 125 | // Distribution 126 | $lang['ru']['totals'] = "Итоги"; 127 | $lang['ru']['number_answered'] = "Количество отвеченных вызовов"; 128 | $lang['ru']['number_unanswered'] = "Количество неотвеченных вызовов"; 129 | $lang['ru']['agent_login'] = "Входов агентов"; 130 | $lang['ru']['agent_logoff'] = "Выходов агентов"; 131 | $lang['ru']['call_distrib_day'] = "Распределение вызовов по дням"; 132 | $lang['ru']['call_distrib_hour'] = "Распределение вызовов по часам."; 133 | $lang['ru']['call_distrib_week'] = "Распределение вызовов по дням недели"; 134 | $lang['ru']['date'] = "Дата"; 135 | $lang['ru']['day'] = "День"; 136 | $lang['ru']['days'] = "Дней"; 137 | $lang['ru']['hour'] = "Час"; 138 | $lang['ru']['answered'] = "Отвеченных"; 139 | $lang['ru']['unanswered'] = "Неотвеченных"; 140 | $lang['ru']['percent_answered'] = "% Отв"; 141 | $lang['ru']['percent_unanswered'] = "% Неотв"; 142 | $lang['ru']['login'] = "Вход"; 143 | $lang['ru']['logoff'] = "Выход"; 144 | $lang['ru']['answ_by_day'] = "Отвеченные вызовы по дням недели"; 145 | $lang['ru']['unansw_by_day'] = "Неотвеченные вызовы по дням недели"; 146 | $lang['ru']['avg_call_time_by_day']= "Средняя длительность звонка по дням недели"; 147 | $lang['ru']['avg_hold_time_by_day']= "Среднее длительность ожидания по дням недели"; 148 | $lang['ru']['answ_by_hour'] = "Отвеченные вызовы по часам"; 149 | $lang['ru']['unansw_by_hour'] = "Неотвеченные вызовы по часам"; 150 | $lang['ru']['avg_call_time_by_hr'] = "Средняя длительность звонка по часам"; 151 | $lang['ru']['avg_hold_time_by_hr'] = "Средняя длительность ожидания по часам"; 152 | $lang['ru']['page'] = "Страница"; 153 | $lang['ru']['export'] = "Экспорт таблицы:"; 154 | 155 | $lang['ru']['server_time'] = "Время сервера:"; 156 | $lang['ru']['php_parsed'] = "Парсинг: "; 157 | $lang['ru']['seconds'] = "сек."; 158 | $lang['ru']['current_agent_status'] = "Текущий статус агента"; 159 | $lang['ru']['hide_loggedoff'] = "Скрыть незарег."; 160 | $lang['es']['agent_status'] = "Статус Агента"; 161 | $lang['ru']['state'] = "Состояние"; 162 | $lang['ru']['durat'] = "Время разг."; 163 | $lang['ru']['clid'] = "CLID"; 164 | $lang['ru']['last_in_call'] = "Последний вызов"; 165 | $lang['ru']['not_in_use'] = "свободен"; 166 | $lang['ru']['paused'] = "пауза"; 167 | $lang['ru']['busy'] = "вызов"; 168 | $lang['ru']['unavailable'] = "недоступен"; 169 | $lang['ru']['unknown'] = "неизвестно"; 170 | $lang['ru']['dialout'] = "разг."; 171 | $lang['ru']['no_info'] = "нет инф."; 172 | $lang['ru']['min_ago'] = "мин. назад"; 173 | $lang['ru']['queue_summary'] = "Общ. инф."; 174 | $lang['ru']['staffed'] = "Активн. агентов"; 175 | $lang['ru']['talking'] = "Говорят"; 176 | $lang['ru']['paused'] = "На паузе"; 177 | $lang['ru']['calls_waiting'] = "Вызовов в очереди"; 178 | $lang['ru']['oldest_call_waiting'] = "Время ожидания"; 179 | $lang['ru']['calls_waiting_detail'] = "Вызовы в очереди подробно"; 180 | $lang['ru']['position'] = "Позиция"; 181 | $lang['ru']['callerid'] = "Callerid"; 182 | $lang['ru']['wait_time'] = "Время ожидания"; 183 | 184 | 185 | 186 | 187 | ?> 188 | -------------------------------------------------------------------------------- /logout.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | require_once("config.php"); 23 | require_once("sesvars.php"); 24 | 25 | function flushSession() { 26 | unset($_SESSION["QSTATS"]); 27 | 28 | session_destroy(); 29 | 30 | return true; 31 | } 32 | 33 | 34 | flushSession(); 35 | ?> 36 | -------------------------------------------------------------------------------- /menu.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | ?> 22 | 23 |
24 | 25 | 97 | -------------------------------------------------------------------------------- /misc.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | function return_timestamp($date_string) 23 | { 24 | list ($year,$month,$day,$hour,$min,$sec) = preg_split("/-|:| /",$date_string,6); 25 | $u_timestamp = mktime($hour,$min,$sec,$month,$day,$year); 26 | return $u_timestamp; 27 | } 28 | 29 | function swf_bar($values,$width,$height,$divid,$stack) { 30 | 31 | if($stack==1) { 32 | $chart = "barstack.swf"; 33 | } else { 34 | $chart = "bar.swf"; 35 | } 36 | ?> 37 |
38 | 39 |
40 | 41 | 55 | 56 |
\n"; 78 | echo $lang["$language"]['export']; 79 | echo "\n"; 80 | echo "\n"; 81 | echo "\n"; 82 | echo "\n"; 83 | echo "\n"; 84 | // echo "\n"; 87 | echo "\n"; 90 | echo "
"; 91 | } 92 | 93 | function seconds2minutes($segundos) { 94 | $minutos = intval($segundos / 60); 95 | $segundos = $segundos % 60; 96 | if(strlen($segundos)==1) { 97 | $segundos = "0".$segundos; 98 | } 99 | return "$minutos:$segundos"; 100 | } 101 | ?> 102 | -------------------------------------------------------------------------------- /pngbehavior.htc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 50 | 51 | -------------------------------------------------------------------------------- /realtime.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | require_once("config.php"); 23 | include("sesvars.php"); 24 | if(isset($_SESSION['QSTATS']['hideloggedoff'])) { 25 | $ocultar=$_SESSION['QSTATS']['hideloggedoff']; 26 | } else { 27 | $ocultar="false"; 28 | } 29 | ?> 30 | 31 | 32 | 33 | 34 | 35 | Asternic Call Center Stats 36 | 37 | 38 | 39 | 40 | 41 | 42 | 68 | 69 | 70 | 71 |
72 |
73 | 74 |
75 | 76 | ".$lang[$language]['current_agent_status'].""; 78 | 79 | /* 80 | // Populates an array with the EVENTS ids 81 | $query = "SELECT * FROM qevent ORDER BY event_id"; 82 | $res = consulta_db($query,0,0); 83 | while($row = db_fetch_row($res)) { 84 | $event_array["$row[0]"] = $row[1]; 85 | } 86 | 87 | 88 | $color['unavailable']="#dadada"; 89 | $color['available']="#00ff00"; 90 | 91 | for($a=1;$a<10;$a++) { 92 | $b=$a-1; 93 | $color[$a]=$auxcolor[$b]; 94 | } 95 | 96 | 97 | 98 | $popup['unavailable']="Logged off"; 99 | $popup['available']="Staffed"; 100 | for($a=1;$a<10;$a++) { 101 | $b=$a-1; 102 | $popup["$a"]=$aux[$b]; 103 | } 104 | */ 105 | ?> 106 | 107 |
108 |
109 | 110 | 111 | 112 |
113 |
114 |
115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /realtime_agents.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | echo "

".$lang[$language]['agent_status']."


"; 23 | 24 | $color['unavailable']="#dadada"; 25 | $color['unknown']="#dadada"; 26 | $color['busy']="#d0303f"; 27 | $color['dialout']="#d0303f"; 28 | $color['ringing']="#d0d01f"; 29 | $color['not in use']="#00ff00"; 30 | $color['paused']="#000000"; 31 | 32 | foreach($queue as $qn) { 33 | if($filter=="" || stristr($qn,$filter)) { 34 | $contador=1; 35 | if(!isset($queues[$qn]['members'])) continue; 36 | foreach($queues[$qn]['members'] as $key=>$val) { 37 | $stat=""; 38 | $last=""; 39 | $dur=""; 40 | $clid=""; 41 | $akey = $queues[$qn]['members'][$key]['agent']; 42 | $aname = $queues[$qn]['members'][$key]['name']; 43 | $aval = $queues[$qn]['members'][$key]['type']; 44 | if(array_key_exists($key,$inuse)) { 45 | if($aval=="not in use") { 46 | $aval = "dialout"; 47 | } 48 | if($channels[$inuse[$key]]['duration']=='') { 49 | $newkey = $channels[$inuse[$key]]['bridgedto']; 50 | $dur = $channels[$newkey]['duration_str']; 51 | $clid = $channels[$newkey]['callerid']; 52 | } else { 53 | $newkey = $channels[$inuse[$key]]['bridgedto']; 54 | $clid = $channels[$newkey]['callerid']; 55 | $dur = $channels[$inuse[$key]]['duration_str']; 56 | } 57 | } 58 | $stat = $queues[$qn]['members'][$key]['status']; 59 | $last = $queues[$qn]['members'][$key]['lastcall']; 60 | 61 | if(($aval == "unavailable" || $aval == "unknown") && $ocultar=="true") { 62 | // Skip 63 | } else { 64 | if($contador==1) { 65 | echo "\n"; 66 | echo ""; 67 | echo ""; 68 | echo ""; 69 | echo ""; 70 | echo ""; 71 | echo ""; 72 | echo ""; 73 | echo ""; 74 | echo "\n"; 75 | echo "\n"; 76 | } 77 | if($contador%2) { $odd="class='odd'"; } else { $odd=""; } 78 | if($last<>"") { $last=$last." ".$lang[$language]['min_ago']; } else { $last = $lang[$language]['no_info']; } 79 | $agent_name = agent_name($aname); 80 | echo ""; 81 | echo ""; 82 | echo ""; 83 | 84 | if($stat<>"") $aval="paused"; 85 | 86 | if(!array_key_exists($key,$inuse)) { 87 | if($aval=="busy") $aval="not in use"; 88 | } 89 | 90 | $aval2 = preg_replace("/ /","_",$aval); 91 | $mystringaval = $lang[$language][$aval2]; 92 | if($mystringaval=="") $mystringaval = $aval; 93 | echo ""; 95 | echo ""; 96 | echo ""; 97 | echo ""; 98 | echo ""; 99 | $contador++; 100 | } 101 | } 102 | if($contador>1) { 103 | echo ""; 104 | echo "
".$lang[$language]['queue']."".$lang[$language]['agent']."".$lang[$language]['state']."".$lang[$language]['durat']."".$lang[$language]['clid']."".$lang[$language]['last_in_call']."
$qn$agent_name
 
  $mystringaval"; 94 | echo "
$dur$clid$last

\n"; 105 | } 106 | } 107 | } 108 | ?> 109 | -------------------------------------------------------------------------------- /realtime_functions.php: -------------------------------------------------------------------------------- 1 | $val) { 21 | foreach($val as $type => $valor) { 22 | if($type=='type') { 23 | if($valor == "unknown") { 24 | $agents_logedof++; 25 | } 26 | if($valor == "unavailable") { 27 | $agents_logedof++; 28 | } 29 | if($valor == "busy") { 30 | $agents_busy++; 31 | $staffed++; 32 | } 33 | if($valor == "not in use") { 34 | $ready++; 35 | $staffed++; 36 | } 37 | } 38 | if($type=='status' && $valor=="paused") { 39 | $paused++; 40 | } 41 | } 42 | } 43 | } 44 | if(!isset($llamadas)) $llamadas = 0; 45 | $return["agents_logedof"]=$agents_logedof; 46 | $return["agents_busy"]=$agents_busy; 47 | $return["agents_ready"]=$staffed; 48 | $return["agents_paused"]=$paused; 49 | $return["settext"]=$llamadas; 50 | $return["maxwait"]=$maxwait; 51 | return $return; 52 | } 53 | 54 | function get_channels($am) { 55 | 56 | $res=$am->Command('core show version'); 57 | preg_match('/Asterisk (\d\.?\d)/', $res['data'], $arr); 58 | $version=$arr[1]; 59 | if(!preg_match("/\./",$version)) { 60 | $version = "1.".$version; 61 | } 62 | $version = preg_replace("/\./","",$version); 63 | $version = intval($version); 64 | 65 | $res=$am->Command("core show channels concise"); 66 | $res=$res['data']; 67 | $responselines=explode("\n",$res); 68 | $lines=array(); 69 | 70 | foreach($responselines as $l) { 71 | if (preg_match("/^Response/",$l)) continue; 72 | if (preg_match("/^Privilege/",$l)) continue; 73 | if (preg_match("/^$/",$l)) break; 74 | 75 | $lines[]=$l; 76 | } 77 | 78 | $channels=array(); 79 | foreach($lines as $l) { 80 | $chan=explode("!",$l); 81 | if (count($chan)==1) 82 | $chan=explode(":",$l); 83 | $ci=array(); 84 | $ci['channel']=$chan[0]; 85 | $ci['context']=$chan[1]; 86 | $ci['exten']=$chan[2]; 87 | $ci['priority']=$chan[3]; 88 | $ci['state']=$chan[4]; 89 | $ci['application']=$chan[5]; 90 | $ci['applicationdata']=$chan[6]; 91 | $ci['callerid']=$chan[7]; 92 | $ci['accountcode']=$chan[8]; 93 | $ci['amaflags']=$chan[9]; 94 | $ci['duration']=$chan[($version >= 12 ? 11 : 10)]; 95 | $ci['bridgedto']=$chan[($version >= 12 ? 12 : 11)]; 96 | 97 | $dur=$ci['duration']+0; 98 | $durstr=sprintf("%d:%02d",$dur/60,$dur%60); 99 | $ci['duration_str']=$durstr; 100 | 101 | $channels[$chan[0]]=$ci; 102 | } 103 | 104 | return $channels; 105 | } 106 | 107 | 108 | function get_queues($am,$channels) { 109 | $res=$am->Command("queue show"); 110 | $res=$res['data']; 111 | $lines=explode("\n",$res); 112 | 113 | $queue=null; 114 | $data=null; 115 | $reading=null; 116 | 117 | foreach ($lines as $l) { 118 | // echo "line ($l)
"; 119 | if (is_null($queue) && preg_match("/^(\S+)\s+has\s(\d+)/",$l,$matches)) { 120 | $queue=$matches[1]; 121 | $data=array(); 122 | $data['ncalls']=$matches[2]; 123 | continue; 124 | } 125 | if (!is_null($queue) && $l=="") { 126 | //Grabamos esta cola 127 | $queuelist[$queue]=$data; 128 | $queue=null; 129 | $data=null; 130 | $reading=null; 131 | continue; 132 | } 133 | 134 | if (is_null($reading) && preg_match("/Members:/",$l)) { 135 | $reading="members"; 136 | continue; 137 | } 138 | 139 | if ($reading=="members" && preg_match("/^([^\(]*)\(([^\)]*)\).*/",$l,$matches)) { 140 | 141 | $name=trim($matches[1]); 142 | $member=$matches[2]; 143 | 144 | if(preg_match('/^SIP|^PJSIP|^IAX2|^Agent|^DAHDI|^Local/i',$name)) { 145 | $member = $name; 146 | } 147 | 148 | $member = convertlocal($member); 149 | $status=""; 150 | 151 | $seconds=""; 152 | if(preg_match("/\(Unavailable\)/",$l)) { 153 | $tipo="unavailable"; 154 | } elseif(preg_match("/\(Not in use\)/",$l)) { 155 | $tipo="not in use"; 156 | } elseif(preg_match("/\(Ringing\)/",$l)) { 157 | $tipo="ringing"; 158 | } elseif(preg_match("/\(Busy\)/",$l) || preg_match("/\(In use\)/",$l)) { 159 | $tipo="busy"; 160 | } elseif(preg_match("/\(in call\)/",$l)) { 161 | $tipo="busy"; 162 | } else { 163 | $tipo="unknown"; 164 | $tipo="not in use"; 165 | } 166 | if(preg_match("/paused/",$l)) { 167 | $status="paused"; 168 | } 169 | if(preg_match("/last was/",$l)) { 170 | $partes = explode("last was",$l,2); 171 | $seconds = $partes[1]; 172 | preg_match("/(\d+)/",$seconds,$matches); 173 | $seconds = seconds2minutes($matches[1]); 174 | } 175 | $agentenumber = preg_replace('/Agent\//',"",$member); 176 | $mem['id']=$member; 177 | $mem['agent']=$agentenumber; 178 | $mem['name']=$name; 179 | $mem['type']=$tipo; 180 | $mem['status']=$status; 181 | $mem['lastcall']=$seconds; 182 | $data['members'][$member]=$mem; 183 | continue; 184 | } 185 | 186 | if (preg_match("/Callers:/",$l)) { 187 | $reading="callers"; 188 | continue; 189 | } 190 | if ($reading=="callers" && preg_match("/^\s+\d+\.\s+(\S+)\s+\(wait:\s*([\d:]+),\s*prio:\s*(\d+)/",$l,$matches)) { 191 | $callinfo=array(); 192 | $callinfo['channel']=$matches[1]; 193 | $callinfo['chaninfo']=$channels[$matches[1]]; 194 | $callinfo['waittime']=$matches[2]; 195 | $callinfo['prio']=$matches[3]; 196 | $data['calls'][]=$callinfo; 197 | continue; 198 | } else if ($reading=="callers") { 199 | $reading=null; 200 | } 201 | } 202 | return $queuelist; 203 | } 204 | 205 | function convertlocal($agent) { 206 | $agent = preg_replace("/^Local/","SIP",$agent); 207 | $agent = preg_replace("/^Local/","PJSIP",$agent); 208 | $agent = preg_replace("/(.*)(@from.*)/","$1",$agent); 209 | return $agent; 210 | } 211 | 212 | function agent_name($channel) { 213 | list ($nada,$number) = explode("/",$channel,2); 214 | if(is_file("agents.txt")) { 215 | $lineas = file("agents.txt"); 216 | foreach ($lineas as $linea_num => $linea) { 217 | list ($num,$nombre) = explode(",",$linea,2); 218 | if($num==$number) { 219 | return "$num - $nombre"; 220 | } 221 | } 222 | } 223 | return $channel; 224 | } 225 | 226 | ?> 227 | -------------------------------------------------------------------------------- /realtime_qdetail.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | echo "

".$lang[$language]['calls_waiting_detail']."


"; 23 | 24 | foreach($queue as $qn) { 25 | $position=1; 26 | if(!isset($queues[$qn]['calls'])) continue; 27 | foreach($queues[$qn]['calls'] as $key=>$val) { 28 | if($position==1) { 29 | echo "\n"; 30 | echo ""; 31 | echo ""; 32 | echo ""; 33 | echo ""; 34 | echo ""; 35 | echo ""; 36 | echo "\n"; 37 | echo "\n"; 38 | echo "\n"; 39 | } 40 | echo ""; 41 | echo ""; 42 | echo ""; 43 | echo ""; 44 | $position++; 45 | } 46 | if($position>1) { 47 | echo "\n"; 48 | echo "
".$lang[$language]['queue']."".$lang[$language]['position']."".$lang[$language]['callerid']."".$lang[$language]['wait_time']."
$qn$position".$queues[$qn]['calls'][$key]['chaninfo']['callerid']."".$queues[$qn]['calls'][$key]['chaninfo']['duration_str']." min
\n"; 49 | } 50 | } 51 | ?> 52 | 53 | -------------------------------------------------------------------------------- /realtime_qsummary.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | echo "

".$lang[$language]['queue_summary']."


"; 23 | echo "\n"; 24 | echo ""; 25 | echo ""; 26 | echo ""; 27 | echo ""; 28 | echo ""; 29 | echo ""; 30 | echo ""; 31 | echo ""; 32 | echo "\n"; 33 | echo "\n"; 34 | echo "\n"; 35 | 36 | $contador=1; 37 | foreach($queue as $elementq) { 38 | if($filter=="" || stristr($elementq,$filter)) { 39 | $qt=$elementq; 40 | if($elementq<>"") { 41 | if(isset($dict_queue[$elementq])) { 42 | if($dict_queue[$elementq]<>"") { 43 | $qt=$dict_queue[$elementq]; 44 | } 45 | } 46 | 47 | if($contador%2) { $odd="class='odd'"; } else { $odd=""; } 48 | echo ""; 49 | 50 | $datos = get_queue_numbers($elementq); 51 | if(is_array($datos)) { 52 | $staffed = $datos['agents_ready'] ; 53 | $auxi = $datos['agents_paused']; 54 | $talki = $datos['agents_busy']; 55 | $off = $datos['agents_logedof']; 56 | $queued = $datos['settext']; 57 | $maxwait = $datos['maxwait']; 58 | if($maxwait=="") { $maxwait="0"; } 59 | } else { 60 | $staffed = "n/a"; 61 | $auxi = "n/a"; 62 | $talki = "n/a"; 63 | $off = "n/a"; 64 | $queued = "n/a"; 65 | } 66 | echo "\n"; 67 | echo "\n"; 68 | echo "\n"; 69 | echo "\n"; 70 | echo "\n"; 71 | echo "\n"; 72 | $contador++; 73 | } 74 | } 75 | } 76 | echo "
".$lang[$language]['queue']."".$lang[$language]['staffed']."".$lang[$language]['talking']."".$lang[$language]['paused']."".$lang[$language]['calls_waiting']."".$lang[$language]['oldest_call_waiting']."
$qt$staffed$talki$auxi$queued$maxwait ".$lang[$language]['minutes']."
"; 77 | ?> 78 | -------------------------------------------------------------------------------- /sesvars.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | if(isset($_POST['List_Queue'])) { 23 | $queue=""; 24 | foreach($_POST['List_Queue'] as $valor) { 25 | $queue.=stripslashes($valor).","; 26 | } 27 | $queue=substr($queue,0,-1); 28 | $_SESSION['QSTATS']['queue']=$queue; 29 | } else { 30 | $queue="'NONE'"; 31 | } 32 | 33 | if(isset($_POST['List_Agent'])) { 34 | $agent=""; 35 | foreach($_POST['List_Agent'] as $valor) { 36 | $agent.=stripslashes($valor).","; 37 | } 38 | $agent=substr($agent,0,-1); 39 | $_SESSION['QSTATS']['agent']=$agent; 40 | } else { 41 | $agent="''"; 42 | } 43 | 44 | /* 45 | if(isset($_POST['queue'])) { 46 | $queue = stripslashes($_POST['queue']); 47 | $_SESSION['QSTATS']['queue']=$queue; 48 | } else { 49 | $queue="'NONE'"; 50 | } 51 | */ 52 | 53 | if(isset($_POST['start'])) { 54 | $start = $_POST['start']; 55 | $_SESSION['QSTATS']['start']=$start; 56 | } else { 57 | $start = date('Y-m-d'); 58 | } 59 | 60 | if(isset($_POST['end'])) { 61 | $end = $_POST['end']; 62 | $_SESSION['QSTATS']['end']=$end; 63 | } else { 64 | $end = date('Y-m-d'); 65 | } 66 | 67 | if(isset($_SESSION['QSTATS']['start'])) { 68 | $start = $_SESSION['QSTATS']['start']; 69 | } 70 | 71 | if(isset($_SESSION['QSTATS']['end'])) { 72 | $end = $_SESSION['QSTATS']['end']; 73 | } 74 | 75 | if(isset($_SESSION['QSTATS']['queue'])) { 76 | $queue = $_SESSION['QSTATS']['queue']; 77 | } 78 | 79 | if(isset($_SESSION['QSTATS']['agent'])) { 80 | $agent = $_SESSION['QSTATS']['agent']; 81 | } 82 | 83 | $fstart_year = substr($start,0,4); 84 | $fstart_month = substr($start,5,2); 85 | $fstart_day = substr($start,8,2); 86 | 87 | 88 | $fend_year = substr($end,0,4); 89 | $fend_month = substr($end,5,2); 90 | $fend_day = substr($end,8,2); 91 | 92 | 93 | $timestamp_start = return_timestamp($start); 94 | $timestamp_end = return_timestamp($end); 95 | $elapsed_seconds = $timestamp_end - $timestamp_start; 96 | //$period = floor(($elapsed_seconds / 60) / 60 / 24) + 1; 97 | $period = floor(($elapsed_seconds / 60) /60) + 1; 98 | 99 | if(!isset($_SESSION['QSTATS']['start'])) { 100 | if(basename($self)<>"index.php") { 101 | Header("Location: ./index.php"); 102 | } 103 | } 104 | 105 | 106 | ?> 107 | -------------------------------------------------------------------------------- /set_sesvar.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | require_once("config.php"); 23 | if(isset($_REQUEST['sesvar'])) { 24 | $variable=$_REQUEST['sesvar']; 25 | $value=$_REQUEST['value']; 26 | $_SESSION['QSTATS'][$variable]=$value; 27 | } 28 | 29 | ?> 30 | 31 | -------------------------------------------------------------------------------- /unanswered.php: -------------------------------------------------------------------------------- 1 | . 20 | */ 21 | 22 | require_once("config.php"); 23 | include("sesvars.php"); 24 | ?> 25 | 26 | 27 | 28 | 29 | 30 | Asternic Call Center Stats 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 41 | 42 | 52 | 53 | = '$start' AND time <= '$end' "; 63 | $query.= "AND queuename IN ($queue) AND event IN ('ABANDON', 'EXITWITHTIMEOUT') ORDER BY time"; 64 | $res = consulta_db($query,$DB_DEBUG,$DB_MUERE,0,$midb); 65 | 66 | $abandon_calls_queue = Array(); 67 | $abandon=0; 68 | $abandoned=0; 69 | $timeout=0; 70 | 71 | if(db_num_rows($res)>0) { 72 | 73 | while($row=db_fetch_row($res)) { 74 | 75 | if($row[3]=="ABANDON") { 76 | $abandoned++; 77 | $abandon_end_pos+=$row[4]; 78 | $abandon_start_pos+=$row[5]; 79 | $total_hold_abandon+=$row[6]; 80 | } 81 | if($row[3]=="EXITWITHTIMEOUT") { 82 | $timeout++; 83 | } 84 | $abandon_calls_queue["$row[1]"]++; 85 | } 86 | 87 | if($abandoned > 0) { 88 | $abandon_average_hold = $total_hold_abandon / $abandoned; 89 | } else { 90 | $abandon_average_hold = 0; 91 | } 92 | $abandon_average_hold = number_format($abandon_average_hold,0); 93 | 94 | if($abandoned > 0) { 95 | $abandon_average_start = round($abandon_start_pos / $abandoned); 96 | } else { 97 | $abandon_average_start = 0; 98 | } 99 | $abandon_average_start = number_format($abandon_average_start,0); 100 | 101 | if($abandoned > 0) { 102 | $abandon_average_end = floor($abandon_end_pos / $abandoned); 103 | } else { 104 | $abandon_average_end = 0; 105 | } 106 | $abandon_average_end = number_format($abandon_average_end,0); 107 | 108 | $total_abandon = $abandoned + $timeout; 109 | 110 | } else { 111 | // No rows returned 112 | $abandoned = 0; 113 | $timeout = 0; 114 | $abandon_average_hold = 0; 115 | $abandon_average_start = 0; 116 | $abandon_average_end = 0; 117 | $total_abandon = 0; 118 | } 119 | 120 | 121 | $start_parts = explode(" ,:", $start); 122 | $end_parts = explode(" ,:", $end); 123 | 124 | ?> 125 | 126 | 127 |
128 |
129 | 130 | 131 | 132 | 157 | 182 | 183 | 184 |
133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 |
:
:
:
:
155 | 156 |
158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 |
:
:
:
:
180 | 181 |
185 |
186 | 187 | 188 | 189 | 197 | 198 | 199 | 242 | 250 | 251 | 252 |
190 | 194 | >   195 | 196 |
200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 223 | 224 | 225 | 226 | 227 | 238 | 239 | 240 |
213 | 0 ) { 215 | $percent=$abandoned*100/$total_abandon; 216 | } else { 217 | $percent=0; 218 | } 219 | $percent=number_format($percent,2); 220 | echo $percent; 221 | ?> 222 |
228 | 0 ) { 230 | $percent=$timeout*100/$total_abandon; 231 | } else { 232 | $percent=0; 233 | } 234 | $percent=number_format($percent,2); 235 | echo $percent; 236 | ?> 237 |
241 |
243 | 249 |
253 | 254 | 255 | 260 | 261 | 262 | 270 | 271 | 272 | 304 | 311 | 312 | 313 |
263 | 267 | >   268 | 269 |
273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | $val) { 287 | $cual = $countrow%2; 288 | if($cual>0) { $odd = " class='odd' "; } else { $odd = ""; } 289 | if($total_abandon > 0 ) { 290 | $percent = $val * 100 / $total_abandon; 291 | } else { 292 | $percent = 0; 293 | } 294 | $percent =number_format($percent,2); 295 | echo "\n"; 296 | $countrow++; 297 | $query2.="var$countrow=$key&val$countrow=$val&"; 298 | } 299 | $query2.="title=".$lang["$language"]['unanswered_calls_qu']."$graphcolor"; 300 | ?> 301 | 302 |
$key$val calls$percent ".$lang["$language"]['percent']."
303 |
305 | 1) { 307 | // swf_bar($query2,350,211,"chart2",0); 308 | //} 309 | ?> 310 |
314 |
315 |
316 |
317 |
318 | 319 | 320 | 321 | --------------------------------------------------------------------------------