diff --git a/mod/photos.php b/mod/photos.php
index 5fb6ba368..16af45599 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -1633,7 +1633,7 @@ function photos_content(App $a)
'$paginate' => $paginate,
]);
- $a->page['htmlhead'] .= "\n" . '' . "\n";
+ $a->page['htmlhead'] .= "\n" . '' . "\n";
$a->page['htmlhead'] .= '' . "\n";
$a->page['htmlhead'] .= '' . "\n";
$a->page['htmlhead'] .= '' . "\n";
diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php
index 55fc24273..2dc13ae5e 100644
--- a/src/Content/Text/BBCode.php
+++ b/src/Content/Text/BBCode.php
@@ -572,14 +572,17 @@ class BBCode extends BaseObject
$return = sprintf('
', $data["type"]);
}
- if (!empty($data["image"])) {
- $return .= sprintf('
', $data["url"], self::proxyUrl($data["image"], $simplehtml), $data["title"]);
- } elseif (!empty($data["preview"])) {
- $return .= sprintf('
', $data["url"], self::proxyUrl($data["preview"], $simplehtml), $data["title"]);
- }
-
if (!empty($data['title']) && !empty($data['url'])) {
- $return .= sprintf('
', $data['url'], $data['title']);
+ if (!empty($data["image"]) && empty($data["text"]) && ($data["type"] == "photo")) {
+ $return .= sprintf('
', $data["url"], self::proxyUrl($data["image"], $simplehtml), $data["title"]);
+ } else {
+ if (!empty($data["image"])) {
+ $return .= sprintf('
', $data["url"], self::proxyUrl($data["image"], $simplehtml), $data["title"]);
+ } elseif (!empty($data["preview"])) {
+ $return .= sprintf('
', $data["url"], self::proxyUrl($data["preview"], $simplehtml), $data["title"]);
+ }
+ $return .= sprintf('
', $data['url'], $data['title']);
+ }
}
if (!empty($data["description"]) && $data["description"] != $data["title"]) {
diff --git a/src/Util/ParseUrl.php b/src/Util/ParseUrl.php
index 2c134542a..dd39a052a 100644
--- a/src/Util/ParseUrl.php
+++ b/src/Util/ParseUrl.php
@@ -271,11 +271,9 @@ class ParseUrl
$siteinfo['image'] = $meta_tag['content'];
break;
case 'twitter:card':
- // Obsolete card type
- if ($meta_tag['content'] == 'photo') {
- $siteinfo['type'] = 'summary_large_image';
- } else {
- $siteinfo['type'] = $meta_tag['content'];
+ // Detect photo pages
+ if ($meta_tag['content'] == 'summary_large_image') {
+ $siteinfo['type'] = 'photo';
}
break;
case 'twitter:description':
@@ -299,10 +297,6 @@ class ParseUrl
}
}
- if ($siteinfo['type'] == 'summary' || $siteinfo['type'] == 'summary_large_image') {
- $siteinfo['type'] = 'link';
- }
-
if (isset($keywords)) {
$siteinfo['keywords'] = [];
foreach ($keywords as $keyword) {
@@ -338,6 +332,11 @@ class ParseUrl
}
}
+ // Prevent to have a photo type without an image
+ if (empty($siteinfo['image']) && ($siteinfo['type'] == 'photo')) {
+ $siteinfo['type'] = 'link';
+ }
+
if ((@$siteinfo['image'] == '') && !$no_guessing) {
$list = $xpath->query('//img[@src]');
foreach ($list as $node) {