getPath( 'front_html' ) );
require_once( $mainframe->getPath( 'class' ) );
$tabclass = 'sectiontableentry2,sectiontableentry1';
$polls_graphwidth = 200;
$polls_barheight = 2;
$polls_maxcolors = 5;
$polls_barcolor = 0;
$id = intval( mosGetParam( $_REQUEST, 'id', 0 ) );
switch ($task) {
case 'vote':
pollAddVote( $id );
break;
default:
pollresult( $id );
break;
}
function pollAddVote( $uid ) {
global $database;
// simple spoof check security
josSpoofCheck(0,'poll');
$redirect = 1;
$sessionCookieName = mosMainFrame::sessionCookieName();
$sessioncookie = mosGetParam( $_REQUEST, $sessionCookieName, '' );
if (!$sessioncookie) {
echo '
'. _ALERT_ENABLED .'
';
echo '';
return;
}
$poll = new mosPoll( $database );
if (!$poll->load( (int)$uid )) {
echo ''. _NOT_AUTH .'
';
echo '';
return;
}
$cookiename = "voted$poll->id";
$voted = mosGetParam( $_COOKIE, $cookiename, '0' );
if ($voted) {
echo ""._ALREADY_VOTE."
";
echo "";
return;
}
$voteid = intval( mosGetParam( $_POST, 'voteid', 0 ) );
if (!$voteid) {
echo ""._NO_SELECTION."
";
echo '';
return;
}
setcookie( $cookiename, '1', time()+$poll->lag );
$query = "UPDATE #__poll_data"
. "\n SET hits = hits + 1"
. "\n WHERE pollid = ".(int) $poll->id
. "\n AND id = ". (int) $voteid
;
$database->setQuery( $query );
$database->query();
$query = "UPDATE #__polls"
. "\n SET voters = voters + 1"
. "\n WHERE id = ".(int) $poll->id
;
$database->setQuery( $query );
$database->query();
$now = _CURRENT_SERVER_TIME;
$query = "INSERT INTO #__poll_date"
. "\n SET date = '$now', vote_id = ". (int) $voteid .", poll_id = ".(int) $poll->id
;
$database->setQuery( $query );
$database->query();
if ( $redirect ) {
mosRedirect( sefRelToAbs( 'index.php?option=com_poll&task=results&id='. $uid ), _THANKS );
} else {
echo ''. _THANKS .'
';
echo '';
}
}
function pollresult( $uid ) {
global $database, $Itemid;
global $mainframe;
$poll = new mosPoll( $database );
$poll->load( (int)$uid );
// if id value is passed and poll not published then exit
if ($poll->id != '' && !$poll->published) {
mosNotAuth();
return;
}
$first_vote = '';
$last_vote = '';
$votes = '';
/*
Check if there is a poll corresponding to id
and if poll is published
*/
if (isset($poll->id) && $poll->id != '' && $poll->published == 1) {
if (empty($poll->title)) {
$poll->id = '';
$poll->title = _SELECT_POLL;
}
$query = "SELECT MIN( date ) AS mindate, MAX( date ) AS maxdate"
. "\n FROM #__poll_date"
. "\n WHERE poll_id = $poll->id"
;
$database->setQuery( $query );
$dates = $database->loadObjectList();
if (isset($dates[0]->mindate)) {
$first_vote = mosFormatDate( $dates[0]->mindate, _DATE_FORMAT_LC2 );
$last_vote = mosFormatDate( $dates[0]->maxdate, _DATE_FORMAT_LC2 );
}
$query = "SELECT a.id, a.text, a.hits, b.voters"
. "\n FROM #__poll_data AS a"
. "\n INNER JOIN #__polls AS b ON b.id = a.pollid"
. "\n WHERE a.pollid = $poll->id"
. "\n AND a.text != ''"
. "\n AND b.published = 1"
;
$database->setQuery( $query );
$votes = $database->loadObjectList();
}
// list of polls for dropdown selection
$query = "SELECT id, title"
. "\n FROM #__polls"
. "\n WHERE published = 1"
. "\n ORDER BY id"
;
$database->setQuery( $query );
$polls = $database->loadObjectList();
// Itemid for dropdown
$_Itemid = '';
if ( $Itemid && $Itemid != 99999999 ) {
$_Itemid = '&Itemid='. $Itemid;
}
// dropdown output
$link = sefRelToAbs( 'index.php?option=com_poll&task=results&id=\' + this.options[selectedIndex].value + \''. $_Itemid .'\' + \'' );
$pollist = '';
// Adds parameter handling
$menu = $mainframe->get( 'menu' );
$params = new mosParameters( $menu->params );
$params->def( 'page_title', 1 );
$params->def( 'pageclass_sfx', '' );
$params->def( 'back_button', $mainframe->getCfg( 'back_button' ) );
$params->def( 'header', $menu->name );
$mainframe->SetPageTitle($poll->title);
poll_html::showResults( $poll, $votes, $first_vote, $last_vote, $pollist, $params );
}
?>