Содержание

XML

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/plugin-install.dtd"> 
<install version="1.5" type="plugin" group="content"> 
   <name>Отчет по траффику</name> 
   <author>Integral</author> 
   <authorEmail>es@konstanta.ru</authorEmail> 
   <authorUrl>authorUrl</authorUrl> 
   <creationDate>2009</creationDate> 
   <copyright>c</copyright> 
   <license>license</license> 
   <version>1.0</version> 
   <description>Отчет по траффику</description> 
   <files> 
      <filename plugin="report_traffic">report_traffic.php</filename> 
   </files> 
    <params /> 
</install>

PHP

<?php 
 
//@ini_set("display_errors", "1"); 
//error_reporting(E_ALL); 
 
defined( '_JEXEC' ) or die( 'Restricted access' ); 
 
require_once("./urfa/URFAClient.php"); 
 
$mainframe->registerEvent( 'onPrepareContent', 'plgReport_TR_Modify' ); 
 
function plgReport_TR_Modify(&$row, &$params, $page=0){ 
 
    $pos_report = strpos($row->text, '{traffic_period_report}'); 
    if ($pos_report!==false) { 
        $row->text = preg_replace('/{traffic_period_report}/', '', $row->text); 
      include ("./urfa/URFAConfig.php"); 
      $db_connect=mysql_connect($db_urfa_host,$db_urfa_user,$db_urfa_password) or die ("Connect failed"); 
      mysql_select_db($db_urfa_base,$db_connect); 
//************************************************************************************************************************       
// Функция выбора даты 
@$btn=$_POST['btn']; 
//echo $btn; 
 
function addopt ($str, $val, $select) 
{ 
  if ($select) 
  { 
    $ret='<OPTION value='.$val.' selected>'.$str.'</OPTION>'; 
  } else 
  { 
    $ret='<OPTION value='.$val.'>'.$str.'</OPTION>'; 
  } 
 
  return $ret; 
} 
 
//$btn=$_POST['btn']; 
 
if (isset($btn)) 
{ 
  $d1=$_POST['daystart']; 
  $d2=$_POST['dayend']; 
  $m1=$_POST['monthstart']; 
  $m2=$_POST['monthend']; 
  $y1=$_POST['yearstart']; 
  $y2=$_POST['yearend']; 
  $torder=$_POST['torder']; 
//  $sorttype=$_POST['sorttype']; 
} else 
{ 
  $y1=$y2=date("Y"); 
  $m1=date("m"); 
  $d1=mktime(0, 0, 0, $m1, 1, $y1); 
  $d1=date("d",$d1); 
  $m2=$m1; 
  $d2=date("d"); 
  $torder="1"; 
  $sorttype="asc"; 
} 
 
 
// Выбор даты начала 
$form_select_sdate = ""; 
$form_select_sdate = "   <form method=POST><SELECT class=text_i name=day1 ONCHANGE=\"form.daystart.value=options[this.selectedIndex].value\">"; 
 
$x=1; 
while ($x<32) 
{ 
  if ($x<10) 
  { 
    $y='0'; 
  } else 
  { 
    $y=''; 
  } 
 
  if ($x==$d1) 
  { 
    $form_select_sdate .= addopt ($y.$x,$x,1); 
  } else 
  { 
    $form_select_sdate .= addopt ($y.$x,$x,0); 
  } 
  $x++; 
} 
 
$form_select_sdate .= '</SELECT> 
<SELECT class=text_i name=month1 ONCHANGE="form.monthstart.value=options[this.selectedIndex].value">'; 
if ($m1==1) {$form_select_sdate .= addopt ('январь',1,1);} else {$form_select_sdate .= addopt ('январь',1,0);} 
if ($m1==2) {$form_select_sdate .= addopt ('февраль',2,1);} else {$form_select_sdate .= addopt ('февраль',2,0);} 
if ($m1==3) {$form_select_sdate .= addopt ('март',3,1);} else {$form_select_sdate .= addopt ('март',3,0);} 
if ($m1==4) {$form_select_sdate .= addopt ('апрель',4,1);} else {$form_select_sdate .= addopt ('апрель',4,0);} 
if ($m1==5) {$form_select_sdate .= addopt ('май',5,1);} else {$form_select_sdate .= addopt ('май',5,0);} 
if ($m1==6) {$form_select_sdate .= addopt ('июнь',6,1);} else {$form_select_sdate .= addopt ('июнь',6,0);} 
if ($m1==7) {$form_select_sdate .= addopt ('июль',7,1);} else {$form_select_sdate .= addopt ('июль',7,0);} 
if ($m1==8) {$form_select_sdate .= addopt ('август',8,1);} else {$form_select_sdate .= addopt ('август',8,0);} 
if ($m1==9) {$form_select_sdate .= addopt ('сентябрь',9,1);} else {$form_select_sdate .= addopt ('сентябрь',9,0);} 
if ($m1==10) {$form_select_sdate .= addopt ('октябрь',10,1);} else {$form_select_sdate .= addopt ('октябрь',10,0);} 
if ($m1==11) {$form_select_sdate .= addopt ('ноябрь',11,1);} else {$form_select_sdate .= addopt ('ноябрь',11,0);} 
if ($m1==12) {$form_select_sdate .= addopt ('декабрь',12,1);} else {$form_select_sdate .= addopt ('декабрь',12,0);} 
$form_select_sdate .= '</SELECT> 
<SELECT class=text_i name=year1 ONCHANGE="form.yearstart.value=options[this.selectedIndex].value">'; 
$year = date("Y"); 
if ($y1== $year)    {$form_select_sdate .= addopt ($year,$year,1);} else {$form_select_sdate .= addopt ($year,$year,0);} 
if ($y1== $year-1 ) {$form_select_sdate .= addopt ($year-1,$year-1,1);} else {$form_select_sdate .= addopt ($year-1,$year-1,0);} 
$form_select_sdate .= '</SELECT> - дата начала<br>'; 
/// Конец выбора даты начала 
 
// Выбор даты окончания 
$form_select_edate = ""; 
//выбор дня недели 
$form_select_edate .= '<SELECT class=text_i name=day2 ONCHANGE="form.dayend.value=options[this.selectedIndex].value">'; 
$x=1; 
while ($x<32) 
{ 
  if ($x<10) 
  { 
    $y='0'; 
  } else 
  { 
    $y=''; 
  } 
 
  if ($x==$d2) 
  { 
    $form_select_edate .= addopt ($y.$x,$x,1); 
  } else 
  { 
    $form_select_edate .= addopt ($y.$x,$x,0); 
  } 
  $x++; 
} 
$form_select_edate .= '</SELECT> 
 
<SELECT class=text_i name=month2 ONCHANGE="form.monthend.value=options[this.selectedIndex].value">'; 
if ($m2==1) {$form_select_edate .= addopt ('январь',1,1);} else {$form_select_edate .= addopt ('январь',1,0);} 
if ($m2==2) {$form_select_edate .= addopt ('февраль',2,1);} else {$form_select_edate .= addopt ('февраль',2,0);} 
if ($m2==3) {$form_select_edate .= addopt ('март',3,1);} else {$form_select_edate .= addopt ('март',3,0);} 
if ($m2==4) {$form_select_edate .= addopt ('апрель',4,1);} else {$form_select_edate .= addopt ('апрель',4,0);} 
if ($m2==5) {$form_select_edate .= addopt ('май',5,1);} else {$form_select_edate .= addopt ('май',5,0);} 
if ($m2==6) {$form_select_edate .= addopt ('июнь',6,1);} else {$form_select_edate .= addopt ('июнь',6,0);} 
if ($m2==7) {$form_select_edate .= addopt ('июль',7,1);} else {$form_select_edate .= addopt ('июль',7,0);} 
if ($m2==8) {$form_select_edate .= addopt ('август',8,1);} else {$form_select_edate .= addopt ('август',8,0);} 
if ($m2==9) {$form_select_edate .= addopt ('сентябрь',9,1);} else {$form_select_edate .= addopt ('сентябрь',9,0);} 
if ($m2==10) {$form_select_edate .= addopt ('октябрь',10,1);} else {$form_select_edate .= addopt ('октябрь',10,0);} 
if ($m2==11) {$form_select_edate .= addopt ('ноябрь',11,1);} else {$form_select_edate .= addopt ('ноябрь',11,0);} 
if ($m2==12) {$form_select_edate .= addopt ('декабрь',12,1);} else {$form_select_edate .= addopt ('декабрь',12,0);} 
$form_select_edate .= '</SELECT> 
 
<SELECT name=year2 ONCHANGE="form.yearend.value=options[this.selectedIndex].value">'; 
if ($y2== $year)   {$form_select_edate .= addopt ($year,$year,1);} else {$form_select_edate .= addopt ($year,$year,0);} 
if ($y2== $year-1) {$form_select_edate .= addopt ($year-1,$year-1,1);} else {$form_select_edate .= addopt ($year-1,$year-1,0);} 
$form_select_edate .= '</SELECT> - дата окончания<br><br> 
         <input type=hidden value="'.$d1.'" name=daystart> 
         <input type=hidden value="'.$m1.'" name=monthstart> 
         <input type=hidden value="'.$y1.'" name=yearstart> 
         <input type=hidden value="'.$d2.'" name=dayend> 
         <input type=hidden value="'.$m2.'" name=monthend> 
         <input type=hidden value="'.$y2.'" name=yearend> 
         <input type=hidden value="1" name=btn>'; 
$form_select_edate .= 'Группировка&nbsp;'; 
 
$form_select_edate .= '<SELECT class=text_i name=torder ONCHANGE="form.trafforder.value=options[this.selectedIndex].value">'; 
   if ($torder==1) {$form_select_edate .= addopt ('общая',1,1);} else {$form_select_edate .= addopt ('общая',1,0);} 
   if ($torder==2) {$form_select_edate .= addopt ('по дням',2,1);} else {$form_select_edate .= addopt ('по дням',2,0);} 
   if ($torder==3) {$form_select_edate .= addopt ('по часам',3,1);} else {$form_select_edate .= addopt ('по часам',3,0);} 
$form_select_edate .= '</SELECT>'; 
$form_select_edate .= '<input type=submit value="Показать"> 
         </form>'; 
// Конец выбора даты окончания 
$data_1=mktime(0, 0, 0, $m1, $d1, $y1); 
$data_2=mktime(23, 59, 59, $m2, $d2, $y2); 
 
$raznica=$data_2-$data_1; 
// Конец - Функция выбора даты 
//************************************************************************************************************************ 
// Запросы к базе на выбор траффика 
$result_sql = ""; 
if ($btn == "1") 
{ 
 if ($torder == "1") 
 { 
   $q = ' 
      SELECT 
        discount_transactions_iptraffic_all.account_id, 
        Sum(discount_transactions_iptraffic_all.bytes) AS bytes, 
        Sum(discount_transactions_iptraffic_all.discount) AS discount, 
        t_class.t_class_name, 
        discount_transactions_iptraffic_all.base_cost 
      FROM 
        discount_transactions_iptraffic_all 
        LEFT OUTER JOIN t_class ON (t_class.id = discount_transactions_iptraffic_all.t_class) 
      WHERE 
        discount_transactions_iptraffic_all.account_id = '.$_SESSION['URFA']['basic_account'].' AND 
        discount_transactions_iptraffic_all.discount_date >= '.$data_1.' AND 
        discount_transactions_iptraffic_all.discount_date <= '.$data_2.' 
      GROUP BY 
        discount_transactions_iptraffic_all.account_id, 
        t_class.t_class_name, 
        discount_transactions_iptraffic_all.base_cost 
      '; 
 
      //echo $q1; 
          $result=mysql_query ($q); 
 
     $result_sql .= "<table width=500 border=1 bordercolor=#5283CF cellspacing=0 cellpadding=5> 
         <tr> 
         <td align=center>Дата начала</td> 
         <td align=center>Дата окончания</td> 
         <td align=center>Тип траффика</td> 
         <td align=center>Цена за 1Мб</td> 
         <td align=center>Траффик(Мб)</td> 
         <td align=center>Сумма</td> 
         </tr>"; 
 
      while ($row1 = mysql_fetch_assoc($result)) 
      { 
             if (isset($row1['bytes'])) 
            { 
        $traff = round($row1['bytes']/1024/1024, 3); 
        $traff = str_replace("." , "," , $traff); 
        }else 
       { 
             $traff = "&nbsp;"; 
            } 
 
      $summa = round($row1['discount'], 2); 
      $startdate  = $d1."/".$m1."/".$y1; 
      $enddate = $d2."/".$m2."/".$y2; 
        if (!isset($traff)) { $traff = 0; } 
 
      $result_sql .= "   <tr> 
               <td align=center>".$startdate."</td> 
               <td align=center>".$enddate."</td> 
               <td align=right>".$row1['t_class_name']."</td> 
               <td align=right>".$row1['base_cost']."</td> 
               <td align=right>".$traff."</td> 
               <td align=right>".$summa."</td> 
               </tr>"; 
 
      } 
        $result_sql .=   "</table>"; 
 
  }elseif ($torder == "2") 
//******************************************************** 
  { 
   if ($raznica <= "2678400" ) 
   { 
   $all_summa=0;    
   $q = ' 
      SELECT 
        discount_transactions_iptraffic_all.account_id AS aid, 
        Sum(discount_transactions_iptraffic_all.bytes) AS bytes, 
        discount_transactions_iptraffic_all.discount_date_day AS day, 
        discount_transactions_iptraffic_all.base_cost, 
        SUM(discount_transactions_iptraffic_all.discount) AS discount, 
          t_class.t_class_name 
      FROM 
        discount_transactions_iptraffic_all 
        LEFT OUTER JOIN t_class ON (t_class.id = discount_transactions_iptraffic_all.t_class) 
      WHERE 
        discount_transactions_iptraffic_all.account_id = '.$_SESSION['URFA']['basic_account'].' AND 
        discount_transactions_iptraffic_all.discount_date >= '.$data_1.' AND 
        discount_transactions_iptraffic_all.discount_date <= '.$data_2.' 
      GROUP BY 
        discount_transactions_iptraffic_all.account_id, 
        discount_transactions_iptraffic_all.discount_date_day, 
        discount_transactions_iptraffic_all.base_cost, 
        t_class.t_class_name 
      ORDER BY 
        day ASC'; 
          $result=mysql_query ($q); 
     $result_sql .= "<table width=500 border=1 bordercolor=#5283CF cellspacing=0 cellpadding=2> 
      <tr> 
      <td align=center>Дата</a></td> 
      <td align=center>Тип траффика</td> 
      <td align=center>Цена за 1Мб</td> 
      <td align=center>Траффик(Мб)</a></td> 
      <td align=center>Сумма</td> 
      </tr>"; 
 
   while ($row1 = mysql_fetch_assoc($result)) 
   {    
         if (isset($row1['bytes'])) 
         { 
     $traff = round($row1['bytes']/1024/1024, 4); 
     $traff = str_replace("." , "," , $traff); 
     $all_summa = $all_summa + $row1['discount']; 
    }else 
    { 
          $traff = "&nbsp;"; 
         } 
 
   $data=date ("d/m/Y", $row1['day']); 
   $summa = round($row1['discount'], 2); 
 
 
     $result_sql .= "<tr> 
      <td align=center>".$data."</td> 
      <td>".$row1['t_class_name']."</td> 
      <td align=right>".$row1['base_cost']."</td> 
      <td align=right>".$traff."</td> 
      <td align=right>".$summa."</td> 
   </tr>"; 
 
   } 
 
   $all_summa = round($all_summa, 2); 
     $result_sql .= "<tr> 
      <td colspan=3><b>Итого</b></td> 
      <td align=right><b>&nbsp;</b></td> 
      <td align=right><b>".$all_summa."</b></td> 
      </tr>"; 
     $result_sql .= "</table>"; 
        }else{ $result_sql = "Выберите период с разницой не более 1 месяца."; } 
 
  //******************************************************** 
  }elseif ($torder == "3") 
  { 
 
  // Сортировка по часам *********************************** 
   if ($raznica <= "86400" ) 
   { 
      $all_summa=0;    
      $q = 'SELECT 
            discount_transactions_iptraffic_all.account_id AS aid, 
            Sum(discount_transactions_iptraffic_all.bytes) AS bytes, 
            discount_transactions_iptraffic_all.discount_date_hour AS hours, 
            t_class.t_class_name, 
            discount_transactions_iptraffic_all.base_cost, 
            Sum(discount_transactions_iptraffic_all.discount) AS discount 
         FROM 
            discount_transactions_iptraffic_all 
            LEFT OUTER JOIN t_class on t_class.id=discount_transactions_iptraffic_all.t_class 
         WHERE 
            discount_transactions_iptraffic_all.account_id = '.$_SESSION['URFA']['basic_account'].' AND 
            t_class.is_deleted = 0 AND 
            discount_transactions_iptraffic_all.discount_date >= '.$data_1.' AND 
            discount_transactions_iptraffic_all.discount_date <= '.$data_2.' 
         GROUP BY 
            discount_transactions_iptraffic_all.discount_date_hour, 
            discount_transactions_iptraffic_all.account_id, 
            t_class.t_class_name, 
            discount_transactions_iptraffic_all.base_cost 
         ORDER BY 
            hours ASC'; 
          $result=mysql_query ($q); 
 
        $result_sql .="<table width=500 border=1 bordercolor=#5283CF cellspacing=0 cellpadding=2> 
      <tr> 
      <td align=center>Дата</a></td> 
      <td align=center>Тип трафика</a></td> 
      <td align=center>Цена за 1Мб</a></td> 
      <td align=center>Трафик(Мб)</a></td> 
      <td align=center>Сумма</td> 
      </tr>"; 
 
      while ($row1 = mysql_fetch_assoc($result)) 
      {    
            if (isset($row1['bytes'])) 
            { 
        $traff = round($row1['bytes']/1024/1024, 4); 
        $traff = str_replace("." , "," , $traff); 
          $all_summa = $all_summa + $row1['discount']; 
       }else 
       { 
             $traff = "&nbsp;"; 
            } 
 
       $summa = round($row1['discount'], 2); 
       $data=date("d/m/Y - H:i:s", $row1['hours']); 
 
        $result_sql .= "<tr> 
         <td align=center>".$data."</td> 
         <td align=center>".$row1['t_class_name']."</td> 
         <td align=right>".$row1['base_cost']."</td> 
         <td align=right>".$traff."</td> 
         <td align=right>".$summa."</td> 
      </tr>"; 
      } 
 
      $all_summa = round($all_summa, 2); 
        $result_sql .= "<tr> 
      <td colspan=3><b>Итого</b></td> 
      <td align=right><b>&nbsp;</b></td> 
      <td align=right><b>".$all_summa."</b></td> 
      </tr>"; 
 
        $result_sql .= "</table>"; 
        }else{ $result_sql = "Выберите период с разницой не более одних суток "; } 
 
 
 
 
  //******************************************************** 
  }elseif ($torder == "4") 
  { 
  // Сортировка по месяцам 
  echo "По месяцам"; 
  } 
} 
 
//*********************************************************************************************************************** 
        $row->text = preg_replace('/{traffic_period_form}/', $form_select_sdate.$form_select_edate, $row->text); 
       $row->text = preg_replace('/{traffic_period_report_table}/', $result_sql, $row->text); 
   } 
} 
 
?>

SQL

 

HTML

{traffic_period_report} {traffic_period_form} {traffic_period_report_table}

Пример

 
/home/u18456/wiki.flintnet.ru/www/data/pages/joomla_plugin/report_traffic.txt · Последние изменения: 2009/08/30 13:46 От 195.22.104.13
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki