Fix empty title and domain_name when exception is thrown during fetch

Add a new helper to set a default title when it's empty:
1/ use basename part of entry's path, if any
2/ or use domain name

Fixes #2053

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
This commit is contained in:
Kevin Decherf
2017-11-26 23:20:23 +01:00
parent 70265817ae
commit af29e1bf07
4 changed files with 59 additions and 4 deletions

View File

@ -144,6 +144,38 @@ class ContentProxy
}
}
/**
* Helper to extract and save host from entry url.
*
* @param Entry $entry
*/
public function setEntryDomainName(Entry $entry)
{
$domainName = parse_url($entry->getUrl(), PHP_URL_HOST);
if (false !== $domainName) {
$entry->setDomainName($domainName);
}
}
/**
* Helper to set a default title using:
* - url basename, if applicable
* - hostname.
*
* @param Entry $entry
*/
public function setDefaultEntryTitle(Entry $entry)
{
$url = parse_url($entry->getUrl());
$path = pathinfo($url['path'], PATHINFO_BASENAME);
if (empty($path)) {
$path = $url['host'];
}
$entry->setTitle($path);
}
/**
* Stock entry with fetched or imported content.
* Will fall back to OpenGraph data if available.
@ -155,10 +187,7 @@ class ContentProxy
{
$entry->setUrl($content['url']);
$domainName = parse_url($entry->getUrl(), PHP_URL_HOST);
if (false !== $domainName) {
$entry->setDomainName($domainName);
}
$this->setEntryDomainName($entry);
if (!empty($content['title'])) {
$entry->setTitle($content['title']);