diff --git a/phpBB/adm/style/acp_modules.html b/phpBB/adm/style/acp_modules.html index c9f7c0baf1..25920f7577 100644 --- a/phpBB/adm/style/acp_modules.html +++ b/phpBB/adm/style/acp_modules.html @@ -27,6 +27,7 @@ // Create the new select tag var new_node = document.createElement('select'); new_node.setAttribute('id', 'module_mode'); + new_node.setAttribute('name', 'module_mode'); // Substitute it for the old one item.parentNode.replaceChild(new_node, item); diff --git a/phpBB/includes/mcp/mcp_forum.php b/phpBB/includes/mcp/mcp_forum.php index 4fdae3159d..9c51990ef0 100644 --- a/phpBB/includes/mcp/mcp_forum.php +++ b/phpBB/includes/mcp/mcp_forum.php @@ -16,6 +16,8 @@ function mcp_forum_view($id, $mode, $action, $forum_info) global $template, $db, $user, $auth, $cache; global $phpEx, $phpbb_root_path, $config; + $user->add_lang('viewtopic'); + include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx); $url = append_sid("{$phpbb_root_path}mcp.$phpEx?" . extra_url()); @@ -78,6 +80,9 @@ function mcp_forum_view($id, $mode, $action, $forum_info) 'S_CAN_SYNC' => $auth->acl_get('m_', $forum_id), 'S_CAN_APPROVE' => $auth->acl_get('m_approve', $forum_id), 'S_MERGE_SELECT' => ($action == 'merge_select') ? true : false, + 'S_CAN_MAKE_NORMAL' => $auth->acl_gets('f_sticky', 'f_announce', $forum_id), + 'S_CAN_MAKE_STICKY' => $auth->acl_get('f_sticky', $forum_id), + 'S_CAN_MAKE_ANNOUNCE' => $auth->acl_get('f_announce', $forum_id), 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id), 'U_VIEW_FORUM_LOGS' => ($auth->acl_gets('a_', 'm_', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=logs&mode=forum_logs&f=' . $forum_id) : '', diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php index 262e9d0c74..135280c650 100644 --- a/phpBB/includes/mcp/mcp_main.php +++ b/phpBB/includes/mcp/mcp_main.php @@ -312,13 +312,13 @@ function change_topic_type($action, $topic_ids) break; } - $redirect = request_var('redirect', $user->data['session_page']); + $redirect = request_var('redirect', build_url(array('_f_', 'action', 'quickmod'))); - $s_hidden_fields = build_hidden_fields(array( + $s_hidden_fields = array( 'topic_id_list' => $topic_ids, 'f' => $forum_id, 'action' => $action, - 'redirect' => $redirect) + 'redirect' => $redirect, ); $success_msg = ''; @@ -333,22 +333,24 @@ function change_topic_type($action, $topic_ids) $db->sql_query($sql); // Reset forum id if a global topic is within the array - if ($forum_id) + $to_forum_id = request_var('to_forum_id', 0); + + if ($to_forum_id) { $sql = 'UPDATE ' . TOPICS_TABLE . " - SET topic_type = $new_topic_type, forum_id = $forum_id + SET topic_type = $new_topic_type, forum_id = $to_forum_id WHERE " . $db->sql_in_set('topic_id', $topic_ids) . ' AND forum_id = 0'; $db->sql_query($sql); // Update forum_ids for all posts $sql = 'UPDATE ' . POSTS_TABLE . " - SET forum_id = $forum_id + SET forum_id = $to_forum_id WHERE " . $db->sql_in_set('topic_id', $topic_ids) . ' AND forum_id = 0'; $db->sql_query($sql); - sync('forum', 'forum_id', $forum_id); + sync('forum', 'forum_id', $to_forum_id); } } else @@ -403,7 +405,41 @@ function change_topic_type($action, $topic_ids) } else { - confirm_box(false, $l_new_type, $s_hidden_fields); + // Global topic involved? + $global_involved = false; + + if ($new_topic_type != POST_GLOBAL) + { + $sql = 'SELECT forum_id + FROM ' . TOPICS_TABLE . ' + WHERE ' . $db->sql_in_set('topic_id', $topic_ids) . ' + AND forum_id = 0'; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if ($row) + { + $global_involved = true; + } + } + + if ($global_involved) + { + global $template; + + $template->assign_vars(array( + 'S_FORUM_SELECT' => make_forum_select(request_var('f', $forum_id), false, false, true, true), + 'S_CAN_LEAVE_SHADOW' => false, + 'ADDITIONAL_MSG' => (sizeof($topic_ids) == 1) ? $user->lang['SELECT_FORUM_GLOBAL_ANNOUNCEMENT'] : $user->lang['SELECT_FORUM_GLOBAL_ANNOUNCEMENTS']) + ); + + confirm_box(false, $l_new_type, build_hidden_fields($s_hidden_fields), 'mcp_move.html'); + } + else + { + confirm_box(false, $l_new_type, build_hidden_fields($s_hidden_fields)); + } } $redirect = request_var('redirect', "index.$phpEx"); @@ -437,7 +473,7 @@ function mcp_move_topic($topic_ids) } $to_forum_id = request_var('to_forum_id', 0); - $redirect = request_var('redirect', $user->data['session_page']); + $redirect = request_var('redirect', build_url(array('_f_', 'action', 'quickmod'))); $additional_msg = $success_msg = ''; $s_hidden_fields = build_hidden_fields(array( diff --git a/phpBB/includes/mcp/mcp_post.php b/phpBB/includes/mcp/mcp_post.php index f17821ae28..a921d90041 100644 --- a/phpBB/includes/mcp/mcp_post.php +++ b/phpBB/includes/mcp/mcp_post.php @@ -145,8 +145,10 @@ function mcp_post_details($id, $mode, $action) 'POST_DATE' => $user->format_date($post_info['post_time']), 'POST_IP' => $post_info['poster_ip'], 'POST_IPADDR' => @gethostbyaddr($post_info['poster_ip']), - 'POST_ID' => $post_info['post_id']) - ); + 'POST_ID' => $post_info['post_id'], + + 'U_WHOIS' => ($auth->acl_get('m_info', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&action=whois&p=$post_id&ip={$post_info['poster_ip']}") : '', + )); // Get User Notes $log_data = array(); @@ -274,10 +276,9 @@ function mcp_post_details($id, $mode, $action) $sql = 'SELECT poster_ip, COUNT(poster_ip) AS postings FROM ' . POSTS_TABLE . ' - WHERE poster_id = ' . $post_info['poster_id'] . ' - AND poster_ip <> ' . $db->sql_escape($post_info['poster_ip']) . ' + WHERE poster_id = ' . $post_info['poster_id'] . " GROUP BY poster_ip - ORDER BY postings DESC'; + ORDER BY postings DESC"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php index 44904358e5..2b761bfcae 100644 --- a/phpBB/includes/mcp/mcp_topic.php +++ b/phpBB/includes/mcp/mcp_topic.php @@ -280,7 +280,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject) return; } - $redirect = request_var('redirect', $user->data['session_page']); + $redirect = request_var('redirect', build_url(array('_f_', 'quickmod'))); $s_hidden_fields = build_hidden_fields(array( 'i' => 'main', @@ -438,7 +438,7 @@ function merge_posts($topic_id, $to_topic_id) return; } - $redirect = request_var('redirect', $user->data['session_page']); + $redirect = request_var('redirect', build_url(array('_f_', 'quickmod'))); $s_hidden_fields = build_hidden_fields(array( 'i' => 'main', diff --git a/phpBB/includes/ucp/ucp_pm_options.php b/phpBB/includes/ucp/ucp_pm_options.php index da451b999c..fc1bffa5f5 100644 --- a/phpBB/includes/ucp/ucp_pm_options.php +++ b/phpBB/includes/ucp/ucp_pm_options.php @@ -227,6 +227,14 @@ function message_options($id, $mode, $global_privmsgs_rules, $global_rule_condit $user->data['user_full_folder'] = PRIVMSGS_INBOX; } + // Now make sure the folder is not used for rules + // We assign another folder id (the one the messages got moved to) or assign the INBOX (to not have to remove any rule) + $sql = 'UPDATE ' . PRIVMSGS_RULES_TABLE . ' SET rule_folder_id = '; + $sql .= ($remove_action == 1) ? $move_to : PRIVMSGS_INBOX; + $sql .= ' WHERE rule_folder_id = ' . $remove_folder_id; + + $db->sql_query($sql); + $meta_info = append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=$mode"); $message = $user->lang['FOLDER_REMOVED']; diff --git a/phpBB/includes/ucp/ucp_register.php b/phpBB/includes/ucp/ucp_register.php index 39afc8cad7..b8d5c438a7 100644 --- a/phpBB/includes/ucp/ucp_register.php +++ b/phpBB/includes/ucp/ucp_register.php @@ -65,6 +65,7 @@ class ucp_register if (!$agreed) { $add_lang = ($change_lang) ? '&change_lang=' . urlencode($change_lang) : ''; + $add_coppa = ($coppa) ? '&coppa=1' : ''; if ($coppa === false && $config['coppa_enable']) { @@ -92,7 +93,7 @@ class ucp_register 'S_SHOW_COPPA' => false, 'S_REGISTRATION' => true, 'S_HIDDEN_FIELDS' => ($confirm_id) ? '' : '', - 'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register' . $add_lang)) + 'S_UCP_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register' . $add_lang . $add_coppa)) ); } diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index f5cf049327..b3a7bfa89a 100755 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -97,7 +97,6 @@ class install_install extends module case 'create_table': $this->load_schema($mode, $sub); - break; case 'final' : @@ -206,8 +205,16 @@ class install_install extends module 'S_LEGEND' => false, )); +/** +* Better not enabling and adding to the loaded extensions due to the specific requirements needed + if (!@extension_loaded('mbstring')) + { + $this->can_load_dll('mbstring'); + } +*/ + $passed['mbstring'] = true; - if (extension_loaded('mbstring')) + if (@extension_loaded('mbstring')) { // Test for available database modules $template->assign_block_vars('checks', array( @@ -338,7 +345,7 @@ class install_install extends module } // Can we find Imagemagick anywhere on the system? - $exe = ((defined('PHP_OS')) && (preg_match('#^win#i', PHP_OS))) ? '.exe' : ''; + $exe = (defined('PHP_OS') && strpos(strtolower(PHP_OS), 'win') === 0) ? '.exe' : ''; $magic_home = getenv('MAGICK_HOME'); $img_imagick = ''; @@ -831,6 +838,8 @@ class install_install extends module $load_extensions = array(); $check_exts = array_merge(array($this->available_dbms[$dbms]['MODULE']), $this->php_dlls_other); + $suffix = (defined('PHP_OS') && strpos(strtolower(PHP_OS), 'win') === 0) ? 'dll' : 'so'; + foreach ($check_exts as $dll) { if (!@extension_loaded($dll)) @@ -839,6 +848,7 @@ class install_install extends module { continue; } + $load_extensions[] = "$dll.$suffix"; } } @@ -1086,7 +1096,7 @@ class install_install extends module // If we get here and the extension isn't loaded it should be safe to just go ahead and load it if (!@extension_loaded($this->available_dbms[$dbms]['MODULE'])) { - @dl($this->available_dbms[$dbms]['MODULE'] . ".$prefix"); + $this->can_load_dll($this->available_dbms[$dbms]['MODULE']); } $dbpasswd = htmlspecialchars_decode($dbpasswd); @@ -1305,6 +1315,11 @@ class install_install extends module SET forum_last_post_time = $current_time", ); + if (!@extension_loaded('gd')) + { + $this->can_load_dll('gd'); + } + // This is for people who have TTF and GD if (@extension_loaded('gd') && function_exists('imagettfbbox') && function_exists('imagettftext')) { @@ -1356,6 +1371,12 @@ class install_install extends module $dbpasswd = htmlspecialchars_decode($dbpasswd); + // If we get here and the extension isn't loaded it should be safe to just go ahead and load it + if (!@extension_loaded($this->available_dbms[$dbms]['MODULE'])) + { + $this->can_load_dll($this->available_dbms[$dbms]['MODULE']); + } + // Load the appropriate database class if not already loaded include($phpbb_root_path . 'includes/db/' . $this->available_dbms[$dbms]['DRIVER'] . '.' . $phpEx); @@ -1770,6 +1791,11 @@ class install_install extends module { global $suffix; + if (empty($suffix)) + { + $suffix = (defined('PHP_OS') && strpos(strtolower(PHP_OS), 'win') === 0) ? 'dll' : 'so'; + } + return ((@ini_get('enable_dl') || strtolower(@ini_get('enable_dl')) == 'on') && (!@ini_get('safe_mode') || strtolower(@ini_get('safe_mode')) == 'off') && @dl($dll . ".$suffix")) ? true : false; } diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 7253334bd3..e1c281eb4a 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -185,7 +185,7 @@ $lang = array_merge($lang, array( 'ACP_VIEW_ADMIN_PERMISSIONS' => 'View administrative permissions', 'ACP_VIEW_FORUM_MOD_PERMISSIONS' => 'View forum moderation permissions', 'ACP_VIEW_FORUM_PERMISSIONS' => 'View forum-based permissions', - 'ACP_VIEW_GLOBAL_MOD_PERMISSIONS' => 'View global moderatoration permissions', + 'ACP_VIEW_GLOBAL_MOD_PERMISSIONS' => 'View global moderation permissions', 'ACP_VIEW_USER_PERMISSIONS' => 'View user-based permissions', 'ACP_WORDS' => 'Word censoring', diff --git a/phpBB/language/en/mcp.php b/phpBB/language/en/mcp.php index 9eeb70d57b..1b7f430806 100644 --- a/phpBB/language/en/mcp.php +++ b/phpBB/language/en/mcp.php @@ -95,6 +95,7 @@ $lang = array_merge($lang, array( 'GLOBAL_ANNOUNCEMENT' => 'Global Announcement', 'IP_INFO' => 'IP Information', + 'IPS_POSTED_FROM' => 'IP addresses this user has posted from', 'LATEST_LOGS' => 'Latest 5 logged actions', 'LATEST_REPORTED' => 'Latest 5 reports', @@ -211,7 +212,6 @@ $lang = array_merge($lang, array( 'NO_TOPIC_ICON' => 'None', 'NO_TOPIC_SELECTED' => 'You must select at least one topic to perform this action', - 'OTHER_IPS' => 'Other IP addresses this user has posted from', 'ONLY_TOPIC' => 'Only topic "%s"', 'OTHER_USERS' => 'Users posting from this IP', @@ -262,24 +262,26 @@ $lang = array_merge($lang, array( 'RETURN_QUEUE' => '%sReturn to the queue%s', 'RETURN_REPORTS' => '%sReturn to the reports%s', - 'SEARCH_POSTS_BY_USER' => 'Search posts by', - 'SELECT_ACTION' => 'Select desired action', - 'SELECT_TOPICS_FROM' => 'Select topics from', - 'SELECT_TOPIC' => 'Select topic', - 'SELECT_USER' => 'Select user', - 'SORT_ACTION' => 'Log action', - 'SORT_DATE' => 'Date', - 'SORT_IP' => 'IP address', - 'SORT_WARNINGS' => 'Warnings', - 'SPLIT_AFTER' => 'Split from selected post', - 'SPLIT_FORUM' => 'Forum for new topic', - 'SPLIT_POSTS' => 'Split selected posts', - 'SPLIT_SUBJECT' => 'New topic title', - 'SPLIT_TOPIC_ALL' => 'Split topic from selected posts', - 'SPLIT_TOPIC_ALL_CONFIRM' => 'Are you sure you want to split this topic?', - 'SPLIT_TOPIC_BEYOND' => 'Split topic at selected post', - 'SPLIT_TOPIC_BEYOND_CONFIRM'=> 'Are you sure you want to split this topic at the selected post?', - 'SPLIT_TOPIC_EXPLAIN' => 'Using the form below you can split a topic in two, either by selecting the posts individually or by splitting at a selected post', + 'SEARCH_POSTS_BY_USER' => 'Search posts by', + 'SELECT_ACTION' => 'Select desired action', + 'SELECT_FORUM_GLOBAL_ANNOUNCEMENT' => 'Please select the forum you wish this global announcement to be displayed.', + 'SELECT_FORUM_GLOBAL_ANNOUNCEMENTS' => 'One or more of the selected topics are global announcements. Please select the forum you wish these to be displayed.', + 'SELECT_TOPICS_FROM' => 'Select topics from', + 'SELECT_TOPIC' => 'Select topic', + 'SELECT_USER' => 'Select user', + 'SORT_ACTION' => 'Log action', + 'SORT_DATE' => 'Date', + 'SORT_IP' => 'IP address', + 'SORT_WARNINGS' => 'Warnings', + 'SPLIT_AFTER' => 'Split from selected post', + 'SPLIT_FORUM' => 'Forum for new topic', + 'SPLIT_POSTS' => 'Split selected posts', + 'SPLIT_SUBJECT' => 'New topic title', + 'SPLIT_TOPIC_ALL' => 'Split topic from selected posts', + 'SPLIT_TOPIC_ALL_CONFIRM' => 'Are you sure you want to split this topic?', + 'SPLIT_TOPIC_BEYOND' => 'Split topic at selected post', + 'SPLIT_TOPIC_BEYOND_CONFIRM' => 'Are you sure you want to split this topic at the selected post?', + 'SPLIT_TOPIC_EXPLAIN' => 'Using the form below you can split a topic in two, either by selecting the posts individually or by splitting at a selected post', 'THIS_POST_IP' => 'IP for this post', 'TOPICS_APPROVED_SUCCESS' => 'The selected topics have been approved', @@ -289,6 +291,7 @@ $lang = array_merge($lang, array( 'TOPICS_LOCKED_SUCCESS' => 'The selected topics have been locked', 'TOPICS_MOVED_SUCCESS' => 'The selected topics have been moved successfully', 'TOPICS_RESYNC_SUCCESS' => 'The selected topics have been resynchronised', + 'TOPICS_TYPE_CHANGED' => 'Topic types changed successfully.', 'TOPICS_UNLOCKED_SUCCESS' => 'The selected topics have been unlocked', 'TOPIC_APPROVED_SUCCESS' => 'The selected topic has been approved', 'TOPIC_DELETED_SUCCESS' => 'The selected topic has been successfully removed from the database', diff --git a/phpBB/mcp.php b/phpBB/mcp.php index 98a59a73ed..7886091081 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -632,6 +632,7 @@ function check_ids(&$ids, $table, $sql_id, $acl_list = false, $single_forum = fa $ids = array(); $forum_id = false; + while ($row = $db->sql_fetchrow($result)) { if ($acl_list && $row['forum_id'] && !$auth->acl_gets($acl_list, $row['forum_id'])) @@ -652,17 +653,26 @@ function check_ids(&$ids, $table, $sql_id, $acl_list = false, $single_forum = fa } // Limit forum to a specific forum id? - if ($single_forum !== true && $row['forum_id'] == (int) $single_forum) + // This can get really tricky, because we do not want to create a failure on global topics. :) + if ($row['forum_id']) { - $forum_id = (int) $single_forum; - } - else if ($forum_id === false) - { - $forum_id = $row['forum_id']; - } + if ($single_forum !== true && $row['forum_id'] == (int) $single_forum) + { + $forum_id = (int) $single_forum; + } + else if ($forum_id === false) + { + $forum_id = $row['forum_id']; + } - if ($row['forum_id'] == $forum_id) + if ($row['forum_id'] == $forum_id) + { + $ids[] = $row[$sql_id]; + } + } + else { + // Always add a global topic $ids[] = $row[$sql_id]; } } @@ -673,6 +683,8 @@ function check_ids(&$ids, $table, $sql_id, $acl_list = false, $single_forum = fa return false; } + // If forum id is false and ids populated we may have only global announcements selected (returning 0 because of (int) $forum_id) + return ($single_forum === false) ? true : (int) $forum_id; } diff --git a/phpBB/styles/subSilver/template/mcp_forum.html b/phpBB/styles/subSilver/template/mcp_forum.html index 536e7bc0b9..fe20a7eca0 100644 --- a/phpBB/styles/subSilver/template/mcp_forum.html +++ b/phpBB/styles/subSilver/template/mcp_forum.html @@ -56,6 +56,12 @@ + + + + + + diff --git a/phpBB/styles/subSilver/template/mcp_move.html b/phpBB/styles/subSilver/template/mcp_move.html index 78a0579de6..eed7ca8fe3 100644 --- a/phpBB/styles/subSilver/template/mcp_move.html +++ b/phpBB/styles/subSilver/template/mcp_move.html @@ -20,7 +20,7 @@ {L_LEAVE_SHADOW}

{S_HIDDEN_FIELDS}{MESSAGE_TEXT}

-    +    {L_NO_DESTINATION_FORUM}

{S_HIDDEN_FIELDS} diff --git a/phpBB/styles/subSilver/template/mcp_post.html b/phpBB/styles/subSilver/template/mcp_post.html index 301ee6a9a7..0f695881ac 100644 --- a/phpBB/styles/subSilver/template/mcp_post.html +++ b/phpBB/styles/subSilver/template/mcp_post.html @@ -58,7 +58,7 @@ {L_THIS_POST_IP}: - {POST_IP} [ {POST_IPADDR} ] + {POST_IP}{POST_IP} [ {POST_IPADDR} ] @@ -137,7 +137,7 @@ - {L_OTHER_IPS} + {L_IPS_POSTED_FROM} [ {L_LOOKUP_ALL} ] diff --git a/phpBB/styles/subSilver/template/mcp_warn_front.html b/phpBB/styles/subSilver/template/mcp_warn_front.html index 432580325b..087e9124ff 100755 --- a/phpBB/styles/subSilver/template/mcp_warn_front.html +++ b/phpBB/styles/subSilver/template/mcp_warn_front.html @@ -21,7 +21,7 @@ - + @@ -38,7 +38,7 @@ - +
{L_MOST_WARNINGS}{L_MOST_WARNINGS}
 {L_USERNAME} 
{L_WARNINGS_ZERO_TOTAL}{L_WARNINGS_ZERO_TOTAL}
@@ -47,7 +47,7 @@ - + @@ -64,7 +64,7 @@ - +
{L_LATEST_WARNINGS}{L_LATEST_WARNINGS}
 {L_USERNAME} 
{L_WARNINGS_ZERO_TOTAL}{L_WARNINGS_ZERO_TOTAL}
diff --git a/phpBB/styles/subSilver/template/mcp_warn_list.html b/phpBB/styles/subSilver/template/mcp_warn_list.html index 5beb502b76..fcf2ca5412 100755 --- a/phpBB/styles/subSilver/template/mcp_warn_list.html +++ b/phpBB/styles/subSilver/template/mcp_warn_list.html @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/phpBB/styles/subSilver/template/ucp_prefs_personal.html b/phpBB/styles/subSilver/template/ucp_prefs_personal.html index ccab661587..ffff4a4280 100644 --- a/phpBB/styles/subSilver/template/ucp_prefs_personal.html +++ b/phpBB/styles/subSilver/template/ucp_prefs_personal.html @@ -48,7 +48,7 @@ - +
{L_WARNED_USERS}{L_WARNED_USERS}
 {L_USERNAME} 
{L_WARNINGS_ZERO_TOTAL}{L_WARNINGS_ZERO_TOTAL}
{L_NOTIFY_METHOD}:
{L_NOTIFY_METHOD_EXPLAIN}
checked="checked" />{L_NOTIFY_METHOD_EMAIL}   checked="checked" />{L_NOTIFY_METHOD_IM}   checked="checked" />{L_NOTIFY_METHOD_BOTH} checked="checked" />{L_NOTIFY_METHOD_EMAIL}   checked="checked" />{L_NOTIFY_METHOD_IM}   checked="checked" />{L_NOTIFY_METHOD_BOTH}