add gen_link_id() function to selectively encode/decode the message-id component of /display/ links for message-ids that contain troublesome characters

This commit is contained in:
Hubzilla
2017-01-19 15:37:30 -08:00
parent 5ce96b9b95
commit 96f196febd
10 changed files with 31 additions and 18 deletions

View File

@@ -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,

View File

@@ -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'])

View File

@@ -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),

View File

@@ -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);
}
}