Vbulletin tabanli sitem için "anasayfada anket(polls in forumhome)" eklentisi kurdum. Ancak eklenti yalnız anket sonuçlarını anasayfada gösteriyor.
Anasayfadan oy kullanılmasını ve oy kullananlara sadece anket sonuçlarının gösterilmesini veya oy kullandığı anketin o üyeye bir daha görünmemesini (anasayfada) istiyorum.
XML dosyasının kodlaması aşağıdaki şekildedir:
PHP Kodu:
<?xml version="1.0" encoding="ISO-8859-1"?>
<product productid="devel_poll" active="1">
<title>Show poll(s) in forumhome</title>
<description>Developer</description>
<version>1.0.0</version>
<apm_releasedate>1143612000</apm_releasedate>
<apm_author>Developer</apm_author>
<apm_relatedurl />
<apm_extrainfo />
<apm_extraedit />
<codes>
</codes>
<templates>
</templates>
<plugins>
<plugin active="1">
<title>Cache Templates</title>
<hookname>cache_templates</hookname>
<phpcode><![CDATA[if (THIS_SCRIPT == 'index')
{
$globaltemplates = array_merge($globaltemplates, array('polloptions_table', 'polloption', 'polloption_multiple', 'pollresult', 'pollresults_table'));
}]]></phpcode>
</plugin>
<plugin active="1">
<title>main code</title>
<hookname>forumhome_start</hookname>
<phpcode><![CDATA[if ($vbulletin->options['devel_poll_onoff'])
{
switch ($vbulletin->options['devel_poll_ord'])
{
case 0: $ord = 'RAND()'; break;
case 1: $ord = 'poll.dateline'; break;
case 2: $ord = 'voters'; break;
case 3: $ord = 'lastvote'; break;
}
$poll = '';
$pollbits = '';
$counter = 1;
$pollid = $vbulletin->options['devel_poll_id'];
$pollinfo = $db->query_first("
SELECT thread.pollid, open, threadid, replycount, forumid, question, poll.dateline, options, votes, active, numberoptions, timeout, multiple, voters, public
FROM " . TABLE_PREFIX . "poll AS poll
INNER JOIN " . TABLE_PREFIX . "thread AS thread USING (pollid)
WHERE thread.threadid IN ($pollid)
ORDER BY $ord DESC
LIMIT 1
");
require_once(DIR . '/includes/class_bbcode.php');
$parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
$pollinfo['question'] = $parser->do_parse($pollinfo['question'], 0, 1, 1, 1, 1);
$pollinfo['option'] = $parser->do_parse($pollinfo['option'], 0, 1, 1, 1, 1);
$splitoptions = explode('|||', $pollinfo['options']);
$splitvotes = explode('|||', $pollinfo['votes']);
$showresults = 0;
$uservoted = 0;
if (!$pollinfo['active'] OR ($pollinfo['dateline'] + ($pollinfo['timeout'] * 86400) < TIMENOW AND $pollinfo['timeout'] != 0))
{
$showresults = 1;
}
else
{
$voted = intval(fetch_bbarray_cookie('poll_voted', $pollid));
if ($voted)
{
$uservoted = 1;
}
}
if ($vbulletin->userinfo['userid'] > 0 AND $pollinfo['numbervotes'] > 0)
{
$pollvotes = $db->query_read("
SELECT voteoption
FROM " . TABLE_PREFIX . "pollvote
INNER JOIN " . TABLE_PREFIX . "thread AS thread USING (pollid)
WHERE userid = " . $vbulletin->userinfo['userid'] . " AND thread.threadid IN ($pollid)
");
if ($db->num_rows($pollvotes) > 0)
{
$uservoted = 1;
}
}
if ($showresults OR $uservoted)
{
if ($vbulletin->options['devel_poll_dis'])
{
arsort($splitvotes);
}
if ($uservoted)
{
$uservote = array();
while ($pollvote = $db->fetch_array($pollvotes))
{
$uservote["$pollvote[voteoption]"] = 1;
}
}
}
$option['open'] = $stylevar['left'][0];
$option['close'] = $stylevar['right'][0];
foreach ($splitvotes AS $index => $value)
{
$arrayindex = $index + 1;
$option['uservote'] = iif($uservote["$arrayindex"], true, false);
$option['question'] = $parser->do_parse($splitoptions["$index"], $forum['forumid'], true);
if ($pollinfo['public'] AND $value)
{
$option['votes'] = '<a href="poll.php?' . $vbulletin->session->vars['sessionurl'] . 'do=showresults&pollid=' . $pollinfo['pollid'] . '">' . $value . '</a>';
}
else
{
$option['votes'] = $value;
}
$option['number'] = $counter;
if ($showresults OR $uservoted)
{
if ($value <= 0)
{
$option['percent'] = 0;
}
else if ($pollinfo['multiple'])
{
$option['percent'] = vb_number_format(($value < $pollinfo['voters']) ? $value / $pollinfo['voters'] * 100 : 100, 2);
}
else
{
$option['percent'] = vb_number_format(($value < $pollinfo['numbervotes']) ? $value / $pollinfo['numbervotes'] * 100 : 100, 2);
}
$option['graphicnumber'] = $option['number'] % 6 + 1;
$option['barnumber'] = round($option['percent']) * 2;
if ($nopermission)
{
$pollstatus = $vbphrase['you_may_not_vote_on_this_poll'];
}
else if ($showresults)
{
$pollstatus = $vbphrase['this_poll_is_closed'];
}
else if ($uservoted)
{
$pollstatus = $vbphrase['you_have_already_voted_on_this_poll'];
}
eval('$pollbits .= "' . fetch_template('pollresult') . '";');
}
else
{
if ($pollinfo['multiple'])
{
eval('$pollbits .= "' . fetch_template('polloption_multiple') . '";');
}
else
{
eval('$pollbits .= "' . fetch_template('polloption') . '";');
}
}
$counter++;
}
if ($pollinfo['multiple'])
{
$pollinfo['numbervotes'] = $pollinfo['voters'];
$show['multiple'] = true;
}
if ($pollinfo['public'])
{
$show['publicwarning'] = true;
}
else
{
$show['publicwarning'] = false;
}
if ($showresults OR $uservoted)
{
eval('$poll = "' . fetch_template('pollresults_table') . '";');
}
else
{
eval('$poll = "' . fetch_template('polloptions_table') . '";');
}
$search = '$navbar';
$replace = '$poll';
$vbulletin->templatecache['FORUMHOME'] = str_replace($search,
$search.$replace,$vbulletin->templatecache['FORUMHOME']);
}]]></phpcode>
</plugin>
</plugins>
<phrases>
<phrasetype name="vBulletin Settings" fieldname="vbsettings">
<phrase name="setting_devel_poll_dis_desc"><![CDATA[If you choose yes poll options will be displayed according to vote percent ((this will happen if the poll closed or the user had voted))]]></phrase>
<phrase name="setting_devel_poll_dis_title"><![CDATA[Display poll options according to vote percent?]]></phrase>
<phrase name="setting_devel_poll_id_desc"><![CDATA[Put thread(s) id(s) here seprating them by comma]]></phrase>
<phrase name="setting_devel_poll_id_title"><![CDATA[Thread(s) id(s)]]></phrase>
<phrase name="setting_devel_poll_onoff_desc"><![CDATA[If you choose yes poll(s) will appears in forumhome]]></phrase>
<phrase name="setting_devel_poll_onoff_title"><![CDATA[Enable the hack?]]></phrase>
<phrase name="setting_devel_poll_ord_desc"><![CDATA[If you had put more than one thread ids, u could choose the display order of them]]></phrase>
<phrase name="setting_devel_poll_ord_title"><![CDATA[Poll display order]]></phrase>
<phrase name="settinggroup_devel_poll"><![CDATA[Show poll(s) in forumhome]]></phrase>
</phrasetype>
</phrases>
<options>
<settinggroup name="devel_poll" displayorder="65535">
<setting varname="devel_poll_onoff" displayorder="10">
<datatype>number</datatype>
<optioncode>yesno</optioncode>
<defaultvalue>0</defaultvalue>
</setting>
<setting varname="devel_poll_id" displayorder="20">
<datatype>free</datatype>
<defaultvalue>0</defaultvalue>
</setting>
<setting varname="devel_poll_ord" displayorder="30">
<datatype>free</datatype>
<optioncode><![CDATA[<select name=\"setting[$setting[varname]]\" tabindex=\"1\" class=\"bginput\">
<option value=\"0\" " . iif($setting['value']==0,'selected="selected"') . ">Randomly</option>
<option value=\"1\" " . iif($setting['value']==1,'selected="selected"') . ">Dateline</option>
<option value=\"2\" " . iif($setting['value']==2,'selected="selected"') . ">Voters number</option>
<option value=\"3\" " . iif($setting['value']==3,'selected="selected"') . ">Last vote date</option>
</select>]]></optioncode>
<defaultvalue>1</defaultvalue>
</setting>
<setting varname="devel_poll_dis" displayorder="40">
<datatype>number</datatype>
<optioncode>yesno</optioncode>
<defaultvalue>1</defaultvalue>
</setting>
</settinggroup>
</options>
</product>
Bu kodlamada ne gibi değişiklikler yapmam gerekiyor?
Yardımlarınız için şimdiden teşekkürler...