| 1 |
<?php |
<?php |
| 2 |
|
|
| 3 |
//$Id: nodevote.module,v 1.31.2.1 2008/10/15 16:52:12 kbahey Exp $ |
//$Id: nodevote.module,v 1.31.2.2 2009/01/11 16:33:41 kbahey Exp $ |
| 4 |
|
|
| 5 |
// Copyright 2005 Khalid Baheyeldin http://2bits.com |
// Copyright 2005 Khalid Baheyeldin http://2bits.com |
| 6 |
|
|
| 11 |
define('NODEVOTE_PERM_VIEW', 'view nodevote'); |
define('NODEVOTE_PERM_VIEW', 'view nodevote'); |
| 12 |
define('NODEVOTE_PERM_USE', 'use nodevote'); |
define('NODEVOTE_PERM_USE', 'use nodevote'); |
| 13 |
define('NODEVOTE_VOTE_OWN_NODE', 'nodevote_vote_own_node'); |
define('NODEVOTE_VOTE_OWN_NODE', 'nodevote_vote_own_node'); |
| 14 |
|
define('NODEVOTE_VOTE_ANON', 'nodevote_vote_anon'); |
| 15 |
define('NODEVOTE_CHANGE_VOTE', 'nodevote_change_vote'); |
define('NODEVOTE_CHANGE_VOTE', 'nodevote_change_vote'); |
| 16 |
define('NODEVOTE_RESULT_VOTED', 'nodevote_result_voted'); |
define('NODEVOTE_RESULT_VOTED', 'nodevote_result_voted'); |
| 17 |
define('NODEVOTE_RESULT_DISPLAY_PAGE', 'nodevote_result_display_page'); |
define('NODEVOTE_RESULT_DISPLAY_PAGE', 'nodevote_result_display_page'); |
| 139 |
'#return_value' => 1, |
'#return_value' => 1, |
| 140 |
'#default_value' => variable_get(NODEVOTE_VOTE_OWN_NODE, 0), |
'#default_value' => variable_get(NODEVOTE_VOTE_OWN_NODE, 0), |
| 141 |
); |
); |
| 142 |
|
$form[$set][NODEVOTE_VOTE_ANON] = array( |
| 143 |
|
'#type' => 'checkbox', |
| 144 |
|
'#title' => t('Allow anonymous user to vote.'), |
| 145 |
|
'#return_value' => 1, |
| 146 |
|
'#default_value' => variable_get(NODEVOTE_VOTE_ANON, 0), |
| 147 |
|
'#description' => t('Anonymous users will be able to vote on nodes one time per session.'), |
| 148 |
|
); |
| 149 |
$form[$set][NODEVOTE_DAILY_THRESHOLD] = array( |
$form[$set][NODEVOTE_DAILY_THRESHOLD] = array( |
| 150 |
'#type' => 'select', |
'#type' => 'select', |
| 151 |
'#title' => t('Daily threshold'), |
'#title' => t('Daily threshold'), |
| 288 |
// check to see if the user has voted too many times today |
// check to see if the user has voted too many times today |
| 289 |
if(_nodevote_within_threshold($user->uid, variable_get(NODEVOTE_DAILY_THRESHOLD, 10))) { |
if(_nodevote_within_threshold($user->uid, variable_get(NODEVOTE_DAILY_THRESHOLD, 10))) { |
| 290 |
// log the vote |
// log the vote |
| 291 |
$result = db_query("INSERT INTO {nodevote} VALUES (%d, %d, %d, %d)", $user->uid, $node->nid, $vote, time()); |
$result = db_query("INSERT INTO {nodevote} (uid, nid, vote, timestamp) VALUES (%d, %d, %d, %d)", $user->uid, $node->nid, $vote, time()); |
| 292 |
// do the userpoints dance |
// do the userpoints dance |
| 293 |
nodevote_do_userpoints(); |
nodevote_do_userpoints(); |
| 294 |
|
// flag session for anon users |
| 295 |
|
$_SESSION['nodevote']['anon'][$nid] = TRUE; |
| 296 |
} |
} |
| 297 |
else { |
else { |
| 298 |
// if they've voted too many times today, show a message |
// if they've voted too many times today, show a message |
| 375 |
} |
} |
| 376 |
|
|
| 377 |
function _nodevote_user_voted($uid, $nid) { |
function _nodevote_user_voted($uid, $nid) { |
| 378 |
|
// Anonymous users should check session info |
| 379 |
|
if ( $uid == 0 ) { |
| 380 |
|
return ($_SESSION['nodevote']['anon'][$node->nid]); |
| 381 |
|
} |
| 382 |
|
|
| 383 |
if (db_result(db_query('SELECT count(nid) FROM {nodevote} WHERE uid = %d AND nid = %d', $uid, $nid))) { |
if (db_result(db_query('SELECT count(nid) FROM {nodevote} WHERE uid = %d AND nid = %d', $uid, $nid))) { |
| 384 |
return TRUE; |
return TRUE; |
| 385 |
} |
} |
| 459 |
|
|
| 460 |
$ret = FALSE; |
$ret = FALSE; |
| 461 |
|
|
|
// Is user logged in? |
|
|
if ($user->uid) { |
|
| 462 |
// Is node type votable? |
// Is node type votable? |
| 463 |
if (variable_get(NODEVOTE_TYPE . $node->type, 0)) { |
if (variable_get(NODEVOTE_TYPE . $node->type, 0)) { |
| 464 |
// Does the user has permission to vote? |
// Does the user has permission to vote? |
| 466 |
// Is the node posted by someone else? |
// Is the node posted by someone else? |
| 467 |
if (($node->uid != $user->uid) || (variable_get(NODEVOTE_VOTE_OWN_NODE, 0))) { |
if (($node->uid != $user->uid) || (variable_get(NODEVOTE_VOTE_OWN_NODE, 0))) { |
| 468 |
// Did the user already vote on this node? |
// Did the user already vote on this node? |
| 469 |
if ((!_nodevote_user_voted($user->uid, $node->nid)) || (variable_get(NODEVOTE_CHANGE_VOTE, 0))){ |
// For auth users, check if they can change the vote |
| 470 |
|
if ((!_nodevote_user_voted($user->uid, $node->nid)) || ($user->uid && variable_get(NODEVOTE_CHANGE_VOTE, 0))){ |
| 471 |
$ret = TRUE; |
$ret = TRUE; |
| 472 |
} |
} |
| 473 |
} |
} |
| 474 |
} |
} |
| 475 |
} |
} |
|
} |
|
| 476 |
return $ret; |
return $ret; |
| 477 |
} |
} |
| 478 |
|
|