/** * Generates ghaph images links: * * @param str $ip User's IP address, for whitch links are generated * @return array Graph links */ function zb_BandwidthdGenLinks($ip) { $bandwidthd_url = zb_BandwidthdGetUrl($ip); $netid = zb_NetworkGetByIp($ip); $nasid = zb_NasGetByNet($netid); $nasdata = zb_NasGetData($nasid); $nastype = $nasdata['nastype']; // RouterOS graph model: if ($nastype == 'mikrotik') { // Get user's IP array: $alluserips = zb_UserGetAllIPs(); $alluserips = array_flip($alluserips); // Generate graphs paths: $urls['dayr'] = $bandwidthd_url . '/' . $alluserips[$ip] . '/daily.gif'; $urls['days'] = null; $urls['weekr'] = $bandwidthd_url . '/' . $alluserips[$ip] . '/weekly.gif'; $urls['weeks'] = null; $urls['monthr'] = $bandwidthd_url . '/' . $alluserips[$ip] . '/monthly.gif'; $urls['months'] = null; $urls['yearr'] = $bandwidthd_url . '/' . $alluserips[$ip] . '/yearly.gif'; $urls['years'] = null; } else { // Banwidthd graphs model: $urls['dayr'] = $bandwidthd_url . '/' . $ip . '-1-R.png'; $urls['days'] = $bandwidthd_url . '/' . $ip . '-1-S.png'; $urls['weekr'] = $bandwidthd_url . '/' . $ip . '-2-R.png'; $urls['weeks'] = $bandwidthd_url . '/' . $ip . '-2-S.png'; $urls['monthr'] = $bandwidthd_url . '/' . $ip . '-3-R.png'; $urls['months'] = $bandwidthd_url . '/' . $ip . '-3-S.png'; $urls['yearr'] = $bandwidthd_url . '/' . $ip . '-4-R.png'; $urls['years'] = $bandwidthd_url . '/' . $ip . '-4-S.png'; } return $urls; }
/** * Generates user's traffic statistic module content * * @param str $login User's login, for whitch generate module content * @return str Module content */ function web_UserTraffStats($login) { $login = vf($login); $dirs = zb_DirectionsGetAll(); // Current month traffic stats: $cells = wf_TableCell(__('Traffic classes')); $cells .= wf_TableCell(__('Downloaded')); $cells .= wf_TableCell(__('Uploaded')); $cells .= wf_TableCell(__('Total')); $rows = wf_TableRow($cells, 'row1'); if (!empty($dirs)) { foreach ($dirs as $dir) { $query_downup = "SELECT `D" . $dir['rulenumber'] . "`,`U" . $dir['rulenumber'] . "` FROM `users` WHERE `login` = '" . $login . "'"; $downup = simple_query($query_downup); $cells = wf_TableCell($dir['rulename']); $cells .= wf_TableCell(stg_convert_size($downup['D' . $dir['rulenumber']]), '', '', 'sorttable_customkey="' . $downup['D' . $dir['rulenumber']] . '"'); $cells .= wf_TableCell(stg_convert_size($downup['U' . $dir['rulenumber']]), '', '', 'sorttable_customkey="' . $downup['U' . $dir['rulenumber']] . '"'); $cells .= wf_TableCell(stg_convert_size($downup['U' . $dir['rulenumber']] + $downup['D' . $dir['rulenumber']]), '', '', 'sorttable_customkey="' . ($downup['U' . $dir['rulenumber']] + $downup['D' . $dir['rulenumber']]) . '"'); $rows .= wf_TableRow($cells, 'row3'); } } $result = wf_tag('h3') . __('Current month traffic stats') . wf_tag('h3', true); $result .= wf_TableBody($rows, '100%', '0', 'sortable'); // End of current month traffic stats // Per-user graphs buttons: $ip = zb_UserGetIP($login); $bandwidthd = zb_BandwidthdGetUrl($ip); if (!empty($bandwidthd)) { $bwd = zb_BandwidthdGenLinks($ip); // Dayly graph button: $daybw = wf_img($bwd['dayr'], __('Downloaded')); if (!empty($bwd['days'])) { $daybw .= wf_delimiter() . wf_img($bwd['days'], __('Uploaded')); } // Weekly graph button: $weekbw = wf_img($bwd['weekr'], __('Downloaded')); if (!empty($bwd['weeks'])) { $weekbw .= wf_delimiter() . wf_img($bwd['weeks'], __('Uploaded')); } // Monthly graph button: $monthbw = wf_img($bwd['monthr'], __('Downloaded')); if (!empty($bwd['months'])) { $monthbw .= wf_delimiter() . wf_img($bwd['months'], __('Uploaded')); } // Yearly graph button: $yearbw = wf_img($bwd['yearr'], __('Downloaded')); if (!empty($bwd['years'])) { $yearbw .= wf_delimiter() . wf_img($bwd['years'], __('Uploaded')); } // Modal window sizes: if (!empty($bwd['days'])) { //bandwidthd $width = 920; $heidht = 640; $graphLegend = wf_tag('br') . wf_img('skins/bwdlegend.gif'); } else { //mikrotik $width = 530; $heidht = 230; $graphLegend = ''; } $result .= wf_delimiter(); $result .= wf_tag('h3') . __('Graphs') . wf_tag('h3', true); $bwcells = wf_TableCell(wf_modal(__('Graph by day'), __('Graph by day'), $daybw . $graphLegend, 'ubButton', $width, $heidht)); $bwcells .= wf_TableCell(wf_modal(__('Graph by week'), __('Graph by week'), $weekbw . $graphLegend, 'ubButton', $width, $heidht)); $bwcells .= wf_TableCell(wf_modal(__('Graph by month'), __('Graph by month'), $monthbw . $graphLegend, 'ubButton', $width, $heidht)); $bwcells .= wf_TableCell(wf_modal(__('Graph by year'), __('Graph by year'), $yearbw . $graphLegend, 'ubButton', $width, $heidht)); $bwrows = wf_TableRow($bwcells); // Adding graphs buttons to result: $result .= wf_TableBody($bwrows, '', '0', ''); $result .= wf_delimiter(); } else { $result .= __('No user graphs because no NAS with bandwidthd for his network'); } // End of per-user graphs buttons // Traffic statistic by previous months: $monthNames = months_array_wz(); $result .= wf_tag('h3') . __('Previous month traffic stats') . wf_tag('h3', true); $cells = wf_TableCell(__('Year')); $cells .= wf_TableCell(__('Month')); $cells .= wf_TableCell(__('Traffic classes')); $cells .= wf_TableCell(__('Downloaded')); $cells .= wf_TableCell(__('Uploaded')); $cells .= wf_TableCell(__('Total')); $cells .= wf_TableCell(__('Cash')); $rows = wf_TableRow($cells, 'row1'); if (!empty($dirs)) { foreach ($dirs as $dir) { $query_prev = "SELECT `D" . $dir['rulenumber'] . "`, `U" . $dir['rulenumber'] . "`, `month`, `year`, `cash` FROM `stat` WHERE `login` = '" . $login . "' ORDER BY `year`, `month`"; $prevmonths = simple_queryall($query_prev); if (!empty($prevmonths)) { foreach ($prevmonths as $prevmonth) { $cells = wf_TableCell($prevmonth['year']); $cells .= wf_TableCell(rcms_date_localise($monthNames[$prevmonth['month']])); $cells .= wf_TableCell($dir['rulename']); $cells .= wf_TableCell(stg_convert_size($prevmonth['D' . $dir['rulenumber']]), '', '', 'sorttable_customkey="' . $prevmonth['D' . $dir['rulenumber']] . '"'); $cells .= wf_TableCell(stg_convert_size($prevmonth['U' . $dir['rulenumber']]), '', '', 'sorttable_customkey="' . $prevmonth['U' . $dir['rulenumber']] . '"'); $cells .= wf_TableCell(stg_convert_size($prevmonth['U' . $dir['rulenumber']] + $prevmonth['D' . $dir['rulenumber']]), '', '', 'sorttable_customkey="' . ($prevmonth['U' . $dir['rulenumber']] + $prevmonth['D' . $dir['rulenumber']]) . '"'); $cells .= wf_TableCell(round($prevmonth['cash'], 2)); $rows .= wf_TableRow($cells, 'row3'); } } } } // End of traffic statistic by previous months // Generate table: $result .= wf_TableBody($rows, '100%', '0', 'sortable'); // Return result: return $result; }