- $title = $content['title'];
- if (!$title && isset($content['open_graph']['og_title'])) {
- $title = $content['open_graph']['og_title'];
+ // be sure to keep the url in case of error
+ // so we'll be able to refetch it in the future
+ $content['url'] = !empty($content['url']) ? $content['url'] : $url;
+
+ $this->stockEntry($entry, $content);
+ }
+
+ /**
+ * Stock entry with fetched or imported content.
+ * Will fall back to OpenGraph data if available.
+ *
+ * @param Entry $entry Entry to stock
+ * @param array $content Array with at least title, url & html
+ */
+ private function stockEntry(Entry $entry, array $content)
+ {
+ $entry->setUrl($content['url']);
+
+ $domainName = parse_url($entry->getUrl(), PHP_URL_HOST);
+ if (false !== $domainName) {
+ $entry->setDomainName($domainName);
+ }
+
+ if (!empty($content['title'])) {
+ $entry->setTitle($content['title']);
+ } elseif (!empty($content['open_graph']['og_title'])) {
+ $entry->setTitle($content['open_graph']['og_title']);