root/admin/admin_statistics.php

Revision 313, 16.3 kB (checked in by Nafania, 2 years ago)

мелки фиксы.
решены следующие тикеты:
http://svn.tbdevsz.ru/ticket/5
http://svn.tbdevsz.ru/ticket/17
http://svn.tbdevsz.ru/ticket/22

Line 
1 <?php
2
3 if( !empty($setmodules) ) {</span>
4 <span class="code-keyword">        $filename = basename(__FILE__);
5         $module['statistic']['statistic'] = $filename;
6         return;
7 }
8
9 define('IN_PHPBB', 1);
10
11 $root_path = './../';</span>
12 <span class="code-lang">require($root_path . 'extension.inc');
13 require('./pagestart.' . $phpEx);
14
15 $template->assign_vars(array(</span>
16 <span class="code-lang">        'S_STATISTICS_ACTION' => append_sid("admin_statistics.$phpEx"),
17         'IMG_BAR_LEFT' => $images['bar_left'],
18         'IMG_BAR' => $images['bar'],
19         'IMG_BAR_RIGHT' => $images['bar_right'] )
20 );
21
22 $mode = request_var('mode', '');
23 $modes_ary = array(</span>
24 <span class="code-lang">    'reg' => $lang['reg_statistics'],
25     'new' => $lang['news_statistics'],
26     'post' => $lang['posts_statistics'],
27     'msg' => $lang['pms_statistics'],
28     'torr' => $lang['tor_statistics'],
29     'bans' => $lang['bans_statistics'],
30     'comm' => $lang['comm_statistics'],
31     'poll' => $lang['poll_statistics'],
32     'rqst' => $lang['req_statistics'],
33     'offers' => $lang['off_statistics'],
34 );
35
36 if ( !$mode ) {
37     $count = $modes_ary;
38     $split_row = 3;
39
40     $s_colspan = 0;
41     $row = 0;
42     $col = 0;
43
44     foreach ( $modes_ary AS $mode_name => $lang_value ) {
45         if (!$col)
46         {
47             $template->assign_block_vars('row', array());
48         }
49
50         $template->assign_block_vars('row.col', array(
51             'U_MODE' => append_sid($admin_path . 'admin_statistics.php?code=' . $mode_name),
52             'LANG_VALUE' => $lang_value
53         ));
54
55         $s_colspan = max($s_colspan, $col + 1);
56
57         if ($col == $split_row)
58         {
59             $col = 0;
60             $row++;
61         }
62         else
63         {
64             $col++;
65         }
66     }
67
68     $template->set_filenames(array(
69         'body' => '../admin/admin_statistics_body.html'
70     ));
71 }
72
73
74 function form_dropdown($name, $list=array(), $default_val="") {
75     $html = '<select name="' . $name . '">';
76     foreach ($list as $k => $v) {
77         $selected = "";
78         if ( ($default_val != "") and ($v[0] == $default_val) ) {
79             $selected = ' selected="selected"';
80         }
81         $html .= '<option value="' . $v[0] . '"' . $selected . '>' . $v[1] . '</option>';
82     }
83     $html .= '</select>';
84     return $html;
85 }
86
87 //-----------------------------------------</span>
88 <span class="code-comment">//| Results screen
89 //-----------------------------------------
90
91 function result_screen($mode='reg') {</span>
92 <span class="code-keyword">
93     global $db, $template, $lang, $theme, $images, $userdata;
94
95     $to_month = request_var('to_month', 0);
96     $to_day = request_var('to_day', 0);
97     $to_year = request_var('to_year', 0);
98     $from_month = request_var('from_month', 0);
99     $from_day = request_var('from_day', 0);
100     $from_year = request_var('from_year', 0);
101
102     if ( ! checkdate($to_month   ,$to_day   ,$to_year) ) {
103         trigger_error($lang['from_date'] . $lang['date_invalid']);
104     }
105         if ( ! checkdate($from_month ,$from_day ,$from_year) ) {
106             trigger_error($lang['to_date'] . $lang['date_invalid']);
107         }
108
109         //-----------------------------------------
110
111         $to_time   = mktime(12 ,0 ,0 ,$to_month   ,$to_day   ,$to_year  );
112         $from_time = mktime(12 ,0 ,0 ,$from_month ,$from_day ,$from_year);
113
114         //-----------------------------------------
115
116         if ($mode == 'reg') {
117                 $table     = $lang['reg_statistics'];
118                 $sql_table = USERS_TABLE;
119                 $sql_field = 'added';
120                 $page_detail = $lang['reg_statistics_explain'];
121         }
122         else if ($mode == 'post') {
123                 $table     = $lang['posts_statistics'];
124                 $sql_table = POSTS_TABLE;
125                 $sql_field = 'post_created';
126                 $page_detail = $lang['posts_statistics_explain'];
127         }
128         else if ($mode == 'msg') {
129                 $table     = $lang['pms_statistics'];
130                 $sql_table = PRIVATE_MESSAGES_TABLE;
131                 $sql_field = 'added';
132                 $page_detail = $lang['pms_statistics_explain'];
133         }
134         else if ($mode == 'torr') {
135                 $table     = $lang['tor_statistics'];
136                 $sql_table = TORRENTS_TABLE;
137                 $sql_field = 'ctime';
138                 $page_detail = $lang['tor_statistics_explain'];
139         }
140         else if ($mode == 'bans') {
141                 $table     = $lang['bans_statistics'];
142                 $sql_table = BANLIST_TABLE;
143                 $sql_field = 'ban_added';
144                 $page_detail = $lang['bans_statistics_explain'];
145         }
146         else if ($mode == 'comm') {
147                 $table     = $lang['comm_statistics'];
148                 $sql_table = COMMENTS_TABLE;
149                 $sql_field = 'comment_added';
150                 $page_detail = $lang['comm_statistics_explain'];
151         }
152         else if ($mode == 'new') {
153                 $table     = $lang['news_statistics'];
154                 $sql_table = NEWS_TABLE;
155                 $sql_field = 'added';
156                 $page_detail = $lang['news_statistics_explain'];
157         }
158         else if ($mode == 'poll') {
159                 $table     = $lang['poll_statistics'];
160                 $sql_table = VOTE_DESC_TABLE;
161                 $sql_field = 'vote_start';
162                 $page_detail = $lang['poll_statistics_explain'];
163         }
164         else if ($mode == 'rqst') {
165                 $table     = $lang['req_statistics'];
166                 $sql_table = REQUESTS_TABLE;
167                 $sql_field = 'added';
168                 $page_detail = $lang['req_statistics_explain'];
169         }
170
171         else if ($mode == 'offers') {
172                 $table     = $lang['off_statistics'];
173                 $sql_table = OFFERS_TABLE;
174                 $sql_field = 'added';
175                 $page_detail = $lang['off_statistics_explain'];
176         }
177
178         switch ($_POST['timescale']) {
179             case 'daily':
180                     $sql_date = "%w %U %m %Y";
181                         $php_date = "F jS - Y";
182                 break;
183
184                 case 'monthly':
185                         $sql_date = "%m %Y";
186                         $php_date = "F Y";
187                 break;
188
189                 default:
190
191                         $sql_date = "%U %Y";
192                         $php_date = " [F Y]";
193                 break;
194         }
195
196         $sortby = $_POST['sortby'] == 'asc' ? 'ASC' : 'DESC';
197         $sql = "SELECT MAX($sql_field) as result_maxdate,
198                 COUNT(*) as result_count,
199                 DATE_FORMAT(FROM_UNIXTIME($sql_field),'$sql_date') AS result_time
200                 FROM $sql_table
201                 WHERE $sql_field > $from_time
202                 AND $sql_field < $to_time
203                 GROUP BY result_time
204                 ORDER BY $sql_field $sortby";
205         $result = $db->sql_query($sql);
206
207         $running_total = 0;
208         $max_result    = 0;
209         $results       = array();
210
211         $template->assign_vars(array(
212                 'TABLE_NAME'=> $table,
213                 'PAGE_DETAILS' => $page_detail,
214                 'TIMESCALE' =>  ($_POST['timescale'] == 'daily' ? $lang['daily'] : ( $_POST['timescale'] == 'weekly' ? $lang['weekly'] : $lang['monthly'] ) ),
215                 'DATE_FROM' => create_date($from_time, 'Y M d'),
216                 'DATE_TO' => create_date($to_time, 'Y M d') )
217         );
218
219         if ( $row = $db->sql_fetchrow($result) ) {
220             $total = 0;
221             do {
222                 ++$total;
223                 if ( $row['result_count'] >  $max_result ) {
224                     $max_result = $row['result_count'];
225                 }
226                 $running_total += $row['result_count'];
227
228                 $results[] = array(
229                 'result_maxdate'  => $row['result_maxdate'],
230                 'result_count'    => $row['result_count'],
231                 'result_time'     => $row['result_time']
232                 );
233             }
234             while ($row = $db->sql_fetchrow($result) );
235             $srednee = number_format ($running_total / $total ,0);
236             $template->assign_vars(array(
237                     'SREDNEE'=> $srednee,
238                     'RUNNING_TOTAL' =>  $running_total)
239             );
240                 $i = 0;
241             foreach( $results as $pOOp => $data ) {
242                 ++$i;
243
244                 $img_width = intval( ($data['result_count'] / $max_result) * 100 - 20);
245                 if ($img_width < 1) {
246                     $img_width = 1;
247                 }
248                 $img_width .= '%';
249                 if ($_POST['timescale'] == 'weekly') {
250                     $date = $lang['week'] . ' #' . strftime("%W", $data['result_maxdate']) . ' ' . create_date($data['result_maxdate'], $php_date);
251                 }
252                 else {
253                     $date = create_date($data['result_maxdate'], $php_date);
254                 }
255
256                 $template->assign_block_vars('results_row', array(
257                         'DATE' => $date,
258                         'IMG_WIDTH' => $img_width,
259                         'RESULT_COUNT' => $data['result_count'],
260                         'TD_CLASS' => ($i % 2 ? $theme['td_class1'] : $theme['td_class2'] ) )
261                 );
262             }
263
264         $template->set_filenames(array(
265             'body' => '../admin/admin_statistics_results_body.html'
266         ));
267         }
268
269         else {
270             trigger_error($lang['no_results']);
271         }
272 }
273
274 //-----------------------------------------</span>
275 <span class="code-comment">//| Date selection screen
276 //-----------------------------------------
277
278 function main_screen($mode='reg') {</span>
279 <span class="code-keyword">        global $template, $lang;
280
281         $page_title = $lang['statistic_center'];
282         $page_detail = $lang['statistic_center_explain'];
283         if ($mode == 'reg') {
284                 $form_code = 'show_reg';
285                 $table     $lang['reg_statistics'];
286         }
287         else if ($mode == 'post') {
288                 $form_code = 'show_post';
289                 $table     = $lang['posts_statistics'];
290         }
291         else if ($mode == 'msg') {
292                 $form_code = 'show_msg';
293                 $table     = $lang['pms_statistics'];
294         }
295         else if ($mode == 'torr') {
296                 $form_code = 'show_torr';
297                 $table     = $lang['tor_statistics'];
298         }
299         else if ($mode == 'bans') {
300                 $form_code = 'show_bans';
301                 $table     = $lang['bans_statistics'];
302         }
303         else if ($mode == 'comm') {
304                 $form_code = 'show_comm';
305                 $table     = $lang['comm_statistics'];
306         }
307         else if ($mode == 'new') {
308                 $form_code = 'show_new';
309                 $table     = $lang['news_statistics'];
310         }
311         else if ($mode == 'poll') {
312                 $form_code = 'show_poll';
313                 $table     = $lang['poll_statistics'];
314         }
315         else if ($mode == 'rqst') {
316                 $form_code = 'show_rqst';
317                 $table     = $lang['req_statistics'];
318         }
319         else if ($mode == 'offers') {
320                 $form_code = 'show_offers';
321                 $table     = $lang['off_statistics'];
322         }
323
324
325         $old_date = getdate(time() - (3600 * 24 * 90));
326         $new_date = getdate(time() + (3600 * 24));
327
328
329         //-----------------------------------------
330
331         $template->assign_vars(array(
332         'TABLE_NAME'=> $table,
333         'PAGE_TITLE' =>  $page_title,
334         'PAGE_DETAILS' => $page_detail,
335         'S_FORM_HIDDEN' => $form_code,
336         'FROM_YEAR' => form_dropdown( "from_year"  , make_year(),  $old_date['year'] ),
337         'FROM_MONTH' => form_dropdown( "from_month" , make_month(),  $old_date['mon'] ),
338         'FROM_DAY' => form_dropdown( "from_day"   , make_day(),  $old_date['mday'] ),
339         'TO_YEAR' => form_dropdown( "to_year"  , make_year(), $new_date['year'] ),
340         'TO_MONTH' => form_dropdown( "to_month" , make_month(), $new_date['mon']  ),
341         'TO_DAY' => form_dropdown( "to_day"   , make_day(), $new_date['mday'] ),
342         'TIMESCALE' => form_dropdown( "timescale" , array( 0 => array( 'daily', $lang['daily']), 1 => array( 'weekly', $lang['weekly'] ), 2 => array( 'monthly', $lang['monthly'] ) ), 'daily' ),
343         'SORT' => form_dropdown( "sortby" , array( 0 => array( 'asc', $lang['old_dates_begin']), 1 => array( 'desc', $lang['new_dates_begin'] ) ), 'desc' ) )
344         );
345
346         $template->set_filenames(array(
347             'body' => '../admin/admin_statistics_select_body.html'
348         ));
349
350 }
351
352 //-----------------------------------------
353
354 function make_year() {</span>
355 <span class="code-keyword">        $time_now = getdate();
356         $return = array();
357         $start_year = 2002;
358         $latest_year = intval($time_now['year']);
359         if ($latest_year == $start_year) {
360             $start_year -= 1;
361         }
362         for ( $y = $start_year; $y <= $latest_year; $y++ ) {
363             $return[] = array( $y, $y);
364         }
365         return $return;
366 }
367
368 //-----------------------------------------
369
370 function make_month() {</span>
371 <span class="code-keyword">    global $lang;
372
373         $month_names = array(
374         $lang['datetime']['January'],
375         $lang['datetime']['February'],
376         $lang['datetime']['March'],
377         $lang['datetime']['April'],
378         $lang['datetime']['May'],
379         $lang['datetime']['June'],
380         $lang['datetime']['July'],
381         $lang['datetime']['August'],
382         $lang['datetime']['September'],
383         $lang['datetime']['October'],
384         $lang['datetime']['November'],
385         $lang['datetime']['December']
386         );
387         reset($month_names);
388         $return = array();
389
390         for ( $m = 1 ; $m <= 12; $m++ ) {
391             $return[] = array( $m, $month_names[$m-1] );
392         }
393         return $return;
394 }
395
396 //-----------------------------------------
397
398 function make_day() {</span>
399 <span class="code-keyword">    $return = array();
400         for ( $d = 1 ; $d <= 31; $d++ ) {
401             $return[] = array( $d, $d );
402         }
403         return $return;
404 }
405
406
407
408
409
410
411         $tmp_in = array_merge( $_GET, $_POST );
412         foreach ( $tmp_in as $k => $v ) {
413             unset($$k);
414         }
415
416         if(isset($tmp_in['code']) && $tmp_in['code'] != "") {
417             switch($tmp_in['code']) {
418                         case 'show_reg':
419                                 result_screen('reg');
420                         break;
421
422                         case 'show_rate':
423                                 result_screen('rate');
424                         break;
425
426                         case 'rate':
427                                 main_screen('rate');
428                         break;
429
430                         case 'show_post':
431                                 result_screen('post');
432                         break;
433
434                         case 'post':
435                                 main_screen('post');
436                         break;
437
438                         case 'show_msg':
439                                 result_screen('msg');
440                         break;
441
442                         case 'msg':
443                                 main_screen('msg');
444                         break;
445
446                         case 'show_torr':
447                                 result_screen('torr');
448                         break;
449
450                         case 'torr':
451                                 main_screen('torr');
452                         break;
453
454                         case 'show_bans':
455                                 result_screen('bans');
456                         break;
457
458                         case 'bans':
459                                 main_screen('bans');
460                         break;
461
462                         case 'show_comm':
463                                 result_screen('comm');
464                         break;
465
466                         case 'comm':
467                                 main_screen('comm');
468                         break;
469
470                         case 'show_new':
471                                 result_screen('new');
472                         break;
473
474                         case 'new':
475                                 main_screen('new');
476                         break;
477
478                         case 'show_poll':
479                                 result_screen('poll');
480                         break;
481
482                         case 'poll':
483                                 main_screen('poll');
484                         break;
485
486                         case 'show_rqst':
487                                 result_screen('rqst');
488                         break;
489
490                         case 'rqst':
491                                 main_screen('rqst');
492                         break;
493
494                         case 'show_offers':
495                                 result_screen('offers');
496                         break;
497
498                         case 'offers':
499                                 main_screen('offers');
500                         break;
501
502                         default:
503                                 main_screen('reg');
504                         break;
505         }
506 }
507
508
509 $template->display('body');</span>
510 <span class="code-lang">include('./page_footer_admin.'.$phpEx);
511 ?>
Note: See TracBrowser for help on using the browser.