git-svn-id: https://192.168.0.254/svn/Proyectos.MatritumCantat_Web/trunk@2 8e3496fd-7892-4c45-be36-0ff06e9dacc6
207 lines
5.9 KiB
PHP
207 lines
5.9 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: poll.php 10002 2008-02-08 10:56:57Z willebil $
|
|
* @package Joomla
|
|
* @subpackage Polls
|
|
* @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
|
|
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
|
|
* Joomla! is free software. This version may have been modified pursuant
|
|
* to the GNU General Public License, and as distributed it includes or
|
|
* is derivative of works licensed under the GNU General Public License or
|
|
* other free or open source software licenses.
|
|
* See COPYRIGHT.php for copyright notices and details.
|
|
*/
|
|
|
|
// no direct access
|
|
defined( '_VALID_MOS' ) or die( 'Restricted access' );
|
|
|
|
require_once( $mainframe->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 '<h3>'. _ALERT_ENABLED .'</h3>';
|
|
echo '<input class="button" type="button" value="'. _CMN_CONTINUE .'" onClick="window.history.go(-1);">';
|
|
return;
|
|
}
|
|
|
|
$poll = new mosPoll( $database );
|
|
if (!$poll->load( (int)$uid )) {
|
|
echo '<h3>'. _NOT_AUTH .'</h3>';
|
|
echo '<input class="button" type="button" value="'. _CMN_CONTINUE .'" onClick="window.history.go(-1);">';
|
|
return;
|
|
}
|
|
|
|
$cookiename = "voted$poll->id";
|
|
$voted = mosGetParam( $_COOKIE, $cookiename, '0' );
|
|
|
|
if ($voted) {
|
|
echo "<h3>"._ALREADY_VOTE."</h3>";
|
|
echo "<input class=\"button\" type=\"button\" value=\""._CMN_CONTINUE."\" onClick=\"window.history.go(-1);\">";
|
|
return;
|
|
}
|
|
|
|
$voteid = intval( mosGetParam( $_POST, 'voteid', 0 ) );
|
|
if (!$voteid) {
|
|
echo "<h3>"._NO_SELECTION."</h3>";
|
|
echo '<input class="button" type="button" value="'. _CMN_CONTINUE .'" onClick="window.history.go(-1);">';
|
|
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 = " . $database->Quote( $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 '<h3>'. _THANKS .'</h3>';
|
|
echo '<form action="" method="GET">';
|
|
echo '<input class="button" type="button" value="'. _BUTTON_RESULTS .'" onClick="window.location=\''. sefRelToAbs( 'index.php?option=com_poll&task=results&id='. $uid ) .'\'">';
|
|
echo '</form>';
|
|
}
|
|
}
|
|
|
|
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 = " . (int) $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 = " . (int) $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 = '<select name="id" class="inputbox" size="1" style="width:200px" onchange="if (this.options[selectedIndex].value != \'\') {document.location.href=\''. $link .'\'}">';
|
|
$pollist .= '<option value="">'. _SELECT_POLL .'</option>';
|
|
for ($i=0, $n=count( $polls ); $i < $n; $i++ ) {
|
|
$k = $polls[$i]->id;
|
|
$t = $polls[$i]->title;
|
|
|
|
$sel = ($k == intval( $poll->id ) ? " selected=\"selected\"" : '');
|
|
$pollist .= "\n\t<option value=\"".$k."\"$sel>" . $t . "</option>";
|
|
}
|
|
$pollist .= '</select>';
|
|
|
|
// 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 );
|
|
}
|
|
?>
|