12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- function poll_page() {
- $polls_per_page = 15;
- $count_select = db_select('node', 'n');
- $count_select->addExpression('COUNT(*)', 'expression');
- $count_select->join('poll', 'p', 'p.nid = n.nid');
- $count_select->condition('n.status', 1);
-
- $select = db_select('node', 'n');
- $select->join('poll', 'p', 'p.nid = n.nid');
- $select->join('poll_choice', 'c', 'c.nid = n.nid');
- $select->addExpression('SUM(c.chvotes)', 'votes');
- $select = $select->fields('n', array('nid', 'title', 'created'))
- ->fields('p', array('active'))
- ->condition('n.status', 1)
- ->orderBy('n.created', 'DESC')
- ->groupBy('n.nid')
- ->groupBy('n.title')
- ->groupBy('p.active')
- ->groupBy('n.created')
- ->extend('PagerDefault')
- ->limit($polls_per_page)
- ->addTag('node_access');
- $select->setCountQuery($count_select);
- $queried_nodes = $select->execute()
- ->fetchAllAssoc('nid');
- $output = '<ul>';
- foreach ($queried_nodes as $node) {
- $output .= '<li>' . l($node->title, "node/$node->nid") . ' - ' . format_plural($node->votes, '1 vote', '@count votes') . ' - ' . ($node->active ? t('open') : t('closed')) . '</li>';
- }
- $output .= '</ul>';
- $output .= theme('pager');
- return $output;
- }
- function poll_votes($node) {
- $votes_per_page = 20;
- drupal_set_title($node->title);
- $header[] = array('data' => t('Visitor'), 'field' => 'u.name');
- $header[] = array('data' => t('Vote'), 'field' => 'pc.chtext');
- $header[] = array('data' => t('Timestamp'), 'field' => 'pv.timestamp', 'sort' => 'desc');
- $select = db_select('poll_vote', 'pv')->extend('PagerDefault')->extend('TableSort');
- $select->join('poll_choice', 'pc', 'pv.chid = pc.chid');
- $select->join('users', 'u', 'pv.uid = u.uid');
- $queried_votes = $select
- ->addTag('translatable')
- ->fields('pv', array('chid', 'uid', 'hostname', 'timestamp', 'nid'))
- ->fields('pc', array('chtext'))
- ->fields('u', array('name'))
- ->condition('pv.nid', $node->nid)
- ->limit($votes_per_page)
- ->orderByHeader($header)
- ->execute();
- $rows = array();
- foreach ($queried_votes as $vote) {
- $rows[] = array(
- $vote->name ? theme('username', array('account' => $vote)) : check_plain($vote->hostname),
- check_plain($vote->chtext),
- format_date($vote->timestamp),
- );
- }
- $build['poll_votes_table'] = array(
- '#theme' => 'table',
- '#header' => $header,
- '#rows' => $rows,
- '#prefix' => t('This table lists all the recorded votes for this poll. If anonymous users are allowed to vote, they will be identified by the IP address of the computer they used when they voted.'),
- );
- $build['poll_votes_pager'] = array('#theme' => 'pager');
- return $build;
- }
- function poll_results($node) {
- drupal_set_title($node->title);
- $node->show_results = TRUE;
- return node_show($node);
- }
|