diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 92c44ffa2d..cb071384f2 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -457,7 +457,7 @@ if( isset($HTTP_GET_VARS['highlight']) ) { if( trim($words[$i]) != "" ) { - $highlight_match[] = "#\b(\/?)(" . str_replace("\*", ".*?", $words[$i]) . ")(?!(.*?".">.*?<)|(.*?\">)|((1)?".">))\b#i"; + $highlight_match[] = "#\b(\/?)(" . str_replace("*", ".*?", $words[$i]) . ")(?!(.*?".">.*?<)|(.*?\">)|((1)?".">))\b#i"; $highlight_replace[] = '\2'; } } @@ -668,28 +668,40 @@ if( !empty($forum_row['topic_vote']) ) WHERE vd.topic_id = $topic_id AND vr.vote_id = vd.vote_id ORDER BY vr.vote_option_id ASC"; - if( !$result = $db->sql_query($sql) ) + if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, "Couldn't obtain vote data for this topic", "", __LINE__, __FILE__, $sql); } - if( $vote_options = $db->sql_numrows($result) ) + if( $row = $db->sql_fetchrow($result) ) { - $vote_info = $db->sql_fetchrowset($result); + $poll_id = $row['vote_id']; + $poll_title = ( count($orig_word) ) ? preg_replace($orig_word, $replacement_word, $row['vote_text']) : $row['vote_text']; + $poll_length = $row['vote_length']; + $poll_start = $row['vote_start']; - $vote_id = $vote_info[0]['vote_id']; - $vote_title = $vote_info[0]['vote_text']; + $option_id = array(); + $option_text = array(); + $option_result = array(); + + do + { + $option_id[] = $row['vote_option_id']; + $option_text[] = ( count($orig_word) ) ? preg_replace($orig_word, $replacement_word, $row['vote_option_text']) : $row['vote_option_text']; + $option_result[] = $row['vote_result']; + } + while ( $row = $db->sql_fetchrow($result) ); $sql = "SELECT vote_id FROM " . VOTE_USERS_TABLE . " - WHERE vote_id = $vote_id + WHERE vote_id = $poll_id AND vote_user_id = " . $userdata['user_id']; - if( !$result = $db->sql_query($sql) ) + if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, "Couldn't obtain user vote data for this topic", "", __LINE__, __FILE__, $sql); } - $user_voted = ( $db->sql_numrows($result) ) ? TRUE : 0; + $user_voted = ( $row = $db->sql_fetchrow($result) ) ? true : 0; if( isset($HTTP_GET_VARS['vote']) || isset($HTTP_POST_VARS['vote']) ) { @@ -700,46 +712,37 @@ if( !empty($forum_row['topic_vote']) ) $view_result = 0; } - $poll_expired = ( $vote_info[0]['vote_length'] ) ? ( ( $vote_info[0]['vote_start'] + $vote_info[0]['vote_length'] < time() ) ? TRUE : 0 ) : 0; + $poll_expired = ( $poll_length ) ? ( ( $poll_start + $poll_length < time() ) ? TRUE : 0 ) : 0; if( $user_voted || $view_result || $poll_expired || !$is_auth['auth_vote'] || $forum_row['topic_status'] == TOPIC_LOCKED ) { - - $template->set_filenames(array( - "pollbox" => "viewtopic_poll_result.tpl") - ); - $vote_results_sum = 0; - for($i = 0; $i < $vote_options; $i++) { $vote_results_sum += $vote_info[$i]['vote_result']; } + $template->set_filenames(array( + "pollbox" => "viewtopic_poll_result.tpl") + ); + $vote_graphic = 0; $vote_graphic_max = count($images['voting_graphic']); - for($i = 0; $i < $vote_options; $i++) + for($i = 0; $i < count($option_id); $i++) { - $vote_percent = ( $vote_results_sum > 0 ) ? $vote_info[$i]['vote_result'] / $vote_results_sum : 0; - $vote_graphic_length = round($vote_percent * $board_config['vote_graphic_length']); - - $vote_graphic_img = $images['voting_graphic'][$vote_graphic]; - $vote_graphic = ($vote_graphic < $vote_graphic_max - 1) ? $vote_graphic + 1 : 0; - - if( count($orig_word) ) - { - $vote_info[$i]['vote_option_text'] = preg_replace($orig_word, $replacement_word, $vote_info[$i]['vote_option_text']); - } + $vote_percent = ( $vote_results_sum > 0 ) ? $option_result[$i] / $vote_results_sum : 0; $template->assign_block_vars("poll_option", array( - "POLL_OPTION_CAPTION" => $vote_info[$i]['vote_option_text'], - "POLL_OPTION_RESULT" => $vote_info[$i]['vote_result'], - "POLL_OPTION_PERCENT" => sprintf("%.1d%%", ($vote_percent * 100)), + "POLL_OPTION_CAPTION" => $option_text[$i], + "POLL_OPTION_RESULT" => $option_result[$i], + "POLL_OPTION_PERCENT" => sprintf("%.1d%%", ( $vote_percent * 100 )), - "POLL_OPTION_IMG" => $vote_graphic_img, - "POLL_OPTION_IMG_WIDTH" => $vote_graphic_length) + "POLL_OPTION_IMG" => $images['voting_graphic'][$vote_graphic], + "POLL_OPTION_IMG_WIDTH" => round($vote_percent * $board_config['vote_graphic_length'])) ); + + $vote_graphic = ( $vote_graphic < $vote_graphic_max - 1 ) ? $vote_graphic + 1 : 0; } $template->assign_vars(array( @@ -754,16 +757,11 @@ if( !empty($forum_row['topic_vote']) ) "pollbox" => "viewtopic_poll_ballot.tpl") ); - for($i = 0; $i < $vote_options; $i++) + for($i = 0; $i < count($option_id); $i++) { - if( count($orig_word) ) - { - $vote_info[$i]['vote_option_text'] = preg_replace($orig_word, $replacement_word, $vote_info[$i]['vote_option_text']); - } - $template->assign_block_vars("poll_option", array( - "POLL_OPTION_ID" => $vote_info[$i]['vote_option_id'], - "POLL_OPTION_CAPTION" => $vote_info[$i]['vote_option_text']) + "POLL_OPTION_ID" => $option_id[$i], + "POLL_OPTION_CAPTION" => $option_text[$i]) ); } @@ -777,20 +775,14 @@ if( !empty($forum_row['topic_vote']) ) $s_hidden_fields = ''; } - if( count($orig_word) ) - { - $vote_title = preg_replace($orig_word, $replacement_word, $vote_title); - } - $template->assign_vars(array( - "POLL_QUESTION" => $vote_title, + "POLL_QUESTION" => $poll_title, "S_HIDDEN_FIELDS" => ( !empty($s_hidden_fields) ) ? $s_hidden_fields : "", "S_VOTE_ACTION" => append_sid("posting.$phpEx?" . POST_TOPIC_URL . "=$topic_id")) ); $template->assign_var_from_handle("POLL_DISPLAY", "pollbox"); - } }