phpBB
Statistics
| Revision:

root / branches / phpBB-3_0_0 / phpBB / includes / acp / acp_ranks.php

History | View | Annotate | Download (6 kB)

1 5323 acydburn
<?php
2 8147 acydburn
/**
3 5323 acydburn
*
4 5323 acydburn
* @package acp
5 5323 acydburn
* @version $Id$
6 8147 acydburn
* @copyright (c) 2005 phpBB Group
7 8147 acydburn
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
8 5323 acydburn
*
9 5323 acydburn
*/
10 5323 acydburn
11 5323 acydburn
/**
12 8147 acydburn
* @ignore
13 8147 acydburn
*/
14 8147 acydburn
if (!defined('IN_PHPBB'))
15 8147 acydburn
{
16 8147 acydburn
        exit;
17 8147 acydburn
}
18 8147 acydburn
19 8147 acydburn
/**
20 5323 acydburn
* @package acp
21 5323 acydburn
*/
22 5323 acydburn
class acp_ranks
23 5323 acydburn
{
24 5558 acydburn
        var $u_action;
25 5558 acydburn
26 5323 acydburn
        function main($id, $mode)
27 5323 acydburn
        {
28 5323 acydburn
                global $db, $user, $auth, $template, $cache;
29 6015 acydburn
                global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
30 5323 acydburn
31 5323 acydburn
                $user->add_lang('acp/posting');
32 5323 acydburn
33 5323 acydburn
                // Set up general vars
34 5323 acydburn
                $action = request_var('action', '');
35 5323 acydburn
                $action = (isset($_POST['add'])) ? 'add' : $action;
36 5323 acydburn
                $action = (isset($_POST['save'])) ? 'save' : $action;
37 5323 acydburn
                $rank_id = request_var('id', 0);
38 5323 acydburn
39 5323 acydburn
                $this->tpl_name = 'acp_ranks';
40 5323 acydburn
                $this->page_title = 'ACP_MANAGE_RANKS';
41 5323 acydburn
42 9698 naderman
                $form_name = 'acp_ranks';
43 8120 kellanved
                add_form_key($form_name);
44 8120 kellanved
45 5323 acydburn
                switch ($action)
46 5323 acydburn
                {
47 5323 acydburn
                        case 'save':
48 8120 kellanved
49 8123 kellanved
                                if (!check_form_key($form_name))
50 8120 kellanved
                                {
51 8120 kellanved
                                        trigger_error($user->lang['FORM_INVALID']. adm_back_link($this->u_action), E_USER_WARNING);
52 8120 kellanved
                                }
53 7920 acydburn
                                $rank_title = utf8_normalize_nfc(request_var('title', '', true));
54 5323 acydburn
                                $special_rank = request_var('special_rank', 0);
55 6234 grahamje
                                $min_posts = ($special_rank) ? 0 : request_var('min_posts', 0);
56 5323 acydburn
                                $rank_image = request_var('rank_image', '');
57 5323 acydburn
58 5323 acydburn
                                // The rank image has to be a jpg, gif or png
59 5323 acydburn
                                if ($rank_image != '' && !preg_match('#(\.gif|\.png|\.jpg|\.jpeg)$#i', $rank_image))
60 5323 acydburn
                                {
61 5323 acydburn
                                        $rank_image = '';
62 5323 acydburn
                                }
63 5323 acydburn
64 5323 acydburn
                                if (!$rank_title)
65 5323 acydburn
                                {
66 6320 acydburn
                                        trigger_error($user->lang['NO_RANK_TITLE'] . adm_back_link($this->u_action), E_USER_WARNING);
67 5323 acydburn
                                }
68 5323 acydburn
69 5323 acydburn
                                $sql_ary = array(
70 5323 acydburn
                                        'rank_title'                => $rank_title,
71 5323 acydburn
                                        'rank_special'                => $special_rank,
72 5323 acydburn
                                        'rank_min'                        => $min_posts,
73 6548 acydburn
                                        'rank_image'                => htmlspecialchars_decode($rank_image)
74 5323 acydburn
                                );
75 5323 acydburn
76 5323 acydburn
                                if ($rank_id)
77 5323 acydburn
                                {
78 5323 acydburn
                                        $sql = 'UPDATE ' . RANKS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " WHERE rank_id = $rank_id";
79 5323 acydburn
                                        $message = $user->lang['RANK_UPDATED'];
80 6816 acydburn
81 6816 acydburn
                                        add_log('admin', 'LOG_RANK_UPDATED', $rank_title);
82 5323 acydburn
                                }
83 5323 acydburn
                                else
84 5323 acydburn
                                {
85 5323 acydburn
                                        $sql = 'INSERT INTO ' . RANKS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
86 5323 acydburn
                                        $message = $user->lang['RANK_ADDED'];
87 6816 acydburn
88 6816 acydburn
                                        add_log('admin', 'LOG_RANK_ADDED', $rank_title);
89 5323 acydburn
                                }
90 5323 acydburn
                                $db->sql_query($sql);
91 5323 acydburn
92 7386 acydburn
                                $cache->destroy('_ranks');
93 5323 acydburn
94 5558 acydburn
                                trigger_error($message . adm_back_link($this->u_action));
95 5323 acydburn
96 5323 acydburn
                        break;
97 5323 acydburn
98 5323 acydburn
                        case 'delete':
99 5323 acydburn
100 6816 acydburn
                                if (!$rank_id)
101 5323 acydburn
                                {
102 6816 acydburn
                                        trigger_error($user->lang['MUST_SELECT_RANK'] . adm_back_link($this->u_action), E_USER_WARNING);
103 6816 acydburn
                                }
104 6816 acydburn
105 6816 acydburn
                                if (confirm_box(true))
106 6816 acydburn
                                {
107 6816 acydburn
                                        $sql = 'SELECT rank_title
108 6816 acydburn
                                                FROM ' . RANKS_TABLE . '
109 6816 acydburn
                                                WHERE rank_id = ' . $rank_id;
110 6816 acydburn
                                        $result = $db->sql_query($sql);
111 6816 acydburn
                                        $rank_title = (string) $db->sql_fetchfield('rank_title');
112 6816 acydburn
                                        $db->sql_freeresult($result);
113 6816 acydburn
114 5323 acydburn
                                        $sql = 'DELETE FROM ' . RANKS_TABLE . "
115 5323 acydburn
                                                WHERE rank_id = $rank_id";
116 5323 acydburn
                                        $db->sql_query($sql);
117 5323 acydburn
118 5323 acydburn
                                        $sql = 'UPDATE ' . USERS_TABLE . "
119 5323 acydburn
                                                SET user_rank = 0
120 5323 acydburn
                                                WHERE user_rank = $rank_id";
121 5323 acydburn
                                        $db->sql_query($sql);
122 5323 acydburn
123 7386 acydburn
                                        $cache->destroy('_ranks');
124 5323 acydburn
125 6816 acydburn
                                        add_log('admin', 'LOG_RANK_REMOVED', $rank_title);
126 5323 acydburn
                                }
127 5323 acydburn
                                else
128 5323 acydburn
                                {
129 6816 acydburn
                                        confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
130 6816 acydburn
                                                'i'                        => $id,
131 6816 acydburn
                                                'mode'                => $mode,
132 6816 acydburn
                                                'rank_id'        => $rank_id,
133 6816 acydburn
                                                'action'        => 'delete',
134 6816 acydburn
                                        )));
135 5323 acydburn
                                }
136 5323 acydburn
137 5323 acydburn
                        break;
138 5323 acydburn
139 5323 acydburn
                        case 'edit':
140 5323 acydburn
                        case 'add':
141 5323 acydburn
142 5323 acydburn
                                $data = $ranks = $existing_imgs = array();
143 5323 acydburn
144 8147 acydburn
                                $sql = 'SELECT *
145 8147 acydburn
                                        FROM ' . RANKS_TABLE . '
146 5323 acydburn
                                        ORDER BY rank_min ASC, rank_special ASC';
147 5323 acydburn
                                $result = $db->sql_query($sql);
148 5323 acydburn
149 5323 acydburn
                                while ($row = $db->sql_fetchrow($result))
150 5323 acydburn
                                {
151 5323 acydburn
                                        $existing_imgs[] = $row['rank_image'];
152 5323 acydburn
153 5323 acydburn
                                        if ($action == 'edit' && $rank_id == $row['rank_id'])
154 5323 acydburn
                                        {
155 5323 acydburn
                                                $ranks = $row;
156 5323 acydburn
                                        }
157 5323 acydburn
                                }
158 5323 acydburn
                                $db->sql_freeresult($result);
159 5323 acydburn
160 5323 acydburn
                                $imglist = filelist($phpbb_root_path . $config['ranks_path'], '');
161 5323 acydburn
                                $edit_img = $filename_list = '';
162 5323 acydburn
163 5323 acydburn
                                foreach ($imglist as $path => $img_ary)
164 5323 acydburn
                                {
165 7884 acydburn
                                        sort($img_ary);
166 7884 acydburn
167 5323 acydburn
                                        foreach ($img_ary as $img)
168 5323 acydburn
                                        {
169 8147 acydburn
                                                $img = $path . $img;
170 5323 acydburn
171 9607 nickvergessen
                                                if ($ranks && $img == $ranks['rank_image'])
172 5323 acydburn
                                                {
173 9607 nickvergessen
                                                        $selected = ' selected="selected"';
174 9607 nickvergessen
                                                        $edit_img = $img;
175 9607 nickvergessen
                                                }
176 9607 nickvergessen
                                                else
177 9607 nickvergessen
                                                {
178 9607 nickvergessen
                                                        $selected = '';
179 9607 nickvergessen
                                                }
180 5323 acydburn
181 9607 nickvergessen
                                                if (strlen($img) > 255)
182 9607 nickvergessen
                                                {
183 9607 nickvergessen
                                                        continue;
184 5323 acydburn
                                                }
185 9607 nickvergessen
186 9607 nickvergessen
                                                $filename_list .= '<option value="' . htmlspecialchars($img) . '"' . $selected . '>' . $img . ((in_array($img, $existing_imgs)) ? ' ' . $user->lang['RANK_IMAGE_IN_USE'] : '') . '</option>';
187 5323 acydburn
                                        }
188 5323 acydburn
                                }
189 5323 acydburn
190 5323 acydburn
                                $filename_list = '<option value=""' . (($edit_img == '') ? ' selected="selected"' : '') . '>----------</option>' . $filename_list;
191 5323 acydburn
                                unset($existing_imgs, $imglist);
192 5323 acydburn
193 5323 acydburn
                                $template->assign_vars(array(
194 5323 acydburn
                                        'S_EDIT'                        => true,
195 5558 acydburn
                                        'U_BACK'                        => $this->u_action,
196 5323 acydburn
                                        'RANKS_PATH'                => $phpbb_root_path . $config['ranks_path'],
197 5558 acydburn
                                        'U_ACTION'                        => $this->u_action . '&amp;id=' . $rank_id,
198 5323 acydburn
199 5323 acydburn
                                        'RANK_TITLE'                => (isset($ranks['rank_title'])) ? $ranks['rank_title'] : '',
200 5323 acydburn
                                        'S_FILENAME_LIST'        => $filename_list,
201 5323 acydburn
                                        'RANK_IMAGE'                => ($edit_img) ? $phpbb_root_path . $config['ranks_path'] . '/' . $edit_img : $phpbb_admin_path . 'images/spacer.gif',
202 11470 git-gate
                                        'S_SPECIAL_RANK'        => (isset($ranks['rank_special']) && $ranks['rank_special']) ? true : false,
203 5323 acydburn
                                        'MIN_POSTS'                        => (isset($ranks['rank_min']) && !$ranks['rank_special']) ? $ranks['rank_min'] : 0)
204 5323 acydburn
                                );
205 5323 acydburn
206 5323 acydburn
207 5323 acydburn
                                return;
208 5323 acydburn
209 5323 acydburn
                        break;
210 5323 acydburn
                }
211 5323 acydburn
212 5323 acydburn
                $template->assign_vars(array(
213 5558 acydburn
                        'U_ACTION'                => $this->u_action)
214 5323 acydburn
                );
215 5323 acydburn
216 5323 acydburn
                $sql = 'SELECT *
217 5323 acydburn
                        FROM ' . RANKS_TABLE . '
218 7884 acydburn
                        ORDER BY rank_special DESC, rank_min ASC, rank_title ASC';
219 5323 acydburn
                $result = $db->sql_query($sql);
220 5323 acydburn
221 5323 acydburn
                while ($row = $db->sql_fetchrow($result))
222 5323 acydburn
                {
223 5323 acydburn
                        $template->assign_block_vars('ranks', array(
224 5323 acydburn
                                'S_RANK_IMAGE'                => ($row['rank_image']) ? true : false,
225 5323 acydburn
                                'S_SPECIAL_RANK'        => ($row['rank_special']) ? true : false,
226 5323 acydburn
227 5323 acydburn
                                'RANK_IMAGE'                => $phpbb_root_path . $config['ranks_path'] . '/' . $row['rank_image'],
228 5323 acydburn
                                'RANK_TITLE'                => $row['rank_title'],
229 5323 acydburn
                                'MIN_POSTS'                        => $row['rank_min'],
230 5323 acydburn
231 5558 acydburn
                                'U_EDIT'                        => $this->u_action . '&amp;action=edit&amp;id=' . $row['rank_id'],
232 5558 acydburn
                                'U_DELETE'                        => $this->u_action . '&amp;action=delete&amp;id=' . $row['rank_id'])
233 5323 acydburn
                        );
234 5323 acydburn
                }
235 5323 acydburn
                $db->sql_freeresult($result);
236 5323 acydburn
237 5323 acydburn
        }
238 5323 acydburn
}
239 5323 acydburn
240 5323 acydburn
?>