[ Index ]

PHP Cross Reference of MyBB 1.6.5

title

Body

[close]

/admin/modules/tools/ -> modlog.php (source)

   1  <?php
   2  /**
   3   * MyBB 1.6
   4   * Copyright 2010 MyBB Group, All Rights Reserved
   5   *
   6   * Website: http://mybb.com
   7   * License: http://mybb.com/about/license
   8   *
   9   * $Id: modlog.php 5453 2011-04-21 23:58:33Z jammerx2 $
  10   */
  11  
  12  // Disallow direct access to this file for security reasons
  13  if(!defined("IN_MYBB"))
  14  {
  15      die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
  16  }
  17  
  18  $page->add_breadcrumb_item($lang->mod_logs, "index.php?module=tools-modlog");
  19  
  20  $sub_tabs['mod_logs'] = array(
  21      'title' => $lang->mod_logs,
  22      'link' => "index.php?module=tools-modlog",
  23      'description' => $lang->mod_logs_desc
  24  );
  25  $sub_tabs['prune_mod_logs'] = array(
  26      'title' => $lang->prune_mod_logs,
  27      'link' => "index.php?module=tools-modlog&amp;action=prune",
  28      'description' => $lang->prune_mod_logs_desc
  29  );
  30  
  31  $plugins->run_hooks("admin_tools_modlog_begin");
  32  
  33  if($mybb->input['action'] == 'prune')
  34  {
  35      $plugins->run_hooks("admin_tools_modlog_prune");
  36      
  37      if($mybb->request_method == 'post')
  38      {
  39          $where = 'dateline < '.(TIME_NOW-(intval($mybb->input['older_than'])*86400));
  40          
  41          // Searching for entries by a particular user
  42          if($mybb->input['uid'])
  43          {
  44              $where .= " AND uid='".intval($mybb->input['uid'])."'";
  45          }
  46          
  47          // Searching for entries in a specific module
  48          if($mybb->input['fid'] > 0)
  49          {
  50              $where .= " AND fid='".$db->escape_string($mybb->input['fid'])."'";
  51          }
  52          
  53          $db->delete_query("moderatorlog", $where);
  54          $num_deleted = $db->affected_rows();
  55          
  56          $plugins->run_hooks("admin_tools_modlog_prune_commit");
  57          
  58          if(!is_array($forum_cache))
  59          {
  60              $forum_cache = cache_forums();
  61          }
  62          
  63          // Log admin action
  64          log_admin_action($mybb->input['older_than'], $mybb->input['uid'], $mybb->input['fid'], $num_deleted, $forum_cache[$mybb->input['fid']]['name']);
  65  
  66          flash_message($lang->success_pruned_mod_logs, 'success');
  67          admin_redirect("index.php?module=tools-modlog");
  68      }
  69      $page->add_breadcrumb_item($lang->prune_mod_logs, "index.php?module=tools-modlog&amp;action=prune");
  70      $page->output_header($lang->prune_mod_logs);
  71      $page->output_nav_tabs($sub_tabs, 'prune_mod_logs');
  72      
  73      // Fetch filter options
  74      $sortbysel[$mybb->input['sortby']] = 'selected="selected"';
  75      $ordersel[$mybb->input['order']] = 'selected="selected"';
  76      
  77      $user_options[''] = $lang->all_moderators;
  78      $user_options['0'] = '----------';
  79      
  80      $query = $db->query("
  81          SELECT DISTINCT l.uid, u.username
  82          FROM ".TABLE_PREFIX."moderatorlog l
  83          LEFT JOIN ".TABLE_PREFIX."users u ON (l.uid=u.uid)
  84          ORDER BY u.username ASC
  85      ");
  86      while($user = $db->fetch_array($query))
  87      {
  88          $user_options[$user['uid']] = $user['username'];
  89      }
  90  
  91      $form = new Form("index.php?module=tools-modlog&amp;action=prune", "post");
  92      $form_container = new FormContainer($lang->prune_moderator_logs);
  93      $form_container->output_row($lang->forum, "", $form->generate_forum_select('fid', $mybb->input['fid'], array('id' => 'fid', 'main_option' => $lang->all_forums)), 'fid');    
  94      $form_container->output_row($lang->forum_moderator, "", $form->generate_select_box('uid', $user_options, $mybb->input['uid'], array('id' => 'uid')), 'uid');
  95      if(!$mybb->input['older_than'])
  96      {
  97          $mybb->input['older_than'] = '30';
  98      }
  99      $form_container->output_row($lang->date_range, "", $lang->older_than.$form->generate_text_box('older_than', $mybb->input['older_than'], array('id' => 'older_than', 'style' => 'width: 30px')).' '.$lang->days, 'older_than');
 100      $form_container->end();
 101      $buttons[] = $form->generate_submit_button($lang->prune_moderator_logs);
 102      $form->output_submit_wrapper($buttons);
 103      $form->end();
 104      
 105      $page->output_footer();
 106  }
 107  
 108  if(!$mybb->input['action'])
 109  {
 110      $plugins->run_hooks("admin_tools_modlog_start");
 111      
 112      $page->output_header($lang->mod_logs);
 113      
 114      $page->output_nav_tabs($sub_tabs, 'mod_logs');
 115      
 116      $perpage = intval($mybb->input['perpage']);
 117      if(!$perpage)
 118      {
 119          $perpage = $mybb->settings['threadsperpage'];
 120      }
 121  
 122      $where = 'WHERE 1=1';
 123  
 124      // Searching for entries by a particular user
 125      if($mybb->input['uid'])
 126      {
 127          $where .= " AND l.uid='".intval($mybb->input['uid'])."'";
 128      }
 129  
 130      // Searching for entries in a specific forum
 131      if($mybb->input['fid'] > 0)
 132      {
 133          $where .= " AND l.fid='".intval($mybb->input['fid'])."'";
 134      }
 135  
 136      // Order?
 137      switch($mybb->input['sortby'])
 138      {
 139          case "username":
 140              $sortby = "u.username";
 141              break;
 142          case "forum":
 143              $sortby = "f.name";
 144              break;
 145          case "thread":
 146              $sortby = "t.subject";
 147              break;
 148          default:
 149              $sortby = "l.dateline";
 150      }
 151      $order = $mybb->input['order'];
 152      if($order != "asc")
 153      {
 154          $order = "desc";
 155      }
 156  
 157      $query = $db->query("
 158          SELECT COUNT(l.dateline) AS count
 159          FROM ".TABLE_PREFIX."moderatorlog l
 160          {$where}
 161      ");
 162      $rescount = $db->fetch_field($query, "count");
 163      
 164      // Figure out if we need to display multiple pages.
 165      if($mybb->input['page'] != "last")
 166      {
 167          $pagecnt = intval($mybb->input['page']);
 168      }
 169  
 170      $postcount = intval($rescount);
 171      $pages = $postcount / $perpage;
 172      $pages = ceil($pages);
 173  
 174      if($mybb->input['page'] == "last")
 175      {
 176          $pagecnt = $pages;
 177      }
 178  
 179      if($pagecnt > $pages)
 180      {
 181          $pagecnt = 1;
 182      }
 183  
 184      if($pagecnt)
 185      {
 186          $start = ($pagecnt-1) * $perpage;
 187      }
 188      else
 189      {
 190          $start = 0;
 191          $pagecnt = 1;
 192      }
 193      
 194      $table = new Table;
 195      $table->construct_header($lang->username, array('width' => '10%'));
 196      $table->construct_header($lang->date, array("class" => "align_center", 'width' => '15%'));
 197      $table->construct_header($lang->action, array("class" => "align_center", 'width' => '35%'));
 198      $table->construct_header($lang->information, array("class" => "align_center", 'width' => '30%'));
 199      $table->construct_header($lang->ipaddress, array("class" => "align_center", 'width' => '10%'));
 200      
 201      $query = $db->query("
 202          SELECT l.*, u.username, u.usergroup, u.displaygroup, t.subject AS tsubject, f.name AS fname, p.subject AS psubject
 203          FROM ".TABLE_PREFIX."moderatorlog l
 204          LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=l.uid)
 205          LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=l.tid)
 206          LEFT JOIN ".TABLE_PREFIX."forums f ON (f.fid=l.fid)
 207          LEFT JOIN ".TABLE_PREFIX."posts p ON (p.pid=l.pid)
 208          {$where}
 209          ORDER BY {$sortby} {$order}
 210          LIMIT {$start}, {$perpage}
 211      ");
 212      while($logitem = $db->fetch_array($query))
 213      {
 214          $information = '';
 215          $logitem['action'] = $logitem['action'];
 216          $logitem['dateline'] = date("jS M Y, G:i", $logitem['dateline']);
 217          $trow = alt_trow();
 218          $username = format_name($logitem['username'], $logitem['usergroup'], $logitem['displaygroup']);
 219          $logitem['profilelink'] = build_profile_link($username, $logitem['uid'], "_blank");
 220          if($logitem['tsubject'])
 221          {
 222              $information = "<strong>{$lang->thread}</strong> <a href=\"../".get_thread_link($logitem['tid'])."\" target=\"_blank\">".htmlspecialchars_uni($logitem['tsubject'])."</a><br />";
 223          }
 224          if($logitem['fname'])
 225          {
 226              $information .= "<strong>{$lang->forum}</strong> <a href=\"../".get_forum_link($logitem['fid'])."\" target=\"_blank\">".htmlspecialchars_uni($logitem['fname'])."</a><br />";
 227          }
 228          if($logitem['psubject'])
 229          {
 230              $information .= "<strong>{$lang->post}</strong> <a href=\"../".get_post_link($logitem['pid'])."#pid{$logitem['pid']}\" target=\"_blank\">".htmlspecialchars_uni($logitem['psubject'])."</a>";
 231          }
 232  
 233          if(!$logitem['tsubject'] || !$logitem['fname'] || !$logitem['psubject'])
 234          {
 235              $data = unserialize($logitem['data']);
 236              if($data['uid'])
 237              {
 238                  $information = $lang->user_info." <a href=\"".get_profile_link($data['uid'])."\" target=\"_blank\">".htmlspecialchars_uni($data['username'])."</a>";
 239              }
 240          }
 241  
 242          $table->construct_cell($logitem['profilelink']);
 243          $table->construct_cell($logitem['dateline'], array("class" => "align_center"));
 244          $table->construct_cell($logitem['action'], array("class" => "align_center"));
 245          $table->construct_cell($information);
 246          $table->construct_cell($logitem['ipaddress'], array("class" => "align_center"));
 247          $table->construct_row();
 248      }
 249      
 250      if($table->num_rows() == 0)
 251      {
 252          $table->construct_cell($lang->no_modlogs, array("colspan" => "5"));
 253          $table->construct_row();
 254      }
 255      
 256      $table->output($lang->mod_logs);
 257      
 258      // Do we need to construct the pagination?
 259      if($rescount > $perpage)
 260      {
 261          echo draw_admin_pagination($pagecnt, $perpage, $rescount, "index.php?module=tools-modlog&amp;perpage=$perpage&amp;uid={$mybb->input['uid']}&amp;fid={$mybb->input['fid']}&amp;sortby={$mybb->input['sortby']}&amp;order={$order}")."<br />";
 262      }
 263      
 264      // Fetch filter options
 265      $sortbysel[$mybb->input['sortby']] = "selected=\"selected\"";
 266      $ordersel[$mybb->input['order']] = "selected=\"selected\"";
 267      
 268      $user_options[''] = $lang->all_moderators;
 269      $user_options['0'] = '----------';
 270      
 271      $query = $db->query("
 272          SELECT DISTINCT l.uid, u.username
 273          FROM ".TABLE_PREFIX."moderatorlog l
 274          LEFT JOIN ".TABLE_PREFIX."users u ON (l.uid=u.uid)
 275          ORDER BY u.username ASC
 276      ");
 277      while($user = $db->fetch_array($query))
 278      {
 279          $selected = '';
 280          if($mybb->input['uid'] == $user['uid'])
 281          {
 282              $selected = "selected=\"selected\"";
 283          }
 284          $user_options[$user['uid']] = $user['username'];
 285      }
 286      
 287      $sort_by = array(
 288          'dateline' => $lang->date,
 289          'username' => $lang->username,
 290          'forum' => $lang->forum_name,
 291          'thread' => $lang->thread_subject
 292      );
 293      
 294      $order_array = array(
 295          'asc' => $lang->asc,
 296          'desc' => $lang->desc
 297      );
 298  
 299      $form = new Form("index.php?module=tools-modlog", "post");
 300      $form_container = new FormContainer($lang->filter_moderator_logs);
 301      $form_container->output_row($lang->forum, "", $form->generate_forum_select('fid', $mybb->input['fid'], array('id' => 'fid', 'main_option' => $lang->all_forums)), 'fid');    
 302      $form_container->output_row($lang->forum_moderator, "", $form->generate_select_box('uid', $user_options, $mybb->input['uid'], array('id' => 'uid')), 'uid');    
 303      $form_container->output_row($lang->sort_by, "", $form->generate_select_box('sortby', $sort_by, $mybb->input['sortby'], array('id' => 'sortby'))." {$lang->in} ".$form->generate_select_box('order', $order_array, $order, array('id' => 'order'))." {$lang->order}", 'order');    
 304      $form_container->output_row($lang->results_per_page, "", $form->generate_text_box('perpage', $perpage, array('id' => 'perpage')), 'perpage');    
 305  
 306      $form_container->end();
 307      $buttons[] = $form->generate_submit_button($lang->filter_moderator_logs);
 308      $form->output_submit_wrapper($buttons);
 309      $form->end();
 310      
 311      $page->output_footer();
 312  }
 313  ?>


Generated: Sun Dec 11 14:16:27 2011 Cross-referenced by PHPXref 0.7.1