*/
protected $hideDates;
- /**
- * @var string PubSub hub URL.
- */
- protected $pubsubhubUrl;
-
/**
* @var string server locale.
*/
*/
public function buildData()
{
- // Optionally filter the results:
- $searchtags = !empty($this->userInput['searchtags']) ? escape($this->userInput['searchtags']) : '';
- $searchterm = !empty($this->userInput['searchterm']) ? escape($this->userInput['searchterm']) : '';
- if (! empty($searchtags) && ! empty($searchterm)) {
- $linksToDisplay = $this->linkDB->filter(
- LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT,
- array($searchtags, $searchterm)
- );
- }
- elseif ($searchtags) {
- $linksToDisplay = $this->linkDB->filter(LinkFilter::$FILTER_TAG, $searchtags);
- }
- elseif ($searchterm) {
- $linksToDisplay = $this->linkDB->filter(LinkFilter::$FILTER_TEXT, $searchterm);
- }
- else {
- $linksToDisplay = $this->linkDB;
+ // Search for untagged links
+ if (isset($this->userInput['searchtags']) && empty($this->userInput['searchtags'])) {
+ $this->userInput['searchtags'] = false;
}
+ // Optionally filter the results:
+ $linksToDisplay = $this->linkDB->filterSearch($this->userInput);
+
$nblinksToDisplay = $this->getNbLinks(count($linksToDisplay));
// Can't use array_keys() because $link is a LinkDB instance and not a real array.
}
$data['language'] = $this->getTypeLanguage();
- $data['pubsubhub_url'] = $this->pubsubhubUrl;
$data['last_update'] = $this->getLatestDateFormatted();
$data['show_dates'] = !$this->hideDates || $this->isLoggedIn;
// Remove leading slash from REQUEST_URI.
- $data['self_link'] = $pageaddr . escape(ltrim($this->serverInfo['REQUEST_URI'], '/'));
+ $data['self_link'] = escape(server_url($this->serverInfo))
+ . escape($this->serverInfo['REQUEST_URI']);
$data['index_url'] = $pageaddr;
$data['usepermalinks'] = $this->usePermalinks === true;
$data['links'] = $linkDisplayed;
*/
protected function buildItem($link, $pageaddr)
{
- $link['guid'] = $pageaddr .'?'. smallHash($link['linkdate']);
+ $link['guid'] = $pageaddr .'?'. $link['shorturl'];
// Check for both signs of a note: starting with ? and 7 chars long.
if ($link['url'][0] === '?' && strlen($link['url']) === 7) {
$link['url'] = $pageaddr . $link['url'];
}
if ($this->usePermalinks === true) {
- $permalink = '<a href="'. $link['url'] .'" title="Direct link">Direct link</a>';
+ $permalink = '<a href="'. $link['url'] .'" title="'. t('Direct link') .'">'. t('Direct link') .'</a>';
} else {
- $permalink = '<a href="'. $link['guid'] .'" title="Permalink">Permalink</a>';
+ $permalink = '<a href="'. $link['guid'] .'" title="'. t('Permalink') .'">'. t('Permalink') .'</a>';
}
- $link['description'] = format_description($link['description']) . PHP_EOL .'<br>— '. $permalink;
+ $link['description'] = format_description($link['description'], '', false, $pageaddr);
+ $link['description'] .= PHP_EOL .'<br>— '. $permalink;
- $date = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $link['linkdate']);
+ $pubDate = $link['created'];
+ $link['pub_iso_date'] = $this->getIsoDate($pubDate);
- if ($this->feedType == self::$FEED_RSS) {
- $link['iso_date'] = $date->format(DateTime::RSS);
+ // atom:entry elements MUST contain exactly one atom:updated element.
+ if (!empty($link['updated'])) {
+ $upDate = $link['updated'];
+ $link['up_iso_date'] = $this->getIsoDate($upDate, DateTime::ATOM);
} else {
- $link['iso_date'] = $date->format(DateTime::ATOM);
+ $link['up_iso_date'] = $this->getIsoDate($pubDate, DateTime::ATOM);;
}
// Save the more recent item.
- if (empty($this->latestDate) || $this->latestDate < $date) {
- $this->latestDate = $date;
+ if (empty($this->latestDate) || $this->latestDate < $pubDate) {
+ $this->latestDate = $pubDate;
+ }
+ if (!empty($upDate) && $this->latestDate < $upDate) {
+ $this->latestDate = $upDate;
}
$taglist = array_filter(explode(' ', $link['tags']), 'strlen');
return $link;
}
- /**
- * Assign PubSub hub URL.
- *
- * @param string $pubsubhubUrl PubSub hub url.
- */
- public function setPubsubhubUrl($pubsubhubUrl)
- {
- $this->pubsubhubUrl = $pubsubhubUrl;
- }
-
/**
* Set this to true to use permalinks instead of direct links.
*
return $this->latestDate->format($type);
}
+ /**
+ * Get ISO date from DateTime according to feed type.
+ *
+ * @param DateTime $date Date to format.
+ * @param string|bool $format Force format.
+ *
+ * @return string Formatted date.
+ */
+ protected function getIsoDate(DateTime $date, $format = false)
+ {
+ if ($format !== false) {
+ return $date->format($format);
+ }
+ if ($this->feedType == self::$FEED_RSS) {
+ return $date->format(DateTime::RSS);
+
+ }
+ return $date->format(DateTime::ATOM);
+ }
+
/**
* Returns the number of link to display according to 'nb' user input parameter.
*