2004-12-12 03:51:51 +00:00
< ? php
2006-06-17 06:10:10 +00:00
require_once ( BASE . " include/util.php " );
2004-12-28 00:01:21 +00:00
/* max votes per user */
define ( 'MAX_VOTES' , 3 );
2004-03-15 16:22:00 +00:00
2007-10-09 21:10:29 +02:00
class vote
{
public $iUserId ;
public $iVoteId ;
public $iSlotIndex ;
public $iVersionId ;
public function vote ( $iVoteId = null , $oRow = null )
{
if ( ! $iVoteId && ! $oRow ) /* Nothing to do */
return ;
if ( ! $oRow )
{
$hResult = query_parameters ( " SELECT * FROM appVotes WHERE id = '?' " , $iVoteId );
$oRow = mysql_fetch_object ( $hResult );
}
if ( $oRow )
{
$this -> iUserId = $oRow -> userId ;
$this -> iVoteId = $oRow -> id ;
$this -> iSlotIndex = $oRow -> slot ;
$this -> iVersionId = $oRow -> versionId ;
}
}
public function update ()
{
/* Check for valid vote slot index */
if ( $this -> iSlotIndex < 1 || $this -> iSlotIndex > MAX_VOTES )
return ;
/* Avoid pointless votes */
if ( ! $this -> iVersionId )
return ;
if ( ! $this -> iVoteId )
{
$hResult = query_parameters ( " INSERT INTO appVotes (versionId,userId,slot) VALUES('?','?','?') " ,
$this -> iVersionId , $_SESSION [ 'current' ] -> iUserId , $this -> iSlotIndex );
} else
{
$hResult = query_parameters ( " UPDATE appVotes SET versionId = '?' WHERE id = '?' " , $this -> iVersionId , $this -> iVoteId );
}
if ( ! $hResult )
return FALSE ;
return TRUE ;
}
2007-10-09 21:15:10 +02:00
public function delete ()
{
/* A vote needs to have a versionId , so if it doesn ' t that means it is not in the
database or it was not selected in the vote editor */
if ( ! $this -> iVersionId )
return TRUE ;
$hResult = query_parameters ( " DELETE FROM appVotes WHERE id = '?' " , $this -> iVoteId );
if ( ! $hResult )
return FALSE ;
return TRUE ;
}
2007-10-09 21:10:29 +02:00
}
class voteManager
{
private $iUserId ;
private $aVotes ;
public function voteManager ( $iUserId = null , $oRow = null )
{
$this -> iUserId = $iUserId ;
}
public function objectGetCustomVars ( $sAction )
{
switch ( $sAction )
{
case " edit " :
return array ( " iVersionId " );
break ;
default :
return null ;
}
}
public function outputEditor ( $aClean = null )
{
2007-10-09 21:15:10 +02:00
echo " The following shows your current votes. Check the boxes next to the apps you wish to replace with a vote for " . version :: fullNameLink ( $aClean [ 'iVersionId' ]) . " or delete. " ;
2007-10-09 21:10:29 +02:00
$oTable = new table ();
$this -> aVotes = $this -> getVotes ();
for ( $i = 0 ; $i < MAX_VOTES ; $i ++ )
{
$sVersionText = $this -> aVotes [ $i ] -> iVersionId ? version :: fullNameLink ( $this -> aVotes [ $i ] -> iVersionId ) : " No app selected " ;
$oTableRow = new tableRow ();
$oTableRow -> addTextCell ( '<input type="checkbox" name="iSlot' . $i . '" value="' . $aClean [ 'iVersionId' ] . '" />' );
$oTableRow -> addTextCell ( $sVersionText );
$oTable -> addRow ( $oTableRow );
}
echo $oTable -> getString ();
}
public function canEdit ()
{
if ( $_SESSION [ 'current' ] -> iUserId == $this -> iUserId )
return TRUE ;
return FALSE ;
}
2007-10-09 21:15:10 +02:00
function objectGetMail ( $sAction , $bMailSubmitter , $bParentAction )
{
return array ( null , null , null ); /* No mail */
}
2007-10-09 21:10:29 +02:00
public function mustBeQueued ()
{
return FALSE ;
}
public function objectGetEntries ( $bQueued , $bRejected )
{
return query_parameters ( " SELECT * FROM appVotes " );
}
public function objectGetId ()
{
return $this -> iUserId ;
}
public function create ()
{
return TRUE ;
}
2007-12-12 22:43:22 +01:00
function purge ()
{
return $this -> delete ();
}
2007-10-09 21:15:10 +02:00
public function delete ()
{
$bSuccess = TRUE ;
if ( ! is_array ( $this -> aVotes ))
$this -> aVotes = $this -> getVotes ();
foreach ( $this -> aVotes as $oVote )
{
if ( ! $oVote -> delete ())
$bSuccess = FALSE ;
}
return $bSuccess ;
}
2007-10-09 21:10:29 +02:00
public function update ()
{
foreach ( $this -> aVotes as $oVote )
$oVote -> update ();
}
public function getOutputEditorValues ( $aClean )
{
$this -> aVotes = $this -> getVotes ();
for ( $i = 0 ; $i < MAX_VOTES ; $i ++ )
$this -> aVotes [ $i ] -> iVersionId = $aClean [ " iSlot $i " ];
}
public function objectGetEntriesCount ()
{
$hResult = query_parameters ( " SELECT COUNT(id) as count FROM appVotes " );
if ( ! $hResult )
return FALSE ;
if ( ! ( $oRow = mysql_fetch_object ( $hResult )))
return FALSE ;
return $oRow -> count ;
}
public function objectGetSubmitterId ()
{
return $this -> iUserId ;
}
public function getVotes ()
{
$aVotes = array ();
$hResult = query_parameters ( " SELECT * FROM appVotes WHERE userId = '?' ORDER BY slot " , $this -> iUserId );
if ( ! $hResult )
return $aVotes ;
for ( $i = 0 ; $i < MAX_VOTES ; $i ++ )
$aVotes [ $i ] = null ;
while ( $oRow = mysql_fetch_object ( $hResult ))
$aVotes [ $oRow -> slot - 1 ] = new vote ( null , $oRow );
for ( $i = 0 ; $i < MAX_VOTES ; $i ++ )
{
if ( ! $aVotes [ $i ])
{
$aVotes [ $i ] = new vote ();
$aVotes [ $i ] -> iSlotIndex = $i + 1 ;
}
}
return $aVotes ;
}
}
2004-12-12 03:51:51 +00:00
/**
2004-03-15 16:22:00 +00:00
* count the number of votes for appId by userId
*/
2007-01-21 18:06:53 +00:00
function vote_count ( $iVersionId , $iUserId = null )
2004-03-15 16:22:00 +00:00
{
2006-07-19 00:11:40 +00:00
if ( ! $iUserId )
2004-12-12 03:51:51 +00:00
{
2005-01-30 23:12:48 +00:00
if ( $_SESSION [ 'current' ] -> isLoggedIn ())
2006-07-19 00:11:40 +00:00
$iUserId = $_SESSION [ 'current' ] -> iUserId ;
2004-12-12 03:51:51 +00:00
else
return 0 ;
2006-07-19 00:11:40 +00:00
}
2007-01-21 18:06:53 +00:00
$hResult = query_parameters ( " SELECT * FROM appVotes WHERE versionId = '?' AND userId = '?' " ,
$iVersionId , $iUserId );
2007-08-03 23:27:25 +00:00
return query_num_rows ( $hResult );
2004-03-15 16:22:00 +00:00
}
/*
2007-01-21 18:06:53 +00:00
* total votes for versionId
2004-03-15 16:22:00 +00:00
*/
2007-01-21 18:06:53 +00:00
function vote_count_version_total ( $iVersionId )
2004-03-15 16:22:00 +00:00
{
2007-01-21 18:06:53 +00:00
$hResult = query_parameters ( " SELECT * FROM appVotes WHERE versionId = '?' " ,
$iVersionId );
2007-08-03 23:27:25 +00:00
return query_num_rows ( $hResult );
2004-03-15 16:22:00 +00:00
}
?>