Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Лимит голосов для анонимных пользователей

Лимит голосов для анонимных пользователей
, by

Здрвствуйте.

Подскажите пожалуйста, есть ли способ установить ограничение для анонимных пользователей по количеству голосов.

Например, есть галерея картинок, но нужно, чтобы анонимный пользователь смог проголосовать только за одну картинку - то есть только один раз.

 

 Я пытался сделать так:

$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 пытался использовать, но не работает - вылетаеот ошибка сервера

 

 Подскажите, плиз

 

 

 

 

 

 

 

 

 

1 answer
votes: 1166
Answer

В документации по 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'ем делать.