flag_lists_handler_field_template_types.inc 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * @file flag_lists_handler_field_template_types.inc
  4. * Field handler to provide a list of template node types.
  5. */
  6. class flag_lists_handler_field_template_types extends views_handler_field_prerender_list {
  7. function construct() {
  8. parent::construct();
  9. $this->additional_fields['name'] = array('table' => 'flags', 'field' => 'name');
  10. }
  11. function query() {
  12. $this->add_additional_fields();
  13. $this->field_alias = $this->aliases['name'];
  14. }
  15. function pre_render($values) {
  16. $names = array();
  17. $this->items = array();
  18. foreach ($values as $result) {
  19. $names[] = $result->{$this->aliases['name']};
  20. }
  21. if (count($names)) {
  22. $query = db_select('flag_lists_types', 'flt');
  23. $query->innerJoin('flags', 'f', 'flt.name = f.name');
  24. $result = $query->fields('flt', array('type', 'name'))
  25. ->condition('f.name', $names, 'IN')
  26. ->orderBy('flt.type')
  27. ->execute();
  28. foreach ($result as $type) {
  29. $this->items[$type->name][$type->type] = check_plain($type->type);
  30. }
  31. }
  32. }
  33. function render($values) {
  34. $field = $values->{$this->field_alias};
  35. if (!empty($this->items[$field])) {
  36. if ($this->options['type'] == 'separator') {
  37. return implode($this->sanitize_value($this->options['separator']), $this->items[$field]);
  38. }
  39. else {
  40. return theme('item_list',
  41. array(
  42. 'items' => $this->items[$field],
  43. 'title' => NULL,
  44. 'type' => $this->options['type']
  45. ));
  46. }
  47. }
  48. }
  49. function get_value($values, $field = NULL, $raw = FALSE) {
  50. if ($raw) {
  51. return parent::get_value($values, $field);
  52. }
  53. $item = $this->get_items($values);
  54. $item = (array) $item;
  55. if (isset($field) && isset($item[$field])) {
  56. return $item[$field];
  57. }
  58. return $item;
  59. }
  60. }