Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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_ranks.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 7.69 KiB


 001  <?php
 002  /**
 003  *
 004  * This file is part of the phpBB Forum Software package.
 005  *
 006  * @copyright (c) phpBB Limited <https://www.phpbb.com>
 007  * @license GNU General Public License, version 2 (GPL-2.0)
 008  *
 009  * For full copyright and license information, please see
 010  * the docs/CREDITS.txt file.
 011  *
 012  */
 013   
 014  /**
 015  * @ignore
 016  */
 017  if (!defined('IN_PHPBB'))
 018  {
 019      exit;
 020  }
 021   
 022  class acp_ranks
 023  {
 024      var $u_action;
 025   
 026      function main($id, $mode)
 027      {
 028          global $db, $user, $auth, $template, $cache, $request, $phpbb_dispatcher;
 029          global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
 030   
 031          $user->add_lang('acp/posting');
 032   
 033          // Set up general vars
 034          $action = request_var('action', '');
 035          $action = (isset($_POST['add'])) ? 'add' : $action;
 036          $action = (isset($_POST['save'])) ? 'save' : $action;
 037          $rank_id = request_var('id', 0);
 038   
 039          $this->tpl_name = 'acp_ranks';
 040          $this->page_title = 'ACP_MANAGE_RANKS';
 041   
 042          $form_name = 'acp_ranks';
 043          add_form_key($form_name);
 044   
 045          switch ($action)
 046          {
 047              case 'save':
 048   
 049                  if (!check_form_key($form_name))
 050                  {
 051                      trigger_error($user->lang['FORM_INVALID']. adm_back_link($this->u_action), E_USER_WARNING);
 052                  }
 053                  $rank_title = utf8_normalize_nfc(request_var('title', '', true));
 054                  $special_rank = request_var('special_rank', 0);
 055                  $min_posts = ($special_rank) ? 0 : max(0, request_var('min_posts', 0));
 056                  $rank_image = request_var('rank_image', '');
 057   
 058                  // The rank image has to be a jpg, gif or png
 059                  if ($rank_image != '' && !preg_match('#(\.gif|\.png|\.jpg|\.jpeg)$#i', $rank_image))
 060                  {
 061                      $rank_image = '';
 062                  }
 063   
 064                  if (!$rank_title)
 065                  {
 066                      trigger_error($user->lang['NO_RANK_TITLE'] . adm_back_link($this->u_action), E_USER_WARNING);
 067                  }
 068   
 069                  $sql_ary = array(
 070                      'rank_title'        => $rank_title,
 071                      'rank_special'        => $special_rank,
 072                      'rank_min'            => $min_posts,
 073                      'rank_image'        => htmlspecialchars_decode($rank_image)
 074                  );
 075   
 076                  /**
 077                  * Modify the SQL array when saving a rank
 078                  *
 079                  * @event core.acp_ranks_save_modify_sql_ary
 080                  * @var    int        rank_id        The ID of the rank (if available)
 081                  * @var    array    sql_ary        Array with the rank's data
 082                  * @since 3.1.0-RC3
 083                  */
 084                  $vars = array('rank_id', 'sql_ary');
 085                  extract($phpbb_dispatcher->trigger_event('core.acp_ranks_save_modify_sql_ary', compact($vars)));
 086   
 087                  if ($rank_id)
 088                  {
 089                      $sql = 'UPDATE ' . RANKS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " WHERE rank_id = $rank_id";
 090                      $message = $user->lang['RANK_UPDATED'];
 091   
 092                      add_log('admin', 'LOG_RANK_UPDATED', $rank_title);
 093                  }
 094                  else
 095                  {
 096                      $sql = 'INSERT INTO ' . RANKS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
 097                      $message = $user->lang['RANK_ADDED'];
 098   
 099                      add_log('admin', 'LOG_RANK_ADDED', $rank_title);
 100                  }
 101                  $db->sql_query($sql);
 102   
 103                  $cache->destroy('_ranks');
 104   
 105                  trigger_error($message . adm_back_link($this->u_action));
 106   
 107              break;
 108   
 109              case 'delete':
 110   
 111                  if (!$rank_id)
 112                  {
 113                      trigger_error($user->lang['MUST_SELECT_RANK'] . adm_back_link($this->u_action), E_USER_WARNING);
 114                  }
 115   
 116                  if (confirm_box(true))
 117                  {
 118                      $sql = 'SELECT rank_title
 119                          FROM ' . RANKS_TABLE . '
 120                          WHERE rank_id = ' . $rank_id;
 121                      $result = $db->sql_query($sql);
 122                      $rank_title = (string) $db->sql_fetchfield('rank_title');
 123                      $db->sql_freeresult($result);
 124   
 125                      $sql = 'DELETE FROM ' . RANKS_TABLE . "
 126                          WHERE rank_id = $rank_id";
 127                      $db->sql_query($sql);
 128   
 129                      $sql = 'UPDATE ' . USERS_TABLE . "
 130                          SET user_rank = 0
 131                          WHERE user_rank = $rank_id";
 132                      $db->sql_query($sql);
 133   
 134                      $cache->destroy('_ranks');
 135   
 136                      add_log('admin', 'LOG_RANK_REMOVED', $rank_title);
 137   
 138                      if ($request->is_ajax())
 139                      {
 140                          $json_response = new \phpbb\json_response;
 141                          $json_response->send(array(
 142                              'MESSAGE_TITLE'    => $user->lang['INFORMATION'],
 143                              'MESSAGE_TEXT'    => $user->lang['RANK_REMOVED'],
 144                              'REFRESH_DATA'    => array(
 145                                  'time'    => 3
 146                              )
 147                          ));
 148                      }
 149                  }
 150                  else
 151                  {
 152                      confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
 153                          'i'            => $id,
 154                          'mode'        => $mode,
 155                          'rank_id'    => $rank_id,
 156                          'action'    => 'delete',
 157                      )));
 158                  }
 159   
 160              break;
 161   
 162              case 'edit':
 163              case 'add':
 164   
 165                  $data = $ranks = $existing_imgs = array();
 166   
 167                  $sql = 'SELECT *
 168                      FROM ' . RANKS_TABLE . '
 169                      ORDER BY rank_min ASC, rank_special ASC';
 170                  $result = $db->sql_query($sql);
 171   
 172                  while ($row = $db->sql_fetchrow($result))
 173                  {
 174                      $existing_imgs[] = $row['rank_image'];
 175   
 176                      if ($action == 'edit' && $rank_id == $row['rank_id'])
 177                      {
 178                          $ranks = $row;
 179                      }
 180                  }
 181                  $db->sql_freeresult($result);
 182   
 183                  $imglist = filelist($phpbb_root_path . $config['ranks_path'], '');
 184                  $edit_img = $filename_list = '';
 185   
 186                  foreach ($imglist as $path => $img_ary)
 187                  {
 188                      sort($img_ary);
 189   
 190                      foreach ($img_ary as $img)
 191                      {
 192                          $img = $path . $img;
 193   
 194                          if ($ranks && $img == $ranks['rank_image'])
 195                          {
 196                              $selected = ' selected="selected"';
 197                              $edit_img = $img;
 198                          }
 199                          else
 200                          {
 201                              $selected = '';
 202                          }
 203   
 204                          if (strlen($img) > 255)
 205                          {
 206                              continue;
 207                          }
 208   
 209                          $filename_list .= '<option value="' . htmlspecialchars($img) . '"' . $selected . '>' . $img . ((in_array($img, $existing_imgs)) ? ' ' . $user->lang['RANK_IMAGE_IN_USE'] : '') . '</option>';
 210                      }
 211                  }
 212   
 213                  $filename_list = '<option value=""' . (($edit_img == '') ? ' selected="selected"' : '') . '>----------</option>' . $filename_list;
 214                  unset($existing_imgs, $imglist);
 215   
 216                  $tpl_ary = array(
 217                      'S_EDIT'            => true,
 218                      'U_BACK'            => $this->u_action,
 219                      'RANKS_PATH'        => $phpbb_root_path . $config['ranks_path'],
 220                      'U_ACTION'            => $this->u_action . '&amp;id=' . $rank_id,
 221   
 222                      'RANK_TITLE'        => (isset($ranks['rank_title'])) ? $ranks['rank_title'] : '',
 223                      'S_FILENAME_LIST'    => $filename_list,
 224                      'RANK_IMAGE'        => ($edit_img) ? $phpbb_root_path . $config['ranks_path'] . '/' . $edit_img : htmlspecialchars($phpbb_admin_path) . 'images/spacer.gif',
 225                      'S_SPECIAL_RANK'    => (isset($ranks['rank_special']) && $ranks['rank_special']) ? true : false,
 226                      'MIN_POSTS'            => (isset($ranks['rank_min']) && !$ranks['rank_special']) ? $ranks['rank_min'] : 0,
 227                  );
 228   
 229                  /**
 230                  * Modify the template output array for editing/adding ranks
 231                  *
 232                  * @event core.acp_ranks_edit_modify_tpl_ary
 233                  * @var    array    ranks        Array with the rank's data
 234                  * @var    array    tpl_ary        Array with the rank's template data
 235                  * @since 3.1.0-RC3
 236                  */
 237                  $vars = array('ranks', 'tpl_ary');
 238                  extract($phpbb_dispatcher->trigger_event('core.acp_ranks_edit_modify_tpl_ary', compact($vars)));
 239   
 240                  $template->assign_vars($tpl_ary);
 241                  return;
 242   
 243              break;
 244          }
 245   
 246          $template->assign_vars(array(
 247              'U_ACTION'        => $this->u_action)
 248          );
 249   
 250          $sql = 'SELECT *
 251              FROM ' . RANKS_TABLE . '
 252              ORDER BY rank_special DESC, rank_min ASC, rank_title ASC';
 253          $result = $db->sql_query($sql);
 254   
 255          while ($row = $db->sql_fetchrow($result))
 256          {
 257              $rank_row = array(
 258                  'S_RANK_IMAGE'        => ($row['rank_image']) ? true : false,
 259                  'S_SPECIAL_RANK'    => ($row['rank_special']) ? true : false,
 260   
 261                  'RANK_IMAGE'        => $phpbb_root_path . $config['ranks_path'] . '/' . $row['rank_image'],
 262                  'RANK_TITLE'        => $row['rank_title'],
 263                  'MIN_POSTS'            => $row['rank_min'],
 264   
 265                  'U_EDIT'            => $this->u_action . '&amp;action=edit&amp;id=' . $row['rank_id'],
 266                  'U_DELETE'            => $this->u_action . '&amp;action=delete&amp;id=' . $row['rank_id'],
 267              );
 268   
 269              /**
 270              * Modify the template output array for each listed rank
 271              *
 272              * @event core.acp_ranks_list_modify_rank_row
 273              * @var    array    row            Array with the rank's data
 274              * @var    array    rank_row    Array with the rank's template data
 275              * @since 3.1.0-RC3
 276              */
 277              $vars = array('row', 'rank_row');
 278              extract($phpbb_dispatcher->trigger_event('core.acp_ranks_list_modify_rank_row', compact($vars)));
 279   
 280              $template->assign_block_vars('ranks', $rank_row);
 281          }
 282          $db->sql_freeresult($result);
 283   
 284      }
 285  }
 286