aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorHubzilla <hubzilla@hz.macgirvin.com>2017-01-19 15:37:30 -0800
committerHubzilla <hubzilla@hz.macgirvin.com>2017-01-19 15:37:30 -0800
commit96f196febda488e1db2d9a677fd5eb736aa76ae6 (patch)
tree8e97ca43e8f963b46effe4baee587ebd76892d6d /include
parent5ce96b9b95c6b3497bfb49fd086a23a2dedb4e2e (diff)
downloadvolse-hubzilla-96f196febda488e1db2d9a677fd5eb736aa76ae6.tar.gz
volse-hubzilla-96f196febda488e1db2d9a677fd5eb736aa76ae6.tar.bz2
volse-hubzilla-96f196febda488e1db2d9a677fd5eb736aa76ae6.zip
add gen_link_id() function to selectively encode/decode the message-id component of /display/ links for message-ids that contain troublesome characters
Diffstat (limited to 'include')
-rw-r--r--include/conversation.php2
-rw-r--r--include/event.php2
-rwxr-xr-xinclude/items.php4
-rw-r--r--include/text.php9
4 files changed, 12 insertions, 5 deletions
diff --git a/include/conversation.php b/include/conversation.php
index 94cd9168e..285ee752f 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -733,7 +733,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
'like' => '',
'dislike' => '',
'comment' => '',
- 'conv' => (($preview) ? '' : array('href'=> z_root() . '/display/' . urlencode($item['mid']), 'title'=> t('View in context'))),
+ 'conv' => (($preview) ? '' : array('href'=> z_root() . '/display/' . gen_link_id($item['mid']), 'title'=> t('View in context'))),
'previewing' => $previewing,
'wait' => t('Please wait'),
'thread_level' => 1,
diff --git a/include/event.php b/include/event.php
index 85f14c5f9..cf1cc331d 100644
--- a/include/event.php
+++ b/include/event.php
@@ -1018,7 +1018,7 @@ function event_store_item($arr, $event) {
if($wall)
$item_arr['plink'] = z_root() . '/channel/' . $z[0]['channel_address'] . '/?f=&mid=' . urlencode($item_arr['mid']);
else
- $item_arr['plink'] = z_root() . '/display/' . urlencode($item_arr['mid']);
+ $item_arr['plink'] = z_root() . '/display/' . gen_link_id($item_arr['mid']);
$x = q("select * from xchan where xchan_hash = '%s' limit 1",
dbesc($arr['event_xchan'])
diff --git a/include/items.php b/include/items.php
index 88aa098b4..e4ead28c8 100755
--- a/include/items.php
+++ b/include/items.php
@@ -1624,7 +1624,7 @@ logger('revision: ' . $arr['revision']);
if($d2 > $d1)
$arr['item_delayed'] = 1;
- $arr['llink'] = z_root() . '/display/' . urlencode($arr['mid']);
+ $arr['llink'] = z_root() . '/display/' . gen_link_id($arr['mid']);
if(! $arr['plink'])
$arr['plink'] = $arr['llink'];
@@ -2279,7 +2279,7 @@ function send_status_notifications($post_id,$item) {
if($unfollowed)
return;
- $link = z_root() . '/display/' . urlencode($item['mid']);
+ $link = z_root() . '/display/' . gen_link_id($item['mid']);
$y = q("select id from notify where link = '%s' and uid = %d limit 1",
dbesc($link),
diff --git a/include/text.php b/include/text.php
index f5b1803c2..1beefc6eb 100644
--- a/include/text.php
+++ b/include/text.php
@@ -3124,6 +3124,12 @@ function cleanup_bbcode($body) {
}
+function gen_link_id($mid) {
+ if(strpbrk($mid,':/&?<>"\'') !== false)
+ return 'b64.' . base64url_encode($mid);
+ return $mid;
+}
+
// callback for array_walk
function array_trim(&$v,$k) {
@@ -3132,4 +3138,5 @@ function array_trim(&$v,$k) {
function array_escape_tags(&$v,$k) {
$v = escape_tags($v);
-} \ No newline at end of file
+}
+