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

« back to all changes in this revision

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

  • Committer: dcoles
  • Date: 2008-02-13 04:10:55 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:443
Added Forum application along with unmodifed version of phpBB3 "Olympus" 3.0.0

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'