~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/php/phpBB3/includes/acp/acp_icons.php

Merge setup-stuff.

phpBB is gone, configuration, setup and jail building are completely redone.

Please read doc/setup/install_proc.txt, or you'll not get far.

Show diffs side-by-side

added added

removed removed

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