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

« back to all changes in this revision

Viewing changes to www/php/phpBB3/includes/acp/acp_reasons.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_reasons.php,v 1.24 2007/10/05 14:36:32 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
 
* @package acp
21
 
*/
22
 
class acp_reasons
23
 
{
24
 
        var $u_action;
25
 
 
26
 
        function main($id, $mode)
27
 
        {
28
 
                global $db, $user, $auth, $template, $cache;
29
 
                global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
30
 
 
31
 
                $user->add_lang(array('mcp', 'acp/posting'));
32
 
 
33
 
                // Set up general vars
34
 
                $action = request_var('action', '');
35
 
                $submit = (isset($_POST['submit'])) ? true : false;
36
 
                $reason_id = request_var('id', 0);
37
 
 
38
 
                $this->tpl_name = 'acp_reasons';
39
 
                $this->page_title = 'ACP_REASONS';
40
 
 
41
 
                $form_name = 'acp_reason';
42
 
                add_form_key('acp_reason');
43
 
 
44
 
                $error = array();
45
 
 
46
 
                switch ($action)
47
 
                {
48
 
                        case 'add':
49
 
                        case 'edit':
50
 
 
51
 
                                $reason_row = array(
52
 
                                        'reason_title'                  => utf8_normalize_nfc(request_var('reason_title', '', true)),
53
 
                                        'reason_description'    => utf8_normalize_nfc(request_var('reason_description', '', true)),
54
 
                                );
55
 
 
56
 
                                if ($submit)
57
 
                                {
58
 
                                        if (!check_form_key($form_name))
59
 
                                        {
60
 
                                                $error[] = $user->lang['FORM_INVALID'];
61
 
                                        }
62
 
                                        // Reason specified?
63
 
                                        if (!$reason_row['reason_title'] || !$reason_row['reason_description'])
64
 
                                        {
65
 
                                                $error[] = $user->lang['NO_REASON_INFO'];
66
 
                                        }
67
 
 
68
 
                                        $check_double = ($action == 'add') ? true : false;
69
 
 
70
 
                                        if ($action == 'edit')
71
 
                                        {
72
 
                                                $sql = 'SELECT reason_title
73
 
                                                        FROM ' . REPORTS_REASONS_TABLE . "
74
 
                                                        WHERE reason_id = $reason_id";
75
 
                                                $result = $db->sql_query($sql);
76
 
                                                $row = $db->sql_fetchrow($result);
77
 
                                                $db->sql_freeresult($result);
78
 
 
79
 
                                                if (strtolower($row['reason_title']) == 'other' || strtolower($reason_row['reason_title']) == 'other')
80
 
                                                {
81
 
                                                        $reason_row['reason_title'] = 'other';
82
 
                                                }
83
 
 
84
 
                                                if ($row['reason_title'] != $reason_row['reason_title'])
85
 
                                                {
86
 
                                                        $check_double = true;
87
 
                                                }
88
 
                                        }
89
 
 
90
 
                                        // Check for same reason if adding it...
91
 
                                        if ($check_double)
92
 
                                        {
93
 
                                                $sql = 'SELECT reason_id
94
 
                                                        FROM ' . REPORTS_REASONS_TABLE . "
95
 
                                                        WHERE reason_title = '" . $db->sql_escape($reason_row['reason_title']) . "'";
96
 
                                                $result = $db->sql_query($sql);
97
 
                                                $row = $db->sql_fetchrow($result);
98
 
                                                $db->sql_freeresult($result);
99
 
 
100
 
                                                if ($row || ($action == 'add' && strtolower($reason_row['reason_title']) == 'other'))
101
 
                                                {
102
 
                                                        $error[] = $user->lang['REASON_ALREADY_EXIST'];
103
 
                                                }
104
 
                                        }
105
 
 
106
 
                                        if (!sizeof($error))
107
 
                                        {
108
 
                                                // New reason?
109
 
                                                if ($action == 'add')
110
 
                                                {
111
 
                                                        // Get new order...
112
 
                                                        $sql = 'SELECT MAX(reason_order) as max_reason_order
113
 
                                                                FROM ' . REPORTS_REASONS_TABLE;
114
 
                                                        $result = $db->sql_query($sql);
115
 
                                                        $max_order = (int) $db->sql_fetchfield('max_reason_order');
116
 
                                                        $db->sql_freeresult($result);
117
 
                                                        
118
 
                                                        $sql_ary = array(
119
 
                                                                'reason_title'                  => (string) $reason_row['reason_title'],
120
 
                                                                'reason_description'    => (string) $reason_row['reason_description'],
121
 
                                                                'reason_order'                  => $max_order + 1
122
 
                                                        );
123
 
 
124
 
                                                        $db->sql_query('INSERT INTO ' . REPORTS_REASONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
125
 
 
126
 
                                                        $log = 'ADDED';
127
 
                                                }
128
 
                                                else if ($reason_id)
129
 
                                                {
130
 
                                                        $sql_ary = array(
131
 
                                                                'reason_title'                  => (string) $reason_row['reason_title'],
132
 
                                                                'reason_description'    => (string) $reason_row['reason_description'],
133
 
                                                        );
134
 
 
135
 
                                                        $db->sql_query('UPDATE ' . REPORTS_REASONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
136
 
                                                                WHERE reason_id = ' . $reason_id);
137
 
 
138
 
                                                        $log = 'UPDATED';
139
 
                                                }
140
 
 
141
 
                                                add_log('admin', 'LOG_REASON_' . $log, $reason_row['reason_title']);
142
 
                                                trigger_error($user->lang['REASON_' . $log] . adm_back_link($this->u_action));
143
 
                                        }
144
 
                                }
145
 
                                else if ($reason_id)
146
 
                                {
147
 
                                        $sql = 'SELECT *
148
 
                                                FROM ' . REPORTS_REASONS_TABLE . '
149
 
                                                WHERE reason_id = ' . $reason_id;
150
 
                                        $result = $db->sql_query($sql);
151
 
                                        $reason_row = $db->sql_fetchrow($result);
152
 
                                        $db->sql_freeresult($result);
153
 
 
154
 
                                        if (!$reason_row)
155
 
                                        {
156
 
                                                trigger_error($user->lang['NO_REASON'] . adm_back_link($this->u_action), E_USER_WARNING);
157
 
                                        }
158
 
                                }
159
 
 
160
 
                                $l_title = ($action == 'edit') ? 'EDIT' : 'ADD';
161
 
 
162
 
                                $translated = false;
163
 
 
164
 
                                // If the reason is defined within the language file, we will use the localized version, else just use the database entry...
165
 
                                if (isset($user->lang['report_reasons']['TITLE'][strtoupper($reason_row['reason_title'])]) && isset($user->lang['report_reasons']['DESCRIPTION'][strtoupper($reason_row['reason_title'])]))
166
 
                                {
167
 
                                        $translated = true;
168
 
                                }
169
 
 
170
 
                                $template->assign_vars(array(
171
 
                                        'L_TITLE'               => $user->lang['REASON_' . $l_title],
172
 
                                        'U_ACTION'              => $this->u_action . "&amp;id=$reason_id&amp;action=$action",
173
 
                                        'U_BACK'                => $this->u_action,
174
 
                                        'ERROR_MSG'             => (sizeof($error)) ? implode('<br />', $error) : '',
175
 
                                        
176
 
                                        'REASON_TITLE'                  => $reason_row['reason_title'],
177
 
                                        'REASON_DESCRIPTION'    => $reason_row['reason_description'],
178
 
 
179
 
                                        'TRANSLATED_TITLE'              => ($translated) ? $user->lang['report_reasons']['TITLE'][strtoupper($reason_row['reason_title'])] : '',
180
 
                                        'TRANSLATED_DESCRIPTION'=> ($translated) ? $user->lang['report_reasons']['DESCRIPTION'][strtoupper($reason_row['reason_title'])] : '',
181
 
 
182
 
                                        'S_AVAILABLE_TITLES'    => implode(', ', array_map('htmlspecialchars', array_keys($user->lang['report_reasons']['TITLE']))),
183
 
                                        'S_EDIT_REASON'                 => true,
184
 
                                        'S_TRANSLATED'                  => $translated,
185
 
                                        'S_ERROR'                               => (sizeof($error)) ? true : false,
186
 
                                        )
187
 
                                );
188
 
 
189
 
                                return;
190
 
                        break;
191
 
 
192
 
                        case 'delete':
193
 
 
194
 
                                $sql = 'SELECT *
195
 
                                        FROM ' . REPORTS_REASONS_TABLE . '
196
 
                                        WHERE reason_id = ' . $reason_id;
197
 
                                $result = $db->sql_query($sql);
198
 
                                $reason_row = $db->sql_fetchrow($result);
199
 
                                $db->sql_freeresult($result);
200
 
 
201
 
                                if (!$reason_row)
202
 
                                {
203
 
                                        trigger_error($user->lang['NO_REASON'] . adm_back_link($this->u_action), E_USER_WARNING);
204
 
                                }
205
 
 
206
 
                                if (strtolower($reason_row['reason_title']) == 'other')
207
 
                                {
208
 
                                        trigger_error($user->lang['NO_REMOVE_DEFAULT_REASON'] . adm_back_link($this->u_action), E_USER_WARNING);
209
 
                                }
210
 
 
211
 
                                // Let the deletion be confirmed...
212
 
                                if (confirm_box(true))
213
 
                                {
214
 
                                        $sql = 'SELECT reason_id
215
 
                                                FROM ' . REPORTS_REASONS_TABLE . "
216
 
                                                WHERE LOWER(reason_title) = 'other'";
217
 
                                        $result = $db->sql_query($sql);
218
 
                                        $other_reason_id = (int) $db->sql_fetchfield('reason_id');
219
 
                                        $db->sql_freeresult($result);
220
 
 
221
 
                                        switch ($db->sql_layer)
222
 
                                        {
223
 
                                                // The ugly one!
224
 
                                                case 'mysqli':
225
 
                                                case 'mysql4':
226
 
                                                case 'mysql':
227
 
                                                        // Change the reports using this reason to 'other'
228
 
                                                        $sql = 'UPDATE ' . REPORTS_TABLE . '
229
 
                                                                SET reason_id = ' . $other_reason_id . ", report_text = CONCAT('" . $db->sql_escape($reason_row['reason_description']) . "\n\n', report_text)
230
 
                                                                WHERE reason_id = $reason_id";
231
 
                                                break;
232
 
 
233
 
                                                // Standard? What's that?
234
 
                                                case 'mssql':
235
 
                                                case 'mssql_odbc':
236
 
                                                        // Change the reports using this reason to 'other'
237
 
                                                        $sql = "DECLARE @ptrval binary(16)
238
 
 
239
 
                                                                        SELECT @ptrval = TEXTPTR(report_text)
240
 
                                                                                FROM " . REPORTS_TABLE . "
241
 
                                                                        WHERE reason_id = " . $reason_id . "
242
 
 
243
 
                                                                        UPDATETEXT " . REPORTS_TABLE . ".report_text @ptrval 0 0 '" . $db->sql_escape($reason_row['reason_description']) . "\n\n'
244
 
 
245
 
                                                                        UPDATE " . REPORTS_TABLE . '
246
 
                                                                                SET reason_id = ' . $other_reason_id . "
247
 
                                                                        WHERE reason_id = $reason_id";
248
 
                                                break;
249
 
 
250
 
                                                // Teh standard
251
 
                                                case 'postgres':
252
 
                                                case 'oracle':
253
 
                                                case 'firebird':
254
 
                                                case 'sqlite':
255
 
                                                        // Change the reports using this reason to 'other'
256
 
                                                        $sql = 'UPDATE ' . REPORTS_TABLE . '
257
 
                                                                SET reason_id = ' . $other_reason_id . ", report_text = '" . $db->sql_escape($reason_row['reason_description']) . "\n\n' || report_text
258
 
                                                                WHERE reason_id = $reason_id";
259
 
                                                break;
260
 
                                        }
261
 
                                        $db->sql_query($sql);
262
 
 
263
 
                                        $db->sql_query('DELETE FROM ' . REPORTS_REASONS_TABLE . ' WHERE reason_id = ' . $reason_id);
264
 
 
265
 
                                        add_log('admin', 'LOG_REASON_REMOVED', $reason_row['reason_title']);
266
 
                                        trigger_error($user->lang['REASON_REMOVED'] . adm_back_link($this->u_action));
267
 
                                }
268
 
                                else
269
 
                                {
270
 
                                        confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
271
 
                                                'i'                     => $id,
272
 
                                                'mode'          => $mode,
273
 
                                                'action'        => $action,
274
 
                                                'id'            => $reason_id))
275
 
                                        );
276
 
                                }
277
 
 
278
 
                        break;
279
 
 
280
 
                        case 'move_up':
281
 
                        case 'move_down':
282
 
 
283
 
                                $order = request_var('order', 0);
284
 
                                $order_total = $order * 2 + (($action == 'move_up') ? -1 : 1);
285
 
 
286
 
                                $sql = 'UPDATE ' . REPORTS_REASONS_TABLE . '
287
 
                                        SET reason_order = ' . $order_total . ' - reason_order
288
 
                                        WHERE reason_order IN (' . $order . ', ' . (($action == 'move_up') ? $order - 1 : $order + 1) . ')';
289
 
                                $db->sql_query($sql);
290
 
 
291
 
                        break;
292
 
                }
293
 
 
294
 
                // By default, check that order is valid and fix it if necessary
295
 
                $sql = 'SELECT reason_id, reason_order
296
 
                        FROM ' . REPORTS_REASONS_TABLE . '
297
 
                        ORDER BY reason_order';
298
 
                $result = $db->sql_query($sql);
299
 
 
300
 
                if ($row = $db->sql_fetchrow($result))
301
 
                {
302
 
                        $order = 0;
303
 
                        do
304
 
                        {
305
 
                                ++$order;
306
 
                                
307
 
                                if ($row['reason_order'] != $order)
308
 
                                {
309
 
                                        $sql = 'UPDATE ' . REPORTS_REASONS_TABLE . "
310
 
                                                SET reason_order = $order
311
 
                                                WHERE reason_id = {$row['reason_id']}";
312
 
                                        $db->sql_query($sql);
313
 
                                }
314
 
                        }
315
 
                        while ($row = $db->sql_fetchrow($result));
316
 
                }
317
 
                $db->sql_freeresult($result);
318
 
 
319
 
                $template->assign_vars(array(
320
 
                        'U_ACTION'                      => $this->u_action,
321
 
                        )
322
 
                );
323
 
 
324
 
                // Reason count
325
 
                $sql = 'SELECT reason_id, COUNT(reason_id) AS reason_count
326
 
                        FROM ' . REPORTS_TABLE . '
327
 
                        GROUP BY reason_id';
328
 
                $result = $db->sql_query($sql);
329
 
 
330
 
                $reason_count = array();
331
 
                while ($row = $db->sql_fetchrow($result))
332
 
                {
333
 
                        $reason_count[$row['reason_id']] = $row['reason_count'];
334
 
                }
335
 
                $db->sql_freeresult($result);
336
 
 
337
 
                $sql = 'SELECT *
338
 
                        FROM ' . REPORTS_REASONS_TABLE . '
339
 
                        ORDER BY reason_order ASC';
340
 
                $result = $db->sql_query($sql);
341
 
 
342
 
                while ($row = $db->sql_fetchrow($result))
343
 
                {
344
 
                        $translated = false;
345
 
                        $other_reason = ($row['reason_title'] == 'other') ? true : false;
346
 
 
347
 
                        // If the reason is defined within the language file, we will use the localized version, else just use the database entry...
348
 
                        if (isset($user->lang['report_reasons']['TITLE'][strtoupper($row['reason_title'])]) && isset($user->lang['report_reasons']['DESCRIPTION'][strtoupper($row['reason_title'])]))
349
 
                        {
350
 
                                $row['reason_description'] = $user->lang['report_reasons']['DESCRIPTION'][strtoupper($row['reason_title'])];
351
 
                                $row['reason_title'] = $user->lang['report_reasons']['TITLE'][strtoupper($row['reason_title'])];
352
 
 
353
 
                                $translated = true;
354
 
                        }
355
 
 
356
 
                        $template->assign_block_vars('reasons', array(
357
 
                                'REASON_TITLE'                  => $row['reason_title'],
358
 
                                'REASON_DESCRIPTION'    => $row['reason_description'],
359
 
                                'REASON_COUNT'                  => (isset($reason_count[$row['reason_id']])) ? $reason_count[$row['reason_id']] : 0,
360
 
 
361
 
                                'S_TRANSLATED'          => $translated,
362
 
                                'S_OTHER_REASON'        => $other_reason,
363
 
 
364
 
                                'U_EDIT'                => $this->u_action . '&amp;action=edit&amp;id=' . $row['reason_id'],
365
 
                                'U_DELETE'              => (!$other_reason) ? $this->u_action . '&amp;action=delete&amp;id=' . $row['reason_id'] : '',
366
 
                                'U_MOVE_UP'             => $this->u_action . '&amp;action=move_up&amp;order=' . $row['reason_order'],
367
 
                                'U_MOVE_DOWN'   => $this->u_action . '&amp;action=move_down&amp;order=' . $row['reason_order'])
368
 
                        );
369
 
                }
370
 
                $db->sql_freeresult($result);
371
 
        }
372
 
}
373
 
 
374
 
?>
 
 
b'\\ No newline at end of file'