From a33ba5562a1bb6b59881872d20dc1550cf18221c Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Fri, 10 Feb 2012 13:32:28 +0800 Subject: [PATCH] MDL-28101 wiki2.0: escape bold and italics for NWIKI formatting --- mod/wiki/editors/wiki_editor.php | 39 ++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/mod/wiki/editors/wiki_editor.php b/mod/wiki/editors/wiki_editor.php index d206d148a5591..65a11fbdf9a04 100644 --- a/mod/wiki/editors/wiki_editor.php +++ b/mod/wiki/editors/wiki_editor.php @@ -38,26 +38,26 @@ function wiki_print_editor_wiki($pageid, $content, $editor, $version = -1, $sect } ///Get tags for every element we are displaying - $tag = wiki_parser_get_token($editor, 'bold'); + $tag = getTokens($editor, 'bold'); $wiki_editor['bold'] = array('ed_bold.gif', get_string('wikiboldtext', 'wiki'), $tag[0], $tag[1], get_string('wikiboldtext', 'wiki')); - $tag = wiki_parser_get_token($editor, 'italic'); + $tag = getTokens($editor, 'italic'); $wiki_editor['italic'] = array('ed_italic.gif', get_string('wikiitalictext', 'wiki'), $tag[0], $tag[1], get_string('wikiitalictext', 'wiki')); - $tag = wiki_parser_get_token($editor, 'link'); + $tag = getTokens($editor, 'link'); $wiki_editor['internal'] = array('ed_internal.gif', get_string('wikiinternalurl', 'wiki'), $tag[0], $tag[1], get_string('wikiinternalurl', 'wiki')); - $tag = wiki_parser_get_token($editor, 'url'); + $tag = getTokens($editor, 'url'); $wiki_editor['external'] = array('ed_external.gif', get_string('wikiexternalurl', 'wiki'), $tag[0], $tag[1], get_string('wikiexternalurl', 'wiki')); - $tag = wiki_parser_get_token($editor, 'list'); + $tag = getTokens($editor, 'list'); $wiki_editor['u_list'] = array('ed_ul.gif', get_string('wikiunorderedlist', 'wiki'), '\\n' . $tag[0], '', ''); $wiki_editor['o_list'] = array('ed_ol.gif', get_string('wikiorderedlist', 'wiki'), '\\n' . $tag[1], '', ''); - $tag = wiki_parser_get_token($editor, 'image'); + $tag = getTokens($editor, 'image'); $wiki_editor['image'] = array('ed_img.gif', get_string('wikiimage', 'wiki'), $tag[0], $tag[1], get_string('wikiimage', 'wiki')); - $tag = wiki_parser_get_token($editor, 'header'); + $tag = getTokens($editor, 'header'); $wiki_editor['h1'] = array('ed_h1.gif', get_string('wikiheader', 'wiki', 1), '\\n' . $tag . ' ', ' ' . $tag . '\\n', get_string('wikiheader', 'wiki', 1)); $wiki_editor['h2'] = array('ed_h2.gif', get_string('wikiheader', 'wiki', 2), '\\n' . $tag . $tag . ' ', ' ' . $tag . $tag . '\\n', get_string('wikiheader', 'wiki', 2)); $wiki_editor['h3'] = array('ed_h3.gif', get_string('wikiheader', 'wiki', 3), '\\n' . $tag . $tag . $tag . ' ', ' ' . $tag . $tag . $tag . '\\n', get_string('wikiheader', 'wiki', 3)); - $tag = wiki_parser_get_token($editor, 'line_break'); + $tag = getTokens($editor, 'line_break'); $wiki_editor['hr'] = array('ed_hr.gif', get_string('wikihr', 'wiki'), '\\n' . $tag . '\\n', '', ''); - $tag = wiki_parser_get_token($editor, 'nowiki'); + $tag = getTokens($editor, 'nowiki'); $wiki_editor['nowiki'] = array('ed_nowiki.gif', get_string('wikinowikitext', 'wiki'), $tag[0], $tag[1], get_string('wikinowikitext', 'wiki')); $OUTPUT->heading(strtoupper(get_string('format' . $editor, 'wiki'))); @@ -82,3 +82,24 @@ function wiki_print_editor_wiki($pageid, $content, $editor, $version = -1, $sect echo ''; echo $OUTPUT->container_end(); } + +/** + * Returns escaped token used by a wiki language to represent a given tag or "object" (bold -> **) + * + * @param string $format format of page + * @param array|string $token format tokens which needs to be escaped + * @return array|string + */ +function getTokens($format, $token) { + $tokens = wiki_parser_get_token($format, $token); + + if (is_array($tokens)) { + foreach ($tokens as $key => $value) { + $tokens[$key] = urlencode(str_replace("'", "\'", $value)); + } + } else { + urlencode(str_replace("'", "\'", $token)); + } + + return $tokens; +} \ No newline at end of file