Page 1 of 1

Hide Poll Results

Posted: 30. January 2010 18:35
by cromatics
Deine Portal Version: 1.0.5
Typ Deines phpBB Forums: Standard phpBB3
MODs installiert: Nein
Dein Wissensstand: Grundwissen

Was hast Du gemacht, bevor das Problem aufgetreten ist?


Was hast Du bereits versucht um das Problem zu lösen?


Fehlerbeschreibung und Nachricht
Hallo,
ich habe bie mir heut mal im Forum den Mod Hide Poll Results eingebaut (Umfragenergebniss bis zum ende verstecken)
läuft auch im forum Super.
Jetzt aber meine frage, gibt es eine Möglichkeit dies auch für den Umfragenblock einzufügen?
sprich das das umfragenergebniss bis zum ende geheim bleibt?

hier mal ein link zu den mod

http://www.phpbb.com/community/viewtopi ... 0&t=583577

ich danke schon mal im vorraus

lg
cromatics

Re: Hide Poll Results

Posted: 31. January 2010 14:15
by POLAR
Hallo cromatics,
wenn du den Hide Poll Results richtig eingebaut hast kannst du diese Erweiterung für das Portal nutzen.
hier mal die Datein da eine anleitung jetzt nicht so schnell ging....
Änderungen
den ganzen inhalt deiner poll.php Ersetzen mit diesen Code

Code: Select all

<?php
/*
*
* @package - Board3portal
* @version $Id: poll.php 523 2009-08-27 21:41:08Z christian_n $
* @copyright (c) kevin / saint ( www.board3.de/ ), (c) Ice, (c) nickvergessen ( www.flying-bits.org/ ), (c) redbull254 ( www.digitalfotografie-foren.de ), (c) Christian_N ( www.phpbb-projekt.de )
* @based on: phpBB3 Portal by Sevdin Filiz, www.phpbb3portal.com
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

if (!defined('IN_PHPBB') || !defined('IN_PORTAL'))
{
   exit;
}

/**
* @ignore
*/

$user->add_lang('viewtopic');

$view = request_var('view', '');
$update = request_var('update', false);
$poll_view = request_var('polls', '');

$poll_view_ar = ( strpos(urldecode($poll_view), ',') !== FALSE ) ? explode(',', urldecode($poll_view)) : (($poll_view != '') ? array($poll_view) : array());

if ($update && $portal_config['portal_poll_allow_vote'])
{
	$up_topic_id = request_var('t', 0);
	$up_forum_id = request_var('f', 0);
	$voted_id = request_var('vote_id', array('' => 0));

	$cur_voted_id = array();
	if ($user->data['is_registered'])
	{
		$sql = 'SELECT poll_option_id
			FROM ' . POLL_VOTES_TABLE . '
			WHERE topic_id = ' . $up_topic_id . '
				AND vote_user_id = ' . $user->data['user_id'];
		$result = $db->sql_query($sql);

		while ($row = $db->sql_fetchrow($result))
		{
			$cur_voted_id[] = $row['poll_option_id'];
		}
		$db->sql_freeresult($result);
	}
	else
	{
		// Cookie based guest tracking ... I don't like this but hum ho
		// it's oft requested. This relies on "nice" users who don't feel
		// the need to delete cookies to mess with results.
		if (isset($_COOKIE[$config['cookie_name'] . '_poll_' . $up_topic_id]))
		{
			$cur_voted_id = explode(',', request_var($config['cookie_name'] . '_poll_' . $up_topic_id, 0, false, true));
			$cur_voted_id = array_map('intval', $cur_voted_id);
		}
	}

	$sql = 'SELECT t.poll_length, t.poll_start, t.poll_hide_results, t.poll_vote_change, t.topic_status, f.forum_status, t.poll_max_options
			FROM ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . " f
			WHERE t.forum_id = f.forum_id AND t.topic_id = " . (int) $up_topic_id . " AND t.forum_id = " . (int) $up_forum_id;
	$result = $db->sql_query_limit($sql, 1);
	$topic_data = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);

	$s_can_up_vote = (((!sizeof($cur_voted_id) && $auth->acl_get('f_vote', $up_forum_id)) ||
		($auth->acl_get('f_votechg', $up_forum_id) && $topic_data['poll_vote_change'])) &&
		(($topic_data['poll_length'] != 0 && $topic_data['poll_start'] + $topic_data['poll_hide_results'] + $topic_data['poll_length'] > time()) || $topic_data['poll_length'] == 0) &&
		$topic_data['topic_status'] != ITEM_LOCKED &&
		$topic_data['forum_status'] != ITEM_LOCKED) ? true : false;

	if( $s_can_up_vote )
	{
		if (!sizeof($voted_id) || sizeof($voted_id) > $topic_data['poll_max_options'] || in_array(VOTE_CONVERTED, $cur_voted_id))
		{
			$redirect_url = append_sid("{$phpbb_root_path}portal.$phpEx");

			redirect($redirect_url);
			if (!sizeof($voted_id))
			{
				$message = 'NO_VOTE_OPTION';
			}
			else if (sizeof($voted_id) > $topic_data['poll_max_options'])
			{
				$message = 'TOO_MANY_VOTE_OPTIONS';
			}
			else
			{
				$message = 'VOTE_CONVERTED';
			}

			$message = $user->lang[$message] . '<br /><br />' . sprintf($user->lang['RETURN_PORTAL'], '<a href="' . $redirect_url . '">', '</a>');
			trigger_error($message);
		}

		foreach ($voted_id as $option)
		{
			if (in_array($option, $cur_voted_id))
			{
				continue;
			}

			$sql = 'UPDATE ' . POLL_OPTIONS_TABLE . '
				SET poll_option_total = poll_option_total + 1
				WHERE poll_option_id = ' . (int) $option . '
					AND topic_id = ' . (int) $up_topic_id;
			$db->sql_query($sql);

			if ($user->data['is_registered'])
			{
				$sql_ary = array(
					'topic_id'			=> (int) $up_topic_id,
					'poll_option_id'	=> (int) $option,
					'vote_user_id'		=> (int) $user->data['user_id'],
					'vote_user_ip'		=> (string) $user->ip,
				);

				$sql = 'INSERT INTO ' . POLL_VOTES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
				$db->sql_query($sql);
			}
		}

		foreach ($cur_voted_id as $option)
		{
			if (!in_array($option, $voted_id))
			{
				$sql = 'UPDATE ' . POLL_OPTIONS_TABLE . '
					SET poll_option_total = poll_option_total - 1
					WHERE poll_option_id = ' . (int) $option . '
						AND topic_id = ' . (int) $up_topic_id;
				$db->sql_query($sql);

				if ($user->data['is_registered'])
				{
					$sql = 'DELETE FROM ' . POLL_VOTES_TABLE . '
						WHERE topic_id = ' . (int) $up_topic_id . '
							AND poll_option_id = ' . (int) $option . '
							AND vote_user_id = ' . (int) $user->data['user_id'];
					$db->sql_query($sql);
				}
			}
		}

		if ($user->data['user_id'] == ANONYMOUS && !$user->data['is_bot'])
		{
			$user->set_cookie('poll_' . $up_topic_id, implode(',', $voted_id), time() + 31536000);
		}

		$sql = 'UPDATE ' . TOPICS_TABLE . '
			SET poll_last_vote = ' . time() . "
			WHERE topic_id = $up_topic_id";
		//, topic_last_post_time = ' . time() . " -- for bumping topics with new votes, ignore for now
		$db->sql_query($sql);

		$redirect_url = append_sid("{$phpbb_root_path}portal.$phpEx");

		redirect($redirect_url);
		trigger_error($user->lang['VOTE_SUBMITTED'] . '<br /><br />' . sprintf($user->lang['RETURN_PORTAL'], '<a href="' . $redirect_url . '">', '</a>'));
	}
}

$where = '';
$poll_forums = false;

if( $portal_config['portal_poll_topic_id'] !== '' )
{
	$poll_forums_config  = explode(',' ,$portal_config['portal_poll_topic_id']);
	foreach($poll_forums_config as $poll_forum )
	{
		if ( is_numeric(trim($poll_forum)) === TRUE )
		{
			$poll_forum = (int) trim($poll_forum);
			if( $auth->acl_get('f_read', $poll_forum) )
			{
				$poll_forums = true;
				$where .= ($where == "") ? "t.forum_id = '{$poll_forum}'" : " OR t.forum_id = '{$poll_forum}'";
			}
		}
	}
}
else
{
	$forum_list = $auth->acl_getf('f_read', true);

	foreach($forum_list as $pf => $pf_data )
	{
		$pf = (int) trim($pf);
		$poll_forums = true;
		$where .= ($where == "") ? "t.forum_id = '{$pf}'" : " OR t.forum_id = '{$pf}'";
	}
}

$where = ($where !== '') ? "AND ({$where})" : '';

if ($portal_config['portal_poll_hide'])
{
	$portal_poll_hide = "AND (t.poll_start + t.poll_length > ". time() ." OR t.poll_length = 0)";
} 
else
{
	$portal_poll_hide = '';
}

if ($poll_forums === true)
{

	$sql = 'SELECT t.poll_title, t.poll_start, t.poll_hide_results, t.topic_id,  t.topic_first_post_id, t.forum_id, t.poll_length, t.poll_vote_change, t.poll_max_options, t.topic_status, f.forum_status, p.bbcode_bitfield, p.bbcode_uid
			FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p, ' . FORUMS_TABLE . " f
			WHERE t.forum_id = f.forum_id AND t.topic_approved = 1 AND t.poll_start > 0
			{$where}
			AND t.topic_moved_id = 0
			AND p.post_id = t.topic_first_post_id
			{$portal_poll_hide}
			ORDER BY t.poll_start DESC";
	$limit = ( isset($portal_config['portal_poll_limit']) ) ? $portal_config['portal_poll_limit'] : 3;
	$result = $db->sql_query_limit($sql, $limit);
	$has_poll = false;

	if ($result)
	{
		while( $data = $db->sql_fetchrow($result) )
		{
			$has_poll = true;
			$poll_has_options = false;

			$topic_id = (int) $data['topic_id'];
			$forum_id = (int) $data['forum_id'];

			$cur_voted_id = array();
			if( $portal_config['portal_poll_allow_vote'] )
			{
				if ($user->data['is_registered'])
				{
					$vote_sql = 'SELECT poll_option_id
						FROM ' . POLL_VOTES_TABLE . '
						WHERE topic_id = ' . $topic_id . '
							AND vote_user_id = ' . $user->data['user_id'];
					$vote_result = $db->sql_query($vote_sql);

					while ($row = $db->sql_fetchrow($vote_result))
					{
						$cur_voted_id[] = $row['poll_option_id'];
					}
					$db->sql_freeresult($vote_result);
				}
				else
				{
					// Cookie based guest tracking ... I don't like this but hum ho
					// it's oft requested. This relies on "nice" users who don't feel
					// the need to delete cookies to mess with results.
					if (isset($_COOKIE[$config['cookie_name'] . '_poll_' . $topic_id]))
					{
						$cur_voted_id = explode(',', request_var($config['cookie_name'] . '_poll_' . $topic_id, 0, false, true));
						$cur_voted_id = array_map('intval', $cur_voted_id);
					}
				}

				$s_can_vote = (((!sizeof($cur_voted_id) && $auth->acl_get('f_vote', $forum_id)) ||
					($auth->acl_get('f_votechg', $forum_id) && $data['poll_vote_change'])) &&
					(($data['poll_length'] != 0 && $data['poll_start'] + $data['poll_length'] > time()) || $data['poll_length'] == 0) &&
					$data['topic_status'] != ITEM_LOCKED &&
					$data['forum_status'] != ITEM_LOCKED) ? true : false;
			} else {
				$s_can_vote = false;
			}

			$s_display_results = ( !$s_can_vote || ( $s_can_vote && sizeof($cur_voted_id) ) || ( $view == 'viewpoll' && in_array($topic_id, $poll_view_ar) ) ) ? true : false;
	        $s_hide_results = $data['poll_hide_results'] != 0 && $data['poll_length'] > 0 && $data['poll_start'] + $data['poll_length'] > time() ? true : false;

			$poll_sql = 'SELECT po.poll_option_id, po.poll_option_text, po.poll_option_total
				FROM ' . POLL_OPTIONS_TABLE . " po
				WHERE po.topic_id = {$topic_id}
				ORDER BY po.poll_option_id";

			$poll_result = $db->sql_query($poll_sql);
			$poll_total_votes = 0;
			$poll_data = array();

			if ($poll_result)
			{
				while( $polls_data = $db->sql_fetchrow($poll_result) )
				{
					$poll_has_options = true;
					$poll_data[] = $polls_data;
					$poll_total_votes += $polls_data['poll_option_total'];
				}
			}
			$db->sql_freeresult($poll_result);

			$make_poll_view = array();

			if( in_array($topic_id, $poll_view_ar) === FALSE )
			{
				$make_poll_view[] = $topic_id;
				$make_poll_view = array_merge($poll_view_ar, $make_poll_view);
			}

			$poll_view_str = urlencode( implode(',', $make_poll_view) );
			$portalpoll_url= append_sid("{$phpbb_root_path}portal.$phpEx", "polls=$poll_view_str");
			$portalvote_url= append_sid("{$phpbb_root_path}portal.$phpEx", "f=$forum_id&t=$topic_id");
			$viewtopic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id");
			$poll_end = $data['poll_length'] + $data['poll_start'];

			// Parse BBCode title
			if ($data['bbcode_bitfield'])
			{
				$poll_bbcode = new bbcode();
			}
			else
			{
				$poll_bbcode = false;
			}

			$data['poll_title'] = censor_text($data['poll_title']);

			if ($poll_bbcode !== false)
			{
				$poll_bbcode->bbcode_second_pass($data['poll_title'], $data['bbcode_uid'], $data['bbcode_bitfield']);
			}

			$data['poll_title'] = bbcode_nl2br($data['poll_title']);
			$data['poll_title'] = smiley_text($data['poll_title']);
			unset($poll_bbcode);

			$template->assign_block_vars('poll', array(
				'S_POLL_HAS_OPTIONS'	=> $poll_has_options,
				'POLL_QUESTION'			=> $data['poll_title'],
				'U_POLL_TOPIC'			=> append_sid($phpbb_root_path . 'viewtopic.' . $phpEx . '?t=' . $topic_id . '&f=' . $forum_id),
				'POLL_LENGTH'			=> $data['poll_length'],
				'TOPIC_ID'				=> $topic_id,
				'TOTAL_VOTES'			=> $poll_total_votes,
				'L_MAX_VOTES'			=> ($data['poll_max_options'] == 1) ? $user->lang['MAX_OPTION_SELECT'] : sprintf($user->lang['MAX_OPTIONS_SELECT'], $data['poll_max_options']),
				'L_POLL_LENGTH'			=> ($data['poll_length']) ? sprintf($user->lang[($poll_end > time()) ? 'POLL_RUN_TILL' : 'POLL_ENDED_AT'], $user->format_date($poll_end)) : '',

				'L_RESULTS_HIDDEN'	=> $user->lang['RESULTS_HIDDEN'],
		'S_HIDE_RESULTS'	=> $s_hide_results,

				'S_CAN_VOTE'			=> $s_can_vote,
				'S_DISPLAY_RESULTS'		=> $s_display_results,
				'S_IS_MULTI_CHOICE'		=> ($data['poll_max_options'] > 1) ? true : false,
				'S_POLL_ACTION'			=> $portalvote_url,
				'U_VIEW_RESULTS'		=> $portalpoll_url . '&view=viewpoll#viewpoll',
				'U_VIEW_TOPIC'			=> $viewtopic_url,
			));

			foreach($poll_data as $pd)
			{
				$option_pct = ($poll_total_votes > 0) ? $pd['poll_option_total'] / $poll_total_votes : 0;
				$option_pct_txt = sprintf("%.1d%%", ($option_pct * 100));

				// Parse BBCode option text
				if ($data['bbcode_bitfield'])
				{
					$poll_bbcode = new bbcode();
				}
				else
				{
					$poll_bbcode = false;
				}

				$pd['poll_option_text'] = censor_text($pd['poll_option_text']);

				if ($poll_bbcode !== false)
				{
					$poll_bbcode->bbcode_second_pass($pd['poll_option_text'], $data['bbcode_uid'], $data['bbcode_bitfield']);
				}

				$pd['poll_option_text'] = bbcode_nl2br($pd['poll_option_text']);
				$pd['poll_option_text'] = smiley_text($pd['poll_option_text']);
				unset($poll_bbcode);

							
		if($s_hide_results)
		{
			$template->assign_block_vars('poll.poll_option', array(
				'POLL_OPTION_ID' 		=> $pd['poll_option_id'],
				'POLL_OPTION_CAPTION' 	=> $pd['poll_option_text'],
				'POLL_OPTION_RESULT' 	=> '?',
				'POLL_OPTION_PERCENT' 	=> '?',
				'POLL_OPTION_PCT'		=> round($option_pct * 0),
				'POLL_OPTION_IMG' 		=> $user->img('poll_center', $option_pct_txt, round($option_pct * 0)),
				'POLL_OPTION_VOTED'		=> (in_array($pd['poll_option_id'], $cur_voted_id)) ? true : false)
			);
		}
		else
		{
			$template->assign_block_vars('poll.poll_option', array(
				'POLL_OPTION_ID' 		=> $pd['poll_option_id'],
				'POLL_OPTION_CAPTION' 	=> $pd['poll_option_text'],
				'POLL_OPTION_RESULT' 	=> $pd['poll_option_total'],
				'POLL_OPTION_PERCENT' 	=> $option_pct_txt,
				'POLL_OPTION_PCT'		=> round($option_pct * 100),
				'POLL_OPTION_IMG' 		=> $user->img('poll_center', $option_pct_txt, round($option_pct * 250)),
				'POLL_OPTION_VOTED'		=> (in_array($pd['poll_option_id'], $cur_voted_id)) ? true : false)
			);
		}
			}
		}
	}
	$db->sql_freeresult($result);

	$template->assign_vars(array(
		'S_DISPLAY_POLL'		=> true,
		'S_HAS_POLL'			=> $has_poll,
		'POLL_LEFT_CAP_IMG'		=> $user->img('poll_left'),
		'POLL_RIGHT_CAP_IMG'	=> $user->img('poll_right'),
	));
}

?>
den ganzen inhalt deiner poll.html Ersetzen mit diesen Code

Code: Select all

<a name="viewpoll"></a>
{$C_BLOCK_H_L}<dt>{L_POLL}</dt>{$C_BLOCK_H_R}
	<!-- IF S_HAS_POLL -->
	<div class="panel bg1" style="margin-bottom: 0px">
		<div class="inner">
		<!-- BEGIN poll -->
			<!-- IF poll.S_CAN_VOTE --><form method="post" action="{poll.S_POLL_ACTION}"><!-- ENDIF -->
				<div class="content">
					<h2>{poll.POLL_QUESTION}</h2>
					<p class="author">{poll.L_POLL_LENGTH}<!-- IF S_HIDE_RESULTS --><br /><b>{poll.L_RESULTS_HIDDEN}</b><!-- ENDIF --><!-- IF poll.S_CAN_VOTE and poll.L_POLL_LENGTH --><br /><!-- ENDIF --><!-- IF poll.S_CAN_VOTE -->{poll.L_MAX_VOTES}<!-- ENDIF --></p>
		
					<fieldset class="polls">
					<!-- IF poll.S_POLL_HAS_OPTIONS -->
					<!-- BEGIN poll_option -->
						<dl class="<!-- IF poll.poll_option.POLL_OPTION_VOTED -->voted<!-- ENDIF -->"<!-- IF poll.poll_option.POLL_OPTION_VOTED --> title="{L_POLL_VOTED_OPTION}"<!-- ENDIF -->>
							<dt><!-- IF poll.S_CAN_VOTE --><label for="poll_{poll.TOPIC_ID}_vote_{poll.poll_option.POLL_OPTION_ID}">{poll.poll_option.POLL_OPTION_CAPTION}</label><!-- ELSE -->{poll.poll_option.POLL_OPTION_CAPTION}<!-- ENDIF --></dt>
							<!-- IF poll.S_CAN_VOTE --><dd style="width: auto;"><!-- IF poll.S_IS_MULTI_CHOICE --><input type="checkbox" name="vote_id[]" id="poll_{poll.TOPIC_ID}_vote_{poll.poll_option.POLL_OPTION_ID}" value="{poll.poll_option.POLL_OPTION_ID}"<!-- IF poll.poll_option.POLL_OPTION_VOTED --> checked="checked"<!-- ENDIF --> /><!-- ELSE --><input type="radio" name="vote_id[]" id="poll_{poll.TOPIC_ID}_vote_{poll.poll_option.POLL_OPTION_ID}" value="{poll.poll_option.POLL_OPTION_ID}"<!-- IF poll.poll_option.POLL_OPTION_VOTED --> checked="checked"<!-- ENDIF --> /><!-- ENDIF --></dd><!-- ENDIF -->
							<!-- IF poll.S_DISPLAY_RESULTS --><dd class="resultbar"><div class="<!-- IF poll.poll_option.POLL_OPTION_PCT < 20 -->pollbar1<!-- ELSEIF poll.poll_option.POLL_OPTION_PCT < 40 -->pollbar2<!-- ELSEIF poll.poll_option.POLL_OPTION_PCT < 60 -->pollbar3<!-- ELSEIF poll.poll_option.POLL_OPTION_PCT < 80 -->pollbar4<!-- ELSE -->pollbar5<!-- ENDIF -->" style="width:{poll.poll_option.POLL_OPTION_PERCENT};">{poll.poll_option.POLL_OPTION_RESULT}</div></dd>
							<dd><!-- IF poll.poll_option.POLL_OPTION_RESULT == 0 -->{L_NO_VOTES}<!-- ELSE -->{poll.poll_option.POLL_OPTION_PERCENT}<!-- ENDIF --></dd><!-- ENDIF -->
						</dl>
					<!-- END poll_option -->
					<!-- ELSE -->
						{L_NO_OPTIONS}
					<!-- ENDIF -->
		
					<!-- IF poll.S_DISPLAY_RESULTS -->
						<dl>
							<dt>&nbsp;</dt>
							<dd class="resultbar"><p style="font-size:1.0em;">{L_TOTAL_VOTES} : {poll.TOTAL_VOTES}</p></dd>
						</dl>
					<!-- ENDIF -->
		
					<!-- IF poll.S_CAN_VOTE -->
						<dl style="border-top: none;">
							<dt>&nbsp;</dt>
							<dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd>
						</dl>
					<!-- ENDIF -->
		
					<!-- IF not poll.S_DISPLAY_RESULTS -->
						<dl style="border-top: none;">
							<dt>&nbsp;</dt>
							<dd class="resultbar"><p style="font-size:1.0em;"><a href="{poll.U_VIEW_RESULTS}">{L_VIEW_RESULTS}</a></p></dd>
						</dl>
					<!-- ENDIF -->
		
						<dl style="border-top: none;">
							<dt>&nbsp;</dt>
							<dd class="resultbar"><p style="font-size:1.0em;"><a href="{poll.U_VIEW_TOPIC}">{L_VIEW_TOPIC}</a></p></dd>
						</dl>
					</fieldset>
				</div>
				<!-- IF poll.S_CAN_VOTE -->{poll.S_HIDDEN_FIELDS}<!-- ENDIF -->
			<!-- IF poll.S_CAN_VOTE --></form><!-- ENDIF -->
		<!-- END poll -->
		</div>
	</div>
	<!-- ELSE -->
	<div class="panel bg1" style="margin-bottom: 0px">
		<div class="inner"><span class="portal-corners-top-inner"></span>
			<span style="text-align: center;"><strong>{L_NO_POLL}</strong></span>
		<span class="portal-corners-bottom-inner"></span></div>
	</div>
	<!-- ENDIF -->
{$C_BLOCK_F_L}{$C_BLOCK_F_R}
jeztz sollte es gehen...

Bevor dieser Mod installiert wird, sollten alle Dateien, die diesen Mod betreffen, gesichert werden. -----------> poll.html und poll.php

Re: Hide Poll Results

Posted: 31. January 2010 15:02
by cromatics
Dank dir Viel mass !!!!!!!!!!!

es läuft wunder bar!!!!!!!