aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/conversation.php2
-rw-r--r--include/text.php23
2 files changed, 20 insertions, 5 deletions
diff --git a/include/conversation.php b/include/conversation.php
index c5a0df79a..a7dfa6b73 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -1223,7 +1223,7 @@ function builtin_activity_puller($item, &$conv_responses) {
if(! $item['thr_parent'])
$item['thr_parent'] = $item['parent_mid'];
- $conv_responses[$mode]['mids'][$item['thr_parent']][] = 'b64.' . base64url_encode($item['mid']);
+ $conv_responses[$mode]['mids'][$item['thr_parent']][] = gen_link_id($item['mid']);
if($item['obj_type'] === 'Answer')
continue;
diff --git a/include/text.php b/include/text.php
index e0910f83e..bd2df45aa 100644
--- a/include/text.php
+++ b/include/text.php
@@ -2156,12 +2156,12 @@ function base64url_encode($s, $strip_padding = true) {
return $s;
}
-function base64url_decode($s) {
+function base64url_decode($s, $strict = false) {
if(is_array($s)) {
logger('base64url_decode: illegal input: ' . print_r(debug_backtrace(), true));
return $s;
}
- return base64_decode(strtr($s,'-_','+/'));
+ return base64_decode(strtr($s,'-_','+/'), $strict);
}
@@ -2175,12 +2175,12 @@ function base64special_encode($s, $strip_padding = true) {
return $s;
}
-function base64special_decode($s) {
+function base64special_decode($s, $strict = false) {
if(is_array($s)) {
logger('base64url_decode: illegal input: ' . print_r(debug_backtrace(), true));
return $s;
}
- return base64_decode(strtr($s,',.','+/'));
+ return base64_decode(strtr($s,',.','+/'), $strict);
}
/**
@@ -3589,6 +3589,21 @@ function gen_link_id($mid) {
return $mid;
}
+/**
+ * @brief check if the provided string starts with 'b64.' and try to decode it if so.
+ * If it could be decoded return the decoded string or false if decoding failed.
+ * If the string does not start with 'b64.', return the string as is.
+ *
+ * @param string $mid
+ * @return string|boolean false
+ */
+function unpack_link_id($mid) {
+ if (is_string($mid) && strpos($mid, 'b64.') === 0) {
+ $mid = @base64url_decode(substr($mid, 4), true);
+ return $mid;
+ }
+ return $mid;
+}
// callback for array_walk