views_handler_field_stockrel_all.inc 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * @file
  4. * Field handler allowing all relationships for a given stock to be displayed in a single cell
  5. *
  6. * @ingroup tripal_stock
  7. * @ingroup views_field_handlers
  8. */
  9. class views_handler_field_stockrel_all extends views_handler_field_prerender_list {
  10. function init(&$view, $options) {
  11. parent::init($view, $options);
  12. }
  13. /**
  14. * Add this term to the query
  15. */
  16. function query() {
  17. $this->add_additional_fields();
  18. }
  19. function pre_render($values) {
  20. $this->aliases['relationships'] = 'relationships';
  21. $this->aliases['stock_id'] = 'stock_id';
  22. $this->field_alias = $this->aliases['stock_id'];
  23. //for each stock in this view page
  24. foreach ($values as $result) {
  25. if (!empty($result->{$this->aliases['relationships']})) {
  26. // all relationships including the current stock
  27. $relationships = $result->{$this->aliases['relationships']};
  28. foreach ($relationships as $relationship) {
  29. // Add relationship to the list of items to be rendered
  30. $this->items[$relationship->stock_id][$relationship->stock_relationship_id]['stock_id'] = $relationship->stock_id;
  31. $this->items[$relationship->stock_id][$relationship->stock_relationship_id]['stock_relationship_id'] = $relationship->stock_relationship_id;
  32. $this->items[$relationship->stock_id][$relationship->stock_relationship_id]['subject_id'] = $relationship->subject_id;
  33. $this->items[$relationship->stock_id][$relationship->stock_relationship_id]['subject_name'] = $relationship->subject_name;
  34. $this->items[$relationship->stock_id][$relationship->stock_relationship_id]['object_id'] = $relationship->object_id;
  35. $this->items[$relationship->stock_id][$relationship->stock_relationship_id]['object_name'] = $relationship->object_name;
  36. $this->items[$relationship->stock_id][$relationship->stock_relationship_id]['type_id'] = $relationship->type_id;
  37. $this->items[$relationship->stock_id][$relationship->stock_relationship_id]['type_name'] = $relationship->type_name;
  38. }
  39. }
  40. }
  41. }
  42. function render_item($count, $item) {
  43. return $item['subject_name'] . ' ' . $item['type_name'] . ' ' . $item['object_name'];
  44. }
  45. function document_self_tokens(&$tokens) {
  46. $tokens['[' . $this->options['id'] . '-stock_id' . ']'] = t('The Stock ID.');
  47. $tokens['[' . $this->options['id'] . '-stock_relationship_id' . ']'] = t('Relationship ID');
  48. $tokens['[' . $this->options['id'] . '-subject_id' . ']'] = t('Subject ID');
  49. $tokens['[' . $this->options['id'] . '-subject_name' . ']'] = t('Subject Name');
  50. $tokens['[' . $this->options['id'] . '-object_id' . ']'] = t('Object ID');
  51. $tokens['[' . $this->options['id'] . '-object_name' . ']'] = t('Object Name');
  52. $tokens['[' . $this->options['id'] . '-type_id' . ']'] = t('Type ID');
  53. $tokens['[' . $this->options['id'] . '-type_name' . ']'] = t('Type Name');
  54. }
  55. function add_self_tokens(&$tokens, $item) {
  56. $tokens['[' . $this->options['id'] . '-stock_id' . ']'] = $item['stock_id'];
  57. $tokens['[' . $this->options['id'] . '-stock_relationship_id' . ']'] = $item['stock_relationship_id'];
  58. $tokens['[' . $this->options['id'] . '-subject_id' . ']'] = $item['subject_id'];
  59. $tokens['[' . $this->options['id'] . '-subject_name' . ']'] = $item['subject_name'];
  60. $tokens['[' . $this->options['id'] . '-object_id' . ']'] = $item['object_id'];
  61. $tokens['[' . $this->options['id'] . '-object_name' . ']'] = $item['object_name'];
  62. $tokens['[' . $this->options['id'] . '-type_id' . ']'] = $item['type_id'];
  63. $tokens['[' . $this->options['id'] . '-type_name' . ']'] = $item['type_name'];
  64. }
  65. }