aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/attach.php40
-rw-r--r--include/markdown.php16
-rw-r--r--tests/unit/includes/BBCodeTest.php14
-rw-r--r--tests/unit/includes/MarkdownTest.php8
4 files changed, 40 insertions, 38 deletions
diff --git a/include/attach.php b/include/attach.php
index 449721793..654c9990d 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -2599,33 +2599,31 @@ function attach_move($channel_id, $resource_id, $new_folder_hash, $newname = '',
intval($r[0]['id'])
);
- if($r[0]['is_photo']) {
- q("update photo set album = '%s', filename = '%s', os_path = '%s', display_path = '%s'
- where resource_id = '%s' and uid = %d",
- dbesc($newalbumname),
- dbesc($filename),
- dbesc($x['os_path']),
- dbesc($x['path']),
- dbesc($resource_id),
- intval($channel_id)
- );
-
- q("update photo set content = CASE imgscale WHEN 0 THEN %s ELSE CONCAT(%s, '-', imgscale) END where resource_id = '%s' and uid = %d and os_storage = 1",
- dbescbin($newstorepath),
- dbescbin($newstorepath),
- dbesc($resource_id),
- intval($channel_id)
- );
-
- // now rename the thumbnails in os_storage - the original should have been copied before already
- $ps = q("SELECT content, imgscale FROM photo WHERE uid = %d AND resource_id = '%s' and imgscale > 0 and os_storage = 1",
+ if ($r[0]['is_photo']) {
+ // update the photo DB entries and copy the thumbnails
+ $ps = q("SELECT imgscale FROM photo WHERE uid = %d AND resource_id = '%s' and os_storage = 1",
intval($channel_id),
dbesc($resource_id)
);
if ($recurse) {
foreach($ps as $p) {
- rename($oldstorepath . '-' . $p['imgscale'], $p['content']);
+ q("update photo set album = '%s', filename = '%s', os_path = '%s', display_path = '%s', content = '%s'
+ where resource_id = '%s' and imgscale = %d and uid = %d",
+ dbesc($newalbumname),
+ dbesc($filename),
+ dbesc($x['os_path']),
+ dbesc($x['path']),
+ dbescbin($newstorepath . ((intval($p['imgscale']) > 0) ? '-' . $p['imgscale'] : '')),
+ dbesc($resource_id),
+ intval($p['imgscale']),
+ intval($channel_id)
+ );
+
+ // the original should have been copied already
+ if (intval($p['imgscale']) > 0) {
+ rename($oldstorepath . '-' . $p['imgscale'], $newstorepath . '-' . $p['imgscale']);
+ }
}
}
}
diff --git a/include/markdown.php b/include/markdown.php
index b2adcd0d5..90d671fe4 100644
--- a/include/markdown.php
+++ b/include/markdown.php
@@ -80,22 +80,6 @@ function markdown_to_bb($s, $use_zrl = false, $options = []) {
$s = html2bbcode($s);
- // $s = bb_code_protect($s);
-
- // Convert everything that looks like a link to a link
- if($use_zrl) {
- if (strpos($s,'[/img]') !== false) {
- $s = preg_replace_callback("/\[img\](.*?)\[\/img\]/ism", 'use_zrl_cb_img', $s);
- $s = preg_replace_callback("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", 'use_zrl_cb_img_x', $s);
- }
- $s = preg_replace_callback("/([^\]\=\{\/]|^)(https?\:\/\/)([a-zA-Z0-9\pL\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\@\(\)]+)([\,\.\:\;]\s|$)/ismu", 'use_zrl_cb_link',$s);
- }
- else {
- $s = preg_replace("/([^\]\=\{\/]|^)(https?\:\/\/)([a-zA-Z0-9\pL\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\@\(\)]+)([\,\.\:\;]\s|$)/ismu", '$1[url=$2$3]$2$3[/url]$4',$s);
- }
-
- // $s = bb_code_unprotect($s);
-
// remove duplicate adjacent code tags
$s = preg_replace("/(\[code\])+(.*?)(\[\/code\])+/ism","[code]$2[/code]", $s);
diff --git a/tests/unit/includes/BBCodeTest.php b/tests/unit/includes/BBCodeTest.php
index 30ea00ba6..c6a60f35b 100644
--- a/tests/unit/includes/BBCodeTest.php
+++ b/tests/unit/includes/BBCodeTest.php
@@ -138,7 +138,15 @@ class BBCodeTest extends UnitTestCase {
'del tag' => [
'some [s]strike through[/s] text',
'some <del>strike through</del> text'
- ]
+ ],
+ 'naked url is converted to link' => [
+ 'example url: https://example.com',
+ 'example url: <a href="https://example.com" target="_blank" rel="nofollow noopener">https://example.com</a>'
+ ],
+ 'naked url within code block is not converted to link' => [
+ "[code]\nhttp://example.com\n[/code]",
+ "<pre><code>http://example.com</code></pre>"
+ ],
];
}
@@ -223,6 +231,10 @@ class BBCodeTest extends UnitTestCase {
"<pre><code>some\n indented\ncode</code></pre>",
"[code]some\n indented\ncode[/code]"
],
+ 'code block with URL' => [
+ '<pre><code>\nproxy_pass http://example.com\n</code></pre>',
+ '[code]\nproxy_pass http://example.com\n[/code]'
+ ],
'paragraph with a mention and some text' => [
'<p><span class="h-card" translate="no"><a href="https://example.org/@profile" class="u-url mention">@<span>profile</span></a></span> some content</p>',
'[url=https://example.org/@profile]@profile[/url] some content'
diff --git a/tests/unit/includes/MarkdownTest.php b/tests/unit/includes/MarkdownTest.php
index 310130bf1..217d12ca2 100644
--- a/tests/unit/includes/MarkdownTest.php
+++ b/tests/unit/includes/MarkdownTest.php
@@ -93,6 +93,14 @@ class MarkdownTest extends UnitTestCase {
"[code=php]&lt;?php\necho phpinfo();[/code]",
"```php\n<?php\necho phpinfo();\n```"
],
+ 'code block with URL' => [
+ "[code]an example url https://example.com[/code]",
+ "```\nan example url https://example.com\n```"
+ ],
+ 'bbcode code block with URL' => [
+ "[code] proxy_pass http://example.com; [/code]",
+ "[code]\nproxy_pass http://example.com;\n[/code]"
+ ]
];
}