root/branches/1.0.x/php/createpdf.php @ 507

Revision 507, 16.6 KB (checked in by PavelVinogradov, 22 months ago)

Proper count or real and cache traffic. Remove redundant code. (Closes #258)

Line 
1<?php
2
3class DATE
4{
5  var $sday,$smon,$syea,$shou,$eday,$emon,$eyea,$ehou;
6  function DATE($mas)
7    {
8       list($this->sday,$this->smon,$this->syea,$this->shou,$this->eday,$this->emon,$this->eyea,$this->ehou)=$mas;
9    }
10  function BeginDate()
11    {
12       return("$this->sday.$this->smon.$this->syea"); 
13    }
14  function EndDate()
15    {
16       return("$this->eday.$this->emon.$this->eyea");
17    }
18  function sdate()
19    {
20       return("$this->syea-$this->smon-$this->sday");
21    }
22  function edate()
23    {
24       return("$this->eyea-$this->emon-$this->eday");
25    }
26}
27
28
29function UsersTrafficPeriodPDFHeader($page) {
30
31        global $pdfFile;
32        global $DATE;
33        global $SAMSConf;
34
35        if($SAMSConf->LANGCODE=="RU")
36                $lang="./lang/lang.WIN1251";
37        else
38                $lang="./lang/lang.$SAMSConf->LANG";
39        require($lang);
40
41        $sdate=$DATE->sdate();
42        $edate=$DATE->edate();
43
44        $pdfFile->AddPage();
45        $imagefile = "$SAMSConf->ICONSET/usergroup_48.jpg";
46        $pdfFile->Image($imagefile,20,10,20,20);
47
48        $pdfFile->SetFont('Nimbus','',15);
49        //$pdfFile->SetFont('SUSESerif-Roman','',16);
50        $pdfFile->SetXY(50, 15);
51        $pdfFile->Write(0, " $usersbuttom_2_traffic_UsersTrafficPeriod_1 $sdate - $edate ($lang_pdfReport_page $page)");
52        $pdfFile->SetXY(50, 25);
53        $pdfFile->Write(0, " $usersbuttom_2_traffic_UsersTrafficPeriod_2 ");
54
55
56        $pdfFile->SetFont('Nimbus','',11);
57        //$pdfFile->SetFont('SUSESerif-Roman','',11);
58        $ycount=40;
59        $pdfFile->SetXY(30, $ycount);
60        $pdfFile->Write(0, "N");
61        $pdfFile->SetXY(40, $ycount);
62        $pdfFile->Write(0, "$usersbuttom_2_traffic_UsersTrafficPeriod_4");
63        $pdfFile->SetXY(130, $ycount);
64        $pdfFile->Write(0, "$usersbuttom_2_traffic_UsersTrafficPeriod_7");
65 
66 
67        $pdfFile->SetFont('Nimbus','',11);
68        //$pdfFile->SetFont('SUSESerif-Roman','',11);
69  }
70
71
72function UsersTrafficPeriodPDF()
73{
74  global $SAMSConf;
75  global $DATE;
76  global $pdfFile; 
77
78  $sdate=$DATE->sdate();
79  $edate=$DATE->edate();
80  $currentPage = 1;
81
82  db_connect($SAMSConf->LOGDB) or exit();
83  mysql_select_db($SAMSConf->LOGDB);
84
85  UsersTrafficPeriodPDFHeader($currentPage);
86
87  $ycount=50;
88  $count=0;
89
90  if($SAMSConf->realtraffic=="real")
91    $result=mysql_query("SELECT sum(size), sum(hit), user,domain, sum(size) - sum(hit) as traff  FROM cachesum WHERE date>=\"$sdate\"&&date<=\"$edate\" group by user,domain order by traff desc");
92  else
93    $result=mysql_query("SELECT sum(size), sum(hit), user,domain, sum(size) as traff  FROM cachesum WHERE date>=\"$sdate\"&&date<=\"$edate\" group by user,domain order by traff desc");
94  while($row=mysql_fetch_array($result))
95       {
96         $result_2=mysql_query("SELECT * FROM ".$SAMSConf->SAMSDB.".squidusers WHERE ".$SAMSConf->SAMSDB.".squidusers.nick=\"$row[user]\"&&".$SAMSConf->SAMSDB.".squidusers.domain=\"$row[domain]\"");
97         $row_2=mysql_fetch_array($result_2);
98         
99         $pdfFile->SetXY(30, $ycount);
100         $pdfFile->Write(0, $count+1);
101         $pdfFile->SetXY(40, $ycount);
102         $aaa=convert_cyr_string($row['user'],"k","w");
103         $pdfFile->Write(0, $aaa);
104         $pdfFile->SetXY(80, $ycount);
105         $aaa=convert_cyr_string("$row_2[family] $row_2[name]","k","w");
106         $pdfFile->Write(0, $aaa);
107         $pdfFile->SetXY(130, $ycount);
108 
109         $aaa=ReturnTrafficFormattedSize($row[4]);
110         $pdfFile->Write(0, $aaa);
111         
112         $count=$count+1;
113         $size2=$size2+$row[0];
114         $hitsize=$hitsize+$row[1];
115         $traf=$traf+$row[4];
116         $ycount+=7;
117
118         if ($count % 30 == 0) {
119                $currentPage = $currentPage + 1;
120                UsersTrafficPeriodPDFHeader($currentPage);
121                $ycount = 50;
122         }
123       }
124  mysql_free_result($result); 
125 
126} 
127
128
129function AllUsersTrafficPDF()
130{
131  //define('FPDF_FONTPATH','lib/font/');
132  //require('lib/fpdf.php');
133 
134  global $SAMSConf;
135  global $DATE;
136  global $pdfFile;
137 
138  if($SAMSConf->LANGCODE=="RU")
139    $lang="./lang/lang.WIN1251";
140  else
141    $lang="./lang/lang.$SAMSConf->LANG";
142  require($lang);
143
144  $sdate=$DATE->sdate();
145  $edate=$DATE->edate();
146  $bdate=$DATE->BeginDate();
147  $eddate=$DATE->EndDate();
148
149  db_connect($SAMSConf->LOGDB) or exit();
150  mysql_select_db($SAMSConf->LOGDB);
151
152  $result=mysql_query("SELECT * FROM ".$SAMSConf->SAMSDB.".squidusers ");
153  while($row=mysql_fetch_array($result))
154       {
155          if($row['size']>0)
156            {
157              $pdfFile->AddPage();
158              $imagefile = "$SAMSConf->ICONSET/usergroup_48.jpg";
159              $pdfFile->Image($imagefile,20,10,20,20);
160
161              $pdfFile->SetFont('Nimbus','',14);
162              //$pdfFile->SetFont('SUSESerif-Roman','',16);
163              $pdfFile->SetXY(50, 15);
164              $pdfFile->Write(0, " $lang_pdfReport_user $row[nick] ($sdate - $edate)");
165 
166              $pdfFile->SetXY(30, 40);
167              $pdfFile->Write(0, $lang_pdfReport_date);
168               
169              $pdfFile->SetXY(60, 40);
170              $pdfFile->Write(0, $lang_pdfReport_size);
171              $pdfFile->SetXY(90, 40);
172              $pdfFile->Write(0, $lang_pdfReport_cache);
173              $pdfFile->SetXY(130, 40);
174              $pdfFile->Write(0, $lang_pdfReport_traffic);
175             
176              $ycount=50;
177              $pdfFile->SetFont('Nimbus','',11);
178              //$pdfFile->SetFont('SUSESerif-Roman','',11);
179              $result2=mysql_query("SELECT sum(cachesum.size),cachesum.date,cachesum.user,cachesum.domain,sum(cachesum.hit) FROM cachesum WHERE cachesum.user=\"$row[nick]\" &&cachesum.date>=\"$sdate\" &&cachesum.date<=\"$edate\" &&cachesum.domain=\"$row[domain]\" GROUP BY date");
180              while($row2=mysql_fetch_array($result2))
181                {
182               
183                   $pdfFile->SetXY(30, $ycount);
184                   $aaa=ReturnDate($row2['date']);
185                   $pdfFile->Write(0, $aaa);
186               
187                   $pdfFile->SetXY(60, $ycount);
188                   $pdfFile->Write(0, $row2[0]);
189                   $pdfFile->SetXY(90, $ycount);
190                   $pdfFile->Write(0, $row2[4]);
191                   $pdfFile->SetXY(130, $ycount);
192                   if($SAMSConf->realtraffic=="real")
193                     $aaa=ReturnTrafficFormattedSize($row2[0]-$row2[4]);
194                   else
195                     $aaa=ReturnTrafficFormattedSize($row2[0]);
196                   $pdfFile->Write(0, " $aaa");
197               
198                   $count=$count+1;
199                   $size=$size+$row[0];
200                   $cache=$cache+$row[4];
201                   $ycount+=7;
202                }
203              mysql_free_result($result2); 
204
205              $ycount+=20;
206         
207              $pdfFile->SetXY(30, $ycount-10);
208              $pdfFile->Write(0, $lang_pdfReport_site);
209              $pdfFile->SetXY(130, $ycount-10);
210              $pdfFile->Write(0, $lang_pdfReport_size);
211              $pdfFile->SetXY(160, $ycount-10);
212              $pdfFile->Write(0, $lang_pdfReport_cache);
213
214              $query="select trim(leading \"http://\" from substring_index(url,'/',3)) as norm_url,sum(size) as url_size,sum(hit) as hit_size from cache where user=\"$row[nick]\"&&domain=\"$row[domain]\"&&date>=\"$sdate\"&&date<=\"$edate\" group by norm_url order by url_size desc limit 50";
215              $result3=mysql_query($query);
216              while($row3=mysql_fetch_array($result3))
217                {             
218                   $pdfFile->SetXY(30, $ycount);
219                   $pdfFile->Write(0, $row3['norm_url']);
220                   $pdfFile->SetXY(130, $ycount);
221                   $pdfFile->Write(0, $row3['url_size']);
222                   $pdfFile->SetXY(160, $ycount);
223                   $pdfFile->Write(0, $row3['hit_size']);
224               
225                   $ycount+=7;
226                   if($ycount>=273)
227                     {
228                       $pdfFile->AddPage();
229                       $ycount=50; 
230                     } 
231                }
232              mysql_free_result($result3); 
233            }   
234       }
235  mysql_free_result($result); 
236
237} 
238
239
240function UsersTrafficPeriodPDFlib($pdfFile)
241{
242  global $SAMSConf;
243  global $DATE;
244  global $PAGE;
245     
246  if($SAMSConf->LANGCODE=="RU")
247    $lang="./lang/lang.WIN1251";
248  else
249    $lang="./lang/lang.$SAMSConf->LANG";
250  require($lang);
251
252  $sdate=$DATE->sdate();
253  $edate=$DATE->edate();
254  $bdate=$DATE->BeginDate();
255  $eddate=$DATE->EndDate();
256
257  db_connect($SAMSConf->LOGDB) or exit();
258  mysql_select_db($SAMSConf->LOGDB);
259 
260  $imagefile = "$SAMSConf->ICONSET/usergroup_48.jpg";
261  $image = PDF_load_image($pdfFile, "auto", $imagefile, "");
262  if (!$image)
263    {
264      die( "Error: " . PDF_get_errmsg($pdfFile) );
265    }
266  $fontdir = "lib/font/";
267  pdf_set_parameter($pdfFile, "FontOutline", "Nimbus=$fontdir/Nimbus.ttf");
268 
269  $ycount=700;
270  if($SAMSConf->realtraffic=="real")
271    $result=mysql_query("SELECT sum(size), sum(hit), user,domain, sum(size) - sum(hit) as traff  FROM cachesum WHERE date>=\"$sdate\"&&date<=\"$edate\" group by user,domain order by traff desc");
272  else
273    $result=mysql_query("SELECT sum(size), sum(hit), user,domain, sum(size) as traff  FROM cachesum WHERE date>=\"$sdate\"&&date<=\"$edate\" group by user,domain order by traff desc");
274  while($row=mysql_fetch_array($result))
275       {
276         if($ycount==700)
277           {
278              pdf_begin_page($pdfFile, 595, 842);
279              if($SAMSConf->LANGCODE=="RU")
280                {
281                  $font = PDF_findfont($pdfFile, "Nimbus", "cp1251",1);
282                  PDF_setfont($pdfFile, $font, 16);
283                }
284
285             PDF_fit_image($pdfFile, $image, 50, 760, "" );
286             pdf_show_xy($pdfFile, "$usersbuttom_2_traffic_UsersTrafficPeriod_1", 170, 780); 
287             pdf_show_xy($pdfFile, "$usersbuttom_2_traffic_UsersTrafficPeriod_2", 120, 760); 
288             PDF_setfont($pdfFile, $font, 10);
289             pdf_show_xy($pdfFile, "$traffic_2 $bdate $traffic_3 $eddate", 220, 740); 
290           
291             pdf_moveto($pdfFile, 20, 720);
292             pdf_lineto($pdfFile, 575, 720);
293             pdf_stroke($pdfFile);                     
294             
295             PDF_setfont($pdfFile, $font, 12);
296             pdf_show_xy($pdfFile, "$usersbuttom_2_traffic_UsersTrafficPeriod_4", 160, $ycount);
297             pdf_show_xy($pdfFile, "$usersbuttom_2_traffic_UsersTrafficPeriod_7", 410, $ycount); 
298             
299             PDF_setfont($pdfFile, $font, 11);
300             $ycount-=40;
301 
302           }
303         $result_2=mysql_query("SELECT * FROM ".$SAMSConf->SAMSDB.".squidusers WHERE ".$SAMSConf->SAMSDB.".squidusers.nick=\"$row[user]\"&&".$SAMSConf->SAMSDB.".squidusers.domain=\"$row[domain]\"");
304         $row_2=mysql_fetch_array($result_2);
305         pdf_show_xy($pdfFile, $count+1, 50, $ycount); 
306         pdf_show_xy($pdfFile, "$row[user]", 80, $ycount); 
307         $aaa=convert_cyr_string("$row_2[family] $row_2[name]","k","w");
308         pdf_show_xy($pdfFile, $aaa, 160, $ycount); 
309         $aaa=ReturnTrafficFormattedSize($row[4]);
310         pdf_show_xy($pdfFile, $aaa, 400, $ycount); 
311         //$aaa=ReturnTrafficFormattedSize($row[1]);
312         //pdf_show_xy($pdfFile, $aaa, 375, $ycount);
313         
314         $count=$count+1;
315         $size2=$size2+$row[0];
316         $hitsize=$hitsize+$row[1];
317         $traf=$traf+$row[4];
318         $ycount-=20;
319         if($ycount==40)
320           {
321             PDF_setfont($pdfFile, $font, 9);
322             pdf_show_xy($pdfFile, "Created by SAMS (C) 2003-2008", 250, 20); 
323             pdf_show_xy($pdfFile, "page $PAGE", 500, 10); 
324             pdf_end_page($pdfFile);
325             $ycount=700;
326             $PAGE+=1;
327
328           } 
329       }
330  PDF_close_image($pdfFile, $image);
331  PDF_setfont($pdfFile, $font, 9);
332  pdf_show_xy($pdfFile, "Created by SAMS (C) 2003-2008", 250, 20); 
333  pdf_show_xy($pdfFile, "page $PAGE", 500, 10); 
334  pdf_end_page($pdfFile);
335  $PAGE+=1;
336 
337 
338 
339} 
340
341function AllUsersTrafficPDFlib()
342{
343  global $SAMSConf;
344  global $DATE;
345  global $pdfFile;
346  global $PAGE;
347 
348  if($SAMSConf->LANGCODE=="RU")
349    $lang="./lang/lang.WIN1251";
350  else
351    $lang="./lang/lang.$SAMSConf->LANG";
352  require($lang);
353
354  $sdate=$DATE->sdate();
355  $edate=$DATE->edate();
356  $bdate=$DATE->BeginDate();
357  $eddate=$DATE->EndDate();
358
359  db_connect($SAMSConf->LOGDB) or exit();
360  mysql_select_db($SAMSConf->LOGDB);
361
362  $imagefile = "$SAMSConf->ICONSET/user.jpg";
363  $image = PDF_load_image($pdfFile, "auto", $imagefile, "");
364  if(!$image)
365    {
366        die( "Error: " . PDF_get_errmsg($pdfFile) );
367    }
368  $fontdir = "lib/font/";
369  pdf_set_parameter($pdfFile, "FontOutline", "Nimbus=$fontdir/Nimbus.ttf");
370                 
371  $result=mysql_query("SELECT * FROM ".$SAMSConf->SAMSDB.".squidusers WHERE squidusers.size>\"0\" ");
372  while($row=mysql_fetch_array($result))
373       {
374          $ycount=700;
375          if($row['size']>0)
376            {
377              pdf_begin_page($pdfFile, 595, 842);
378             
379              $result2=mysql_query("SELECT sum(cachesum.size),cachesum.date,cachesum.user,cachesum.domain,sum(cachesum.hit) FROM cachesum WHERE cachesum.user=\"$row[nick]\" &&cachesum.date>=\"$sdate\" &&cachesum.date<=\"$edate\" &&cachesum.domain=\"$row[domain]\" GROUP BY date");
380              while($row2=mysql_fetch_array($result2))
381                {
382                   if($ycount>=700)
383                     {
384                       if($SAMSConf->LANGCODE=="RU")
385                         {
386                           $font = PDF_findfont($pdfFile, "Nimbus", "cp1251",1);
387                           PDF_setfont($pdfFile, $font, 16);
388                         }
389
390                       PDF_fit_image($pdfFile, $image, 50, 760, "" );
391                       pdf_show_xy($pdfFile, "$traffic_1 $row[nick]", 170, 780); 
392                       pdf_show_xy($pdfFile, "$userbuttom_2_traffic_UserTrafficPeriod_2", 120, 760); 
393                       PDF_setfont($pdfFile, $font, 10);
394                       pdf_show_xy($pdfFile, "$traffic_2 $bdate $traffic_3 $eddate", 220, 740); 
395                       
396                       pdf_moveto($pdfFile, 20, 720);
397                       pdf_lineto($pdfFile, 575, 720);
398                       pdf_stroke($pdfFile);                   
399                       
400                       PDF_setfont($pdfFile, $font, 12);
401                       pdf_show_xy($pdfFile, "$traffic_data", 110, $ycount); 
402                       pdf_show_xy($pdfFile, "$userbuttom_2_traffic_UserTrafficPeriod_5", 290, $ycount); 
403                       $ycount-=30;
404                       PDF_setfont($pdfFile, $font, 11);
405                     }
406               
407                   $aaa=ReturnDate($row2['date']);
408                   pdf_show_xy($pdfFile, $aaa, 100, $ycount); 
409                   //pdf_show_xy($pdfFile, $row2[4], 230, $ycount); 
410                   if($SAMSConf->realtraffic=="real")
411                     {
412                       $aaa=ReturnTrafficFormattedSize($row2[0]-$row2[4]); 
413                     }
414                   else
415                     {
416                       $aaa=ReturnTrafficFormattedSize($row2[0]); 
417                     } 
418                     pdf_show_xy($pdfFile, $aaa, 290, $ycount); 
419                   
420                   $size=$size+$row[0];
421                   $cache=$cache+$row[4];
422                   $ycount-=20;
423         
424                   if($ycount==40)
425                     {
426                       PDF_setfont($pdfFile, $font, 9);
427                       pdf_show_xy($pdfFile, "Created by SAMS (C) 2003-2008", 250, 20); 
428                       pdf_show_xy($pdfFile, "page $PAGE", 500, 10); 
429                       pdf_end_page($pdfFile);
430                       pdf_begin_page($pdfFile, 595, 842);
431                       $ycount=700;
432                       $PAGE+=1;
433                     } 
434                }
435              mysql_free_result($result2); 
436                           
437             //if($ycount!=500)
438              PDF_setfont($pdfFile, $font, 9);
439              pdf_show_xy($pdfFile, "Created by SAMS (C) 2003-2008", 250, 20); 
440              pdf_show_xy($pdfFile, "page $PAGE", 500, 10); 
441              pdf_end_page($pdfFile);
442              $PAGE+=1;
443            }   
444         
445       }
446  mysql_free_result($result); 
447  PDF_close_image($pdfFile, $image);
448
449} 
450
451 
452  global $pdfFile;
453  global $SAMSConf;
454  global $DATE;
455  global $PAGE;
456 
457  //echo "$argv[0] $argv[1] $argv[2]\n";
458  if($argv[1]==1)
459    {
460      $path="$argv[2]/mysqltools.php";
461      require($path);
462    }
463  else
464    require('./mysqltools.php');
465
466  $year=strftime("%Y");
467  $mon=strftime("%m");
468  $day=strftime("%d");
469
470  $DATE=new DATE(Array( 1, $mon, $year, 0, 31, $mon, $year, 23), $sdate, $edate);
471  $SAMSConf=new SAMSCONFIG();
472  if($SAMSConf->LANGCODE=="RU")
473    $lang="./lang/lang.WIN1251";
474  else
475    $lang="./lang/lang.$SAMSConf->LANG";
476  require($lang);
477 
478  $PAGE=1;
479  if($SAMSConf->PDFLIB=="pdflib")
480    {
481      $pdfFile=pdf_new();
482      PDF_open_file($pdfFile, "");
483      pdf_set_info($pdfFile, "Creator", "Created by SAMS");
484      pdf_set_info($pdfFile, "Title", "$usersbuttom_2_traffic_UsersTrafficPeriod_1 $usersbuttom_2_traffic_UsersTrafficPeriod_2");
485     
486     
487      UsersTrafficPeriodPDFlib($pdfFile);
488      AllUsersTrafficPDFlib();
489     
490      pdf_close($pdfFile);
491      $pdf = pdf_get_buffer($pdfFile);
492      $pdflen = strlen($pdf);
493      print("$pdf");
494      pdf_delete($pdfFile);
495     
496    }
497  if($SAMSConf->PDFLIB=="fpdf")
498    {
499      define('FPDF_FONTPATH','lib/font/');
500      require('lib/fpdf.php');
501      $pdfFile = new FPDF();
502      $pdfFile->Open();
503 
504      $pdfFile-> AddFont('Nimbus','','Nimbus.php');
505      $pdfFile->SetAuthor("SQUID Account Management System"); 
506      $pdfFile->SetCreator("Created by SAMS.");
507      $pdfFile->SetTitle("SAMS users statistic");
508      UsersTrafficPeriodPDF();
509      AllUsersTrafficPDF();
510      $pdfFile->Output();
511    }
512
513
514?>
Note: See TracBrowser for help on using the browser.