callback_user_content.inc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /**
  3. * @file
  4. * Contains SearchApiAlterAddUserContent.
  5. */
  6. /**
  7. * Adds the nodes created by the indexed user for indexing.
  8. */
  9. class SearchApiAlterAddUserContent extends SearchApiAbstractAlterCallback {
  10. /**
  11. * {@inheritdoc}
  12. */
  13. public function supportsIndex(SearchApiIndex $index) {
  14. return $index->getEntityType() === 'user';
  15. }
  16. /**
  17. * {@inheritdoc}
  18. */
  19. public function propertyInfo() {
  20. return array(
  21. 'search_api_user_content' => array(
  22. 'label' => t('User content'),
  23. 'description' => t('The nodes created by this user'),
  24. 'type' => 'list<node>',
  25. ),
  26. );
  27. }
  28. /**
  29. * {@inheritdoc}
  30. */
  31. public function alterItems(array &$items) {
  32. $uids = array();
  33. foreach ($items as $item) {
  34. $uids[] = $item->uid;
  35. }
  36. $sql = 'SELECT nid, uid FROM {node} WHERE uid IN (:uids)';
  37. $nids = db_query($sql, array(':uids' => $uids));
  38. $user_nodes = array();
  39. foreach ($nids as $row) {
  40. $user_nodes[$row->uid][] = $row->nid;
  41. }
  42. foreach ($items as $item) {
  43. $item->search_api_user_content = array();
  44. if (!empty($user_nodes[$item->uid])) {
  45. $item->search_api_user_content = $user_nodes[$item->uid];
  46. }
  47. }
  48. }
  49. }