mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-31 14:00:31 +02:00
- extended session_page and user_lastpage to hold a maximum of 200 chars (instead of 100) - session_page gets truncated to 200 chars
- streamlined the process of generating text with bbcode/smilies/urls (forum rules, forum descriptions, group descriptions at the moment) - a bunch of schema changes for the bbcode-enabled text and the session page change (sorry for this) - if decode_message is used there is no need to include functions_posting.php anymore (should fix the search.php bug too) git-svn-id: file:///svn/phpbb/trunk@5709 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
@@ -22,7 +22,6 @@ class acp_forums
|
||||
global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx, $SID;
|
||||
|
||||
$user->add_lang('acp/forums');
|
||||
|
||||
$this->tpl_name = 'acp_forums';
|
||||
$this->page_title = 'ACP_MANAGE_FORUMS';
|
||||
|
||||
@@ -97,11 +96,15 @@ class acp_forums
|
||||
'forum_type' => request_var('forum_type', FORUM_POST),
|
||||
'type_action' => request_var('type_action', ''),
|
||||
'forum_status' => request_var('forum_status', ITEM_UNLOCKED),
|
||||
'forum_name' => request_var('forum_name', ''),
|
||||
'forum_name' => request_var('forum_name', '', true),
|
||||
'forum_link' => request_var('forum_link', ''),
|
||||
'forum_link_track' => request_var('forum_link_track', false),
|
||||
'forum_desc' => request_var('forum_desc', ''),
|
||||
'forum_rules' => request_var('forum_rules', ''),
|
||||
'forum_desc' => request_var('forum_desc', '', true),
|
||||
'forum_desc_uid' => '',
|
||||
'forum_desc_bitfield' => 0,
|
||||
'forum_rules' => request_var('forum_rules', '', true),
|
||||
'forum_rules_uid' => '',
|
||||
'forum_rules_bitfield' => 0,
|
||||
'forum_rules_link' => request_var('forum_rules_link', ''),
|
||||
'forum_image' => request_var('forum_image', ''),
|
||||
'forum_style' => request_var('forum_style', 0),
|
||||
@@ -118,28 +121,20 @@ class acp_forums
|
||||
'prune_sticky' => request_var('prune_sticky', false),
|
||||
'forum_password' => request_var('forum_password', ''),
|
||||
'forum_password_confirm'=> request_var('forum_password_confirm', ''),
|
||||
'forum_rules_flags' => 0,
|
||||
);
|
||||
|
||||
$forum_data['show_active'] = ($forum_data['forum_type'] == FORUM_POST) ? request_var('display_recent', false) : request_var('display_active', false);
|
||||
|
||||
// Get data for forum rules if specified...
|
||||
if ($forum_data['forum_rules'])
|
||||
{
|
||||
include_once($phpbb_root_path . 'includes/message_parser.' . $phpEx);
|
||||
generate_text_for_storage($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield'], request_var('rules_parse_bbcode', false), request_var('rules_parse_urls', false), request_var('rules_parse_smilies', false));
|
||||
}
|
||||
|
||||
$allow_bbcode = request_var('parse_bbcode', false);
|
||||
$allow_smilies = request_var('parse_smilies', false);
|
||||
$allow_urls = request_var('parse_urls', false);
|
||||
|
||||
$forum_data['forum_rules_flags'] = (($allow_bbcode) ? 1 : 0) + (($allow_smilies) ? 2 : 0) + (($allow_urls) ? 4 : 0);
|
||||
|
||||
$message_parser = new parse_message($forum_data['forum_rules']);
|
||||
$message_parser->parse($allow_bbcode, $allow_urls, $allow_smilies);
|
||||
|
||||
$forum_data['forum_rules'] = $message_parser->message;
|
||||
$forum_data['forum_rules_bbcode_uid'] = $message_parser->bbcode_uid;
|
||||
$forum_data['forum_rules_bbcode_bitfield'] = $message_parser->bbcode_bitfield;
|
||||
unset($message_parser);
|
||||
// Get data for forum description if specified
|
||||
if ($forum_data['forum_desc'])
|
||||
{
|
||||
generate_text_for_storage($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield'], request_var('desc_parse_bbcode', false), request_var('desc_parse_urls', false), request_var('desc_parse_smilies', false));
|
||||
}
|
||||
|
||||
$errors = $this->update_forum_data($forum_data);
|
||||
@@ -152,26 +147,26 @@ class acp_forums
|
||||
if ($forum_perm_from && $action == 'add')
|
||||
{
|
||||
$sql_ary = array(
|
||||
'user_id' => array('user_id'),
|
||||
'forum_id' => (int) $forum_data['forum_id'],
|
||||
'auth_option_id' => array('auth_option_id'),
|
||||
'auth_role_id' => array('auth_role_id'),
|
||||
'auth_setting' => array('auth_setting')
|
||||
'a.user_id' => array('user_id'),
|
||||
'a.forum_id' => (int) $forum_data['forum_id'],
|
||||
'a.auth_option_id' => array('auth_option_id'),
|
||||
'a.auth_role_id' => array('auth_role_id'),
|
||||
'a.auth_setting' => array('auth_setting')
|
||||
);
|
||||
|
||||
// We copy the permissions the manual way. ;)
|
||||
$sql = 'INSERT INTO ' . ACL_USERS_TABLE . ' ' . $db->sql_build_array('INSERT_SELECT', $sql_ary) . '
|
||||
FROM ' . ACL_USERS_TABLE . '
|
||||
WHERE forum_id = ' . $forum_perm_from;
|
||||
$sql = 'INSERT INTO ' . ACL_USERS_TABLE . ' a ' . $db->sql_build_array('INSERT_SELECT', $sql_ary) . '
|
||||
FROM ' . ACL_USERS_TABLE . ' b
|
||||
WHERE b.forum_id = ' . $forum_perm_from;
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Change array for copying settings from the acl groups table
|
||||
unset($sql_ary['user_id']);
|
||||
$sql_ary['group_id'] = array('group_id');
|
||||
|
||||
$sql = 'INSERT INTO ' . ACL_GROUPS_TABLE . ' ' . $db->sql_build_array('INSERT_SELECT', $sql_ary) . '
|
||||
FROM ' . ACL_GROUPS_TABLE . '
|
||||
WHERE forum_id = ' . $forum_perm_from;
|
||||
$sql = 'INSERT INTO ' . ACL_GROUPS_TABLE . ' a ' . $db->sql_build_array('INSERT_SELECT', $sql_ary) . '
|
||||
FROM ' . ACL_GROUPS_TABLE . ' b
|
||||
WHERE b.forum_id = ' . $forum_perm_from;
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
@@ -198,6 +193,12 @@ class acp_forums
|
||||
$message = ($action == 'add') ? $user->lang['FORUM_CREATED'] : $user->lang['FORUM_UPDATED'];
|
||||
$message .= '<br /><br />' . sprintf($user->lang['REDIRECT_ACL'], '<a href="' . $phpbb_admin_path . "index.$phpEx$SID&i=permissions" . $acl_url . '">', '</a>');
|
||||
|
||||
// redirect directly to permission settings screen
|
||||
if ($action == 'add' && !$forum_perm_from)
|
||||
{
|
||||
meta_refresh(4, $phpbb_admin_path . "index.$phpEx$SID&i=permissions" . $acl_url);
|
||||
}
|
||||
|
||||
trigger_error($message . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id));
|
||||
}
|
||||
|
||||
@@ -345,11 +346,6 @@ class acp_forums
|
||||
|
||||
if ($update)
|
||||
{
|
||||
$forum_data['forum_rules_flags'] = 0;
|
||||
$forum_data['forum_rules_flags'] += (request_var('parse_bbcode', false)) ? 1 : 0;
|
||||
$forum_data['forum_rules_flags'] += (request_var('parse_smilies', false)) ? 2 : 0;
|
||||
$forum_data['forum_rules_flags'] += (request_var('parse_urls', false)) ? 4 : 0;
|
||||
|
||||
$forum_data['forum_flags'] = 0;
|
||||
$forum_data['forum_flags'] += (request_var('forum_link_track', false)) ? 1 : 0;
|
||||
$forum_data['forum_flags'] += (request_var('prune_old_polls', false)) ? 2 : 0;
|
||||
@@ -388,7 +384,7 @@ class acp_forums
|
||||
'parent_id' => $this->parent_id,
|
||||
'forum_type' => FORUM_CAT,
|
||||
'forum_status' => ITEM_UNLOCKED,
|
||||
'forum_name' => request_var('forum_name', ''),
|
||||
'forum_name' => request_var('forum_name', '', true),
|
||||
'forum_link' => '',
|
||||
'forum_link_track' => false,
|
||||
'forum_desc' => '',
|
||||
@@ -407,32 +403,59 @@ class acp_forums
|
||||
'forum_flags' => 0,
|
||||
'forum_password' => '',
|
||||
'forum_password_confirm'=> '',
|
||||
'forum_rules_flags' => 7,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$forum_rules_preview = $forum_rules_plain = '';
|
||||
$forum_rules_data = array(
|
||||
'text' => $forum_data['forum_rules'],
|
||||
'allow_bbcode' => true,
|
||||
'allow_smilies' => true,
|
||||
'allow_urls' => true
|
||||
);
|
||||
|
||||
$forum_desc_data = array(
|
||||
'text' => $forum_data['forum_desc'],
|
||||
'allow_bbcode' => true,
|
||||
'allow_smilies' => true,
|
||||
'allow_urls' => true
|
||||
);
|
||||
|
||||
$forum_rules_preview = '';
|
||||
|
||||
// Parse rules if specified
|
||||
if ($forum_data['forum_rules'])
|
||||
{
|
||||
include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
|
||||
include_once($phpbb_root_path . 'includes/message_parser.' . $phpEx);
|
||||
|
||||
$message_parser = new parse_message($forum_data['forum_rules']);
|
||||
if (!isset($forum_data['forum_rules_uid']))
|
||||
{
|
||||
// Before we are able to display the preview and plane text, we need to parse our request_var()'d value...
|
||||
$forum_data['forum_rules_uid'] = '';
|
||||
$forum_data['forum_rules_bitfield'] = 0;
|
||||
|
||||
if (isset($forum_data['forum_rules_bbcode_uid']))
|
||||
{
|
||||
$message_parser->bbcode_uid = $forum_data['forum_rules_bbcode_uid'];
|
||||
$message_parser->bbcode_bitfield = $forum_data['forum_rules_bbcode_bitfield'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$message_parser->parse(($forum_data['forum_rules_flags'] & 1), ($forum_data['forum_rules_flags'] & 4), ($forum_data['forum_rules_flags'] & 2));
|
||||
generate_text_for_storage($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield'], request_var('rules_allow_bbcode', false), request_var('rules_allow_urls', false), request_var('rules_allow_smiliess', false));
|
||||
}
|
||||
|
||||
$forum_rules_preview = $message_parser->format_display(($forum_data['forum_rules_flags'] & 1), ($forum_data['forum_rules_flags'] & 4), ($forum_data['forum_rules_flags'] & 2), false);
|
||||
$forum_rules_plain = $message_parser->decode_message('', false);
|
||||
// Generate preview content
|
||||
$forum_rules_preview = generate_text_for_display($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield']);
|
||||
|
||||
// decode...
|
||||
$forum_rules_data = generate_text_for_edit($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield']);
|
||||
}
|
||||
|
||||
// Parse desciption if specified
|
||||
if ($forum_data['forum_desc'])
|
||||
{
|
||||
if (!isset($forum_data['forum_desc_uid']))
|
||||
{
|
||||
// Before we are able to display the preview and plane text, we need to parse our request_var()'d value...
|
||||
$forum_data['forum_desc_uid'] = '';
|
||||
$forum_data['forum_desc_bitfield'] = 0;
|
||||
|
||||
generate_text_for_storage($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield'], request_var('desc_allow_bbcode', false), request_var('desc_allow_urls', false), request_var('desc_allow_smiliess', false));
|
||||
}
|
||||
|
||||
// decode...
|
||||
$forum_desc_data = generate_text_for_edit($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield']);
|
||||
}
|
||||
|
||||
$forum_type_options = '';
|
||||
@@ -490,7 +513,6 @@ class acp_forums
|
||||
|
||||
'FORUM_NAME' => $forum_data['forum_name'],
|
||||
'FORUM_DATA_LINK' => $forum_data['forum_link'],
|
||||
'FORUM_DESC' => $forum_data['forum_desc'],
|
||||
'FORUM_IMAGE' => $forum_data['forum_image'],
|
||||
'FORUM_IMAGE_SRC' => ($forum_data['forum_image']) ? $phpbb_root_path . $forum_data['forum_image'] : '',
|
||||
'FORUM_POST' => FORUM_POST,
|
||||
@@ -505,10 +527,15 @@ class acp_forums
|
||||
'FORUM_RULES_LINK' => $forum_data['forum_rules_link'],
|
||||
'FORUM_RULES' => $forum_data['forum_rules'],
|
||||
'FORUM_RULES_PREVIEW' => $forum_rules_preview,
|
||||
'FORUM_RULES_PLAIN' => $forum_rules_plain,
|
||||
'S_BBCODE_CHECKED' => ($forum_data['forum_rules_flags'] & 1) ? true : false,
|
||||
'S_SMILIES_CHECKED' => ($forum_data['forum_rules_flags'] & 2) ? true : false,
|
||||
'S_URLS_CHECKED' => ($forum_data['forum_rules_flags'] & 4) ? true : false,
|
||||
'FORUM_RULES_PLAIN' => $forum_rules_data['text'],
|
||||
'S_BBCODE_CHECKED' => ($forum_rules_data['allow_bbcode']) ? true : false,
|
||||
'S_SMILIES_CHECKED' => ($forum_rules_data['allow_smilies']) ? true : false,
|
||||
'S_URLS_CHECKED' => ($forum_rules_data['allow_urls']) ? true : false,
|
||||
|
||||
'FORUM_DESC' => $forum_desc_data['text'],
|
||||
'S_DESC_BBCODE_CHECKED' => ($forum_desc_data['allow_bbcode']) ? true : false,
|
||||
'S_DESC_SMILIES_CHECKED' => ($forum_desc_data['allow_smilies']) ? true : false,
|
||||
'S_DESC_URLS_CHECKED' => ($forum_desc_data['allow_urls']) ? true : false,
|
||||
|
||||
'S_FORUM_TYPE_OPTIONS' => $forum_type_options,
|
||||
'S_STATUS_OPTIONS' => $statuslist,
|
||||
@@ -657,7 +684,7 @@ class acp_forums
|
||||
$template->assign_block_vars('forums', array(
|
||||
'FOLDER_IMAGE' => $folder_image,
|
||||
'FORUM_NAME' => $row['forum_name'],
|
||||
'FORUM_DESCRIPTION' => $row['forum_desc'],
|
||||
'FORUM_DESCRIPTION' => generate_text_for_display($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield']),
|
||||
'FORUM_TOPICS' => $row['forum_topics'],
|
||||
'FORUM_POSTS' => $row['forum_posts'],
|
||||
|
||||
|
@@ -243,10 +243,14 @@ class acp_groups
|
||||
// Did we submit?
|
||||
if ($update)
|
||||
{
|
||||
$group_name = request_var('group_name', '');
|
||||
$group_description = request_var('group_description', '');
|
||||
$group_name = request_var('group_name', '', true);
|
||||
$group_desc = request_var('group_desc', '', true);
|
||||
$group_type = request_var('group_type', GROUP_FREE);
|
||||
|
||||
$allow_desc_bbcode = request_var('desc_parse_bbcode', false);
|
||||
$allow_desc_urls = request_var('desc_parse_urls', false);
|
||||
$allow_desc_smilies = request_var('desc_parse_smilies', false);
|
||||
|
||||
$data['uploadurl'] = request_var('uploadurl', '');
|
||||
$data['remotelink'] = request_var('remotelink', '');
|
||||
$delete = request_var('delete', '');
|
||||
@@ -324,7 +328,7 @@ class acp_groups
|
||||
}
|
||||
}
|
||||
|
||||
if (!($error = group_create($group_id, $group_type, $group_name, $group_description, $group_attributes)))
|
||||
if (!($error = group_create($group_id, $group_type, $group_name, $group_desc, $group_attributes, $allow_desc_bbcode, $allow_desc_urls, $allow_desc_smilies)))
|
||||
{
|
||||
$group_perm_from = request_var('group_perm_from', 0);
|
||||
|
||||
@@ -351,18 +355,34 @@ class acp_groups
|
||||
$message = ($action == 'edit') ? 'GROUP_UPDATED' : 'GROUP_CREATED';
|
||||
trigger_error($user->lang[$message] . adm_back_link($this->u_action));
|
||||
}
|
||||
else
|
||||
{
|
||||
$group_rank = $submit_ary['rank'];
|
||||
|
||||
$group_desc_data = array(
|
||||
'text' => $group_desc,
|
||||
'allow_bbcode' => $allow_desc_bbcode,
|
||||
'allow_smilies' => $allow_desc_smilies,
|
||||
'allow_urls' => $allow_desc_urls
|
||||
);
|
||||
}
|
||||
}
|
||||
else if (!$group_id)
|
||||
{
|
||||
$group_name = request_var('group_name', '');
|
||||
$group_description = '';
|
||||
$group_name = request_var('group_name', '', true);
|
||||
$group_desc_data = array(
|
||||
'text' => '',
|
||||
'allow_bbcode' => true,
|
||||
'allow_smilies' => true,
|
||||
'allow_urls' => true
|
||||
);
|
||||
$group_rank = 0;
|
||||
$group_type = GROUP_OPEN;
|
||||
}
|
||||
else
|
||||
{
|
||||
$group_name = $group_row['group_name'];
|
||||
$group_description = $group_row['group_description'];
|
||||
$group_desc_data = generate_text_for_edit($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_bitfield']);
|
||||
$group_type = $group_row['group_type'];
|
||||
$group_rank = $group_row['group_rank'];
|
||||
}
|
||||
@@ -440,11 +460,15 @@ class acp_groups
|
||||
'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||
'GROUP_NAME' => ($group_type == GROUP_SPECIAL) ? $user->lang['G_' . $group_name] : $group_name,
|
||||
'GROUP_INTERNAL_NAME' => $group_name,
|
||||
'GROUP_DESCRIPTION' => $group_description,
|
||||
'GROUP_DESC' => $group_desc_data['text'],
|
||||
'GROUP_RECEIVE_PM' => (isset($group_row['group_receive_pm']) && $group_row['group_receive_pm']) ? ' checked="checked"' : '',
|
||||
'GROUP_MESSAGE_LIMIT' => (isset($group_row['group_message_limit'])) ? $group_row['group_message_limit'] : 0,
|
||||
'GROUP_COLOUR' => (isset($group_row['group_colour'])) ? $group_row['group_colour'] : '',
|
||||
|
||||
'S_DESC_BBCODE_CHECKED' => $group_desc_data['allow_bbcode'],
|
||||
'S_DESC_URLS_CHECKED' => $group_desc_data['allow_urls'],
|
||||
'S_DESC_SMILIES_CHECKED'=> $group_desc_data['allow_smilies'],
|
||||
|
||||
'S_RANK_OPTIONS' => $rank_options,
|
||||
'S_GROUP_OPTIONS' => group_select_options(0),
|
||||
'AVATAR_IMAGE' => $avatar_img,
|
||||
|
@@ -1051,7 +1051,7 @@ class acp_users
|
||||
}
|
||||
|
||||
$var_ary = array(
|
||||
'dateformat' => array('string', false, 3, 15),
|
||||
'dateformat' => array('string', false, 3, 30),
|
||||
'lang' => array('match', false, '#^[a-z_]{2,}$#i'),
|
||||
'tz' => array('num', false, -13, 13),
|
||||
|
||||
|
@@ -8,6 +8,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* set_var
|
||||
*
|
||||
@@ -1580,6 +1581,156 @@ function bump_topic_allowed($forum_id, $topic_bumped, $last_post_time, $topic_po
|
||||
return $bump_time;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode text whereby text is coming from the db and expected to be pre-parsed content
|
||||
* We are placing this outside of the message parser because we are often in need of it...
|
||||
*/
|
||||
function decode_message(&$message, $bbcode_uid = '')
|
||||
{
|
||||
global $config;
|
||||
|
||||
if ($bbcode_uid)
|
||||
{
|
||||
$match = array('<br />', "[/*:m:$bbcode_uid]", ":u:$bbcode_uid", ":o:$bbcode_uid", ":$bbcode_uid");
|
||||
$replace = array("\n", '', '', '', '');
|
||||
}
|
||||
else
|
||||
{
|
||||
$match = array('<br />');
|
||||
$replace = array("\n");
|
||||
}
|
||||
|
||||
$message = str_replace($match, $replace, $message);
|
||||
|
||||
$match = array(
|
||||
'#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
|
||||
'#<!\-\- m \-\-><a href="(.*?)" target="_blank">.*?</a><!\-\- m \-\->#',
|
||||
'#<!\-\- w \-\-><a href="http:\/\/(.*?)" target="_blank">.*?</a><!\-\- w \-\->#',
|
||||
'#<!\-\- l \-\-><a href="(.*?)">.*?</a><!\-\- l \-\->#',
|
||||
'#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
|
||||
'#<.*?>#s'
|
||||
);
|
||||
|
||||
$replace = array('\1', '\1', '\1', '\1', '\1', '<\1>');
|
||||
|
||||
$message = preg_replace($match, $replace, $message);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* For display of custom parsed text on user-facing pages
|
||||
* Expects $text to be the value directly from the database (stored value)
|
||||
*/
|
||||
function generate_text_for_display($text, $uid, $bitfield)
|
||||
{
|
||||
global $__bbcode;
|
||||
|
||||
if (!$text)
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
// Get flags... they are always allow_bbcode, allow_smilies and allow_urls
|
||||
$flags = $bitfield;
|
||||
if ($flags >> 3)
|
||||
{
|
||||
$flags = bindec(substr(decbin($flags), strlen(decbin($flags >> 3))));
|
||||
}
|
||||
|
||||
// Parse bbcode if bbcode uid stored and bbcode enabled
|
||||
if ($uid && ($flags & 1))
|
||||
{
|
||||
if (!class_exists('bbcode'))
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx);
|
||||
}
|
||||
|
||||
if (empty($__bbcode))
|
||||
{
|
||||
$__bbcode = new bbcode($bitfield >> 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
$__bbcode->bbcode($bitfield >> 3);
|
||||
}
|
||||
|
||||
$__bbcode->bbcode_second_pass($text, $uid);
|
||||
}
|
||||
|
||||
$text = smiley_text($text, !($flags & 2));
|
||||
$text = str_replace("\n", '<br />', censor_text($text));
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
/**
|
||||
* For parsing custom parsed text to be stored within the database.
|
||||
* This function additionally returns the uid and bitfield that needs to be stored.
|
||||
* Expects $text to be the value directly from request_var() and in it's non-parsed form
|
||||
*/
|
||||
function generate_text_for_storage(&$text, &$uid, &$bitfield, $allow_bbcode = false, $allow_urls = false, $allow_smilies = false)
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
$uid = '';
|
||||
$bitfield = 0;
|
||||
|
||||
if (!$text)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!class_exists('parse_message'))
|
||||
{
|
||||
include_once($phpbb_root_path . 'includes/message_parser.' . $phpEx);
|
||||
}
|
||||
|
||||
$message_parser = new parse_message($text);
|
||||
$message_parser->parse($allow_bbcode, $allow_urls, $allow_smilies);
|
||||
|
||||
$text = $message_parser->message;
|
||||
$uid = $message_parser->bbcode_uid;
|
||||
|
||||
// If the bbcode_bitfield is empty, there is no need for the uid to be stored.
|
||||
if (!$message_parser->bbcode_bitfield)
|
||||
{
|
||||
$uid = '';
|
||||
}
|
||||
|
||||
$flags = (($allow_bbcode) ? 1 : 0) + (($allow_smilies) ? 2 : 0) + (($allow_urls) ? 4 : 0);
|
||||
$bitfield = $flags + ($message_parser->bbcode_bitfield << 3);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* For decoding custom parsed text for edits as well as extracting the flags
|
||||
* Expects $text to be the value directly from the database (pre-parsed content)
|
||||
*/
|
||||
function generate_text_for_edit($text, $uid, $bitfield)
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
|
||||
// Get forum flags...
|
||||
$flags = $bitfield;
|
||||
if ($flags >> 3)
|
||||
{
|
||||
$flags = bindec(substr(decbin($flags), strlen(decbin($flags >> 3))));
|
||||
}
|
||||
|
||||
decode_message($text, $uid);
|
||||
|
||||
return array(
|
||||
'allow_bbcode' => ($flags & 1) ? 1 : 0,
|
||||
'allow_smilies' => ($flags & 2) ? 1 : 0,
|
||||
'allow_urls' => ($flags & 4) ? 1 : 0,
|
||||
'text' => $text
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Censoring
|
||||
*/
|
||||
@@ -1591,7 +1742,9 @@ function censor_text($text)
|
||||
{
|
||||
$censors = array();
|
||||
|
||||
// TODO: For ANONYMOUS, this option should be enabled by default
|
||||
/**
|
||||
* @todo For ANONYMOUS censoring should be enabled by default
|
||||
*/
|
||||
if ($user->optionget('viewcensors'))
|
||||
{
|
||||
$cache->obtain_word_list($censors);
|
||||
|
@@ -223,7 +223,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||
'S_IS_CAT' => true,
|
||||
'FORUM_ID' => $row['forum_id'],
|
||||
'FORUM_NAME' => $row['forum_name'],
|
||||
'FORUM_DESC' => $row['forum_desc'],
|
||||
'FORUM_DESC' => generate_text_for_display($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield']),
|
||||
'U_VIEWFORUM' => "{$phpbb_root_path}viewforum.$phpEx$SID&f=" . $row['forum_id'])
|
||||
);
|
||||
|
||||
@@ -319,7 +319,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||
|
||||
'FORUM_ID' => $row['forum_id'],
|
||||
'FORUM_NAME' => $row['forum_name'],
|
||||
'FORUM_DESC' => $row['forum_desc'],
|
||||
'FORUM_DESC' => generate_text_for_display($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield']),
|
||||
'TOPICS' => $row['forum_topics'],
|
||||
$l_post_click_count => $post_click_count,
|
||||
'FORUM_FOLDER_IMG' => ($row['forum_image']) ? '<img src="' . $phpbb_root_path . $row['forum_image'] . '" alt="' . $user->lang['folder_alt'] . '" />' : $user->img($folder_image, $folder_alt),
|
||||
@@ -370,14 +370,7 @@ function generate_forum_rules(&$forum_data)
|
||||
|
||||
if ($forum_data['forum_rules'])
|
||||
{
|
||||
include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx);
|
||||
$bbcode = new bbcode($forum_data['forum_rules_bbcode_bitfield']);
|
||||
|
||||
$bbcode->bbcode_second_pass($forum_data['forum_rules'], $forum_data['forum_rules_bbcode_uid']);
|
||||
|
||||
$forum_data['forum_rules'] = smiley_text($forum_data['forum_rules'], !($forum_data['forum_rules_flags'] & 2));
|
||||
$forum_data['forum_rules'] = str_replace("\n", '<br />', censor_text($forum_data['forum_rules']));
|
||||
unset($bbcode);
|
||||
$forum_data['forum_rules'] = generate_text_for_display($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield']);
|
||||
}
|
||||
|
||||
$template->assign_vars(array(
|
||||
@@ -425,7 +418,7 @@ function generate_forum_nav(&$forum_data)
|
||||
$template->assign_vars(array(
|
||||
'FORUM_ID' => $forum_data['forum_id'],
|
||||
'FORUM_NAME' => $forum_data['forum_name'],
|
||||
'FORUM_DESC' => strip_tags($forum_data['forum_desc']))
|
||||
'FORUM_DESC' => generate_text_for_display($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield']))
|
||||
);
|
||||
|
||||
return;
|
||||
|
@@ -472,34 +472,6 @@ function create_thumbnail($source, $destination, $mimetype)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* DECODE TEXT -> This will/should be handled by bbcode.php eventually
|
||||
*/
|
||||
function decode_message(&$message, $bbcode_uid = '')
|
||||
{
|
||||
global $config;
|
||||
|
||||
$match = array('<br />', "[/*:m:$bbcode_uid]", ":u:$bbcode_uid", ":o:$bbcode_uid", ":$bbcode_uid");
|
||||
$replace = array("\n", '', '', '', '');
|
||||
|
||||
$message = ($bbcode_uid) ? str_replace($match, $replace, $message) : str_replace('<br />', "\n", $message);
|
||||
|
||||
$match = array(
|
||||
'#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
|
||||
'#<!\-\- m \-\-><a href="(.*?)" target="_blank">.*?</a><!\-\- m \-\->#',
|
||||
'#<!\-\- w \-\-><a href="http:\/\/(.*?)" target="_blank">.*?</a><!\-\- w \-\->#',
|
||||
'#<!\-\- l \-\-><a href="(.*?)">.*?</a><!\-\- l \-\->#',
|
||||
'#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
|
||||
'#<.*?>#s'
|
||||
);
|
||||
|
||||
$replace = array('\1', '\1', '\1', '\1', '\1', '<\1>', '');
|
||||
|
||||
$message = preg_replace($match, $replace, $message);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate Topic Icons for display
|
||||
*/
|
||||
|
@@ -569,12 +569,7 @@ class custom_profile
|
||||
|
||||
if ($preview == false)
|
||||
{
|
||||
include_once($phpbb_root_path . "includes/message_parser.$phpEx");
|
||||
include_once($phpbb_root_path . 'includes/functions_posting.'.$phpEx);
|
||||
$message_parser = new parse_message();
|
||||
$message_parser->message = $value;
|
||||
$message_parser->decode_message($user->profile_fields[str_replace('pf_', '', $profile_row['field_ident']) . '_bbcode_uid']);
|
||||
$value = $message_parser->message;
|
||||
decode_message($value, $user->profile_fields[str_replace('pf_', '', $profile_row['field_ident']) . '_bbcode_uid']);
|
||||
}
|
||||
|
||||
$field_length = explode('|', $profile_row['field_length']);
|
||||
|
@@ -1142,7 +1142,7 @@ function avatar_gallery($category, $avatar_select, $items_per_column, $block_var
|
||||
* Add or edit a group. If we're editing a group we only update user
|
||||
* parameters such as rank, etc. if they are changed
|
||||
*/
|
||||
function group_create(&$group_id, $type, $name, $desc, $group_attributes)
|
||||
function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow_desc_bbcode = false, $allow_desc_urls = false, $allow_desc_smilies = false)
|
||||
{
|
||||
global $phpbb_root_path, $config, $db, $user, $file_upload;
|
||||
|
||||
@@ -1182,10 +1182,18 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes)
|
||||
{
|
||||
$sql_ary = array(
|
||||
'group_name' => (string) $name,
|
||||
'group_description' => (string) $desc,
|
||||
'group_desc' => (string) $desc,
|
||||
'group_desc_uid' => '',
|
||||
'group_desc_bitfield' => 0,
|
||||
'group_type' => (int) $type,
|
||||
);
|
||||
|
||||
// Parse description
|
||||
if ($desc)
|
||||
{
|
||||
generate_text_for_storage($sql_ary['group_desc'], $sql_ary['group_desc_uid'], $sql_ary['group_desc_bitfield'], $allow_desc_bbcode, $allow_desc_urls, $allow_desc_smilies);
|
||||
}
|
||||
|
||||
if (sizeof($group_attributes))
|
||||
{
|
||||
foreach ($attribute_ary as $attribute => $type)
|
||||
|
@@ -61,7 +61,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)
|
||||
|
||||
$template->assign_vars(array(
|
||||
'FORUM_NAME' => $forum_info['forum_name'],
|
||||
'FORUM_DESCRIPTION' => $forum_info['forum_desc'],
|
||||
'FORUM_DESCRIPTION' => generate_text_for_display($forum_info['forum_desc'], $forum_info['forum_desc_uid'], $forum_info['forum_desc_bitfield']),
|
||||
|
||||
'REPORTED_IMG' => $user->img('icon_reported', 'TOPIC_REPORTED'),
|
||||
'UNAPPROVED_IMG' => $user->img('icon_unapproved', 'TOPIC_UNAPPROVED'),
|
||||
|
@@ -183,7 +183,7 @@ class session
|
||||
if ($this->time_now - $this->data['session_time'] > 60 || $this->data['session_page'] != $this->page['page'])
|
||||
{
|
||||
$sql = 'UPDATE ' . SESSIONS_TABLE . "
|
||||
SET session_time = $this->time_now, session_page = '" . $db->sql_escape($this->page['page']) . "'
|
||||
SET session_time = $this->time_now, session_page = '" . $db->sql_escape(substr($this->page['page'], 0, 199)) . "'
|
||||
WHERE session_id = '" . $db->sql_escape($this->session_id) . "'";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
@@ -380,7 +380,7 @@ class session
|
||||
'session_last_visit' => (int) $this->data['session_last_visit'],
|
||||
'session_time' => (int) $this->time_now,
|
||||
'session_browser' => (string) $this->browser,
|
||||
'session_page' => (string) $this->page['page'],
|
||||
'session_page' => (string) substr($this->page['page'], 0, 199),
|
||||
'session_ip' => (string) $this->ip,
|
||||
'session_admin' => ($set_admin) ? 1 : 0,
|
||||
'session_viewonline' => ($viewonline) ? 1 : 0,
|
||||
|
@@ -248,7 +248,7 @@ class ucp_groups
|
||||
}
|
||||
}
|
||||
|
||||
$sql = 'SELECT g.group_id, g.group_name, g.group_description, g.group_type, ug.group_leader, ug.user_pending
|
||||
$sql = 'SELECT g.group_id, g.group_name, g.group_desc, g.group_desc_uid, g.group_desc_bitfield, g.group_type, ug.group_leader, ug.user_pending
|
||||
FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug
|
||||
WHERE ug.user_id = ' . $user->data['user_id'] . '
|
||||
AND g.group_id = ug.group_id
|
||||
@@ -287,7 +287,7 @@ class ucp_groups
|
||||
$template->assign_block_vars($block, array(
|
||||
'GROUP_ID' => $row['group_id'],
|
||||
'GROUP_NAME' => ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'],
|
||||
'GROUP_DESC' => ($row['group_type'] <> GROUP_SPECIAL) ? $row['group_description'] : $user->lang['GROUP_IS_SPECIAL'],
|
||||
'GROUP_DESC' => ($row['group_type'] <> GROUP_SPECIAL) ? generate_text_for_display($row['group_desc'], $row['group_desc_uid'], $row['group_desc_bitfield']) : $user->lang['GROUP_IS_SPECIAL'],
|
||||
'GROUP_SPECIAL' => ($row['group_type'] <> GROUP_SPECIAL) ? false : true,
|
||||
'GROUP_STATUS' => $user->lang['GROUP_IS_' . $group_status],
|
||||
|
||||
@@ -303,7 +303,7 @@ class ucp_groups
|
||||
|
||||
// Hide hidden groups unless user is an admin with group privileges
|
||||
$sql_and = ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) ? '<> ' . GROUP_SPECIAL : 'NOT IN (' . GROUP_SPECIAL . ', ' . GROUP_HIDDEN . ')';
|
||||
$sql = 'SELECT group_id, group_name, group_description, group_type
|
||||
$sql = 'SELECT group_id, group_name, group_desc, group_desc_uid, group_desc_bitfield, group_type
|
||||
FROM ' . GROUPS_TABLE . '
|
||||
WHERE group_id NOT IN (' . implode(', ', $group_id_ary) . ")
|
||||
AND group_type $sql_and
|
||||
@@ -339,7 +339,7 @@ class ucp_groups
|
||||
$template->assign_block_vars('nonmember', array(
|
||||
'GROUP_ID' => $row['group_id'],
|
||||
'GROUP_NAME' => ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'],
|
||||
'GROUP_DESC' => ($row['group_type'] <> GROUP_SPECIAL) ? $row['group_description'] : $user->lang['GROUP_IS_SPECIAL'],
|
||||
'GROUP_DESC' => ($row['group_type'] <> GROUP_SPECIAL) ? generate_text_for_display($row['group_desc'], $row['group_desc_uid'], $row['group_desc_bitfield']) : $user->lang['GROUP_IS_SPECIAL'],
|
||||
'GROUP_SPECIAL' => ($row['group_type'] <> GROUP_SPECIAL) ? false : true,
|
||||
'GROUP_CLOSED' => ($row['group_type'] <> GROUP_CLOSED || $auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) ? false : true,
|
||||
'GROUP_STATUS' => $user->lang['GROUP_IS_' . $group_status],
|
||||
@@ -415,10 +415,14 @@ class ucp_groups
|
||||
// Did we submit?
|
||||
if ($update)
|
||||
{
|
||||
$group_name = request_var('group_name', '');
|
||||
$group_description = request_var('group_description', '');
|
||||
$group_name = request_var('group_name', '', true);
|
||||
$group_desc = request_var('group_desc', '', true);
|
||||
$group_type = request_var('group_type', GROUP_FREE);
|
||||
|
||||
$allow_desc_bbcode = request_var('desc_parse_bbcode', false);
|
||||
$allow_desc_urls = request_var('desc_parse_urls', false);
|
||||
$allow_desc_smilies = request_var('desc_parse_smilies', false);
|
||||
|
||||
$data['uploadurl'] = request_var('uploadurl', '');
|
||||
$data['remotelink'] = request_var('remotelink', '');
|
||||
$delete = request_var('delete', '');
|
||||
@@ -496,23 +500,39 @@ class ucp_groups
|
||||
}
|
||||
}
|
||||
|
||||
if (!($error = group_create($group_id, $group_type, $group_name, $group_description, $group_attributes)))
|
||||
if (!($error = group_create($group_id, $group_type, $group_name, $group_desc, $group_attributes, $allow_desc_bbcode, $allow_desc_urls, $allow_desc_smilies)))
|
||||
{
|
||||
$message = ($action == 'edit') ? 'GROUP_UPDATED' : 'GROUP_CREATED';
|
||||
trigger_error($user->lang[$message] . $return_page);
|
||||
}
|
||||
else
|
||||
{
|
||||
$group_rank = $submit_ary['rank'];
|
||||
|
||||
$group_desc_data = array(
|
||||
'text' => $group_desc,
|
||||
'allow_bbcode' => $allow_desc_bbcode,
|
||||
'allow_smilies' => $allow_desc_smilies,
|
||||
'allow_urls' => $allow_desc_urls
|
||||
);
|
||||
}
|
||||
}
|
||||
else if (!$group_id)
|
||||
{
|
||||
$group_name = request_var('group_name', '');
|
||||
$group_description = '';
|
||||
$group_name = request_var('group_name', '', true);
|
||||
$group_desc_data = array(
|
||||
'text' => '',
|
||||
'allow_bbcode' => true,
|
||||
'allow_smilies' => true,
|
||||
'allow_urls' => true
|
||||
);
|
||||
$group_rank = 0;
|
||||
$group_type = GROUP_OPEN;
|
||||
}
|
||||
else
|
||||
{
|
||||
$group_name = $group_row['group_name'];
|
||||
$group_description = $group_row['group_description'];
|
||||
$group_desc_data = generate_text_for_edit($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_bitfield']);
|
||||
$group_type = $group_row['group_type'];
|
||||
$group_rank = $group_row['group_rank'];
|
||||
}
|
||||
@@ -576,11 +596,15 @@ class ucp_groups
|
||||
'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||
'GROUP_NAME' => ($group_type == GROUP_SPECIAL) ? $user->lang['G_' . $group_name] : $group_name,
|
||||
'GROUP_INTERNAL_NAME' => $group_name,
|
||||
'GROUP_DESCRIPTION' => $group_description,
|
||||
'GROUP_DESC' => $group_desc_data['text'],
|
||||
'GROUP_RECEIVE_PM' => (isset($group_row['group_receive_pm']) && $group_row['group_receive_pm']) ? ' checked="checked"' : '',
|
||||
'GROUP_MESSAGE_LIMIT' => (isset($group_row['group_message_limit'])) ? $group_row['group_message_limit'] : 0,
|
||||
'GROUP_COLOUR' => (isset($group_row['group_colour'])) ? $group_row['group_colour'] : '',
|
||||
|
||||
'S_DESC_BBCODE_CHECKED' => $group_desc_data['allow_bbcode'],
|
||||
'S_DESC_URLS_CHECKED' => $group_desc_data['allow_urls'],
|
||||
'S_DESC_SMILIES_CHECKED'=> $group_desc_data['allow_smilies'],
|
||||
|
||||
'S_RANK_OPTIONS' => $rank_options,
|
||||
'AVATAR_IMAGE' => $avatar_img,
|
||||
'AVATAR_MAX_FILESIZE' => $config['avatar_filesize'],
|
||||
@@ -848,7 +872,7 @@ class ucp_groups
|
||||
default:
|
||||
$user->add_lang('acp/common');
|
||||
|
||||
$sql = 'SELECT g.group_id, g.group_name, g.group_description, g.group_type, ug.group_leader
|
||||
$sql = 'SELECT g.group_id, g.group_name, g.group_desc, g.group_desc_uid, g.group_desc_bitfield, g.group_type, ug.group_leader
|
||||
FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug
|
||||
WHERE ug.user_id = ' . $user->data['user_id'] . '
|
||||
AND g.group_id = ug.group_id
|
||||
@@ -860,7 +884,7 @@ class ucp_groups
|
||||
{
|
||||
$template->assign_block_vars('leader', array(
|
||||
'GROUP_NAME' => ($value['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $value['group_name']] : $value['group_name'],
|
||||
'GROUP_DESC' => $value['group_description'],
|
||||
'GROUP_DESC' => generate_text_for_display($value['group_desc'], $value['group_desc_uid'], $value['group_desc_bitfield']),
|
||||
'GROUP_TYPE' => $value['group_type'],
|
||||
'GROUP_ID' => $value['group_id'],
|
||||
|
||||
|
@@ -50,7 +50,7 @@ class ucp_prefs
|
||||
}
|
||||
|
||||
$var_ary = array(
|
||||
'dateformat' => array('string', false, 3, 15),
|
||||
'dateformat' => array('string', false, 3, 30),
|
||||
'lang' => array('match', false, '#^[a-z_]{2,}$#i'),
|
||||
'tz' => array('num', false, -13, 13),
|
||||
);
|
||||
|
@@ -223,10 +223,7 @@ class ucp_profile
|
||||
case 'profile_info':
|
||||
|
||||
include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);
|
||||
include($phpbb_root_path . 'includes/message_parser.'.$phpEx);
|
||||
// TODO: The posting file is included because $message_parser->decode_message() relies on decode_message() in the posting functions.
|
||||
include($phpbb_root_path . 'includes/functions_posting.'.$phpEx);
|
||||
|
||||
|
||||
$cp = new custom_profile();
|
||||
|
||||
$cp_data = $cp_error = array();
|
||||
|
Reference in New Issue
Block a user