~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: William Grant
  • Date: 2009-02-23 23:47:02 UTC
  • mfrom: (1099.1.211 new-dispatch)
  • Revision ID: grantw@unimelb.edu.au-20090223234702-db4b1llly46ignwo
Merge from lp:~ivle-dev/ivle/new-dispatch.

Pretty much everything changes. Reread the setup docs. Backup your databases.
Every file is now in a different installed location, the configuration system
is rewritten, the dispatch system is rewritten, URLs are different, the
database is different, worksheets and exercises are no longer on the
filesystem, we use a templating engine, jail service protocols are rewritten,
we don't repeat ourselves, we have authorization rewritten, phpBB is gone,
and probably lots of other things that I cannot remember.

This is certainly the biggest commit I have ever made, and hopefully
the largest I ever will.

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'