Лимит голосов для анонимных пользователей
Здрвствуйте.
Подскажите пожалуйста, есть ли способ установить ограничение для анонимных пользователей по количеству голосов.
Например, есть галерея картинок, но нужно, чтобы анонимный пользователь смог проголосовать только за одну картинку - то есть только один раз.
Я пытался сделать так:
$curip = ip_address();
$result = db_query("SELECT count(vote_source) as 'count' FROM {votingapi_vote} WHERE vote_source = '$curip'");
$fetch = db_fetch_object($result);
$count = $fetch->count;
Потом в файле voting.module и thumbs-up.tpl.php пытался использовать, но не работает - вылетаеот ошибка сервера
Подскажите, плиз
В документации по voting api расписаны хуки
https://drupal.org/node/68877
Можете на insert добавить обработку для вычисления количества голосов пользователя.
hook_votingapi_insert($vote)
Здесь пример для модуля flag:
https://drupal.org/node/955724
Здрвствуйте. Спасибо за ответ.
Попытался сделать:
function hook_votingapi_insert($votes) {
foreach ($votes as $vote) {
$curip = $vote['vote_source'];
$result = db_query("SELECT count(vote_source) as 'count' FROM {votingapi_vote} WHERE vote_source = '$curip'");
$fetch = db_fetch_object($result);
$count = $fetch->count;
if ($count >= 2) {
return FALSE;
}
}
}
$vote['vote_source'] - ip-адрес голосующего
Однако не работает. Подскажите что не так
Я не знаю какие там значения в полях, используйте лучше pdo запросы:
http://xandeadx.ru/blog/drupal/88
и наверно нужно еще подсчет голосов отдельным foreach'ем делать.