- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / content / search.php
1 <?php
2 //
3 // Created on: <24-Apr-2002 16:06:53 bf>
4 //
5 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
6 // SOFTWARE NAME: eZ Publish
7 // SOFTWARE RELEASE: 4.1.x
8 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
9 // SOFTWARE LICENSE: GNU General Public License v2.0
10 // NOTICE: >
11 //   This program is free software; you can redistribute it and/or
12 //   modify it under the terms of version 2.0  of the GNU General
13 //   Public License as published by the Free Software Foundation.
14 //
15 //   This program is distributed in the hope that it will be useful,
16 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
17 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 //   GNU General Public License for more details.
19 //
20 //   You should have received a copy of version 2.0 of the GNU General
21 //   Public License along with this program; if not, write to the Free
22 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23 //   MA 02110-1301, USA.
24 //
25 //
26 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
27 //
28
29 require_once( "kernel/common/template.php" );
30
31 /*!
32  Get search limit
33  */
34 function pageLimit( $searchPageLimit )
35 {
36     switch ( $searchPageLimit )
37     {
38         case 1:
39             return 5;
40
41         case 2:
42         default:
43             return 10;
44
45         case 3:
46             return 20;
47
48         case 4:
49             return 30;
50
51         case 5:
52             return 50;
53     }
54 }
55
56 $http = eZHTTPTool::instance();
57
58 $Module = $Params['Module'];
59 $Offset = $Params['Offset'];
60
61 if ( !is_numeric( $Offset ) )
62     $Offset = 0;
63
64 $searchPageLimit = 2;
65 $tpl = templateInit();
66 $ini = eZINI::instance();
67 $useSearchCode = $ini->variable( 'SearchSettings', 'SearchViewHandling' ) == 'default';
68 $logSearchStats = $ini->variable( 'SearchSettings', 'LogSearchStats' ) == 'enabled';
69
70 if ( $http->hasVariable( 'BrowsePageLimit' ) )
71 {
72     $pageLimit = $http->variable( 'BrowsePageLimit' );
73 }
74 else
75 {
76     if ( $http->hasVariable( 'SearchPageLimit' ) )
77     {
78         $searchPageLimit = $http->variable( 'SearchPageLimit' );
79     }
80     $pageLimit = pageLimit( $searchPageLimit );
81 }
82
83 $maximumSearchLimit = $ini->variable( 'SearchSettings', 'MaximumSearchLimit' );
84 if ( $pageLimit > $maximumSearchLimit )
85     $pageLimit = $maximumSearchLimit;
86
87 $searchText = '';
88 if ( $http->hasVariable( "SearchText" ) )
89 {
90     $searchText = $http->variable( "SearchText" );
91 }
92
93 $searchSectionID = -1;
94 if ( $http->hasVariable( "SectionID" ) )
95 {
96     $searchSectionID = $http->variable( "SectionID" );
97 }
98
99 $searchTimestamp = false;
100 if ( $http->hasVariable( 'SearchTimestamp' ) and
101      $http->variable( 'SearchTimestamp' ) )
102 {
103     $searchTimestamp = $http->variable( 'SearchTimestamp' );
104 }
105
106 $searchType = "fulltext";
107 if ( $http->hasVariable( "SearchType" ) )
108 {
109     $searchType = $http->variable( "SearchType" );
110 }
111
112 $subTreeArray = array();
113 if ( $http->hasVariable( "SubTreeArray" ) )
114 {
115     if ( is_array( $http->variable( "SubTreeArray" ) ) )
116         $subTreeList = $http->variable( "SubTreeArray" );
117     else
118         $subTreeList = array( $http->variable( "SubTreeArray" ) );
119     foreach ( $subTreeList as $subTreeItem )
120     {
121         if ( $subTreeItem > 0 )
122             $subTreeArray[] = $subTreeItem;
123     }
124 }
125
126 $Module->setTitle( "Search for: $searchText" );
127
128 if ( $useSearchCode )
129 {
130     $sortArray = array( array( 'attribute', true, 153 ), array( 'priority', true ) );
131     $searchResult = eZSearch::search( $searchText, array( "SearchType" => $searchType,
132                                                           "SearchSectionID" => $searchSectionID,
133                                                           "SearchSubTreeArray" => $subTreeArray,
134                                                           'SearchTimestamp' => $searchTimestamp,
135                                                           "SearchLimit" => $pageLimit,
136                                                           "SearchOffset" => $Offset ) );
137 }
138
139 if ( $searchSectionID != -1 )
140 {
141     $res = eZTemplateDesignResource::instance();
142     $res->setKeys( array( array( 'section', $searchSectionID ) ) );
143 }
144
145 $viewParameters = array( 'offset' => $Offset );
146
147 $searchData = false;
148 $tpl->setVariable( "search_data", $searchData );
149 $tpl->setVariable( "search_section_id", $searchSectionID );
150 $tpl->setVariable( "search_subtree_array", $subTreeArray );
151 $tpl->setVariable( 'search_timestamp', $searchTimestamp );
152 $tpl->setVariable( "search_text", $searchText );
153 $tpl->setVariable( 'search_page_limit', $searchPageLimit );
154
155 $tpl->setVariable( "view_parameters", $viewParameters );
156 $tpl->setVariable( 'use_template_search', !$useSearchCode );
157
158 if ( $http->hasVariable( 'Mode' ) && $http->variable( 'Mode' ) == 'browse' )
159 {
160     if( !isset( $searchResult ) )
161         $searchResult = eZSearch::search( $searchText, array( "SearchType" => $searchType,
162                                                               "SearchSectionID" => $searchSectionID,
163                                                               "SearchSubTreeArray" => $subTreeArray,
164                                                               'SearchTimestamp' => $searchTimestamp,
165                                                               "SearchLimit" => $pageLimit,
166                                                               "SearchOffset" => $Offset ) );
167     $sys = eZSys::instance();
168     $searchResult['RequestedURI'] = "content/search";
169 //    $searchResult['RequestedURISuffix'] = $sys->serverVariable( "QUERY_STRING" );
170
171
172     $searchResult['RequestedURISuffix'] = 'SearchText=' . urlencode ( $searchText ) . ( ( $searchTimestamp > 0 ) ?  '&SearchTimestamp=' . $searchTimestamp : '' ) . '&BrowsePageLimit=' . $pageLimit . '&Mode=browse';
173     return $Module->run( 'browse',array(),array( "NodeList" => $searchResult,
174                                                  "Offset" => $Offset,
175                                                  "NodeID" => isset( $subTreeArray[0] ) && $subTreeArray[0] != 1 ? $subTreeArray[0] : null  ) );
176 }
177
178 // --- Compatibility code start ---
179 if ( $useSearchCode )
180 {
181     $tpl->setVariable( "offset", $Offset );
182     $tpl->setVariable( "page_limit", $pageLimit );
183     $tpl->setVariable( "search_text_enc", urlencode( $searchText ) );
184     $tpl->setVariable( "search_result", $searchResult["SearchResult"] );
185     $tpl->setVariable( "search_count", $searchResult["SearchCount"] );
186     $tpl->setVariable( "stop_word_array", $searchResult["StopWordArray"] );
187     if ( isset( $searchResult["SearchExtras"] ) )
188     {
189         $tpl->setVariable( "search_extras", $searchResult["SearchExtras"] );
190     }
191 }
192 else
193 {
194     $tpl->setVariable( "offset", false );
195     $tpl->setVariable( "page_limit", false );
196     $tpl->setVariable( "search_text_enc", false );
197     $tpl->setVariable( "search_result", false );
198     $tpl->setVariable( "search_count", false );
199     $tpl->setVariable( "stop_word_array", false );
200 }
201 // --- Compatibility code end ---
202
203 $Result = array();
204 $Result['content'] = $tpl->fetch( "design:content/search.tpl" );
205 $Result['path'] = array( array( 'text' => ezpI18n::translate( 'kernel/content', 'Search' ),
206                                 'url' => false ) );
207
208 $searchData = false;
209 if ( !$useSearchCode )
210 {
211     if ( $tpl->hasVariable( "search_data" ) )
212     {
213         $searchData = $tpl->variable( "search_data" );
214     }
215 }
216 else
217 {
218     $searchData = $searchResult;
219 }
220
221 if ( $logSearchStats and
222      trim( $searchText ) != "" and
223      is_array( $searchData ) and
224      array_key_exists( 'SearchCount', $searchData ) and
225      is_numeric( $searchData['SearchCount'] ) )
226 {
227     eZSearchLog::addPhrase( $searchText, $searchData["SearchCount"] );
228 }
229
230 ?>