phpBB
Statistics
| Revision:

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

History | View | Annotate | Download (4.5 kB)

1 5310 acydburn
<?php
2 8147 acydburn
/**
3 5310 acydburn
*
4 5310 acydburn
* @package acp
5 5310 acydburn
* @version $Id$
6 8147 acydburn
* @copyright (c) 2005 phpBB Group
7 8147 acydburn
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
8 5310 acydburn
*
9 5310 acydburn
*/
10 5310 acydburn
11 5310 acydburn
/**
12 8147 acydburn
* @ignore
13 8147 acydburn
*/
14 8147 acydburn
if (!defined('IN_PHPBB'))
15 8147 acydburn
{
16 8147 acydburn
        exit;
17 8147 acydburn
}
18 8147 acydburn
19 8147 acydburn
/**
20 6058 acydburn
* @todo [words] check regular expressions for special char replacements (stored specialchared in db)
21 5310 acydburn
* @package acp
22 5310 acydburn
*/
23 5310 acydburn
class acp_words
24 5310 acydburn
{
25 5558 acydburn
        var $u_action;
26 10039 bantu
27 5310 acydburn
        function main($id, $mode)
28 5310 acydburn
        {
29 5310 acydburn
                global $db, $user, $auth, $template, $cache;
30 6015 acydburn
                global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
31 5310 acydburn
32 5310 acydburn
                $user->add_lang('acp/posting');
33 5310 acydburn
34 5310 acydburn
                // Set up general vars
35 5310 acydburn
                $action = request_var('action', '');
36 5310 acydburn
                $action = (isset($_POST['add'])) ? 'add' : ((isset($_POST['save'])) ? 'save' : $action);
37 5310 acydburn
38 5310 acydburn
                $s_hidden_fields = '';
39 5310 acydburn
                $word_info = array();
40 5310 acydburn
41 5310 acydburn
                $this->tpl_name = 'acp_words';
42 5310 acydburn
                $this->page_title = 'ACP_WORDS';
43 5310 acydburn
44 8120 kellanved
                $form_name = 'acp_words';
45 8120 kellanved
                add_form_key($form_name);
46 8120 kellanved
47 5310 acydburn
                switch ($action)
48 5310 acydburn
                {
49 5310 acydburn
                        case 'edit':
50 10039 bantu
51 5310 acydburn
                                $word_id = request_var('id', 0);
52 10039 bantu
53 5310 acydburn
                                if (!$word_id)
54 5310 acydburn
                                {
55 6320 acydburn
                                        trigger_error($user->lang['NO_WORD'] . adm_back_link($this->u_action), E_USER_WARNING);
56 5310 acydburn
                                }
57 5310 acydburn
58 5310 acydburn
                                $sql = 'SELECT *
59 5310 acydburn
                                        FROM ' . WORDS_TABLE . "
60 5310 acydburn
                                        WHERE word_id = $word_id";
61 5310 acydburn
                                $result = $db->sql_query($sql);
62 5310 acydburn
                                $word_info = $db->sql_fetchrow($result);
63 5310 acydburn
                                $db->sql_freeresult($result);
64 5310 acydburn
65 5310 acydburn
                                $s_hidden_fields .= '<input type="hidden" name="id" value="' . $word_id . '" />';
66 5310 acydburn
67 5310 acydburn
                        case 'add':
68 5310 acydburn
69 5310 acydburn
                                $template->assign_vars(array(
70 5310 acydburn
                                        'S_EDIT_WORD'                => true,
71 5558 acydburn
                                        'U_ACTION'                        => $this->u_action,
72 5558 acydburn
                                        'U_BACK'                        => $this->u_action,
73 5310 acydburn
                                        'WORD'                                => (isset($word_info['word'])) ? $word_info['word'] : '',
74 5310 acydburn
                                        'REPLACEMENT'                => (isset($word_info['replacement'])) ? $word_info['replacement'] : '',
75 5310 acydburn
                                        'S_HIDDEN_FIELDS'        => $s_hidden_fields)
76 5310 acydburn
                                );
77 10039 bantu
78 5310 acydburn
                                return;
79 5310 acydburn
80 5310 acydburn
                        break;
81 5310 acydburn
82 5310 acydburn
                        case 'save':
83 8120 kellanved
84 8123 kellanved
                                if (!check_form_key($form_name))
85 8120 kellanved
                                {
86 8120 kellanved
                                        trigger_error($user->lang['FORM_INVALID']. adm_back_link($this->u_action), E_USER_WARNING);
87 8120 kellanved
                                }
88 10039 bantu
89 6584 acydburn
                                $word_id                = request_var('id', 0);
90 6584 acydburn
                                $word                        = utf8_normalize_nfc(request_var('word', '', true));
91 6584 acydburn
                                $replacement        = utf8_normalize_nfc(request_var('replacement', '', true));
92 10039 bantu
93 10039 bantu
                                if ($word === '' || $replacement === '')
94 5310 acydburn
                                {
95 6320 acydburn
                                        trigger_error($user->lang['ENTER_WORD'] . adm_back_link($this->u_action), E_USER_WARNING);
96 5310 acydburn
                                }
97 5310 acydburn
98 10913 git-gate
                                // Replace multiple consecutive asterisks with single one as those are not needed
99 10913 git-gate
                                $word = preg_replace('#\*{2,}#', '*', $word);
100 10913 git-gate
101 5310 acydburn
                                $sql_ary = array(
102 5310 acydburn
                                        'word'                        => $word,
103 5310 acydburn
                                        'replacement'        => $replacement
104 5310 acydburn
                                );
105 5310 acydburn
106 5310 acydburn
                                if ($word_id)
107 5310 acydburn
                                {
108 5310 acydburn
                                        $db->sql_query('UPDATE ' . WORDS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE word_id = ' . $word_id);
109 5310 acydburn
                                }
110 5310 acydburn
                                else
111 5310 acydburn
                                {
112 5310 acydburn
                                        $db->sql_query('INSERT INTO ' . WORDS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
113 5310 acydburn
                                }
114 5310 acydburn
115 7386 acydburn
                                $cache->destroy('_word_censors');
116 5310 acydburn
117 5310 acydburn
                                $log_action = ($word_id) ? 'LOG_WORD_EDIT' : 'LOG_WORD_ADD';
118 5310 acydburn
                                add_log('admin', $log_action, $word);
119 5310 acydburn
120 5310 acydburn
                                $message = ($word_id) ? $user->lang['WORD_UPDATED'] : $user->lang['WORD_ADDED'];
121 5558 acydburn
                                trigger_error($message . adm_back_link($this->u_action));
122 5310 acydburn
123 5310 acydburn
                        break;
124 5310 acydburn
125 5310 acydburn
                        case 'delete':
126 5310 acydburn
127 5310 acydburn
                                $word_id = request_var('id', 0);
128 5310 acydburn
129 5310 acydburn
                                if (!$word_id)
130 5310 acydburn
                                {
131 6320 acydburn
                                        trigger_error($user->lang['NO_WORD'] . adm_back_link($this->u_action), E_USER_WARNING);
132 5310 acydburn
                                }
133 5310 acydburn
134 6816 acydburn
                                if (confirm_box(true))
135 6816 acydburn
                                {
136 6816 acydburn
                                        $sql = 'SELECT word
137 6816 acydburn
                                                FROM ' . WORDS_TABLE . "
138 6816 acydburn
                                                WHERE word_id = $word_id";
139 6816 acydburn
                                        $result = $db->sql_query($sql);
140 6816 acydburn
                                        $deleted_word = $db->sql_fetchfield('word');
141 6816 acydburn
                                        $db->sql_freeresult($result);
142 5310 acydburn
143 6816 acydburn
                                        $sql = 'DELETE FROM ' . WORDS_TABLE . "
144 6816 acydburn
                                                WHERE word_id = $word_id";
145 6816 acydburn
                                        $db->sql_query($sql);
146 5310 acydburn
147 7386 acydburn
                                        $cache->destroy('_word_censors');
148 5310 acydburn
149 6816 acydburn
                                        add_log('admin', 'LOG_WORD_DELETE', $deleted_word);
150 5310 acydburn
151 6816 acydburn
                                        trigger_error($user->lang['WORD_REMOVED'] . adm_back_link($this->u_action));
152 6816 acydburn
                                }
153 6816 acydburn
                                else
154 6816 acydburn
                                {
155 6816 acydburn
                                        confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
156 6816 acydburn
                                                'i'                        => $id,
157 6816 acydburn
                                                'mode'                => $mode,
158 6816 acydburn
                                                'id'                => $word_id,
159 6816 acydburn
                                                'action'        => 'delete',
160 6816 acydburn
                                        )));
161 6816 acydburn
                                }
162 6816 acydburn
163 5310 acydburn
                        break;
164 5310 acydburn
                }
165 5310 acydburn
166 5310 acydburn
167 5310 acydburn
                $template->assign_vars(array(
168 5558 acydburn
                        'U_ACTION'                        => $this->u_action,
169 5310 acydburn
                        'S_HIDDEN_FIELDS'        => $s_hidden_fields)
170 5310 acydburn
                );
171 5310 acydburn
172 5310 acydburn
                $sql = 'SELECT *
173 5310 acydburn
                        FROM ' . WORDS_TABLE . '
174 5310 acydburn
                        ORDER BY word';
175 5310 acydburn
                $result = $db->sql_query($sql);
176 5310 acydburn
177 5310 acydburn
                while ($row = $db->sql_fetchrow($result))
178 5310 acydburn
                {
179 5310 acydburn
                        $template->assign_block_vars('words', array(
180 5310 acydburn
                                'WORD'                        => $row['word'],
181 5310 acydburn
                                'REPLACEMENT'        => $row['replacement'],
182 5558 acydburn
                                'U_EDIT'                => $this->u_action . '&amp;action=edit&amp;id=' . $row['word_id'],
183 5558 acydburn
                                'U_DELETE'                => $this->u_action . '&amp;action=delete&amp;id=' . $row['word_id'])
184 5310 acydburn
                        );
185 5310 acydburn
                }
186 5310 acydburn
                $db->sql_freeresult($result);
187 5310 acydburn
        }
188 5310 acydburn
}
189 5310 acydburn
190 5310 acydburn
?>