diff options
Diffstat (limited to 'phpBB/includes/functions_display.php')
| -rw-r--r-- | phpBB/includes/functions_display.php | 54 | 
1 files changed, 38 insertions, 16 deletions
diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index 496da72344..391b56ab69 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -1058,7 +1058,7 @@ function display_user_activity(&$userdata)  /**  * Topic and forum watching common code  */ -function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id, $notify_status = 'unset', $start = 0) +function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id, $notify_status = 'unset', $start = 0, $item_title = '')  {  	global $template, $db, $user, $phpEx, $start, $phpbb_root_path; @@ -1091,15 +1091,17 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,  			if (isset($_GET['unwatch']))  			{  				$uid = request_var('uid', 0); -				if ($uid != $user_id) -				{ -					$redirect_url = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&start=$start"); -					$message = $user->lang['ERR_UNWATCHING'] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>'); -					trigger_error($message); -				} +				$token = request_var('hash', ''); -				if (confirm_box(true)) +				if (($token && check_link_hash($token, "{$mode}_$match_id")) || confirm_box(true))  				{ +					if (($uid != $user_id) || ($_GET['unwatch'] != $mode)) +					{ +						$redirect_url = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&start=$start"); +						$message = $user->lang['ERR_UNWATCHING'] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>'); +						trigger_error($message); +					} +  					$sql = 'DELETE FROM ' . $table_sql . "  						WHERE $where_sql = $match_id  							AND user_id = $user_id"; @@ -1123,7 +1125,8 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,  						$s_hidden_fields['t'] = $topic_id;  					} -					confirm_box(false, 'UNWATCH_' . strtoupper($mode), build_hidden_fields($s_hidden_fields)); +					$confirm_box_message = (($item_title == '') ? 'UNWATCH_' . strtoupper($mode) : $user->lang('UNWATCH_' . strtoupper($mode) . '_DETAILED', $item_title)); +					confirm_box(false, $confirm_box_message, build_hidden_fields($s_hidden_fields));  				}  			}  			else @@ -1144,26 +1147,45 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,  		{  			if (isset($_GET['watch']))  			{ +				$uid = request_var('uid', 0);  				$token = request_var('hash', ''); -				$redirect_url = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&start=$start"); -				if ($_GET['watch'] == $mode && check_link_hash($token, "{$mode}_$match_id")) +				if (($token && check_link_hash($token, "{$mode}_$match_id")) || confirm_box(true))  				{ +					if (($uid != $user_id) || ($_GET['watch'] != $mode)) +					{ +						$redirect_url = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&start=$start"); +						$message = $user->lang['ERR_WATCHING'] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>'); +						trigger_error($message); +					} +  					$is_watching = true;  					$sql = 'INSERT INTO ' . $table_sql . " (user_id, $where_sql, notify_status)  						VALUES ($user_id, $match_id, " . NOTIFY_YES . ')';  					$db->sql_query($sql); + +					$redirect_url = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&start=$start");  					$message = $user->lang['ARE_WATCHING_' . strtoupper($mode)] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>'); +					meta_refresh(3, $redirect_url); +					trigger_error($message);  				}  				else  				{ -					$message = $user->lang['ERR_WATCHING'] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>'); -				} - -				meta_refresh(3, $redirect_url); +					$s_hidden_fields = array( +						'uid'		=> $user->data['user_id'], +						'watch'		=> $mode, +						'start'		=> $start, +						'f'			=> $forum_id, +					); +					if ($mode != 'forum') +					{ +						$s_hidden_fields['t'] = $topic_id; +					} -				trigger_error($message); +					$confirm_box_message = (($item_title == '') ? 'WATCH_' . strtoupper($mode) : $user->lang('WATCH_' . strtoupper($mode) . '_DETAILED', $item_title)); +					confirm_box(false, $confirm_box_message, build_hidden_fields($s_hidden_fields)); +				}  			}  			else  			{  | 
