flag_lists_handler_field_list.inc 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. // $I$
  3. /**
  4. * @file
  5. * Contains the basic 'list title' field handler.
  6. */
  7. /**
  8. * Field handler to provide simple renderer that allows linking to a list.
  9. */
  10. class flag_lists_handler_field_list extends views_handler_field {
  11. /**
  12. * Constructor to provide additional field to add.
  13. */
  14. function construct() {
  15. parent::construct();
  16. $this->additional_fields['fid'] = array('table' => 'flag_lists_flags', 'field' => 'fid');
  17. $this->additional_fields['uid'] = array('table' => 'flag_lists_flags', 'field' => 'uid');
  18. }
  19. function option_definition() {
  20. $options = parent::option_definition();
  21. $options['link_to_list'] = array('default' => FALSE);
  22. return $options;
  23. }
  24. /**
  25. * Provide link to list option
  26. */
  27. function options_form(&$form, &$form_state) {
  28. parent::options_form($form, $form_state);
  29. $form['link_to_list'] = array(
  30. '#title' => t('Link this field to its list'),
  31. '#description' => t('This will override any other link you have set.'),
  32. '#type' => 'checkbox',
  33. '#default_value' => !empty($this->options['link_to_list']),
  34. );
  35. }
  36. /**
  37. * Render whatever the data is as a link to the list.
  38. *
  39. * Data should be made XSS safe prior to calling this function.
  40. */
  41. function render_link($data, $values) {
  42. if (!empty($this->options['link_to_list']) && $data !== NULL && $data !== '') {
  43. $this->options['alter']['make_link'] = TRUE;
  44. $this->options['alter']['path'] = "user/" . $values->{$this->aliases['uid']} . "/flags/lists/" . $values->{$this->aliases['fid']};
  45. }
  46. return $data;
  47. }
  48. function render($values) {
  49. return $this->render_link(check_plain($values->{$this->field_alias}), $values);
  50. }
  51. }