<?xml version="1.0" encoding="ISO-8859-1"?>

<xwikidoc>
<web>XWiki</web>
<name>WebSearchCode</name>
<language></language>
<defaultLanguage>en</defaultLanguage>
<translation>0</translation>
<parent>Main.WebSearch</parent>
<creator>XWiki.Admin</creator>
<author>XWiki.Admin</author>
<customClass></customClass>
<contentAuthor>XWiki.Admin</contentAuthor>
<creationDate>1184488261000</creationDate>
<date>1184489282000</date>
<contentUpdateDate>1184489282000</contentUpdateDate>
<version>1.3</version>
<title></title>
<template></template>
<defaultTemplate></defaultTemplate>
<validationScript></validationScript>
<comment></comment>
<object>
<class>
<name>XWiki.TagClass</name>
<customClass></customClass>
<customMapping></customMapping>
<defaultViewSheet></defaultViewSheet>
<defaultEditSheet></defaultEditSheet>
<defaultWeb></defaultWeb>
<nameField></nameField>
<validationScript></validationScript>
<tags>
<name>tags</name>
<prettyName>Tags</prettyName>
<unmodifiable>0</unmodifiable>
<relationalStorage>1</relationalStorage>
<displayType>input</displayType>
<multiSelect>1</multiSelect>
<size>30</size>
<separator> </separator>
<cache>0</cache>
<separators> ,|</separators>
<values></values>
<number>1</number>
<classType>com.xpn.xwiki.objects.classes.StaticListClass</classType>
</tags>
</class>
<name>XWiki.WebSearchCode</name>
<number>0</number>
<className>XWiki.TagClass</className>
<property>
<tags/>
</property>
</object>
<content>## ==================================================
## Common code for WebSearch and WebSearchRss
## ==================================================
## Inputs: $text, $space
## Output: $list
## Note: Do not put any empty line or this will break
## the generated RSS feed
## ==================================================
#set($datedlist = $xwiki.arrayList)
#if(!$text or $text == "")
  ## No search
#else
  #set($text = $text.replaceAll("'", "''").replaceAll("%", "\\%"))
  #set($nbitems = 50)
  ## -----------------------------------------------------------
  ## Non-admins should not see results from XWiki, Admin and
  ## Panels spaces. Also exclude the WebPreferences doc.
  ## -----------------------------------------------------------
  #if ($xwiki.hasAdminRights())
    #set ($excludedWebs = "")
  #else
    #set ($excludedWebs = "doc.web&lt;&gt;'XWiki' and doc.web&lt;&gt;'Admin' and doc.web&lt;&gt;'Panels' and doc.name&lt;&gt;'WebPreferences' and")
  #end
  ## -----------------------------------------------------------
  ## Display only a given space if $request.space is defined
  ## -----------------------------------------------------------
  #if($space and $space == "All")
    #set ($webClause = "$excludedWebs")
  #else
    #set ($webClause = "doc.web='$space' and $excludedWebs")
  #end
  #macro(addelement $item $list)
    #if($xwiki.hasAccessLevel("view", $context.user, "${context.database}:${item}"))
      #set($itemdoc = $xwiki.getDocument($item))
      #set($sdate = $xwiki.formatDate($itemdoc.date, "yyyyMMddHHmmss"))
      #set($sitem = "${sdate}${item}")
      #if(!$list.contains($sitem))
        #set($discard = $list.add($sitem))
      #end
    #end
  #end
  ## -----------------------------------------------------------
  ## Search in the page names
  ## -----------------------------------------------------------
  #set ($sql = "where $webClause upper(doc.fullName) like upper('%$!text%') order by doc.date desc")
  #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0))
    #addelement($item $datedlist)
  #end
  ## -----------------------------------------------------------
  ## Search in page content
  ## -----------------------------------------------------------
  #set ($sql = "where $webClause upper(doc.content) like upper('%$!text%') order by doc.date desc")
  #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0))
    #addelement($item $datedlist)
  #end
  ## -----------------------------------------------------------
  ## Search in text fields (simple String properties)
  ## -----------------------------------------------------------
  #set($sql= ", BaseObject as obj, StringProperty as prop where $webClause obj.name=doc.fullName and prop.id.id = obj.id and upper(prop.value) like upper('%$!text%')")
  #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0))
    #addelement($item $datedlist)
  #end
  ## -----------------------------------------------------------
  ## Search in big text fields (textarea properties)
  ## -----------------------------------------------------------
  #set($sql= ", BaseObject as obj, LargeStringProperty as prop where $webClause obj.name=doc.fullName and prop.id.id = obj.id and upper(prop.value) like upper('%$!text%')")
  #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0))
    #addelement($item $datedlist)
  #end
#end
#set($list = $xwiki.arrayList)
#foreach($item in $xwiki.sort($datedlist))
  #set($ok = $list.add(0, $item.substring(14)))
#end</content>
</xwikidoc>
