if ((empty($content) || false === $this->validateContent($content)) && false === $disableContentUpdate) {
$fetchedContent = $this->graby->fetchContent($url);
- $fetchedContent['title'] = $this->sanitizeContentTitle($fetchedContent['title'], $fetchedContent['content_type']);
+
+ $fetchedContent['title'] = $this->sanitizeContentTitle(
+ $fetchedContent['title'],
+ isset($fetchedContent['headers']['content-type']) ? $fetchedContent['headers']['content-type'] : ''
+ );
// when content is imported, we have information in $content
// in case fetching content goes bad, we'll keep the imported information instead of overriding them
$entry->setUrl($url);
}
+ $entry->setGivenUrl($url);
+
$this->stockEntry($entry, $content);
}
/**
* Use a Symfony validator to ensure the language is well formatted.
*
- * @param Entry $entry
* @param string $value Language to validate and save
*/
public function updateLanguage(Entry $entry, $value)
/**
* Use a Symfony validator to ensure the preview picture is a real url.
*
- * @param Entry $entry
* @param string $value URL to validate and save
*/
public function updatePreviewPicture(Entry $entry, $value)
/**
* Update date.
*
- * @param Entry $entry
* @param string $value Date to validate and save
*/
public function updatePublishedAt(Entry $entry, $value)
/**
* Helper to extract and save host from entry url.
- *
- * @param Entry $entry
*/
public function setEntryDomainName(Entry $entry)
{
* Helper to set a default title using:
* - url basename, if applicable
* - hostname.
- *
- * @param Entry $entry
*/
public function setDefaultEntryTitle(Entry $entry)
{
/**
* Try to sanitize the title of the fetched content from wrong character encodings and invalid UTF-8 character.
*
- * @param $title
- * @param $contentType
+ * @param string $title
+ * @param string $contentType
*
* @return string
*/
}
// if content is an image, define it as a preview too
- if (!empty($content['headers']['content_type']) && \in_array($this->mimeGuesser->guess($content['headers']['content_type']), ['jpeg', 'jpg', 'gif', 'png'], true)) {
+ if (!empty($content['headers']['content-type']) && \in_array($this->mimeGuesser->guess($content['headers']['content-type']), ['jpeg', 'jpg', 'gif', 'png'], true)) {
$previewPictureUrl = $content['url'];
} elseif (empty($previewPictureUrl)) {
$this->logger->debug('Extracting images from content to provide a default preview picture');
$imagesUrls = DownloadImages::extractImagesUrlsFromHtml($content['html']);
$this->logger->debug(\count($imagesUrls) . ' pictures found');
+
if (!empty($imagesUrls)) {
$previewPictureUrl = $imagesUrls[0];
}
}
- if (!empty($previewPictureUrl)) {
- $this->updatePreviewPicture($entry, $previewPictureUrl);
- }
-
if (!empty($content['headers']['content-type'])) {
$entry->setMimetype($content['headers']['content-type']);
}
+ if (!empty($previewPictureUrl)) {
+ $this->updatePreviewPicture($entry, $previewPictureUrl);
+ }
+
try {
$this->tagger->tag($entry);
} catch (\Exception $e) {
* Update the origin_url field when a redirection occurs
* This field is set if it is empty and new url does not match ignore list.
*
- * @param Entry $entry
* @param string $url
*/
private function updateOriginUrl(Entry $entry, $url)
/**
* Validate that the given content has at least a title, an html and a url.
*
- * @param array $content
- *
* @return bool true if valid otherwise false
*/
private function validateContent(array $content)