From a127440167f9564974e8d6d67855c697d6cce2b6 Mon Sep 17 00:00:00 2001
From: Eduard Moraru <Enygma2002@gmail.com>
Date: Fri, 10 Jul 2015 19:53:31 +0300
Subject: [PATCH] XWIKI-12299: Deprecate XWiki.parseContent since it is
 misleading and outdated - Deprecaed both core and api methods - Replaced
 their usage in xwiki-plaform with #evaluate

---
 .../src/main/resources/flamingo/footer.vm              |  3 ++-
 .../src/main/resources/flamingo/htmlheader.vm          | 10 +++++++---
 .../src/main/java/com/xpn/xwiki/XWiki.java             |  4 ++++
 .../src/main/java/com/xpn/xwiki/api/XWiki.java         |  2 ++
 .../src/main/webapp/templates/macros.vm                |  2 +-
 .../src/main/webapp/templates/shareinline.vm           |  3 ++-
 .../src/main/webapp/templates/xwikivars.vm             |  2 +-
 7 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/footer.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/footer.vm
index faea495eac1..5202566a9d9 100644
--- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/footer.vm
+++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/footer.vm
@@ -6,7 +6,8 @@
     #set ($version = $xwiki.getXWikiPreference("version"))
   #end
   #if ("$!version" != "")
-    #set ($version = $xwiki.parseContent($version))
+    ## The version information coming from preferences is usually Velocity code, so make sure to evaluate it.
+    #set ($version = "#evaluate($version)")
   #else
     #set ($version = $!xwiki.version)
   #end
diff --git a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/htmlheader.vm b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/htmlheader.vm
index 1c1707e358a..febdf00d519 100644
--- a/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/htmlheader.vm
+++ b/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/htmlheader.vm
@@ -30,7 +30,10 @@
     #if(!$title)
       #set($title = $!xwiki.getSpacePreference('title'))
       #if($title != '')
-        #set($title = "$escapetool.xml($xwiki.parseContent($title))")
+        ## Evaluate the title since it can have velocity code.
+        #set($title = "#evaluate($title)")
+        ## Don`t forget to escape it.
+        #set($title = "$escapetool.xml($title)")
       #else
         #set($title = "XWiki - $escapetool.xml($!doc.space) - $escapetool.xml($!tdoc.displayTitle)")
       #end
@@ -78,9 +81,10 @@
     ## ---------------------------------------------------------------------------------------------------------------
     <meta name="gwt:property" content="locale=$!{xcontext.language}" />
     ## ---------------------------------------------------------------------------------------------------------------
-    ## Add user-defined Meta directives
+    ## Add user-defined Meta directives.
     ## ---------------------------------------------------------------------------------------------------------------
-    $xwiki.parseContent($!xwiki.getSpacePreference("meta"))
+    ## Note: Velocity code, so it needs to be evaluated.
+    #evaluate($!xwiki.getSpacePreference("meta"))
     ## ---------------------------------------------------------------------------------------------------------------
     ## Hook for inserting Link extensions. This will be replaced with the pulled link references.
     ## ---------------------------------------------------------------------------------------------------------------
diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java
index c5710901994..74c27857355 100644
--- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java
+++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java
@@ -1761,6 +1761,10 @@ public <T> List<T> search(String sql, int nb, int start, Object[][] whereParams,
         return getStore().search(sql, nb, start, whereParams, context);
     }
 
+    /**
+     * @deprecated Since 7.2M1. Use specific rendering/parsing options for the content type you want to parse/render.
+     */
+    @Deprecated
     public String parseContent(String content, XWikiContext xcontext)
     {
         return getOldRendering().parseContent(content, xcontext);
diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/api/XWiki.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/api/XWiki.java
index 4be79fc3de6..00f911afe93 100644
--- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/api/XWiki.java
+++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/api/XWiki.java
@@ -800,7 +800,9 @@ public List<Document> wrapDocs(List<?> docs)
      *
      * @param content
      * @return evaluated content if the content contains velocity scripts
+     * @deprecated Since 7.2M1. Use specific rendering/parsing options for the content type you want to parse/render.
      */
+    @Deprecated
     public String parseContent(String content)
     {
         return this.xwiki.parseContent(content, getXWikiContext());
diff --git a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm
index 8e4af241a7b..bf0b28b8c4d 100644
--- a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm
+++ b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm
@@ -190,7 +190,7 @@ $xwiki.getUserName("xwiki:${username}")
   #else
 </li>
   #end
- <li class="tocEntry"><a href="#$tocEntry.key">$!tocEntry.value.numbering $xwiki.parseContent($tocEntry.value.text)</a>
+ <li class="tocEntry"><a href="#$tocEntry.key">$!tocEntry.value.numbering #evaluate($tocEntry.value.text)</a>
   #set ($lastLevel = $level)
   #set($openeditem = true)
  #end
diff --git a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/shareinline.vm b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/shareinline.vm
index ce791dc2eb2..674728b64b2 100644
--- a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/shareinline.vm
+++ b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/shareinline.vm
@@ -91,7 +91,8 @@
     #set ($fullMessage = $xwiki.getDocument('XWiki.SharePage').getObject('XWiki.Mail', 'language', $xcontext.language, true).getProperty('html').value)
     #set ($fullMessage = $fullMessage.replace('${recipientName}', $services.localization.render('core.viewers.share.recipientPlaceholder')))
     #set ($fullMessage = $fullMessage.replaceAll('<pre[^>]*+>[^<]*+</pre>', $message))
-    #set ($fullMessage = $xwiki.parseContent($fullMessage))
+    ## Evaluate the template's content since it contains Velocity code.
+    #set ($fullMessage = "#evaluate($fullMessage)")
 
     <dt><label for="message">$services.localization.render('core.viewers.share.messagePreviewLabel')</label></dt>
     <dd class='mail-preview'>$fullMessage</dd>
diff --git a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/xwikivars.vm b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/xwikivars.vm
index aed7fc2a2a3..1dfcd4cbfe5 100644
--- a/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/xwikivars.vm
+++ b/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/xwikivars.vm
@@ -106,7 +106,7 @@
 #end
 #set ($skin = $xwiki.getSkin())
 ## Compute the copyright and evaluate its content with Velocity to allow users to put some scripts inside
-#set ($copyright = $xwiki.parseContent($xwiki.getSpaceCopyright()))
+#set ($copyright = "#evaluate($xwiki.getSpaceCopyright())")
 #set ($xwikimode = $xcontext.getMode())
 #set ($logredir = $escapetool.xml($xwiki.relativeRequestURL))
 ##
-- 
GitLab