[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/webform/views/ -> webform_handler_field_submission_link.inc (source)

   1  <?php
   2  // $Id: webform_handler_field_submission_link.inc,v 1.2.2.1 2010/03/03 02:51:31 quicksketch Exp $
   3  
   4  /**
   5  * @file
   6  * Views handler to display links to a submission.
   7  */
   8  
   9  /**
  10   * Field handler to present a link to the user.
  11   */
  12  class webform_handler_field_submission_link extends views_handler_field {
  13    var $link_type;
  14  
  15    function construct() {
  16      // We need to set this property before calling the construct() chain
  17      // as we use it in the option_definintion() call.
  18      $this->link_type = $this->definition['link_type'];
  19  
  20      parent::construct();
  21      $this->additional_fields['sid'] = 'sid';
  22      $this->additional_fields['nid'] = 'nid';
  23      $this->additional_fields['uid'] = 'uid';
  24  
  25      $this->additional_fields['node_uid'] = array(
  26        'table' => 'node', 
  27        'field' => 'uid',
  28      );
  29    }
  30  
  31    function allow_advanced_render() {
  32      return FALSE;
  33    }
  34  
  35    function option_definition() {
  36      $options = parent::option_definition();
  37      $options['label'] = array('default' => '', 'translatable' => TRUE);
  38      $options['text'] = array('default' => $this->link_type, 'translatable' => TRUE);
  39      return $options;
  40    }
  41  
  42    function options_form(&$form, &$form_state) {
  43      parent::options_form($form, $form_state);
  44      $form['text'] = array(
  45        '#type' => 'textfield',
  46        '#title' => t('Text to display'),
  47        '#default_value' => $this->options['text'],
  48      );
  49    }
  50  
  51    function query() {
  52      $this->ensure_my_table();
  53  
  54      // Join to the node table to retrieve the node UID.
  55      $join = new views_join();
  56      $join->construct('node', $this->table_alias, 'nid', 'nid');
  57      $this->query->ensure_table('node', $this->relationship, $join);
  58  
  59      $this->add_additional_fields();
  60    }
  61  
  62    function render($values) {
  63      $submission = new stdClass();
  64      $submission->sid = $values->{$this->aliases['sid']};
  65      $submission->nid = $values->{$this->aliases['nid']};
  66      $submission->uid = $values->{$this->aliases['uid']};
  67      $node = (object) array(
  68        'nid' => $submission->nid,
  69        'uid' => $values->{$this->aliases['node_uid']},
  70      );
  71  
  72      switch ($this->link_type) {
  73        case 'view':
  74          $text = !empty($this->options['text']) ? $this->options['text'] : t('delete');
  75          $link = l($text, "node/$submission->nid/submission/$submission->sid");
  76          $access = webform_submission_access($node, $submission, 'view');
  77          break;
  78        case 'edit':
  79          $text = !empty($this->options['text']) ? $this->options['text'] : t('edit');
  80          $link = l($text, "node/$submission->nid/submission/$submission->sid/edit");
  81          $access = webform_submission_access($node, $submission, 'edit');
  82          break;
  83        case 'delete':
  84          $text = !empty($this->options['text']) ? $this->options['text'] : t('view');
  85          $path = drupal_get_path_alias($_GET['q']);
  86          $link = l($text, "node/$submission->nid/submission/$submission->sid/delete", array('query' => 'destination=' . $path));
  87          $access = webform_submission_access($node, $submission, 'delete');
  88          break;
  89        default:
  90          $text = '';
  91          $link = NULL;
  92          $access = FALSE;
  93      }
  94  
  95      if (!$access) {
  96        return;
  97      }
  98  
  99      return $link;
 100    }
 101  }


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7