You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.7 KiB

  1. <?php
  2. namespace Adafruit\FeedMangler;
  3. use Adafruit\FeedMangler\Mangler;
  4. class Atom {
  5. public static function searchResults ($term) {
  6. $search_data = Mangler::getSearchData($term);
  7. $results = [];
  8. if (array_key_exists('projects', $search_data))
  9. if (is_array($search_data['projects']))
  10. $results = $search_data['projects'];
  11. $feed = new \FeedWriter\ATOM;
  12. $feed->setTitle('Hackaday IO - ' . $term);
  13. $feed->setLink(APPLICATION_URL);
  14. $feed->setChannelElement('updated', date(\DATE_ATOM , time()));
  15. $feed->setChannelElement('author', ['name' => 'Adafruit Industries Feed Mangler']);
  16. $feed->setSelfLink(APPLICATION_URL);
  17. foreach ($results as $result) {
  18. // print_r($result);
  19. $item = $feed->createNewItem();
  20. $item->setAuthor('foo');
  21. if (isset($result['url'])) {
  22. $item->setLink($result['url']);
  23. } else {
  24. // skip because why don't you have a url argh
  25. continue;
  26. }
  27. if (isset($result['updated']))
  28. $item->setDate( date('r', $result['updated']) );
  29. $content_html = '';
  30. if (isset($result['summary']))
  31. $content_html .= '<p><i>' . $result['summary'] . '</i></p>';
  32. if (isset($result['description']))
  33. $content_html .= '<p>' . nl2br($result['description']) . '</p>';
  34. if (isset($result['skulls'])) {
  35. $s = $result['skulls'];
  36. if ($s > 100)
  37. $content_html .= "<p>☠ x {$s}</p>";
  38. elseif ($s > 0)
  39. $content_html .= "<p>" . str_repeat('☠', $s);
  40. }
  41. if (strlen($content_html))
  42. $item->setContent($content_html);
  43. if (isset($result['name']))
  44. $item->setTitle($result['name']);
  45. $feed->addItem($item);
  46. }
  47. return $feed->generateFeed();
  48. }
  49. }