Verzeichnisstruktur phpBB-3.0.0


Veröffentlicht
12.12.2007

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

acp_main.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 13.41 KiB


 001  <?php
 002  /**
 003  *
 004  * @package acp
 005  * @version $Id$
 006  * @copyright (c) 2005 phpBB Group
 007  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 008  *
 009  */
 010   
 011  /**
 012  * @ignore
 013  */
 014  if (!defined('IN_PHPBB'))
 015  {
 016      exit;
 017  }
 018   
 019  /**
 020  * @package acp
 021  */
 022  class acp_main
 023  {
 024      var $u_action;
 025   
 026      function main($id, $mode)
 027      {
 028          global $config, $db, $user, $auth, $template;
 029          global $phpbb_root_path, $phpbb_admin_path, $phpEx;
 030   
 031          // Show restore permissions notice
 032          if ($user->data['user_perm_from'] && $auth->acl_get('a_switchperm'))
 033          {
 034              $this->tpl_name = 'acp_main';
 035              $this->page_title = 'ACP_MAIN';
 036   
 037              $sql = 'SELECT user_id, username, user_colour
 038                  FROM ' . USERS_TABLE . '
 039                  WHERE user_id = ' . $user->data['user_perm_from'];
 040              $result = $db->sql_query($sql);
 041              $user_row = $db->sql_fetchrow($result);
 042              $db->sql_freeresult($result);
 043   
 044              $perm_from = '<strong' . (($user_row['user_colour']) ? ' style="color: #' . $user_row['user_colour'] . '">' : '>');
 045              $perm_from .= ($user_row['user_id'] != ANONYMOUS) ? '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $user_row['user_id']) . '">' : '';
 046              $perm_from .= $user_row['username'];
 047              $perm_from .= ($user_row['user_id'] != ANONYMOUS) ? '</a>' : '';
 048              $perm_from .= '</strong>';
 049   
 050              $template->assign_vars(array(
 051                  'S_RESTORE_PERMISSIONS'        => true,
 052                  'U_RESTORE_PERMISSIONS'        => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm'),
 053                  'PERM_FROM'                    => $perm_from,
 054                  'L_PERMISSIONS_TRANSFERRED_EXPLAIN'    => sprintf($user->lang['PERMISSIONS_TRANSFERRED_EXPLAIN'], $perm_from, append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm')),
 055              ));
 056   
 057              return;
 058          }
 059   
 060          $action = request_var('action', '');
 061   
 062          if ($action)
 063          {
 064              if (!confirm_box(true))
 065              {
 066                  switch ($action)
 067                  {
 068                      case 'online':
 069                          $confirm = true;
 070                          $confirm_lang = 'RESET_ONLINE_CONFIRM';
 071                      break;
 072                      case 'stats':
 073                          $confirm = true;
 074                          $confirm_lang = 'RESYNC_STATS_CONFIRM';
 075                      break;
 076                      case 'user':
 077                          $confirm = true;
 078                          $confirm_lang = 'RESYNC_POSTCOUNTS_CONFIRM';
 079                      break;
 080                      case 'date':
 081                          $confirm = true;
 082                          $confirm_lang = 'RESET_DATE_CONFIRM';
 083                      break;
 084                      case 'db_track':
 085                          $confirm = true;
 086                          $confirm_lang = 'RESYNC_POST_MARKING_CONFIRM';
 087                      break;
 088                      case 'purge_cache':
 089                          $confirm = true;
 090                          $confirm_lang = 'PURGE_CACHE_CONFIRM';
 091                      break;
 092   
 093                      default:
 094                          $confirm = true;
 095                          $confirm_lang = 'CONFIRM_OPERATION';
 096                  }
 097   
 098                  if ($confirm)
 099                  {
 100                      confirm_box(false, $user->lang[$confirm_lang], build_hidden_fields(array(
 101                          'i'            => $id,
 102                          'mode'        => $mode,
 103                          'action'    => $action,
 104                      )));
 105                  }
 106              }
 107              else
 108              {
 109                  switch ($action)
 110                  {
 111                      case 'online':
 112                          if (!$auth->acl_get('a_board'))
 113                          {
 114                              trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 115                          }
 116   
 117                          set_config('record_online_users', 1, true);
 118                          set_config('record_online_date', time(), true);
 119                          add_log('admin', 'LOG_RESET_ONLINE');
 120                      break;
 121   
 122                      case 'stats':
 123                          if (!$auth->acl_get('a_board'))
 124                          {
 125                              trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 126                          }
 127   
 128                          $sql = 'SELECT COUNT(post_id) AS stat
 129                              FROM ' . POSTS_TABLE . '
 130                              WHERE post_approved = 1';
 131                          $result = $db->sql_query($sql);
 132                          set_config('num_posts', (int) $db->sql_fetchfield('stat'), true);
 133                          $db->sql_freeresult($result);
 134   
 135                          $sql = 'SELECT COUNT(topic_id) AS stat
 136                              FROM ' . TOPICS_TABLE . '
 137                              WHERE topic_approved = 1';
 138                          $result = $db->sql_query($sql);
 139                          set_config('num_topics', (int) $db->sql_fetchfield('stat'), true);
 140                          $db->sql_freeresult($result);
 141   
 142                          $sql = 'SELECT COUNT(user_id) AS stat
 143                              FROM ' . USERS_TABLE . '
 144                              WHERE user_type IN (' . USER_NORMAL . ',' . USER_FOUNDER . ')';
 145                          $result = $db->sql_query($sql);
 146                          set_config('num_users', (int) $db->sql_fetchfield('stat'), true);
 147                          $db->sql_freeresult($result);
 148   
 149                          $sql = 'SELECT COUNT(attach_id) as stat
 150                              FROM ' . ATTACHMENTS_TABLE . '
 151                              WHERE is_orphan = 0';
 152                          $result = $db->sql_query($sql);
 153                          set_config('num_files', (int) $db->sql_fetchfield('stat'), true);
 154                          $db->sql_freeresult($result);
 155   
 156                          $sql = 'SELECT SUM(filesize) as stat
 157                              FROM ' . ATTACHMENTS_TABLE . '
 158                              WHERE is_orphan = 0';
 159                          $result = $db->sql_query($sql);
 160                          set_config('upload_dir_size', (int) $db->sql_fetchfield('stat'), true);
 161                          $db->sql_freeresult($result);
 162                          
 163                          if (!function_exists('update_last_username'))
 164                          {
 165                              include($phpbb_root_path . "includes/functions_user.$phpEx");
 166                          }
 167                          update_last_username();
 168   
 169                          add_log('admin', 'LOG_RESYNC_STATS');
 170                      break;
 171   
 172                      case 'user':
 173                          if (!$auth->acl_get('a_board'))
 174                          {
 175                              trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 176                          }
 177   
 178                          $sql = 'SELECT COUNT(p.post_id) AS num_posts, u.user_id
 179                              FROM ' . USERS_TABLE . ' u
 180                              LEFT JOIN  ' . POSTS_TABLE . ' p ON (u.user_id = p.poster_id AND p.post_postcount = 1)
 181                              GROUP BY u.user_id';
 182                          $result = $db->sql_query($sql);
 183   
 184                          while ($row = $db->sql_fetchrow($result))
 185                          {
 186                              $db->sql_query('UPDATE ' . USERS_TABLE . " SET user_posts = {$row['num_posts']} WHERE user_id = {$row['user_id']}");
 187                          }
 188                          $db->sql_freeresult($result);
 189   
 190                          add_log('admin', 'LOG_RESYNC_POSTCOUNTS');
 191   
 192                      break;
 193              
 194                      case 'date':
 195                          if (!$auth->acl_get('a_board'))
 196                          {
 197                              trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 198                          }
 199   
 200                          set_config('board_startdate', time() - 1);
 201                          add_log('admin', 'LOG_RESET_DATE');
 202                      break;
 203                  
 204                      case 'db_track':
 205                          switch ($db->sql_layer)
 206                          {
 207                              case 'sqlite':
 208                              case 'firebird':
 209                                  $db->sql_query('DELETE FROM ' . TOPICS_POSTED_TABLE);
 210                              break;
 211   
 212                              default:
 213                                  $db->sql_query('TRUNCATE TABLE ' . TOPICS_POSTED_TABLE);
 214                              break;
 215                          }
 216   
 217                          // This can get really nasty... therefore we only do the last six months
 218                          $get_from_time = time() - (6 * 4 * 7 * 24 * 60 * 60);
 219   
 220                          // Select forum ids, do not include categories
 221                          $sql = 'SELECT forum_id
 222                              FROM ' . FORUMS_TABLE . '
 223                              WHERE forum_type <> ' . FORUM_CAT;
 224                          $result = $db->sql_query($sql);
 225                  
 226                          $forum_ids = array();
 227                          while ($row = $db->sql_fetchrow($result))
 228                          {
 229                              $forum_ids[] = $row['forum_id'];
 230                          }
 231                          $db->sql_freeresult($result);
 232   
 233                          // Any global announcements? ;)
 234                          $forum_ids[] = 0;
 235   
 236                          // Now go through the forums and get us some topics...
 237                          foreach ($forum_ids as $forum_id)
 238                          {
 239                              $sql = 'SELECT p.poster_id, p.topic_id
 240                                  FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t
 241                                  WHERE t.forum_id = ' . $forum_id . '
 242                                      AND t.topic_moved_id = 0
 243                                      AND t.topic_last_post_time > ' . $get_from_time . '
 244                                      AND t.topic_id = p.topic_id
 245                                      AND p.poster_id <> ' . ANONYMOUS . '
 246                                  GROUP BY p.poster_id, p.topic_id';
 247                              $result = $db->sql_query($sql);
 248   
 249                              $posted = array();
 250                              while ($row = $db->sql_fetchrow($result))
 251                              {
 252                                  $posted[$row['poster_id']][] = $row['topic_id'];
 253                              }
 254                              $db->sql_freeresult($result);
 255   
 256                              $sql_ary = array();
 257                              foreach ($posted as $user_id => $topic_row)
 258                              {
 259                                  foreach ($topic_row as $topic_id)
 260                                  {
 261                                      $sql_ary[] = array(
 262                                          'user_id'        => (int) $user_id,
 263                                          'topic_id'        => (int) $topic_id,
 264                                          'topic_posted'    => 1,
 265                                      );
 266                                  }
 267                              }
 268                              unset($posted);
 269   
 270                              if (sizeof($sql_ary))
 271                              {
 272                                  $db->sql_multi_insert(TOPICS_POSTED_TABLE, $sql_ary);
 273                              }
 274                          }
 275              
 276                          add_log('admin', 'LOG_RESYNC_POST_MARKING');
 277                      break;
 278   
 279                      case 'purge_cache':
 280                          if ((int) $user->data['user_type'] !== USER_FOUNDER)
 281                          {
 282                              trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);
 283                          }
 284   
 285                          global $cache;
 286                          $cache->purge();
 287   
 288                          // Clear permissions
 289                          $auth->acl_clear_prefetch();
 290                          cache_moderators();
 291   
 292                          add_log('admin', 'LOG_PURGE_CACHE');
 293                      break;
 294                  }
 295              }
 296          }
 297   
 298          // Get forum statistics
 299          $total_posts = $config['num_posts'];
 300          $total_topics = $config['num_topics'];
 301          $total_users = $config['num_users'];
 302          $total_files = $config['num_files'];
 303   
 304          $start_date = $user->format_date($config['board_startdate']);
 305   
 306          $boarddays = (time() - $config['board_startdate']) / 86400;
 307   
 308          $posts_per_day = sprintf('%.2f', $total_posts / $boarddays);
 309          $topics_per_day = sprintf('%.2f', $total_topics / $boarddays);
 310          $users_per_day = sprintf('%.2f', $total_users / $boarddays);
 311          $files_per_day = sprintf('%.2f', $total_files / $boarddays);
 312   
 313          $upload_dir_size = ($config['upload_dir_size'] >= 1048576) ? sprintf('%.2f ' . $user->lang['MB'], ($config['upload_dir_size'] / 1048576)) : (($config['upload_dir_size'] >= 1024) ? sprintf('%.2f ' . $user->lang['KB'], ($config['upload_dir_size'] / 1024)) : sprintf('%.2f ' . $user->lang['BYTES'], $config['upload_dir_size']));
 314   
 315          $avatar_dir_size = 0;
 316   
 317          if ($avatar_dir = @opendir($phpbb_root_path . $config['avatar_path']))
 318          {
 319              while (($file = readdir($avatar_dir)) !== false)
 320              {
 321                  if ($file[0] != '.' && $file != 'CVS' && strpos($file, 'index.') === false)
 322                  {
 323                      $avatar_dir_size += filesize($phpbb_root_path . $config['avatar_path'] . '/' . $file);
 324                  }
 325              }
 326              closedir($avatar_dir);
 327   
 328              // This bit of code translates the avatar directory size into human readable format
 329              // Borrowed the code from the PHP.net annoted manual, origanally written by:
 330              // Jesse (jesse@jess.on.ca)
 331              $avatar_dir_size = ($avatar_dir_size >= 1048576) ? sprintf('%.2f ' . $user->lang['MB'], ($avatar_dir_size / 1048576)) : (($avatar_dir_size >= 1024) ? sprintf('%.2f ' . $user->lang['KB'], ($avatar_dir_size / 1024)) : sprintf('%.2f ' . $user->lang['BYTES'], $avatar_dir_size));
 332          }
 333          else
 334          {
 335              // Couldn't open Avatar dir.
 336              $avatar_dir_size = $user->lang['NOT_AVAILABLE'];
 337          }
 338   
 339          if ($posts_per_day > $total_posts)
 340          {
 341              $posts_per_day = $total_posts;
 342          }
 343   
 344          if ($topics_per_day > $total_topics)
 345          {
 346              $topics_per_day = $total_topics;
 347          }
 348   
 349          if ($users_per_day > $total_users)
 350          {
 351              $users_per_day = $total_users;
 352          }
 353   
 354          if ($files_per_day > $total_files)
 355          {
 356              $files_per_day = $total_files;
 357          }
 358   
 359          if ($config['allow_attachments'] || $config['allow_pm_attach'])
 360          {
 361              $sql = 'SELECT COUNT(attach_id) AS total_orphan
 362                  FROM ' . ATTACHMENTS_TABLE . '
 363                  WHERE is_orphan = 1
 364                      AND filetime < ' . (time() - 3*60*60);
 365              $result = $db->sql_query($sql);
 366              $total_orphan = (int) $db->sql_fetchfield('total_orphan');
 367              $db->sql_freeresult($result);
 368          }
 369          else
 370          {
 371              $total_orphan = false;
 372          }
 373   
 374          $dbsize = get_database_size();
 375   
 376          $template->assign_vars(array(
 377              'TOTAL_POSTS'        => $total_posts,
 378              'POSTS_PER_DAY'        => $posts_per_day,
 379              'TOTAL_TOPICS'        => $total_topics,
 380              'TOPICS_PER_DAY'    => $topics_per_day,
 381              'TOTAL_USERS'        => $total_users,
 382              'USERS_PER_DAY'        => $users_per_day,
 383              'TOTAL_FILES'        => $total_files,
 384              'FILES_PER_DAY'        => $files_per_day,
 385              'START_DATE'        => $start_date,
 386              'AVATAR_DIR_SIZE'    => $avatar_dir_size,
 387              'DBSIZE'            => $dbsize,
 388              'UPLOAD_DIR_SIZE'    => $upload_dir_size,
 389              'TOTAL_ORPHAN'        => $total_orphan,
 390              'S_TOTAL_ORPHAN'    => ($total_orphan === false) ? false : true,
 391              'GZIP_COMPRESSION'    => ($config['gzip_compress']) ? $user->lang['ON'] : $user->lang['OFF'],
 392              'DATABASE_INFO'        => $db->sql_server_info(),
 393              'BOARD_VERSION'        => $config['version'],
 394   
 395              'U_ACTION'            => append_sid("{$phpbb_admin_path}index.$phpEx"),
 396              'U_ADMIN_LOG'        => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=logs&amp;mode=admin'),
 397              'U_INACTIVE_USERS'    => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=inactive&amp;mode=list'),
 398   
 399              'S_ACTION_OPTIONS'    => ($auth->acl_get('a_board')) ? true : false,
 400              'S_FOUNDER'            => ($user->data['user_type'] == USER_FOUNDER) ? true : false,
 401              )
 402          );
 403   
 404          $log_data = array();
 405          $log_count = 0;
 406   
 407          if ($auth->acl_get('a_viewlogs'))
 408          {
 409              view_log('admin', $log_data, $log_count, 5);
 410   
 411              foreach ($log_data as $row)
 412              {
 413                  $template->assign_block_vars('log', array(
 414                      'USERNAME'    => $row['username_full'],
 415                      'IP'        => $row['ip'],
 416                      'DATE'        => $user->format_date($row['time']),
 417                      'ACTION'    => $row['action'])
 418                  );
 419              }
 420          }
 421   
 422          if ($auth->acl_get('a_user'))
 423          {
 424              $inactive = array();
 425              $inactive_count = 0;
 426   
 427              view_inactive_users($inactive, $inactive_count, 10);
 428   
 429              foreach ($inactive as $row)
 430              {
 431                  $template->assign_block_vars('inactive', array(
 432                      'INACTIVE_DATE'    => $user->format_date($row['user_inactive_time']),
 433                      'JOINED'        => $user->format_date($row['user_regdate']),
 434                      'LAST_VISIT'    => (!$row['user_lastvisit']) ? ' - ' : $user->format_date($row['user_lastvisit']),
 435                      'REASON'        => $row['inactive_reason'],
 436                      'USER_ID'        => $row['user_id'],
 437                      'USERNAME'        => $row['username'],
 438                      'U_USER_ADMIN'    => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&amp;mode=overview&amp;u={$row['user_id']}"))
 439                  );
 440              }
 441   
 442              $option_ary = array('activate' => 'ACTIVATE', 'delete' => 'DELETE');
 443              if ($config['email_enable'])
 444              {
 445                  $option_ary += array('remind' => 'REMIND');
 446              }
 447   
 448              $template->assign_vars(array(
 449                  'S_INACTIVE_USERS'        => true,
 450                  'S_INACTIVE_OPTIONS'    => build_select($option_ary))
 451              );
 452          }
 453   
 454          // Warn if install is still present
 455          if (file_exists($phpbb_root_path . 'install'))
 456          {
 457              $template->assign_var('S_REMOVE_INSTALL', true);
 458          }
 459   
 460          $this->tpl_name = 'acp_main';
 461          $this->page_title = 'ACP_MAIN';
 462      }
 463  }
 464   
 465  ?>