aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/acp
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2005-11-20 18:58:34 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2005-11-20 18:58:34 +0000
commit0202eb8a66920b43d37582bbd205a25f68523150 (patch)
treeb3a4305900778053b729f15bcca1b244d2d510f8 /phpBB/includes/acp
parent9f1f945d5d78f049bf44e0c6afb7eefeb549f406 (diff)
downloadforums-0202eb8a66920b43d37582bbd205a25f68523150.tar
forums-0202eb8a66920b43d37582bbd205a25f68523150.tar.gz
forums-0202eb8a66920b43d37582bbd205a25f68523150.tar.bz2
forums-0202eb8a66920b43d37582bbd205a25f68523150.tar.xz
forums-0202eb8a66920b43d37582bbd205a25f68523150.zip
- more acp additions and changes...
git-svn-id: file:///svn/phpbb/trunk@5310 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/acp')
-rw-r--r--phpBB/includes/acp/acp_attachments.php5
-rw-r--r--phpBB/includes/acp/acp_bbcodes.php356
-rw-r--r--phpBB/includes/acp/acp_board.php5
-rw-r--r--phpBB/includes/acp/acp_bots.php1
-rw-r--r--phpBB/includes/acp/acp_icons.php665
-rw-r--r--phpBB/includes/acp/acp_jabber.php3
-rw-r--r--phpBB/includes/acp/acp_main.php5
-rw-r--r--phpBB/includes/acp/acp_modules.php8
-rw-r--r--phpBB/includes/acp/acp_php_info.php1
-rw-r--r--phpBB/includes/acp/acp_words.php184
10 files changed, 1224 insertions, 9 deletions
diff --git a/phpBB/includes/acp/acp_attachments.php b/phpBB/includes/acp/acp_attachments.php
index fcd61377b8..25161d05f0 100644
--- a/phpBB/includes/acp/acp_attachments.php
+++ b/phpBB/includes/acp/acp_attachments.php
@@ -49,6 +49,7 @@ class acp_attachments
}
$this->tpl_name = 'acp_attachments';
+ $this->page_title = $l_title;
$template->assign_vars(array(
'L_TITLE' => $user->lang[$l_title],
@@ -117,7 +118,7 @@ class acp_attachments
if ($submit)
{
- add_log('admin', 'LOG_' . strtoupper($mode) . '_CONFIG');
+ add_log('admin', 'LOG_CONFIG_ATTACH');
// Check Settings
$this->test_upload($error, $new['upload_path'], false);
@@ -1077,7 +1078,7 @@ class acp_attachments
);
$message_parser->filename_data['filecomment'] = '';
- $filedata['post_attach'] = FALSE;
+ $filedata['post_attach'] = false;
// Submit Attachment
$attach_sql = $message_parser->attachment_data;
diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php
new file mode 100644
index 0000000000..9e8fb8feae
--- /dev/null
+++ b/phpBB/includes/acp/acp_bbcodes.php
@@ -0,0 +1,356 @@
+<?php
+/**
+*
+* @package acp
+* @version $Id$
+* @copyright (c) 2005 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
+
+/**
+* @package acp
+*/
+class acp_bbcodes
+{
+ function main($id, $mode)
+ {
+ global $db, $user, $auth, $template, $cache;
+ global $config, $SID, $phpbb_root_path, $phpbb_admin_path, $phpEx;
+
+ $user->add_lang('acp/posting');
+
+ // Set up general vars
+ $action = request_var('action', '');
+ $bbcode_id = request_var('bbcode', 0);
+
+ $this->tpl_name = 'acp_bbcodes';
+
+ $u_action = "{$phpbb_admin_path}index.$phpEx$SID&amp;i=$id&amp;mode=$mode";
+
+ // Set up mode-specific vars
+ switch ($action)
+ {
+ case 'add':
+ $bbcode_match = $bbcode_tpl = '';
+ break;
+
+ case 'edit':
+ $sql = 'SELECT bbcode_match, bbcode_tpl
+ FROM ' . BBCODES_TABLE . '
+ WHERE bbcode_id = ' . $bbcode_id;
+ $result = $db->sql_query($sql);
+
+ if (!$row = $db->sql_fetchrow($result))
+ {
+ trigger_error('BBCODE_NOT_EXIST');
+ }
+ $db->sql_freeresult($result);
+
+ $bbcode_match = $row['bbcode_match'];
+ $bbcode_tpl = htmlspecialchars($row['bbcode_tpl']);
+ break;
+
+ case 'modify':
+ $sql = 'SELECT bbcode_id
+ FROM ' . BBCODES_TABLE . '
+ WHERE bbcode_id = ' . $bbcode_id;
+ $result = $db->sql_query($sql);
+
+ if (!$row = $db->sql_fetchrow($result))
+ {
+ trigger_error('BBCODE_NOT_EXIST');
+ }
+ $db->sql_freeresult($result);
+
+ // No break here
+
+ case 'create':
+ $bbcode_match = (isset($_POST['bbcode_match'])) ? htmlspecialchars(stripslashes($_POST['bbcode_match'])) : '';
+ $bbcode_tpl = (isset($_POST['bbcode_tpl'])) ? stripslashes($_POST['bbcode_tpl']) : '';
+ break;
+ }
+
+ // Do major work
+ switch ($action)
+ {
+ case 'edit':
+ case 'add':
+
+ $template->assign_vars(array(
+ 'S_EDIT_BBCODE' => true,
+ 'U_BACK' => $u_action,
+ 'U_ACTION' => $u_action . '&amp;action=' . (($action == 'add') ? 'create' : 'modify') . (($bbcode_id) ? "&amp;bbcode=$bbcode_id" : ''),
+
+ 'BBCODE_MATCH' => $bbcode_match,
+ 'BBCODE_TPL' => $bbcode_tpl,
+ )
+ );
+
+ foreach ($user->lang['tokens'] as $token => $token_explain)
+ {
+ $template->assign_block_vars('token', array(
+ 'TOKEN' => '{' . $token . '}',
+ 'EXPLAIN' => $token_explain)
+ );
+ }
+
+ return;
+
+ break;
+
+ case 'modify':
+ case 'create':
+
+ $data = $this->build_regexp($bbcode_match, $bbcode_tpl);
+
+ $sql_ary = array(
+ 'bbcode_tag' => $data['bbcode_tag'],
+ 'bbcode_match' => $bbcode_match,
+ 'bbcode_tpl' => $bbcode_tpl,
+ 'first_pass_match' => $data['first_pass_match'],
+ 'first_pass_replace' => $data['first_pass_replace'],
+ 'second_pass_match' => $data['second_pass_match'],
+ 'second_pass_replace' => $data['second_pass_replace']
+ );
+
+ if ($action == 'create')
+ {
+ $sql = 'SELECT MAX(bbcode_id) as bbcode_id
+ FROM ' . BBCODES_TABLE;
+ $result = $db->sql_query($sql);
+ $row = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+
+ if ($row)
+ {
+ $bbcode_id = $row['bbcode_id'] + 1;
+ }
+ else
+ {
+ $sql = 'SELECT MIN(bbcode_id) AS min_id, MAX(bbcode_id) AS max_id
+ FROM ' . BBCODES_TABLE;
+ $result = $db->sql_query($sql);
+ $row = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+
+ if (empty($row['min_id']) || $row['min_id'] >= NUM_CORE_BBCODES)
+ {
+ $bbcode_id = NUM_CORE_BBCODES + 1;
+ }
+ else
+ {
+ $bbcode_id = $row['max_id'] + 1;
+ }
+ }
+
+ if ($bbcode_id > 31)
+ {
+ trigger_error('TOO_MANY_BBCODES');
+ }
+
+ $sql_ary['bbcode_id'] = (int) $bbcode_id;
+
+ $db->sql_query('INSERT INTO ' . BBCODES_TABLE . $db->sql_build_array('INSERT', $sql_ary));
+ $lang = 'BBCODE_ADDED';
+ $log_action = 'LOG_BBCODE_ADD';
+ }
+ else
+ {
+ $db->sql_query('UPDATE ' . BBCODES_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE bbcode_id = ' . $bbcode_id);
+ $lang = 'BBCODE_EDITED';
+ $log_action = 'LOG_BBCODE_EDIT';
+ }
+
+ add_log('admin', $log_action, $data['bbcode_tag']);
+
+ trigger_error($user->lang[$lang] . adm_back_link($u_action));
+
+ break;
+
+ case 'delete':
+ $sql = 'SELECT bbcode_tag
+ FROM ' . BBCODES_TABLE . "
+ WHERE bbcode_id = $bbcode_id";
+ $result = $db->sql_query($sql);
+
+ if ($row = $db->sql_fetchrow($result))
+ {
+ $db->sql_query('DELETE FROM ' . BBCODES_TABLE . " WHERE bbcode_id = $bbcode_id");
+ add_log('admin', 'LOG_BBCODE_DELETE', $row['bbcode_tag']);
+ }
+ $db->sql_freeresult($result);
+
+ break;
+ }
+
+ $template->assign_vars(array(
+ 'U_ACTION' => $u_action . '&amp;mode=add')
+ );
+
+ $sql = 'SELECT *
+ FROM ' . BBCODES_TABLE . '
+ ORDER BY bbcode_id';
+ $result = $db->sql_query($sql);
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $template->assign_block_vars('bbcodes', array(
+ 'BBCODE_TAG' => $row['bbcode_tag'],
+ 'U_EDIT' => $u_action . '&amp;action=edit&amp;bbcode=' . $row['bbcode_id'],
+ 'U_DELETE' => $u_action . '&amp;action=delete&amp;bbcode=' . $row['bbcode_id'])
+ );
+ }
+ $db->sql_freeresult($result);
+ }
+
+ /*
+ * Build regular expression for custom bbcode
+ */
+ function build_regexp($msg_bbcode, $msg_html)
+ {
+ $msg_bbcode = trim($msg_bbcode);
+ $msg_html = trim($msg_html);
+
+ $fp_match = preg_quote($msg_bbcode, '!');
+ $fp_replace = preg_replace('#^\[(.*?)\]#', '[$1:$uid]', $msg_bbcode);
+ $fp_replace = preg_replace('#\[/(.*?)\]$#', '[/$1:$uid]', $fp_replace);
+
+ $sp_match = preg_quote($msg_bbcode, '!');
+ $sp_match = preg_replace('#^\\\\\[(.*?)\\\\\]#', '\[$1:$uid\]', $sp_match);
+ $sp_match = preg_replace('#\\\\\[/(.*?)\\\\\]$#', '\[/$1:$uid\]', $sp_match);
+ $sp_replace = $msg_html;
+
+ // @todo Make sure to change this too if something changed in message parsing
+ $tokens = array(
+ 'URL' => array(
+ '!([a-z0-9]+://)?([^?].*?[^ \t\n\r<"]*)!ie' => "(('\$1') ? '\$1\$2' : 'http://\$2')"
+ ),
+ 'LOCAL_URL' => array(
+ '!([^:]+/[^ \t\n\r<"]*)!' => '$1'
+ ),
+ 'EMAIL' => array(
+ '!([a-z0-9]+[a-z0-9\-\._]*@(?:(?:[0-9]{1,3}\.){3,5}[0-9]{1,3}|[a-z0-9]+[a-z0-9\-\._]*\.[a-z]+))!i' => '$1'
+ ),
+ 'TEXT' => array(
+ '!(.*?)!es' => "str_replace('\\\"', '&quot;', str_replace('\\'', '&#39;', '\$1'))"
+ ),
+ 'COLOR' => array(
+ '!([a-z]+|#[0-9abcdef]+!i' => '$1'
+ ),
+ 'NUMBER' => array(
+ '!([0-9]+)!' => '$1'
+ )
+ );
+
+ if (preg_match_all('/\{(' . implode('|', array_keys($tokens)) . ')[0-9]*\}/i', $msg_bbcode, $m))
+ {
+ $pad = 0;
+ $modifiers = 'i';
+
+ foreach ($m[0] as $n => $token)
+ {
+ $token_type = $m[1][$n];
+
+ reset($tokens[$token_type]);
+ list($match, $replace) = each($tokens[$token_type]);
+
+ // Pad backreference numbers from tokens
+ if (preg_match_all('/(?<!\\\\)\$([0-9]+)/', $replace, $repad))
+ {
+ $repad = $pad + sizeof(array_unique($repad[0]));
+ $replace = preg_replace('/(?<!\\\\)\$([0-9]+)/e', "'\$' . (\$1 + \$pad)", $replace);
+ $pad = $repad;
+ }
+
+ // Obtain pattern modifiers to use and alter the regex accordingly
+ $regex = preg_replace('/!(.*)!([a-z]*)/', '$1', $match);
+ $regex_modifiers = preg_replace('/!(.*)!([a-z]*)/', '$2', $match);
+
+ for ($i = 0, $size = strlen($regex_modifiers); $i < $size; ++$i)
+ {
+ if (strpos($modifiers, $regex_modifiers[$i]) === false)
+ {
+ $modifiers .= $regex_modifiers[$i];
+
+ if ($regex_modifiers[$i] == 'e')
+ {
+ $fp_replace = "'" . str_replace("'", "\\'", $fp_replace) . "'";
+ }
+ }
+
+ if ($regex_modifiers[$i] == 'e')
+ {
+ $replace = "'.$replace.'";
+ }
+ }
+
+ $fp_match = str_replace(preg_quote($token, '!'), $regex, $fp_match);
+ $fp_replace = str_replace($token, $replace, $fp_replace);
+
+ $sp_match = str_replace(preg_quote($token, '!'), '(.*?)', $sp_match);
+ $sp_replace = str_replace($token, '$' . ($n + 1), $sp_replace);
+ }
+
+ $fp_match = '!' . $fp_match . '!' . $modifiers;
+ $sp_match = '!' . $sp_match . '!s';
+
+ if (strpos($fp_match, 'e') !== false)
+ {
+ $fp_replace = str_replace("'.'", '', $fp_replace);
+ $fp_replace = str_replace(".''.", '.', $fp_replace);
+ }
+ }
+ else
+ {
+ // No replacement is present, no need for a second-pass pattern replacement
+ // A simple str_replace will suffice
+ $fp_match = '!' . $fp_match . '!' . $modifiers;
+ $sp_match = $fp_replace;
+ $sp_replace = '';
+ }
+
+ // Lowercase tags
+ $bbcode_tag = preg_replace('/.*?\[([a-z]+).*/i', '$1', $msg_bbcode);
+ $fp_match = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $fp_match);
+ $fp_replace = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $fp_replace);
+ $sp_match = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $sp_match);
+ $sp_replace = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $sp_replace);
+
+ return array(
+ 'bbcode_tag' => $bbcode_tag,
+ 'first_pass_match' => $fp_match,
+ 'first_pass_replace' => $fp_replace,
+ 'second_pass_match' => $sp_match,
+ 'second_pass_replace' => $sp_replace
+ );
+ }
+}
+
+/**
+* @package module_install
+*/
+class acp_bbcodes_info
+{
+ function module()
+ {
+ return array(
+ 'filename' => 'acp_bbcodes',
+ 'title' => 'ACP_BBCODES',
+ 'version' => '1.0.0',
+ 'modes' => array(
+ 'bbcodes' => array('title' => 'ACP_BBCODES', 'auth' => 'acl_a_bbcode'),
+ ),
+ );
+ }
+
+ function install()
+ {
+ }
+
+ function uninstall()
+ {
+ }
+}
+
+?> \ No newline at end of file
diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php
index 351913f28e..365d9226e0 100644
--- a/phpBB/includes/acp/acp_board.php
+++ b/phpBB/includes/acp/acp_board.php
@@ -282,12 +282,13 @@ class acp_board
if ($submit)
{
- add_log('admin', 'LOG_' . strtoupper($mode) . '_CONFIG');
+ add_log('admin', 'LOG_CONFIG_' . strtoupper($mode));
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($u_action));
}
$this->tpl_name = 'acp_board';
+ $this->page_title = $display_vars['title'];
$template->assign_vars(array(
'L_TITLE' => $user->lang[$display_vars['title']],
@@ -526,7 +527,7 @@ class acp_board_info
{
return array(
'filename' => 'acp_board',
- 'title' => 'Board Management',
+ 'title' => 'ACP_BOARD_MANAGEMENT',
'version' => '1.0.0',
'modes' => array(
'auth' => array('title' => 'ACP_AUTH_SETTINGS', 'auth' => 'acl_a_server'),
diff --git a/phpBB/includes/acp/acp_bots.php b/phpBB/includes/acp/acp_bots.php
index 0dc1f8f148..5208a9e4fb 100644
--- a/phpBB/includes/acp/acp_bots.php
+++ b/phpBB/includes/acp/acp_bots.php
@@ -32,6 +32,7 @@ class acp_bots
$user->add_lang('acp/bots');
$this->tpl_name = 'acp_bots';
+ $this->page_title = 'ACP_BOTS';
$u_action = "{$phpbb_admin_path}index.$phpEx$SID&amp;i=$id&amp;mode=$mode";
diff --git a/phpBB/includes/acp/acp_icons.php b/phpBB/includes/acp/acp_icons.php
new file mode 100644
index 0000000000..b4cd830870
--- /dev/null
+++ b/phpBB/includes/acp/acp_icons.php
@@ -0,0 +1,665 @@
+<?php
+/**
+*
+* @package acp
+* @version $Id$
+* @copyright (c) 2005 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
+
+/**
+* @package acp
+* @todo [smilies] check regular expressions for special char replacements (stored specialchared in db)
+*/
+class acp_icons
+{
+ function main($id, $mode)
+ {
+ global $db, $user, $auth, $template, $cache;
+ global $config, $SID, $phpbb_root_path, $phpbb_admin_path, $phpEx;
+
+ $user->add_lang('acp/posting');
+
+ // Set up general vars
+ $action = request_var('action', '');
+ $action = (isset($_POST['add'])) ? 'add' : $action;
+ $action = (isset($_POST['edit'])) ? 'edit' : $action;
+ $icon_id = request_var('id', 0);
+
+ $this->tpl_name = 'acp_icons';
+
+ $u_action = "{$phpbb_admin_path}index.$phpEx$SID&amp;i=$id&amp;mode=$mode";
+
+ // What are we working on?
+ switch ($mode)
+ {
+ case 'smilies':
+ $table = SMILIES_TABLE;
+ $lang = 'SMILIES';
+ $fields = 'smiley';
+ $img_path = $config['smilies_path'];
+ break;
+
+ case 'icons':
+ $table = ICONS_TABLE;
+ $lang = 'ICONS';
+ $fields = 'icons';
+ $img_path = $config['icons_path'];
+ break;
+ }
+
+ $this->page_title = 'ACP_' . $lang;
+
+ // Clear some arrays
+ $_images = $_paks = array();
+ $notice = '';
+
+ // Grab file list of paks and images
+ if ($action == 'edit' || $action == 'add' || $action == 'import')
+ {
+ $imglist = filelist($phpbb_root_path . $img_path, '');
+
+ foreach ($imglist as $path => $img_ary)
+ {
+ foreach ($img_ary as $img)
+ {
+ $img_size = @getimagesize($phpbb_root_path . $img_path . '/' . $path . $img);
+
+ if (!$img_size[0] || !$img_size[1])
+ {
+ continue;
+ }
+
+ $_images[$path . $img]['file'] = $path . $img;
+ $_images[$path . $img]['width'] = $img_size[0];
+ $_images[$path . $img]['height'] = $img_size[1];
+ }
+ }
+ unset($imglist);
+
+ $dir = @opendir($phpbb_root_path . $img_path);
+ while ($file = @readdir($dir))
+ {
+ if (is_file($phpbb_root_path . $img_path . '/' . $file) && preg_match('#\.pak$#i', $file))
+ {
+ $_paks[] = $file;
+ }
+ }
+ @closedir($dir);
+ }
+
+ // What shall we do today? Oops, I believe that's trademarked ...
+ switch ($action)
+ {
+ case 'edit':
+ unset($_images);
+ $_images = array();
+
+ case 'add':
+
+ $order_list = '';
+
+ $sql = "SELECT *
+ FROM $table
+ ORDER BY {$fields}_order " . (($icon_id || $action == 'add') ? 'DESC' : 'ASC');
+ $result = $db->sql_query($sql);
+
+ if ($row = $db->sql_fetchrow($result))
+ {
+ do
+ {
+ if ($action == 'add')
+ {
+ unset($_images[$row[$fields . '_url']]);
+ }
+
+ if ($row[$fields . '_id'] == $icon_id)
+ {
+ $after = true;
+ $data[$row[$fields . '_url']] = $row;
+ }
+ else
+ {
+ if ($action == 'edit' && !$icon_id)
+ {
+ $data[$row[$fields . '_url']] = $row;
+ }
+
+ $selected = '';
+ if (!empty($after))
+ {
+ $selected = ' selected="selected"';
+ $after = false;
+ }
+
+ $after_txt = ($mode == 'smilies') ? $row['code'] : $row['icons_url'];
+ $order_list = '<option value="' . ($row[$fields . '_order']) . '"' . $selected . '>' . sprintf($user->lang['AFTER_' . $lang], ' -&gt; ' . htmlspecialchars($after_txt)) . '</option>' . $order_list;
+ }
+ }
+ while ($row = $db->sql_fetchrow($result));
+ }
+ $db->sql_freeresult($result);
+
+ $order_list = '<option value="1"' . ((!isset($after)) ? ' selected="selected"' : '') . '>' . $user->lang['FIRST'] . '</option>' . $order_list;
+
+ if ($action == 'add')
+ {
+ $data = $_images;
+ }
+
+ $colspan = (($mode == 'smilies') ? '7' : '5');
+ $colspan += ($icon_id) ? 1 : 0;
+ $colspan += ($action == 'add') ? 2 : 0;
+
+ $template->assign_vars(array(
+ 'S_EDIT' => true,
+ 'S_SMILIES' => ($mode == 'smilies') ? true : false,
+ 'S_ADD' => ($action == 'add') ? true : false,
+ 'S_ORDER_LIST' => $order_list,
+
+ 'L_TITLE' => $user->lang['ACP_' . $lang],
+ 'L_EXPLAIN' => $user->lang['ACP_' . $lang . '_EXPLAIN'],
+ 'L_CONFIG' => $user->lang[$lang . '_CONFIG'],
+ 'L_URL' => $user->lang[$lang . '_URL'],
+ 'L_LOCATION' => $user->lang[$lang . '_LOCATION'],
+ 'L_WIDTH' => $user->lang[$lang . '_WIDTH'],
+ 'L_HEIGHT' => $user->lang[$lang . '_HEIGHT'],
+ 'L_ORDER' => $user->lang[$lang . '_ORDER'],
+
+ 'COLSPAN' => $colspan,
+ 'ID' => $icon_id,
+
+ 'U_BACK' => $u_action,
+ 'U_ACTION' => $u_action . '&amp;action=' . (($action == 'add') ? 'create' : 'modify'),
+ )
+ );
+
+ foreach ($data as $img => $img_row)
+ {
+ $template->assign_block_vars('items', array(
+ 'IMG' => $img,
+ 'IMG_SRC' => $phpbb_root_path . $img_path . '/' . $img,
+
+ 'CODE' => ($mode == 'smilies' && isset($img_row['code'])) ? $img_row['code'] : '',
+ 'EMOTION' => ($mode == 'smilies' && isset($img_row['emotion'])) ? $img_row['emotion'] : '',
+
+ 'S_ID' => (isset($img_row[$fields . '_id'])) ? true : false,
+ 'ID' => (isset($img_row[$fields . '_id'])) ? $img_row[$fields . '_id'] : 0,
+ 'WIDTH' => (!empty($img_row[$fields .'_width'])) ? $img_row[$fields .'_width'] : $img_row['width'],
+ 'HEIGHT' => (!empty($img_row[$fields .'_height'])) ? $img_row[$fields .'_height'] : $img_row['height'],
+ 'POSTING_CHECKED' => (!empty($img_row['display_on_posting']) || $action == 'add') ? ' checked="checked"' : '')
+ );
+ }
+
+ return;
+
+ break;
+
+ case 'create':
+ case 'modify':
+
+ // Get items to create/modify
+ $images = (isset($_POST['image'])) ? array_keys(request_var('image', array('' => 0))) : array();
+
+ // Now really get the items
+ $image_id = (isset($_POST['id'])) ? array_map('intval', $_POST['id']) : array();
+ $image_order = (isset($_POST['order'])) ? array_map('intval', $_POST['order']) : array();
+ $image_width = (isset($_POST['width'])) ? array_map('intval', $_POST['width']) : array();
+ $image_height = (isset($_POST['height'])) ? array_map('intval', $_POST['height']) : array();
+ $image_add = (isset($_POST['add_img'])) ? array_map('intval', $_POST['add_img']) : array();
+ $image_emotion = request_var('emotion', '');
+ $image_code = request_var('code', '');
+ $image_display_on_posting = (isset($_POST['display_on_posting'])) ? array_map('intval', $_POST['display_on_posting']) : array();
+
+ foreach ($images as $image)
+ {
+ if (($mode == 'smilies' && ($image_emotion[$image] == '' || $image_code[$image] == '')) ||
+ ($action == 'create' && !isset($image_add[$image])))
+ {
+ }
+ else
+ {
+ if ($image_width[$image] == 0 || $image_height[$image] == 0)
+ {
+ $img_size = @getimagesize($phpbb_root_path . $img_path . '/' . $image);
+ $image_width[$image] = $img_size[0];
+ $image_height[$image] = $img_size[1];
+ }
+
+ $img_sql = array(
+ $fields . '_url' => $image,
+ $fields . '_width' => $image_width[$image],
+ $fields . '_height' => $image_height[$image],
+ 'display_on_posting'=> (isset($image_display_on_posting[$image])) ? 1 : 0,
+ );
+
+ if ($mode == 'smilies')
+ {
+ $img_sql = array_merge($img_sql, array(
+ 'emotion' => $image_emotion[$image],
+ 'code' => $image_code[$image])
+ );
+ }
+
+ if (!empty($image_order[$image]))
+ {
+ $img_sql = array_merge($img_sql, array(
+ $fields . '_order' => $image_order[$image] . '.5')
+ );
+ }
+
+ if ($action == 'modify')
+ {
+ $sql = "UPDATE $table
+ SET " . $db->sql_build_array('UPDATE', $img_sql) . "
+ WHERE {$fields}_id = " . $image_id[$image];
+ $db->sql_query($sql);
+ }
+ else
+ {
+ $sql = "INSERT INTO $table " . $db->sql_build_array('INSERT', $img_sql);
+ $db->sql_query($sql);
+ }
+
+ $update = false;
+
+ if ($action == 'modify' && !empty($image_order[$image]))
+ {
+ $update = true;
+
+ $result = $db->sql_query("SELECT {$fields}_order
+ FROM $table
+ WHERE {$fields}_id = " . $image_id[$image]);
+ $order_old = $db->sql_fetchfield($fields . '_order', 0, $result);
+ $db->sql_freeresult($result);
+
+ if ($order_old == $image_order[$image])
+ {
+ $update = false;
+ }
+
+ if ($order_old > $image_order[$image])
+ {
+ $sign = '+';
+ $where = $fields . '_order >= ' . $image_order[$image] . " AND {$fields}_order < $order_old";
+ }
+ else if ($order_old < $image_order[$image])
+ {
+ $sign = '-';
+ $where = "{$fields}_order > $order_old AND {$fields}_order < " . $image_order[$image];
+ $sql[$fields . '_order'] = $image_order[$image] - 1;
+ }
+ }
+
+ if ($update)
+ {
+ $sql = "UPDATE $table
+ SET {$fields}_order = {$fields}_order $sign 1
+ WHERE $where";
+ $db->sql_query($sql);
+ }
+ }
+ }
+
+ $cache->destroy('icons');
+
+ if ($action == 'modify')
+ {
+ trigger_error($user->lang[$lang . '_EDITED'] . adm_back_link($u_action));
+ }
+ else
+ {
+ trigger_error($user->lang[$lang . '_ADDED'] . adm_back_link($u_action));
+ }
+
+ break;
+
+ case 'import':
+
+ $pak = request_var('pak', '');
+ $current = request_var('current', '');
+
+ if ($pak != '')
+ {
+ $order = 0;
+
+ // The user has already selected a smilies_pak file
+ if ($current == 'delete')
+ {
+ $db->sql_query("TRUNCATE $table");
+
+ switch ($mode)
+ {
+ case 'smilies':
+ break;
+
+ case 'icons':
+ // Reset all icon_ids
+ $db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET icon_id = 0');
+ $db->sql_query('UPDATE ' . POSTS_TABLE . ' SET icon_id = 0');
+ break;
+ }
+ }
+ else
+ {
+ $cur_img = array();
+
+ $field_sql = ($mode == 'smilies') ? 'code' : 'icons_url';
+ $result = $db->sql_query("SELECT $field_sql FROM $table");
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ ++$order;
+ $cur_img[$row[$field_sql]] = 1;
+ }
+ $db->sql_freeresult($result);
+ }
+
+ if (!($pak_ary = @file($phpbb_root_path . $img_path . '/' . $pak)))
+ {
+ trigger_error($user->lang['PAK_FILE_NOT_READABLE'] . adm_back_link($u_action));
+ }
+
+ foreach ($pak_ary as $pak_entry)
+ {
+ $data = array();
+ if (preg_match_all("#'(.*?)', #", $pak_entry, $data))
+ {
+ if ((sizeof($data[1]) != 3 && $mode == 'icons') ||
+ (sizeof($data[1]) != 5 && $mode == 'smilies'))
+ {
+ trigger_error($user->lang['WRONG_PAK_TYPE'] . adm_back_link($u_action));
+ }
+
+ $img = stripslashes($data[1][0]);
+ $width = stripslashes($data[1][1]);
+ $height = stripslashes($data[1][2]);
+
+ if (isset($data[1][3]) && isset($data[1][4]))
+ {
+ $emotion = stripslashes($data[1][3]);
+ $code = stripslashes($data[1][4]);
+ }
+
+ if ($current == 'replace' &&
+ (($mode == 'smilies' && !empty($cur_img[$code])) ||
+ ($mode == 'icons' && !empty($cur_img[$img]))))
+ {
+ $replace_sql = ($mode == 'smilies') ? $code : $img;
+ $sql = array(
+ $fields . '_url' => $img,
+ $fields . '_height' => (int) $height,
+ $fields . '_width' => (int) $width,
+ );
+
+ if ($mode == 'smilies')
+ {
+ $sql = array_merge($sql, array(
+ 'emotion' => $emotion
+ ));
+ }
+
+ $db->sql_query("UPDATE $table SET " . $db->sql_build_array('UPDATE', $sql) . "
+ WHERE $field_sql = '" . $db->sql_escape($replace_sql) . "'");
+ }
+ else
+ {
+ ++$order;
+
+ $sql = array(
+ $fields . '_url' => $img,
+ $fields . '_height' => (int) $height,
+ $fields . '_width' => (int) $width,
+ $fields . '_order' => (int) $order,
+ );
+
+ if ($mode == 'smilies')
+ {
+ $sql = array_merge($sql, array(
+ 'code' => $code,
+ 'emotion' => $emotion
+ ));
+ }
+ $db->sql_query("INSERT INTO $table " . $db->sql_build_array('INSERT', $sql));
+ }
+ }
+ }
+
+ $cache->destroy('icons');
+ trigger_error($user->lang[$lang . '_IMPORT_SUCCESS'] . adm_back_link($u_action));
+ }
+ else
+ {
+ $pak_options = '';
+
+ foreach ($_paks as $pak)
+ {
+ $pak_options .= '<option value="' . $pak . '">' . htmlspecialchars($pak) . '</option>';
+ }
+
+ $template->assign_vars(array(
+ 'S_CHOOSE_PAK' => true,
+ 'S_PAK_OPTIONS' => $pak_options,
+
+ 'L_TITLE' => $user->lang['ACP_' . $lang],
+ 'L_EXPLAIN' => $user->lang['ACP_' . $lang . '_EXPLAIN'],
+ 'L_IMPORT' => $user->lang[$lang . '_IMPORT'],
+ 'L_NO_PAK_OPTIONS' => $user->lang['NO_' . $lang . '_PAK'],
+ 'L_CURRENT' => $user->lang['CURRENT_' . $lang],
+ 'L_CURRENT_EXPLAIN' => $user->lang['CURRENT_' . $lang . '_EXPLAIN'],
+ 'L_IMPORT_SUBMIT' => $user->lang['IMPORT_' . $lang],
+
+ 'U_BACK' => $u_action,
+ 'U_ACTION' => $u_action . '&amp;action=import',
+ )
+ );
+ }
+ break;
+
+ case 'export':
+
+ $this->page_title = 'EXPORT_' . $lang;
+ $this->tpl_name = 'message_body';
+
+ $template->assign_vars(array(
+ 'MESSAGE_TITLE' => $user->lang['EXPORT_' . $lang],
+ 'MESSAGE_TEXT' => sprintf($user->lang['EXPORT_' . $lang . '_EXPLAIN'], '<a href="' . $u_action . '&amp;action=send">', '</a>'))
+ );
+
+ return;
+
+ break;
+
+ case 'send':
+
+ $sql = "SELECT *
+ FROM $table
+ ORDER BY {$fields}_order";
+ $result = $db->sql_query($sql);
+
+ $pak = '';
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $pak .= "'" . addslashes($row[$fields . '_url']) . "', ";
+ $pak .= "'" . addslashes($row[$fields . '_height']) . "', ";
+ $pak .= "'" . addslashes($row[$fields . '_width']) . "', ";
+ if ($mode == 'smilies')
+ {
+ $pak .= "'" . addslashes($row['emotion']) . "', ";
+ $pak .= "'" . addslashes($row['code']) . "', ";
+ }
+ $pak .= "\n";
+ }
+ $db->sql_freeresult($result);
+
+ if ($pak != '')
+ {
+ $db->sql_close();
+
+ header('Pragma: public');
+
+ // Send out the Headers
+ header('Content-Type: text/x-delimtext; name="' . $fields . '.pak"');
+ header('Content-Disposition: inline; filename="' . $fields . '.pak"');
+ echo $pak;
+
+ flush();
+ exit;
+ }
+ else
+ {
+ trigger_error($user->lang['NO_' . $fields . '_EXPORT'] . adm_back_link($u_action));
+ }
+
+ break;
+
+ case 'delete':
+
+ $db->sql_query("DELETE FROM $table
+ WHERE {$fields}_id = $icon_id");
+
+ switch ($mode)
+ {
+ case 'smilies':
+ break;
+
+ case 'icons':
+ // Reset appropriate icon_ids
+ $db->sql_query('UPDATE ' . TOPICS_TABLE . "
+ SET icon_id = 0
+ WHERE icon_id = $icon_id");
+
+ $db->sql_query('UPDATE ' . POSTS_TABLE . "
+ SET icon_id = 0
+ WHERE icon_id = $icon_id");
+
+ break;
+ }
+
+ $notice = $user->lang[$lang . '_DELETED'];
+
+ break;
+
+ case 'move_up':
+ case 'move_down':
+
+ $image_order = intval($_GET['order']);
+ $order_total = $image_order * 2 + (($action == 'move_up') ? -1 : 1);
+
+ $sql = 'UPDATE ' . $table . '
+ SET ' . $fields . "_order = $order_total - " . $fields . '_order
+ WHERE ' . $fields . "_order IN ($image_order, " . (($action == 'move_up') ? $image_order - 1 : $image_order + 1) . ')';
+ $db->sql_query($sql);
+
+ $cache->destroy('icons');
+
+ break;
+ }
+
+ // By default, check that image_order is valid and fix it if necessary
+ $sql = "SELECT {$fields}_id AS order_id, {$fields}_order AS fields_order
+ FROM $table
+ ORDER BY {$fields}_order";
+ $result = $db->sql_query($sql);
+
+ if ($row = $db->sql_fetchrow($result))
+ {
+ $order = 0;
+ do
+ {
+ ++$order;
+ if ($row['fields_order'] != $order)
+ {
+ $db->sql_query("UPDATE $table
+ SET {$fields}_order = $order
+ WHERE {$fields}_id = " . $row['order_id']);
+ }
+ }
+ while ($row = $db->sql_fetchrow($result));
+ }
+ $db->sql_freeresult($result);
+
+ $template->assign_vars(array(
+ 'L_TITLE' => $user->lang['ACP_' . $lang],
+ 'L_EXPLAIN' => $user->lang['ACP_' . $lang . '_EXPLAIN'],
+ 'L_IMPORT' => $user->lang['IMPORT_' . $lang],
+ 'L_EXPORT' => $user->lang['EXPORT_' . $lang],
+ 'L_NOT_DISPLAYED' => $user->lang[$lang . '_NOT_DISPLAYED'],
+ 'L_ICON_ADD' => $user->lang['ADD_' . $lang],
+ 'L_ICON_EDIT' => $user->lang['EDIT_' . $lang],
+
+ 'NOTICE' => $notice,
+ 'COLSPAN' => ($mode == 'smilies') ? 5 : 3,
+
+ 'S_SMILIES' => ($mode == 'smilies') ? true : false,
+
+ 'U_ACTION' => $u_action,
+ 'U_IMPORT' => $u_action . '&amp;action=import',
+ 'U_EXPORT' => $u_action . '&amp;action=export',
+ )
+ );
+
+ $spacer = false;
+
+ $sql = "SELECT *
+ FROM $table
+ ORDER BY display_on_posting DESC, {$fields}_order ASC";
+ $result = $db->sql_query($sql);
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $alt_text = ($mode == 'smilies') ? $row['code'] : '';
+
+ $template->assign_block_vars('items', array(
+ 'S_SPACER' => (!$spacer && !$row['display_on_posting']) ? true : false,
+ 'ALT_TEXT' => $alt_text,
+ 'IMG_SRC' => $phpbb_root_path . $img_path . '/' . $row[$fields . '_url'],
+ 'WIDTH' => $row[$fields . '_width'],
+ 'HEIGHT' => $row[$fields . '_height'],
+ 'CODE' => (isset($row['code'])) ? $row['code'] : '',
+ 'EMOTION' => (isset($row['emotion'])) ? $row['emotion'] : '',
+ 'U_EDIT' => $u_action . '&amp;action=edit&amp;id=' . $row[$fields . '_id'],
+ 'U_DELETE' => $u_action . '&amp;action=delete&amp;id=' . $row[$fields . '_id'],
+ 'U_MOVE_UP' => $u_action . '&amp;action=move_up&amp;order=' . $row[$fields . '_order'],
+ 'U_MOVE_DOWN' => $u_action . '&amp;action=move_down&amp;order=' . $row[$fields . '_order'])
+ );
+
+ if (!$spacer && !$row['display_on_posting'])
+ {
+ $spacer = true;
+ }
+ }
+ $db->sql_freeresult($result);
+
+ }
+}
+
+/**
+* @package module_install
+*/
+class acp_icons_info
+{
+ function module()
+ {
+ return array(
+ 'filename' => 'acp_icons',
+ 'title' => 'ACP_ICONS_SMILIES',
+ 'version' => '1.0.0',
+ 'modes' => array(
+ 'icons' => array('title' => 'ACP_ICONS', 'auth' => 'acl_a_icons'),
+ 'smilies' => array('title' => 'ACP_SMILIES', 'auth' => 'acl_a_icons'),
+ ),
+ );
+ }
+
+ function install()
+ {
+ }
+
+ function uninstall()
+ {
+ }
+}
+
+?> \ No newline at end of file
diff --git a/phpBB/includes/acp/acp_jabber.php b/phpBB/includes/acp/acp_jabber.php
index d41e169754..bfbcec9001 100644
--- a/phpBB/includes/acp/acp_jabber.php
+++ b/phpBB/includes/acp/acp_jabber.php
@@ -33,7 +33,8 @@ class acp_jabber
$u_action = "{$phpbb_admin_path}index.$phpEx$SID&amp;i=$id&amp;mode=$mode";
$this->tpl_name = 'acp_jabber';
-
+ $this->page_title = 'ACP_JABBER_SETTINGS';
+
$jab_enable = request_var('jab_enable', $config['jab_enable']);
$jab_host = request_var('jab_host', $config['jab_host']);
$jab_port = request_var('jab_port', $config['jab_port']);
diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php
index 98d38789fe..9c31528955 100644
--- a/phpBB/includes/acp/acp_main.php
+++ b/phpBB/includes/acp/acp_main.php
@@ -377,6 +377,7 @@ class acp_main
}
$this->tpl_name = 'acp_main';
+ $this->page_title = 'ACP_MAIN';
}
}
@@ -389,10 +390,10 @@ class acp_main_info
{
return array(
'filename' => 'acp_main',
- 'title' => 'ACP Index',
+ 'title' => 'ACP_INDEX',
'version' => '1.0.0',
'modes' => array(
- 'main' => array('title' => 'Index', 'auth' => ''),
+ 'main' => array('title' => 'ACP_INDEX', 'auth' => ''),
),
);
}
diff --git a/phpBB/includes/acp/acp_modules.php b/phpBB/includes/acp/acp_modules.php
index 8cd28faa39..86a7c8467f 100644
--- a/phpBB/includes/acp/acp_modules.php
+++ b/phpBB/includes/acp/acp_modules.php
@@ -23,7 +23,7 @@
*/
class acp_modules
{
- var $mode = '';
+ var $module_class = '';
function main($id, $mode)
{
@@ -45,6 +45,8 @@ class acp_modules
$user->add_lang('ucp');
}
+ $this->page_title = strtoupper($this->module_class);
+
$u_action = "{$phpbb_admin_path}index.$phpEx$SID&amp;i=$id&amp;mode=$mode";
$parent_id = request_var('parent_id', 0);
$module_id = request_var('m', 0);
@@ -590,6 +592,8 @@ class acp_modules
}
}
closedir($dh);
+
+ ksort($fileinfo);
}
else
{
@@ -988,7 +992,7 @@ class acp_modules_info
'version' => '1.0.0',
'modes' => array(
'acp' => array('title' => 'ACP', 'auth' => 'acl_a_modules'),
- 'ucp' => array('title' => 'USER_CONTROL_PANEL', 'auth' => 'acl_a_modules'),
+ 'ucp' => array('title' => 'UCP', 'auth' => 'acl_a_modules'),
'mcp' => array('title' => 'MCP', 'auth' => 'acl_a_modules'),
),
);
diff --git a/phpBB/includes/acp/acp_php_info.php b/phpBB/includes/acp/acp_php_info.php
index 19e4d81348..35c5b223e6 100644
--- a/phpBB/includes/acp/acp_php_info.php
+++ b/phpBB/includes/acp/acp_php_info.php
@@ -24,6 +24,7 @@ class acp_php_info
}
$this->tpl_name = 'acp_php_info';
+ $this->page_title = 'ACP_PHP_INFO';
ob_start();
phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES | INFO_VARIABLES);
diff --git a/phpBB/includes/acp/acp_words.php b/phpBB/includes/acp/acp_words.php
new file mode 100644
index 0000000000..4a963f6c54
--- /dev/null
+++ b/phpBB/includes/acp/acp_words.php
@@ -0,0 +1,184 @@
+<?php
+/**
+*
+* @package acp
+* @version $Id$
+* @copyright (c) 2005 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
+
+/**
+* @package acp
+* @todo [words] check regular expressions for special char replacements (stored specialchared in db)
+*/
+class acp_words
+{
+ function main($id, $mode)
+ {
+ global $db, $user, $auth, $template, $cache;
+ global $config, $SID, $phpbb_root_path, $phpbb_admin_path, $phpEx;
+
+ $user->add_lang('acp/posting');
+
+ // Set up general vars
+ $action = request_var('action', '');
+ $action = (isset($_POST['add'])) ? 'add' : ((isset($_POST['save'])) ? 'save' : $action);
+
+ $s_hidden_fields = '';
+ $word_info = array();
+
+ $this->tpl_name = 'acp_words';
+ $this->page_title = 'ACP_WORDS';
+
+ $u_action = "{$phpbb_admin_path}index.$phpEx$SID&amp;i=$id&amp;mode=$mode";
+
+ switch ($action)
+ {
+ case 'edit':
+ $word_id = request_var('id', 0);
+
+ if (!$word_id)
+ {
+ trigger_error($user->lang['NO_WORD'] . adm_back_link($u_action));
+ }
+
+ $sql = 'SELECT *
+ FROM ' . WORDS_TABLE . "
+ WHERE word_id = $word_id";
+ $result = $db->sql_query($sql);
+ $word_info = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+
+ $s_hidden_fields .= '<input type="hidden" name="id" value="' . $word_id . '" />';
+
+ case 'add':
+
+ $template->assign_vars(array(
+ 'S_EDIT_WORD' => true,
+ 'U_ACTION' => $u_action,
+ 'U_BACK' => $u_action,
+ 'WORD' => (isset($word_info['word'])) ? $word_info['word'] : '',
+ 'REPLACEMENT' => (isset($word_info['replacement'])) ? $word_info['replacement'] : '',
+ 'S_HIDDEN_FIELDS' => $s_hidden_fields)
+ );
+
+ return;
+
+ break;
+
+ case 'save':
+ $word_id = request_var('id', 0);
+ $word = request_var('word', '');
+ $replacement = request_var('replacement', '');
+
+ if (!$word || !$replacement)
+ {
+ trigger_error($user->lang['ENTER_WORD'] . adm_back_link($u_action));
+ }
+
+ $sql_ary = array(
+ 'word' => $word,
+ 'replacement' => $replacement
+ );
+
+ if ($word_id)
+ {
+ $db->sql_query('UPDATE ' . WORDS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE word_id = ' . $word_id);
+ }
+ else
+ {
+ $db->sql_query('INSERT INTO ' . WORDS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
+ }
+
+ $cache->destroy('word_censors');
+
+ $log_action = ($word_id) ? 'LOG_WORD_EDIT' : 'LOG_WORD_ADD';
+ add_log('admin', $log_action, $word);
+
+ $message = ($word_id) ? $user->lang['WORD_UPDATED'] : $user->lang['WORD_ADDED'];
+ trigger_error($message . adm_back_link($u_action));
+
+ break;
+
+ case 'delete':
+
+ $word_id = request_var('id', 0);
+
+ if (!$word_id)
+ {
+ trigger_error($user->lang['NO_WORD'] . adm_back_link($u_action));
+ }
+
+ $sql = 'SELECT word
+ FROM ' . WORDS_TABLE . "
+ WHERE word_id = $word_id";
+ $result = $db->sql_query($sql);
+ $deleted_word = $db->sql_fetchfield('word', 0, $result);
+ $db->sql_freeresult($result);
+
+ $sql = 'DELETE FROM ' . WORDS_TABLE . "
+ WHERE word_id = $word_id";
+ $db->sql_query($sql);
+
+ $cache->destroy('word_censors');
+
+ add_log('admin', 'LOG_WORD_DELETE', $deleted_word);
+
+ $message = $user->lang['WORD_REMOVE'];
+ trigger_error($message . adm_back_link($u_action));
+
+ break;
+ }
+
+
+ $template->assign_vars(array(
+ 'U_ACTION' => $u_action,
+ 'S_HIDDEN_FIELDS' => $s_hidden_fields)
+ );
+
+ $sql = 'SELECT *
+ FROM ' . WORDS_TABLE . '
+ ORDER BY word';
+ $result = $db->sql_query($sql);
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $template->assign_block_vars('words', array(
+ 'WORD' => $row['word'],
+ 'REPLACEMENT' => $row['replacement'],
+ 'U_EDIT' => $u_action . '&amp;action=edit&amp;id=' . $row['word_id'],
+ 'U_DELETE' => $u_action . '&amp;action=delete&amp;id=' . $row['word_id'])
+ );
+ }
+ $db->sql_freeresult($result);
+ }
+}
+
+/**
+* @package module_install
+*/
+class acp_words_info
+{
+ function module()
+ {
+ return array(
+ 'filename' => 'acp_words',
+ 'title' => 'ACP_WORDS',
+ 'version' => '1.0.0',
+ 'modes' => array(
+ 'words' => array('title' => 'ACP_WORDS', 'auth' => 'acl_a_words'),
+ ),
+ );
+ }
+
+ function install()
+ {
+ }
+
+ function uninstall()
+ {
+ }
+}
+
+?> \ No newline at end of file