aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/bbcode.php41
1 files changed, 39 insertions, 2 deletions
diff --git a/include/bbcode.php b/include/bbcode.php
index 9ca8e3f03..14d0ce14a 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -99,6 +99,43 @@ function bb_replace_images($body, $images) {
}}
+
+function bb_parse_crypt($match) {
+
+ $attributes = $match[1];
+
+ $algorithm = "";
+ preg_match("/alg='(.*?)'/ism", $attributes, $matches);
+ if ($matches[1] != "")
+ $algorithm = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8');
+
+ preg_match("/alg=\&quot\;(.*?)\&quot\;/ism", $attributes, $matches);
+ if ($matches[1] != "")
+ $algorithm = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8');
+
+ $hint = "";
+ preg_match("/hint='(.*?)'/ism", $attributes, $matches);
+ if ($matches[1] != "")
+ $hint = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8');
+ preg_match("/hint=\&quot\;(.*?)\&quot\;/ism", $attributes, $matches);
+ if ($matches[1] != "")
+ $hint = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8');
+
+ // Next we really should link to a JS routine based on the algorithm which prompts for a key
+ // something like zdecrypt_{algorithm}, which will be a no-op if the decryption algorithm is not present
+ // We can either pass the text or pass a message ID and let the decryption module call /viewsrc or something
+ // to get the text. The text might be large so the message ID might be preferable. But if we pass the
+ // text directly we won't have to do a network fetch; and can potentially display the results in a popup.
+
+
+ $Text = '<br/><img src="' . z_root() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . t('Encrypted content') . '" /><br />' . t('Algorithm: ') . $algorithm . '<br />' . t('Key hint: ') . $hint . '<br />';
+
+ return $Text;
+
+}
+
+
+
function bb_ShareAttributes($match) {
$attributes = $match[1];
@@ -465,9 +502,9 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
$Text = preg_replace("/\[zmg\](.*?)\[\/zmg\]/ism", '<img class="zrl" src="$1" alt="' . t('Image/photo') . '" />', $Text);
}
- if (strpos($Text,'[crypt]') !== false) {
+ if (strpos($Text,'[/crypt]') !== false) {
$Text = preg_replace("/\[crypt\](.*?)\[\/crypt\]/ism",'<br/><img src="' .$a->get_baseurl() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . t('Encrypted content') . '" /><br />', $Text);
- $Text = preg_replace("/\[crypt=(.*?)\](.*?)\[\/crypt\]/ism",'<br/><img src="' .$a->get_baseurl() . '/images/lock_icon.gif" alt="' . t('Encrypted content') . '" title="' . '$1' . ' ' . t('Encrypted content') . '" /><br />', $Text);
+ $Text = preg_replace_callback("/\[crypt (.*?)\](.*?)\[\/crypt\]/ism", 'bb_parse_crypt', $Text);
}
// Try to Oembed
if ($tryoembed) {