phpBB
Statistics
| Revision:

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

History | View | Annotate | Download (26.9 kB)

1 5310 acydburn
<?php
2 8147 acydburn
/**
3 5310 acydburn
*
4 5310 acydburn
* @package acp
5 5310 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 5310 acydburn
*
9 5310 acydburn
*/
10 5310 acydburn
11 5310 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 6058 acydburn
* @todo [smilies] check regular expressions for special char replacements (stored specialchared in db)
21 5310 acydburn
* @package acp
22 5310 acydburn
*/
23 5310 acydburn
class acp_icons
24 5310 acydburn
{
25 5558 acydburn
        var $u_action;
26 5558 acydburn
27 5310 acydburn
        function main($id, $mode)
28 5310 acydburn
        {
29 5310 acydburn
                global $db, $user, $auth, $template, $cache;
30 6015 acydburn
                global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
31 5310 acydburn
32 5310 acydburn
                $user->add_lang('acp/posting');
33 5310 acydburn
34 5310 acydburn
                // Set up general vars
35 5310 acydburn
                $action = request_var('action', '');
36 5310 acydburn
                $action = (isset($_POST['add'])) ? 'add' : $action;
37 5310 acydburn
                $action = (isset($_POST['edit'])) ? 'edit' : $action;
38 5944 acydburn
                $action = (isset($_POST['import'])) ? 'import' : $action;
39 5310 acydburn
                $icon_id = request_var('id', 0);
40 5310 acydburn
41 8112 acydburn
                $mode = ($mode == 'smilies') ? 'smilies' : 'icons';
42 8112 acydburn
43 5310 acydburn
                $this->tpl_name = 'acp_icons';
44 5310 acydburn
45 5310 acydburn
                // What are we working on?
46 5310 acydburn
                switch ($mode)
47 5310 acydburn
                {
48 5310 acydburn
                        case 'smilies':
49 5310 acydburn
                                $table = SMILIES_TABLE;
50 5310 acydburn
                                $lang = 'SMILIES';
51 5310 acydburn
                                $fields = 'smiley';
52 5310 acydburn
                                $img_path = $config['smilies_path'];
53 5310 acydburn
                        break;
54 5310 acydburn
55 5310 acydburn
                        case 'icons':
56 5310 acydburn
                                $table = ICONS_TABLE;
57 5310 acydburn
                                $lang = 'ICONS';
58 5310 acydburn
                                $fields = 'icons';
59 5310 acydburn
                                $img_path = $config['icons_path'];
60 5310 acydburn
                        break;
61 5310 acydburn
                }
62 5310 acydburn
63 5310 acydburn
                $this->page_title = 'ACP_' . $lang;
64 5310 acydburn
65 5310 acydburn
                // Clear some arrays
66 5310 acydburn
                $_images = $_paks = array();
67 5310 acydburn
                $notice = '';
68 5310 acydburn
69 5310 acydburn
                // Grab file list of paks and images
70 5310 acydburn
                if ($action == 'edit' || $action == 'add' || $action == 'import')
71 5310 acydburn
                {
72 5310 acydburn
                        $imglist = filelist($phpbb_root_path . $img_path, '');
73 6290 acydburn
74 5310 acydburn
                        foreach ($imglist as $path => $img_ary)
75 5310 acydburn
                        {
76 8974 acydburn
                                if (empty($img_ary))
77 8974 acydburn
                                {
78 8974 acydburn
                                        continue;
79 8974 acydburn
                                }
80 8974 acydburn
81 8974 acydburn
                                asort($img_ary, SORT_STRING);
82 8974 acydburn
83 5310 acydburn
                                foreach ($img_ary as $img)
84 5310 acydburn
                                {
85 6973 acydburn
                                        $img_size = getimagesize($phpbb_root_path . $img_path . '/' . $path . $img);
86 5310 acydburn
87 6880 davidmj
                                        if (!$img_size[0] || !$img_size[1] || strlen($img) > 255)
88 5310 acydburn
                                        {
89 5310 acydburn
                                                continue;
90 5310 acydburn
                                        }
91 5310 acydburn
92 10234 acydburn
                                        // adjust the width and height to be lower than 128px while perserving the aspect ratio (for icons)
93 10234 acydburn
                                        if ($mode == 'icons')
94 10088 terrafrost
                                        {
95 10234 acydburn
                                                if ($img_size[0] > 127 && $img_size[0] > $img_size[1])
96 10234 acydburn
                                                {
97 10234 acydburn
                                                        $img_size[1] = (int) ($img_size[1] * (127 / $img_size[0]));
98 10234 acydburn
                                                        $img_size[0] = 127;
99 10234 acydburn
                                                }
100 10234 acydburn
                                                else if ($img_size[1] > 127)
101 10234 acydburn
                                                {
102 10234 acydburn
                                                        $img_size[0] = (int) ($img_size[0] * (127 / $img_size[1]));
103 10234 acydburn
                                                        $img_size[1] = 127;
104 10234 acydburn
                                                }
105 10088 terrafrost
                                        }
106 10088 terrafrost
107 5310 acydburn
                                        $_images[$path . $img]['file'] = $path . $img;
108 5310 acydburn
                                        $_images[$path . $img]['width'] = $img_size[0];
109 5310 acydburn
                                        $_images[$path . $img]['height'] = $img_size[1];
110 5310 acydburn
                                }
111 5310 acydburn
                        }
112 5310 acydburn
                        unset($imglist);
113 5310 acydburn
114 8211 acydburn
                        if ($dir = @opendir($phpbb_root_path . $img_path))
115 5310 acydburn
                        {
116 8211 acydburn
                                while (($file = readdir($dir)) !== false)
117 5310 acydburn
                                {
118 8211 acydburn
                                        if (is_file($phpbb_root_path . $img_path . '/' . $file) && preg_match('#\.pak$#i', $file))
119 8211 acydburn
                                        {
120 8211 acydburn
                                                $_paks[] = $file;
121 8211 acydburn
                                        }
122 5310 acydburn
                                }
123 8211 acydburn
                                closedir($dir);
124 8974 acydburn
125 8974 acydburn
                                if (!empty($_paks))
126 8974 acydburn
                                {
127 8974 acydburn
                                        asort($_paks, SORT_STRING);
128 8974 acydburn
                                }
129 5310 acydburn
                        }
130 5310 acydburn
                }
131 5310 acydburn
132 5310 acydburn
                // What shall we do today? Oops, I believe that's trademarked ...
133 5310 acydburn
                switch ($action)
134 5310 acydburn
                {
135 5310 acydburn
                        case 'edit':
136 5310 acydburn
                                unset($_images);
137 5310 acydburn
                                $_images = array();
138 5310 acydburn
139 6073 acydburn
                        // no break;
140 6073 acydburn
141 5310 acydburn
                        case 'add':
142 5310 acydburn
143 7614 acydburn
                                $smilies = $default_row = array();
144 7614 acydburn
                                $smiley_options = $order_list = $add_order_list = '';
145 5310 acydburn
146 7614 acydburn
                                if ($action == 'add' && $mode == 'smilies')
147 7614 acydburn
                                {
148 8147 acydburn
                                        $sql = 'SELECT *
149 7614 acydburn
                                                FROM ' . SMILIES_TABLE . '
150 7614 acydburn
                                                ORDER BY smiley_order';
151 7614 acydburn
                                        $result = $db->sql_query($sql);
152 7614 acydburn
153 7614 acydburn
                                        while ($row = $db->sql_fetchrow($result))
154 7614 acydburn
                                        {
155 7614 acydburn
                                                if (empty($smilies[$row['smiley_url']]))
156 7614 acydburn
                                                {
157 7614 acydburn
                                                        $smilies[$row['smiley_url']] = $row;
158 7614 acydburn
                                                }
159 7614 acydburn
                                        }
160 7614 acydburn
                                        $db->sql_freeresult($result);
161 7614 acydburn
162 7614 acydburn
                                        if (sizeof($smilies))
163 7614 acydburn
                                        {
164 7614 acydburn
                                                foreach ($smilies as $row)
165 7614 acydburn
                                                {
166 7614 acydburn
                                                        $selected = false;
167 7614 acydburn
168 7614 acydburn
                                                        if (!$smiley_options)
169 7614 acydburn
                                                        {
170 7614 acydburn
                                                                $selected = true;
171 7614 acydburn
                                                                $default_row = $row;
172 7614 acydburn
                                                        }
173 7614 acydburn
                                                        $smiley_options .= '<option value="' . $row['smiley_url'] . '"' . (($selected) ? ' selected="selected"' : '') . '>' . $row['smiley_url'] . '</option>';
174 7614 acydburn
175 7614 acydburn
                                                        $template->assign_block_vars('smile', array(
176 7614 acydburn
                                                                'SMILEY_URL'        => addslashes($row['smiley_url']),
177 7614 acydburn
                                                                'CODE'                        => addslashes($row['code']),
178 7614 acydburn
                                                                'EMOTION'                => addslashes($row['emotion']),
179 7614 acydburn
                                                                'WIDTH'                        => $row['smiley_width'],
180 7614 acydburn
                                                                'HEIGHT'                => $row['smiley_height'],
181 7614 acydburn
                                                                'ORDER'                        => $row['smiley_order'] + 1,
182 7614 acydburn
                                                        ));
183 7614 acydburn
                                                }
184 7614 acydburn
                                        }
185 7614 acydburn
                                }
186 9764 acydburn
187 8147 acydburn
                                $sql = "SELECT *
188 8147 acydburn
                                        FROM $table
189 5310 acydburn
                                        ORDER BY {$fields}_order " . (($icon_id || $action == 'add') ? 'DESC' : 'ASC');
190 5310 acydburn
                                $result = $db->sql_query($sql);
191 9763 aptx
192 6290 acydburn
                                $data = array();
193 7992 kellanved
                                $after = false;
194 7992 kellanved
                                $display = 0;
195 7992 kellanved
                                $order_lists = array('', '');
196 7992 kellanved
                                $add_order_lists = array('', '');
197 7992 kellanved
                                $display_count = 0;
198 9764 acydburn
199 6149 acydburn
                                while ($row = $db->sql_fetchrow($result))
200 5310 acydburn
                                {
201 6149 acydburn
                                        if ($action == 'add')
202 5310 acydburn
                                        {
203 6149 acydburn
                                                unset($_images[$row[$fields . '_url']]);
204 6149 acydburn
                                        }
205 6149 acydburn
206 7992 kellanved
207 6149 acydburn
                                        if ($row[$fields . '_id'] == $icon_id)
208 6149 acydburn
                                        {
209 6149 acydburn
                                                $after = true;
210 7992 kellanved
                                                $display = $row['display_on_posting'];
211 6149 acydburn
                                                $data[$row[$fields . '_url']] = $row;
212 6149 acydburn
                                        }
213 6149 acydburn
                                        else
214 6149 acydburn
                                        {
215 6149 acydburn
                                                if ($action == 'edit' && !$icon_id)
216 5310 acydburn
                                                {
217 6149 acydburn
                                                        $data[$row[$fields . '_url']] = $row;
218 5310 acydburn
                                                }
219 5310 acydburn
220 6149 acydburn
                                                $selected = '';
221 6149 acydburn
                                                if (!empty($after))
222 5310 acydburn
                                                {
223 6149 acydburn
                                                        $selected = ' selected="selected"';
224 6149 acydburn
                                                        $after = false;
225 5310 acydburn
                                                }
226 7992 kellanved
                                                if ($row['display_on_posting'])
227 7992 kellanved
                                                {
228 7992 kellanved
                                                        $display_count++;
229 7992 kellanved
                                                }
230 6149 acydburn
                                                $after_txt = ($mode == 'smilies') ? $row['code'] : $row['icons_url'];
231 7992 kellanved
                                                $order_lists[$row['display_on_posting']] = '<option value="' . ($row[$fields . '_order'] + 1) . '"' . $selected . '>' . sprintf($user->lang['AFTER_' . $lang], ' -&gt; ' . $after_txt) . '</option>' . $order_lists[$row['display_on_posting']];
232 7614 acydburn
233 7614 acydburn
                                                if (!empty($default_row))
234 7614 acydburn
                                                {
235 7992 kellanved
                                                        $add_order_lists[$row['display_on_posting']] = '<option value="' . ($row[$fields . '_order'] + 1) . '"' . (($row[$fields . '_id'] == $default_row['smiley_id']) ? ' selected="selected"' : '') . '>' . sprintf($user->lang['AFTER_' . $lang], ' -&gt; ' . $after_txt) . '</option>' . $add_order_lists[$row['display_on_posting']];
236 7614 acydburn
                                                }
237 5310 acydburn
                                        }
238 5310 acydburn
                                }
239 5310 acydburn
                                $db->sql_freeresult($result);
240 5310 acydburn
241 7992 kellanved
                                $order_list = '<option value="1"' . ((!isset($after)) ? ' selected="selected"' : '') . '>' . $user->lang['FIRST'] . '</option>';
242 8147 acydburn
                                $add_order_list = '<option value="1">' . $user->lang['FIRST'] . '</option>';
243 8147 acydburn
244 5310 acydburn
                                if ($action == 'add')
245 5310 acydburn
                                {
246 5310 acydburn
                                        $data = $_images;
247 5310 acydburn
                                }
248 8147 acydburn
249 9772 aptx
                                $colspan = (($mode == 'smilies') ? 7 : 5);
250 5310 acydburn
                                $colspan += ($icon_id) ? 1 : 0;
251 5310 acydburn
                                $colspan += ($action == 'add') ? 2 : 0;
252 9764 acydburn
253 5310 acydburn
                                $template->assign_vars(array(
254 5310 acydburn
                                        'S_EDIT'                => true,
255 5310 acydburn
                                        'S_SMILIES'                => ($mode == 'smilies') ? true : false,
256 5310 acydburn
                                        'S_ADD'                        => ($action == 'add') ? true : false,
257 9764 acydburn
258 7992 kellanved
                                        'S_ORDER_LIST_DISPLAY'                => $order_list . $order_lists[1],
259 7992 kellanved
                                        'S_ORDER_LIST_UNDISPLAY'        => $order_list . $order_lists[0],
260 7992 kellanved
                                        'S_ORDER_LIST_DISPLAY_COUNT'        => $display_count + 1,
261 5310 acydburn
262 5310 acydburn
                                        'L_TITLE'                => $user->lang['ACP_' . $lang],
263 5310 acydburn
                                        'L_EXPLAIN'                => $user->lang['ACP_' . $lang . '_EXPLAIN'],
264 5310 acydburn
                                        'L_CONFIG'                => $user->lang[$lang . '_CONFIG'],
265 5310 acydburn
                                        'L_URL'                        => $user->lang[$lang . '_URL'],
266 5310 acydburn
                                        'L_LOCATION'        => $user->lang[$lang . '_LOCATION'],
267 5310 acydburn
                                        'L_WIDTH'                => $user->lang[$lang . '_WIDTH'],
268 5310 acydburn
                                        'L_HEIGHT'                => $user->lang[$lang . '_HEIGHT'],
269 5310 acydburn
                                        'L_ORDER'                => $user->lang[$lang . '_ORDER'],
270 7614 acydburn
                                        'L_NO_ICONS'        => $user->lang['NO_' . $lang . '_' . strtoupper($action)],
271 5310 acydburn
272 5310 acydburn
                                        'COLSPAN'                => $colspan,
273 5310 acydburn
                                        'ID'                        => $icon_id,
274 5310 acydburn
275 5558 acydburn
                                        'U_BACK'                => $this->u_action,
276 5558 acydburn
                                        'U_ACTION'                => $this->u_action . '&amp;action=' . (($action == 'add') ? 'create' : 'modify'),
277 7614 acydburn
                                ));
278 5310 acydburn
279 5310 acydburn
                                foreach ($data as $img => $img_row)
280 5310 acydburn
                                {
281 5310 acydburn
                                        $template->assign_block_vars('items', array(
282 5310 acydburn
                                                'IMG'                => $img,
283 8099 acydburn
                                                'A_IMG'                => addslashes($img),
284 5310 acydburn
                                                'IMG_SRC'        => $phpbb_root_path . $img_path . '/' . $img,
285 5310 acydburn
286 5310 acydburn
                                                'CODE'                => ($mode == 'smilies' && isset($img_row['code'])) ? $img_row['code'] : '',
287 5310 acydburn
                                                'EMOTION'        => ($mode == 'smilies' && isset($img_row['emotion'])) ? $img_row['emotion'] : '',
288 5310 acydburn
289 5310 acydburn
                                                'S_ID'                                => (isset($img_row[$fields . '_id'])) ? true : false,
290 5310 acydburn
                                                'ID'                                => (isset($img_row[$fields . '_id'])) ? $img_row[$fields . '_id'] : 0,
291 5310 acydburn
                                                'WIDTH'                                => (!empty($img_row[$fields .'_width'])) ? $img_row[$fields .'_width'] : $img_row['width'],
292 5310 acydburn
                                                'HEIGHT'                        => (!empty($img_row[$fields .'_height'])) ? $img_row[$fields .'_height'] : $img_row['height'],
293 7614 acydburn
                                                'POSTING_CHECKED'        => (!empty($img_row['display_on_posting']) || $action == 'add') ? ' checked="checked"' : '',
294 7614 acydburn
                                        ));
295 5310 acydburn
                                }
296 5310 acydburn
297 7614 acydburn
                                // Ok, another row for adding an addition code for a pre-existing image...
298 7614 acydburn
                                if ($action == 'add' && $mode == 'smilies' && sizeof($smilies))
299 7614 acydburn
                                {
300 7614 acydburn
                                        $template->assign_vars(array(
301 7614 acydburn
                                                'S_ADD_CODE'                => true,
302 7614 acydburn
303 7614 acydburn
                                                'S_IMG_OPTIONS'                => $smiley_options,
304 9764 acydburn
305 7992 kellanved
                                                'S_ADD_ORDER_LIST_DISPLAY'                => $add_order_list . $add_order_lists[1],
306 7992 kellanved
                                                'S_ADD_ORDER_LIST_UNDISPLAY'        => $add_order_list . $add_order_lists[0],
307 9764 acydburn
308 7614 acydburn
                                                'IMG_SRC'                        => $phpbb_root_path . $img_path . '/' . $default_row['smiley_url'],
309 7614 acydburn
                                                'IMG_PATH'                        => $img_path,
310 7614 acydburn
                                                'PHPBB_ROOT_PATH'        => $phpbb_root_path,
311 7614 acydburn
312 7614 acydburn
                                                'CODE'                                => $default_row['code'],
313 7614 acydburn
                                                'EMOTION'                        => $default_row['emotion'],
314 7614 acydburn
315 7614 acydburn
                                                'WIDTH'                                => $default_row['smiley_width'],
316 7614 acydburn
                                                'HEIGHT'                        => $default_row['smiley_height'],
317 7614 acydburn
                                        ));
318 7614 acydburn
                                }
319 7614 acydburn
320 5310 acydburn
                                return;
321 9764 acydburn
322 5310 acydburn
                        break;
323 5310 acydburn
324 5310 acydburn
                        case 'create':
325 5310 acydburn
                        case 'modify':
326 5310 acydburn
327 5310 acydburn
                                // Get items to create/modify
328 5310 acydburn
                                $images = (isset($_POST['image'])) ? array_keys(request_var('image', array('' => 0))) : array();
329 9764 acydburn
330 5310 acydburn
                                // Now really get the items
331 6837 acydburn
                                $image_id                = (isset($_POST['id'])) ? request_var('id', array('' => 0)) : array();
332 6837 acydburn
                                $image_order        = (isset($_POST['order'])) ? request_var('order', array('' => 0)) : array();
333 6837 acydburn
                                $image_width        = (isset($_POST['width'])) ? request_var('width', array('' => 0)) : array();
334 6837 acydburn
                                $image_height        = (isset($_POST['height'])) ? request_var('height', array('' => 0)) : array();
335 6837 acydburn
                                $image_add                = (isset($_POST['add_img'])) ? request_var('add_img', array('' => 0)) : array();
336 7920 acydburn
                                $image_emotion        = utf8_normalize_nfc(request_var('emotion', array('' => ''), true));
337 7920 acydburn
                                $image_code                = utf8_normalize_nfc(request_var('code', array('' => ''), true));
338 6837 acydburn
                                $image_display_on_posting = (isset($_POST['display_on_posting'])) ? request_var('display_on_posting', array('' => 0)) : array();
339 5310 acydburn
340 7614 acydburn
                                // Ok, add the relevant bits if we are adding new codes to existing emoticons...
341 7614 acydburn
                                if (!empty($_POST['add_additional_code']))
342 7614 acydburn
                                {
343 7614 acydburn
                                        $add_image                        = request_var('add_image', '');
344 7920 acydburn
                                        $add_code                        = utf8_normalize_nfc(request_var('add_code', '', true));
345 7920 acydburn
                                        $add_emotion                = utf8_normalize_nfc(request_var('add_emotion', '', true));
346 7614 acydburn
347 7614 acydburn
                                        if ($add_image && $add_emotion && $add_code)
348 7614 acydburn
                                        {
349 7614 acydburn
                                                $images[] = $add_image;
350 7614 acydburn
                                                $image_add[$add_image] = true;
351 7614 acydburn
352 7614 acydburn
                                                $image_code[$add_image] = $add_code;
353 7614 acydburn
                                                $image_emotion[$add_image] = $add_emotion;
354 7614 acydburn
                                                $image_width[$add_image] = request_var('add_width', 0);
355 7614 acydburn
                                                $image_height[$add_image] = request_var('add_height', 0);
356 7614 acydburn
357 7614 acydburn
                                                if (!empty($_POST['add_display_on_posting']))
358 7614 acydburn
                                                {
359 7614 acydburn
                                                        $image_display_on_posting[$add_image] = 1;
360 7614 acydburn
                                                }
361 7614 acydburn
362 7614 acydburn
                                                $image_order[$add_image] = request_var('add_order', 0);
363 7614 acydburn
                                        }
364 7614 acydburn
                                }
365 7614 acydburn
366 9772 aptx
                                if ($mode == 'smilies' && $action == 'create')
367 9772 aptx
                                {
368 9772 aptx
                                        $smiley_count = $this->item_count($table);
369 10234 acydburn
370 9772 aptx
                                        $addable_smileys_count = sizeof($images);
371 9772 aptx
                                        foreach ($images as $image)
372 9772 aptx
                                        {
373 9772 aptx
                                                if (!isset($image_add[$image]))
374 9772 aptx
                                                {
375 9772 aptx
                                                        --$addable_smileys_count;
376 9772 aptx
                                                }
377 9772 aptx
                                        }
378 10234 acydburn
379 9772 aptx
                                        if ($smiley_count + $addable_smileys_count > SMILEY_LIMIT)
380 9772 aptx
                                        {
381 9772 aptx
                                                trigger_error(sprintf($user->lang['TOO_MANY_SMILIES'], SMILEY_LIMIT) . adm_back_link($this->u_action), E_USER_WARNING);
382 9772 aptx
                                        }
383 9772 aptx
                                }
384 9772 aptx
385 8009 kellanved
                                $icons_updated = 0;
386 8326 kellanved
                                $errors = array();
387 5310 acydburn
                                foreach ($images as $image)
388 5310 acydburn
                                {
389 8326 kellanved
                                        if ($mode == 'smilies' && ($image_emotion[$image] == '' || $image_code[$image] == ''))
390 5310 acydburn
                                        {
391 8326 kellanved
                                                $errors[$image] = 'SMILIE_NO_' . (($image_emotion[$image] == '') ? 'EMOTION' : 'CODE');
392 5310 acydburn
                                        }
393 8326 kellanved
                                        else if ($action == 'create' && !isset($image_add[$image]))
394 8326 kellanved
                                        {
395 8326 kellanved
                                                // skip images where add wasn't checked
396 8326 kellanved
                                        }
397 11094 git-gate
                                        else if (!file_exists($phpbb_root_path . $img_path . '/' . $image))
398 11094 git-gate
                                        {
399 11094 git-gate
                                                $errors[$image] = 'SMILIE_NO_FILE';
400 11094 git-gate
                                        }
401 5310 acydburn
                                        else
402 5310 acydburn
                                        {
403 5310 acydburn
                                                if ($image_width[$image] == 0 || $image_height[$image] == 0)
404 5310 acydburn
                                                {
405 6973 acydburn
                                                        $img_size = getimagesize($phpbb_root_path . $img_path . '/' . $image);
406 5310 acydburn
                                                        $image_width[$image] = $img_size[0];
407 5310 acydburn
                                                        $image_height[$image] = $img_size[1];
408 5310 acydburn
                                                }
409 5310 acydburn
410 10234 acydburn
                                                // Adjust image width/height for icons
411 10234 acydburn
                                                if ($mode == 'icons')
412 10088 terrafrost
                                                {
413 10234 acydburn
                                                        if ($image_width[$image] > 127 && $image_width[$image] > $image_height[$image])
414 10234 acydburn
                                                        {
415 10234 acydburn
                                                                $image_height[$image] = (int) ($image_height[$image] * (127 / $image_width[$image]));
416 10234 acydburn
                                                                $image_width[$image] = 127;
417 10234 acydburn
                                                        }
418 10234 acydburn
                                                        else if ($image_height[$image] > 127)
419 10234 acydburn
                                                        {
420 10234 acydburn
                                                                $image_width[$image] = (int) ($image_width[$image] * (127 / $image_height[$image]));
421 10234 acydburn
                                                                $image_height[$image] = 127;
422 10234 acydburn
                                                        }
423 10088 terrafrost
                                                }
424 10088 terrafrost
425 5310 acydburn
                                                $img_sql = array(
426 6149 acydburn
                                                        $fields . '_url'                => $image,
427 6149 acydburn
                                                        $fields . '_width'                => $image_width[$image],
428 6149 acydburn
                                                        $fields . '_height'                => $image_height[$image],
429 6149 acydburn
                                                        'display_on_posting'        => (isset($image_display_on_posting[$image])) ? 1 : 0,
430 5310 acydburn
                                                );
431 5310 acydburn
432 5310 acydburn
                                                if ($mode == 'smilies')
433 5310 acydburn
                                                {
434 5310 acydburn
                                                        $img_sql = array_merge($img_sql, array(
435 6149 acydburn
                                                                'emotion'        => $image_emotion[$image],
436 6149 acydburn
                                                                'code'                => $image_code[$image])
437 5310 acydburn
                                                        );
438 5310 acydburn
                                                }
439 6149 acydburn
440 6478 acydburn
                                                // Image_order holds the 'new' order value
441 7859 kellanved
                                                if (!empty($image_order[$image]))
442 5310 acydburn
                                                {
443 5310 acydburn
                                                        $img_sql = array_merge($img_sql, array(
444 6478 acydburn
                                                                $fields . '_order'        =>        $image_order[$image])
445 5310 acydburn
                                                        );
446 6478 acydburn
447 6478 acydburn
                                                        // Since we always add 'after' an item, we just need to increase all following + the current by one
448 6478 acydburn
                                                        $sql = "UPDATE $table
449 6478 acydburn
                                                                SET {$fields}_order = {$fields}_order + 1
450 6478 acydburn
                                                                WHERE {$fields}_order >= {$image_order[$image]}";
451 6478 acydburn
                                                        $db->sql_query($sql);
452 6478 acydburn
453 6478 acydburn
                                                        // If we adjust the order, we need to adjust all other orders too - they became inaccurate...
454 6478 acydburn
                                                        foreach ($image_order as $_image => $_order)
455 6478 acydburn
                                                        {
456 6478 acydburn
                                                                if ($_image == $image)
457 6478 acydburn
                                                                {
458 6478 acydburn
                                                                        continue;
459 6478 acydburn
                                                                }
460 6478 acydburn
461 6478 acydburn
                                                                if ($_order >= $image_order[$image])
462 6478 acydburn
                                                                {
463 6478 acydburn
                                                                        $image_order[$_image]++;
464 6478 acydburn
                                                                }
465 6478 acydburn
                                                        }
466 5310 acydburn
                                                }
467 5310 acydburn
468 7859 kellanved
                                                if ($action == 'modify'  && !empty($image_id[$image]))
469 5310 acydburn
                                                {
470 5310 acydburn
                                                        $sql = "UPDATE $table
471 8147 acydburn
                                                                SET " . $db->sql_build_array('UPDATE', $img_sql) . "
472 5310 acydburn
                                                                WHERE {$fields}_id = " . $image_id[$image];
473 5310 acydburn
                                                        $db->sql_query($sql);
474 8009 kellanved
                                                        $icons_updated++;
475 5310 acydburn
                                                }
476 7859 kellanved
                                                else if ($action !== 'modify')
477 5310 acydburn
                                                {
478 5310 acydburn
                                                        $sql = "INSERT INTO $table " . $db->sql_build_array('INSERT', $img_sql);
479 5310 acydburn
                                                        $db->sql_query($sql);
480 8009 kellanved
                                                        $icons_updated++;
481 5310 acydburn
                                                }
482 9764 acydburn
483 7859 kellanved
                                         }
484 5310 acydburn
                                }
485 9764 acydburn
486 7386 acydburn
                                $cache->destroy('_icons');
487 5633 acydburn
                                $cache->destroy('sql', $table);
488 9764 acydburn
489 8009 kellanved
                                $level = E_USER_NOTICE;
490 8009 kellanved
                                switch ($icons_updated)
491 8009 kellanved
                                {
492 8009 kellanved
                                        case 0:
493 8009 kellanved
                                                $suc_lang = "{$lang}_NONE";
494 8009 kellanved
                                                $level = E_USER_WARNING;
495 8009 kellanved
                                                break;
496 9764 acydburn
497 8009 kellanved
                                        case 1:
498 8009 kellanved
                                                $suc_lang = "{$lang}_ONE";
499 8009 kellanved
                                                break;
500 9764 acydburn
501 8009 kellanved
                                        default:
502 8009 kellanved
                                                $suc_lang = $lang;
503 8009 kellanved
                                }
504 8628 Kellanved
                                $errormsgs = '';
505 8326 kellanved
                                foreach ($errors as $img => $error)
506 8326 kellanved
                                {
507 8326 kellanved
                                        $errormsgs .= '<br />' . sprintf($user->lang[$error], $img);
508 8326 kellanved
                                }
509 5310 acydburn
                                if ($action == 'modify')
510 5310 acydburn
                                {
511 8326 kellanved
                                        trigger_error($user->lang[$suc_lang . '_EDITED'] . $errormsgs . adm_back_link($this->u_action), $level);
512 5310 acydburn
                                }
513 5310 acydburn
                                else
514 5310 acydburn
                                {
515 8628 Kellanved
                                        trigger_error($user->lang[$suc_lang . '_ADDED'] . $errormsgs . adm_back_link($this->u_action), $level);
516 5310 acydburn
                                }
517 5310 acydburn
518 5310 acydburn
                        break;
519 5310 acydburn
520 5310 acydburn
                        case 'import':
521 5310 acydburn
522 5310 acydburn
                                $pak = request_var('pak', '');
523 5310 acydburn
                                $current = request_var('current', '');
524 5310 acydburn
525 5310 acydburn
                                if ($pak != '')
526 5310 acydburn
                                {
527 5310 acydburn
                                        $order = 0;
528 5310 acydburn
529 6714 acydburn
                                        if (!($pak_ary = @file($phpbb_root_path . $img_path . '/' . $pak)))
530 6714 acydburn
                                        {
531 6714 acydburn
                                                trigger_error($user->lang['PAK_FILE_NOT_READABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
532 6714 acydburn
                                        }
533 6714 acydburn
534 6714 acydburn
                                        // Make sure the pak_ary is valid
535 6714 acydburn
                                        foreach ($pak_ary as $pak_entry)
536 6714 acydburn
                                        {
537 7938 acydburn
                                                if (preg_match_all("#'(.*?)', ?#", $pak_entry, $data))
538 6714 acydburn
                                                {
539 8147 acydburn
                                                        if ((sizeof($data[1]) != 4 && $mode == 'icons') ||
540 8326 kellanved
                                                                ((sizeof($data[1]) != 6 || (empty($data[1][4]) || empty($data[1][5]))) && $mode == 'smilies' ))
541 6714 acydburn
                                                        {
542 6714 acydburn
                                                                trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);
543 6714 acydburn
                                                        }
544 6714 acydburn
                                                }
545 6714 acydburn
                                                else
546 6714 acydburn
                                                {
547 6714 acydburn
                                                        trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);
548 6714 acydburn
                                                }
549 6714 acydburn
                                        }
550 6714 acydburn
551 5310 acydburn
                                        // The user has already selected a smilies_pak file
552 5310 acydburn
                                        if ($current == 'delete')
553 5310 acydburn
                                        {
554 6954 davidmj
                                                switch ($db->sql_layer)
555 6954 davidmj
                                                {
556 6954 davidmj
                                                        case 'sqlite':
557 6954 davidmj
                                                        case 'firebird':
558 6954 davidmj
                                                                $db->sql_query('DELETE FROM ' . $table);
559 6954 davidmj
                                                        break;
560 5310 acydburn
561 6954 davidmj
                                                        default:
562 6954 davidmj
                                                                $db->sql_query('TRUNCATE TABLE ' . $table);
563 6954 davidmj
                                                        break;
564 6954 davidmj
                                                }
565 6954 davidmj
566 5310 acydburn
                                                switch ($mode)
567 5310 acydburn
                                                {
568 5310 acydburn
                                                        case 'smilies':
569 5310 acydburn
                                                        break;
570 5310 acydburn
571 5310 acydburn
                                                        case 'icons':
572 5310 acydburn
                                                                // Reset all icon_ids
573 5310 acydburn
                                                                $db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET icon_id = 0');
574 5310 acydburn
                                                                $db->sql_query('UPDATE ' . POSTS_TABLE . ' SET icon_id = 0');
575 5310 acydburn
                                                        break;
576 5310 acydburn
                                                }
577 5310 acydburn
                                        }
578 8147 acydburn
                                        else
579 5310 acydburn
                                        {
580 5310 acydburn
                                                $cur_img = array();
581 5310 acydburn
582 5310 acydburn
                                                $field_sql = ($mode == 'smilies') ? 'code' : 'icons_url';
583 5310 acydburn
584 6149 acydburn
                                                $sql = "SELECT $field_sql
585 6149 acydburn
                                                        FROM $table";
586 6149 acydburn
                                                $result = $db->sql_query($sql);
587 6149 acydburn
588 5310 acydburn
                                                while ($row = $db->sql_fetchrow($result))
589 5310 acydburn
                                                {
590 5310 acydburn
                                                        ++$order;
591 5310 acydburn
                                                        $cur_img[$row[$field_sql]] = 1;
592 5310 acydburn
                                                }
593 5310 acydburn
                                                $db->sql_freeresult($result);
594 5310 acydburn
                                        }
595 5310 acydburn
596 9772 aptx
                                        if ($mode == 'smilies')
597 9772 aptx
                                        {
598 9772 aptx
                                                $smiley_count = $this->item_count($table);
599 9772 aptx
                                                if ($smiley_count + sizeof($pak_ary) > SMILEY_LIMIT)
600 9772 aptx
                                                {
601 9772 aptx
                                                        trigger_error(sprintf($user->lang['TOO_MANY_SMILIES'], SMILEY_LIMIT) . adm_back_link($this->u_action), E_USER_WARNING);
602 9772 aptx
                                                }
603 9772 aptx
                                        }
604 9772 aptx
605 5310 acydburn
                                        foreach ($pak_ary as $pak_entry)
606 5310 acydburn
                                        {
607 5310 acydburn
                                                $data = array();
608 7938 acydburn
                                                if (preg_match_all("#'(.*?)', ?#", $pak_entry, $data))
609 5310 acydburn
                                                {
610 8147 acydburn
                                                        if ((sizeof($data[1]) != 4 && $mode == 'icons') ||
611 6149 acydburn
                                                                (sizeof($data[1]) != 6 && $mode == 'smilies'))
612 5310 acydburn
                                                        {
613 6320 acydburn
                                                                trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);
614 5310 acydburn
                                                        }
615 5310 acydburn
616 6015 acydburn
                                                        // Stripslash here because it got addslashed before... (on export)
617 5310 acydburn
                                                        $img = stripslashes($data[1][0]);
618 5310 acydburn
                                                        $width = stripslashes($data[1][1]);
619 5310 acydburn
                                                        $height = stripslashes($data[1][2]);
620 6149 acydburn
                                                        $display_on_posting = stripslashes($data[1][3]);
621 5310 acydburn
622 6149 acydburn
                                                        if (isset($data[1][4]) && isset($data[1][5]))
623 5310 acydburn
                                                        {
624 6149 acydburn
                                                                $emotion = stripslashes($data[1][4]);
625 6149 acydburn
                                                                $code = stripslashes($data[1][5]);
626 5310 acydburn
                                                        }
627 5310 acydburn
628 8147 acydburn
                                                        if ($current == 'replace' &&
629 8147 acydburn
                                                                (($mode == 'smilies' && !empty($cur_img[$code])) ||
630 5310 acydburn
                                                                ($mode == 'icons' && !empty($cur_img[$img]))))
631 5310 acydburn
                                                        {
632 5310 acydburn
                                                                $replace_sql = ($mode == 'smilies') ? $code : $img;
633 5310 acydburn
                                                                $sql = array(
634 6149 acydburn
                                                                        $fields . '_url'                => $img,
635 6149 acydburn
                                                                        $fields . '_height'                => (int) $height,
636 6149 acydburn
                                                                        $fields . '_width'                => (int) $width,
637 6149 acydburn
                                                                        'display_on_posting'        => (int) $display_on_posting,
638 5310 acydburn
                                                                );
639 5310 acydburn
640 5310 acydburn
                                                                if ($mode == 'smilies')
641 5310 acydburn
                                                                {
642 5310 acydburn
                                                                        $sql = array_merge($sql, array(
643 6149 acydburn
                                                                                'emotion'                                => $emotion,
644 5310 acydburn
                                                                        ));
645 5310 acydburn
                                                                }
646 5310 acydburn
647 8147 acydburn
                                                                $sql = "UPDATE $table SET " . $db->sql_build_array('UPDATE', $sql) . "
648 6073 acydburn
                                                                        WHERE $field_sql = '" . $db->sql_escape($replace_sql) . "'";
649 6073 acydburn
                                                                $db->sql_query($sql);
650 5310 acydburn
                                                        }
651 5310 acydburn
                                                        else
652 5310 acydburn
                                                        {
653 5310 acydburn
                                                                ++$order;
654 5310 acydburn
655 5310 acydburn
                                                                $sql = array(
656 6149 acydburn
                                                                        $fields . '_url'        => $img,
657 6149 acydburn
                                                                        $fields . '_height'        => (int) $height,
658 6149 acydburn
                                                                        $fields . '_width'        => (int) $width,
659 6149 acydburn
                                                                        $fields . '_order'        => (int) $order,
660 6149 acydburn
                                                                        'display_on_posting'=> (int) $display_on_posting,
661 5310 acydburn
                                                                );
662 5310 acydburn
663 5310 acydburn
                                                                if ($mode == 'smilies')
664 5310 acydburn
                                                                {
665 5310 acydburn
                                                                        $sql = array_merge($sql, array(
666 6149 acydburn
                                                                                'code'                                => $code,
667 6149 acydburn
                                                                                'emotion'                        => $emotion,
668 5310 acydburn
                                                                        ));
669 5310 acydburn
                                                                }
670 5310 acydburn
                                                                $db->sql_query("INSERT INTO $table " . $db->sql_build_array('INSERT', $sql));
671 5310 acydburn
                                                        }
672 5310 acydburn
                                                }
673 5310 acydburn
                                        }
674 5310 acydburn
675 7386 acydburn
                                        $cache->destroy('_icons');
676 5633 acydburn
                                        $cache->destroy('sql', $table);
677 6149 acydburn
678 5558 acydburn
                                        trigger_error($user->lang[$lang . '_IMPORT_SUCCESS'] . adm_back_link($this->u_action));
679 5310 acydburn
                                }
680 5310 acydburn
                                else
681 5310 acydburn
                                {
682 5310 acydburn
                                        $pak_options = '';
683 5310 acydburn
684 5310 acydburn
                                        foreach ($_paks as $pak)
685 5310 acydburn
                                        {
686 5310 acydburn
                                                $pak_options .= '<option value="' . $pak . '">' . htmlspecialchars($pak) . '</option>';
687 5310 acydburn
                                        }
688 5310 acydburn
689 5310 acydburn
                                        $template->assign_vars(array(
690 5310 acydburn
                                                'S_CHOOSE_PAK'                => true,
691 5310 acydburn
                                                'S_PAK_OPTIONS'                => $pak_options,
692 5310 acydburn
693 5310 acydburn
                                                'L_TITLE'                        => $user->lang['ACP_' . $lang],
694 5310 acydburn
                                                'L_EXPLAIN'                        => $user->lang['ACP_' . $lang . '_EXPLAIN'],
695 5310 acydburn
                                                'L_NO_PAK_OPTIONS'        => $user->lang['NO_' . $lang . '_PAK'],
696 5310 acydburn
                                                'L_CURRENT'                        => $user->lang['CURRENT_' . $lang],
697 5310 acydburn
                                                'L_CURRENT_EXPLAIN'        => $user->lang['CURRENT_' . $lang . '_EXPLAIN'],
698 5310 acydburn
                                                'L_IMPORT_SUBMIT'        => $user->lang['IMPORT_' . $lang],
699 5310 acydburn
700 5558 acydburn
                                                'U_BACK'                => $this->u_action,
701 5558 acydburn
                                                'U_ACTION'                => $this->u_action . '&amp;action=import',
702 5310 acydburn
                                                )
703 5310 acydburn
                                        );
704 5310 acydburn
                                }
705 5310 acydburn
                        break;
706 5310 acydburn
707 5310 acydburn
                        case 'export':
708 5310 acydburn
709 5310 acydburn
                                $this->page_title = 'EXPORT_' . $lang;
710 5310 acydburn
                                $this->tpl_name = 'message_body';
711 5310 acydburn
712 5310 acydburn
                                $template->assign_vars(array(
713 5310 acydburn
                                        'MESSAGE_TITLE'                => $user->lang['EXPORT_' . $lang],
714 8014 davidmj
                                        'MESSAGE_TEXT'                => sprintf($user->lang['EXPORT_' . $lang . '_EXPLAIN'], '<a href="' . $this->u_action . '&amp;action=send">', '</a>'),
715 8014 davidmj
716 8014 davidmj
                                        'S_USER_NOTICE'                => true,
717 8014 davidmj
                                        )
718 5310 acydburn
                                );
719 5310 acydburn
720 5310 acydburn
                                return;
721 6149 acydburn
722 5310 acydburn
                        break;
723 5310 acydburn
724 5310 acydburn
                        case 'send':
725 5310 acydburn
726 8147 acydburn
                                $sql = "SELECT *
727 5310 acydburn
                                        FROM $table
728 5310 acydburn
                                        ORDER BY {$fields}_order";
729 5310 acydburn
                                $result = $db->sql_query($sql);
730 5310 acydburn
731 5310 acydburn
                                $pak = '';
732 5310 acydburn
                                while ($row = $db->sql_fetchrow($result))
733 5310 acydburn
                                {
734 5310 acydburn
                                        $pak .= "'" . addslashes($row[$fields . '_url']) . "', ";
735 5973 acydburn
                                        $pak .= "'" . addslashes($row[$fields . '_width']) . "', ";
736 5310 acydburn
                                        $pak .= "'" . addslashes($row[$fields . '_height']) . "', ";
737 6149 acydburn
                                        $pak .= "'" . addslashes($row['display_on_posting']) . "', ";
738 5973 acydburn
739 5310 acydburn
                                        if ($mode == 'smilies')
740 5310 acydburn
                                        {
741 5310 acydburn
                                                $pak .= "'" . addslashes($row['emotion']) . "', ";
742 5310 acydburn
                                                $pak .= "'" . addslashes($row['code']) . "', ";
743 5310 acydburn
                                        }
744 5973 acydburn
745 5310 acydburn
                                        $pak .= "\n";
746 5310 acydburn
                                }
747 5310 acydburn
                                $db->sql_freeresult($result);
748 5310 acydburn
749 5310 acydburn
                                if ($pak != '')
750 5310 acydburn
                                {
751 6149 acydburn
                                        garbage_collection();
752 5310 acydburn
753 5310 acydburn
                                        header('Pragma: public');
754 5310 acydburn
755 5310 acydburn
                                        // Send out the Headers
756 8112 acydburn
                                        header('Content-Type: text/x-delimtext; name="' . $mode . '.pak"');
757 8112 acydburn
                                        header('Content-Disposition: inline; filename="' . $mode . '.pak"');
758 5310 acydburn
                                        echo $pak;
759 5310 acydburn
760 5310 acydburn
                                        flush();
761 5310 acydburn
                                        exit;
762 5310 acydburn
                                }
763 5310 acydburn
                                else
764 5310 acydburn
                                {
765 6320 acydburn
                                        trigger_error($user->lang['NO_' . strtoupper($fields) . '_EXPORT'] . adm_back_link($this->u_action), E_USER_WARNING);
766 5310 acydburn
                                }
767 5310 acydburn
768 5310 acydburn
                        break;
769 5310 acydburn
770 5310 acydburn
                        case 'delete':
771 5310 acydburn
772 6816 acydburn
                                if (confirm_box(true))
773 5310 acydburn
                                {
774 6816 acydburn
                                        $sql = "DELETE FROM $table
775 6816 acydburn
                                                WHERE {$fields}_id = $icon_id";
776 6816 acydburn
                                        $db->sql_query($sql);
777 5310 acydburn
778 6816 acydburn
                                        switch ($mode)
779 6816 acydburn
                                        {
780 6816 acydburn
                                                case 'smilies':
781 6816 acydburn
                                                break;
782 5310 acydburn
783 6816 acydburn
                                                case 'icons':
784 6816 acydburn
                                                        // Reset appropriate icon_ids
785 8147 acydburn
                                                        $db->sql_query('UPDATE ' . TOPICS_TABLE . "
786 8147 acydburn
                                                                SET icon_id = 0
787 6816 acydburn
                                                                WHERE icon_id = $icon_id");
788 5310 acydburn
789 8147 acydburn
                                                        $db->sql_query('UPDATE ' . POSTS_TABLE . "
790 8147 acydburn
                                                                SET icon_id = 0
791 6816 acydburn
                                                                WHERE icon_id = $icon_id");
792 6816 acydburn
                                                break;
793 6816 acydburn
                                        }
794 5310 acydburn
795 6816 acydburn
                                        $notice = $user->lang[$lang . '_DELETED'];
796 5310 acydburn
797 7386 acydburn
                                        $cache->destroy('_icons');
798 6816 acydburn
                                        $cache->destroy('sql', $table);
799 6816 acydburn
                                }
800 6816 acydburn
                                else
801 6816 acydburn
                                {
802 6816 acydburn
                                        confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
803 6816 acydburn
                                                'i'                        => $id,
804 6816 acydburn
                                                'mode'                => $mode,
805 6816 acydburn
                                                'id'                => $icon_id,
806 6816 acydburn
                                                'action'        => 'delete',
807 6816 acydburn
                                        )));
808 6816 acydburn
                                }
809 6256 acydburn
810 5310 acydburn
                        break;
811 5310 acydburn
812 5310 acydburn
                        case 'move_up':
813 5310 acydburn
                        case 'move_down':
814 5310 acydburn
815 6478 acydburn
                                // Get current order id...
816 6478 acydburn
                                $sql = "SELECT {$fields}_order as current_order
817 6478 acydburn
                                        FROM $table
818 6478 acydburn
                                        WHERE {$fields}_id = $icon_id";
819 6478 acydburn
                                $result = $db->sql_query($sql);
820 6478 acydburn
                                $current_order = (int) $db->sql_fetchfield('current_order');
821 6478 acydburn
                                $db->sql_freeresult($result);
822 5310 acydburn
823 6478 acydburn
                                if ($current_order == 0 && $action == 'move_up')
824 6478 acydburn
                                {
825 6478 acydburn
                                        break;
826 6478 acydburn
                                }
827 6478 acydburn
828 6478 acydburn
                                // on move_down, switch position with next order_id...
829 6478 acydburn
                                // on move_up, switch position with previous order_id...
830 6478 acydburn
                                $switch_order_id = ($action == 'move_down') ? $current_order + 1 : $current_order - 1;
831 6478 acydburn
832 8147 acydburn
                                //
833 6478 acydburn
                                $sql = "UPDATE $table
834 6478 acydburn
                                        SET {$fields}_order = $current_order
835 6478 acydburn
                                        WHERE {$fields}_order = $switch_order_id
836 6478 acydburn
                                                AND {$fields}_id <> $icon_id";
837 5310 acydburn
                                $db->sql_query($sql);
838 5310 acydburn
839 6478 acydburn
                                // Only update the other entry too if the previous entry got updated
840 6478 acydburn
                                if ($db->sql_affectedrows())
841 6478 acydburn
                                {
842 6478 acydburn
                                        $sql = "UPDATE $table
843 6478 acydburn
                                                SET {$fields}_order = $switch_order_id
844 6478 acydburn
                                                WHERE {$fields}_order = $current_order
845 6478 acydburn
                                                        AND {$fields}_id = $icon_id";
846 6478 acydburn
                                        $db->sql_query($sql);
847 6478 acydburn
                                }
848 6478 acydburn
849 7386 acydburn
                                $cache->destroy('_icons');
850 5633 acydburn
                                $cache->destroy('sql', $table);
851 5310 acydburn
852 5310 acydburn
                        break;
853 5310 acydburn
                }
854 5310 acydburn
855 5310 acydburn
                // By default, check that image_order is valid and fix it if necessary
856 5310 acydburn
                $sql = "SELECT {$fields}_id AS order_id, {$fields}_order AS fields_order
857 5310 acydburn
                        FROM $table
858 5770 acydburn
                        ORDER BY display_on_posting DESC, {$fields}_order";
859 5310 acydburn
                $result = $db->sql_query($sql);
860 5310 acydburn
861 5310 acydburn
                if ($row = $db->sql_fetchrow($result))
862 5310 acydburn
                {
863 5310 acydburn
                        $order = 0;
864 5310 acydburn
                        do
865 5310 acydburn
                        {
866 5310 acydburn
                                ++$order;
867 5310 acydburn
                                if ($row['fields_order'] != $order)
868 5310 acydburn
                                {
869 5310 acydburn
                                        $db->sql_query("UPDATE $table
870 5310 acydburn
                                                SET {$fields}_order = $order
871 5310 acydburn
                                                WHERE {$fields}_id = " . $row['order_id']);
872 5310 acydburn
                                }
873 5310 acydburn
                        }
874 5310 acydburn
                        while ($row = $db->sql_fetchrow($result));
875 5310 acydburn
                }
876 5310 acydburn
                $db->sql_freeresult($result);
877 5310 acydburn
878 5310 acydburn
                $template->assign_vars(array(
879 5310 acydburn
                        'L_TITLE'                        => $user->lang['ACP_' . $lang],
880 5310 acydburn
                        'L_EXPLAIN'                        => $user->lang['ACP_' . $lang . '_EXPLAIN'],
881 5310 acydburn
                        'L_IMPORT'                        => $user->lang['IMPORT_' . $lang],
882 5310 acydburn
                        'L_EXPORT'                        => $user->lang['EXPORT_' . $lang],
883 5310 acydburn
                        'L_NOT_DISPLAYED'        => $user->lang[$lang . '_NOT_DISPLAYED'],
884 5310 acydburn
                        'L_ICON_ADD'                => $user->lang['ADD_' . $lang],
885 5310 acydburn
                        'L_ICON_EDIT'                => $user->lang['EDIT_' . $lang],
886 5310 acydburn
887 5310 acydburn
                        'NOTICE'                        => $notice,
888 5310 acydburn
                        'COLSPAN'                        => ($mode == 'smilies') ? 5 : 3,
889 5310 acydburn
890 5310 acydburn
                        'S_SMILIES'                        => ($mode == 'smilies') ? true : false,
891 5310 acydburn
892 5558 acydburn
                        'U_ACTION'                        => $this->u_action,
893 5558 acydburn
                        'U_IMPORT'                        => $this->u_action . '&amp;action=import',
894 5558 acydburn
                        'U_EXPORT'                        => $this->u_action . '&amp;action=export',
895 5310 acydburn
                        )
896 5310 acydburn
                );
897 5310 acydburn
898 5310 acydburn
                $spacer = false;
899 9764 acydburn
                $pagination_start = request_var('start', 0);
900 9764 acydburn
901 9772 aptx
                $item_count = $this->item_count($table);
902 5310 acydburn
903 8147 acydburn
                $sql = "SELECT *
904 5310 acydburn
                        FROM $table
905 5770 acydburn
                        ORDER BY {$fields}_order ASC";
906 9764 acydburn
                $result = $db->sql_query_limit($sql, $config['smilies_per_page'], $pagination_start);
907 5310 acydburn
908 5310 acydburn
                while ($row = $db->sql_fetchrow($result))
909 5310 acydburn
                {
910 5310 acydburn
                        $alt_text = ($mode == 'smilies') ? $row['code'] : '';
911 5310 acydburn
912 5310 acydburn
                        $template->assign_block_vars('items', array(
913 5310 acydburn
                                'S_SPACER'                => (!$spacer && !$row['display_on_posting']) ? true : false,
914 5310 acydburn
                                'ALT_TEXT'                => $alt_text,
915 5310 acydburn
                                'IMG_SRC'                => $phpbb_root_path . $img_path . '/' . $row[$fields . '_url'],
916 5310 acydburn
                                'WIDTH'                        => $row[$fields . '_width'],
917 5310 acydburn
                                'HEIGHT'                => $row[$fields . '_height'],
918 5310 acydburn
                                'CODE'                        => (isset($row['code'])) ? $row['code'] : '',
919 5310 acydburn
                                'EMOTION'                => (isset($row['emotion'])) ? $row['emotion'] : '',
920 5558 acydburn
                                'U_EDIT'                => $this->u_action . '&amp;action=edit&amp;id=' . $row[$fields . '_id'],
921 5558 acydburn
                                'U_DELETE'                => $this->u_action . '&amp;action=delete&amp;id=' . $row[$fields . '_id'],
922 9763 aptx
                                'U_MOVE_UP'                => $this->u_action . '&amp;action=move_up&amp;id=' . $row[$fields . '_id'] . '&amp;start=' . $pagination_start,
923 9763 aptx
                                'U_MOVE_DOWN'        => $this->u_action . '&amp;action=move_down&amp;id=' . $row[$fields . '_id'] . '&amp;start=' . $pagination_start,
924 9763 aptx
                        ));
925 5310 acydburn
926 5310 acydburn
                        if (!$spacer && !$row['display_on_posting'])
927 5310 acydburn
                        {
928 5310 acydburn
                                $spacer = true;
929 5310 acydburn
                        }
930 5310 acydburn
                }
931 5310 acydburn
                $db->sql_freeresult($result);
932 9764 acydburn
933 9766 acydburn
                $template->assign_var('PAGINATION',
934 9766 acydburn
                        generate_pagination($this->u_action, $item_count, $config['smilies_per_page'], $pagination_start, true)
935 9766 acydburn
                );
936 5310 acydburn
        }
937 10234 acydburn
938 9772 aptx
        /**
939 9772 aptx
         * Returns the count of smilies or icons in the database
940 9772 aptx
         *
941 9772 aptx
         * @param string $table The table of items to count.
942 9772 aptx
         * @return int number of items
943 9772 aptx
         */
944 9772 aptx
        /* private */ function item_count($table)
945 9772 aptx
        {
946 9772 aptx
                global $db;
947 9772 aptx
948 10484 bantu
                $sql = "SELECT COUNT(*) AS item_count
949 9772 aptx
                        FROM $table";
950 9772 aptx
                $result = $db->sql_query($sql);
951 10484 bantu
                $item_count = (int) $db->sql_fetchfield('item_count');
952 9772 aptx
                $db->sql_freeresult($result);
953 10484 bantu
954 9772 aptx
                return $item_count;
955 9772 aptx
        }
956 5310 acydburn
}
957 5310 acydburn
958 5310 acydburn
?>