認証されたユーザーが投票に投票したとき、ユーザーが投票していない次の投票を表示したいと思います。
どのように実装すればよいですか?
私はそれを理解したと思います。 hook_block_infoと_viewをpollモジュールから自分のモジュールにコピーし、クエリを少し変更しました。基本的に、このセッション中にユーザーが投票していない、または投票していない投票が行われます。匿名を有効にするための投票はありません。
function mycustom_block_info() {
$blocks['recent']['info'] = t('Most recent poll not voted on');
$blocks['recent']['properties']['administrative'] = TRUE;
return $blocks;
}
function mycustom_block_view($delta = '') {
if (user_access('access content')) {
// Retrieve the latest poll.
$select = db_select('node', 'n');
$select->join('poll', 'p', 'p.nid = n.nid');
$select->leftjoin('poll_vote', 'pv', 'pv.nid = n.nid');
$select->fields('n', array('nid'))
->condition('n.status', 1)
->condition('p.active', 1)
->condition(db_or()->condition('pv.chid', NULL)->condition('pv.timestamp', REQUEST_TIME - $lifetime, '<'))
->orderBy('pv.chid', 'ASC')
->orderBy('n.created', 'DESC')
->range(0, 1)
->addTag('node_access');
$record = $select->execute()->fetchObject();
if ($record) {
$poll = node_load($record->nid);
if ($poll->nid) {
$poll = poll_block_latest_poll_view($poll);
$block['subject'] = t('Poll');
$block['content'] = $poll->content;
return $block;
}
}
}
}