Page MenuHomeIn-Portal Phabricator

D8.diff
No OneTemporary

File Metadata

Created
Thu, May 8, 8:25 AM
Index: core/kernel/db/cat_event_handler.php
===================================================================
--- core/kernel/db/cat_event_handler.php
+++ core/kernel/db/cat_event_handler.php
@@ -1105,26 +1105,13 @@
$keywords = $this->Application->unescapeRequestVariable(trim($this->Application->GetVar('keywords')));
- $query_object = $this->Application->recallObject('HTTPQuery');
- /* @var $query_object kHTTPQuery */
-
- $sql = 'SHOW TABLES LIKE "'.$search_table.'"';
+ $search_helper = $this->Application->recallObject('SearchHelper');
+ /** @var kSearchHelper $search_helper */
- if(!isset($query_object->Get['keywords']) &&
- !isset($query_object->Post['keywords']) &&
- $this->Conn->Query($sql))
- {
- return; // used when navigating by pages or changing sorting in search results
- }
- if(!$keywords || strlen($keywords) < $this->Application->ConfigValue('Search_MinKeyword_Length'))
- {
- $this->Conn->Query('DROP TABLE IF EXISTS '.$search_table);
- $this->Application->SetVar('keywords_too_short', 1);
- return; // if no or too short keyword entered, doing nothing
+ if ( !$search_helper->needNewSearch($search_table, $keywords) ) {
+ return;
}
- $this->Application->StoreVar('keywords', $keywords);
-
$this->saveToSearchLog($keywords, 0); // 0 - simple search, 1 - advanced search
$event->setPseudoClass('_List');
@@ -1236,9 +1223,6 @@
}
// keyword string processing
- $search_helper = $this->Application->recallObject('SearchHelper');
- /* @var $search_helper kSearchHelper */
-
$where_clause = Array ();
foreach ($field_list as $field) {
if (preg_match('/^' . preg_quote($items_table, '/') . '\.(.*)/', $field, $regs)) {
Index: core/kernel/db/db_event_handler.php
===================================================================
--- core/kernel/db/db_event_handler.php
+++ core/kernel/db/db_event_handler.php
@@ -829,7 +829,7 @@
*/
protected function _passListParams($event, $skip_var)
{
- $param_names = array_diff(Array ('page', 'per_page', 'sort_by'), Array ($skip_var));
+ $param_names = array_diff(array('page', 'per_page', 'sort_by', 'keywords'), array($skip_var));
$list_helper = $this->Application->recallObject('ListHelper');
/* @var $list_helper ListHelper */
@@ -861,6 +861,13 @@
$event->SetRedirectParam('sort_by', $value);
}
break;
+
+ case 'keywords':
+ if ( $value ) {
+ $value = $this->Application->unescapeRequestVariable($value);
+ $event->SetRedirectParam('keywords', kUtil::escape($value, kUtil::ESCAPE_URL));
+ }
+ break;
}
}
}
Index: core/kernel/db/db_tag_processor.php
===================================================================
--- core/kernel/db/db_tag_processor.php
+++ core/kernel/db/db_tag_processor.php
@@ -681,7 +681,8 @@
}
if ( $has_next_page ) {
- $block_params = Array ('name' => $this->SelectParam($params, 'render_as,block'));
+ $block_params = $this->prepareTagParams($params);
+ $block_params['name'] = $this->SelectParam($params, 'render_as,block');
return $this->Application->ParseBlock($block_params);
}
@@ -754,6 +755,16 @@
unset($params['per_page']);
}
+ // Process keywords.
+ $keywords = $this->Application->GetVar('keywords');
+
+ if ( $keywords ) {
+ $params['keywords'] = kUtil::escape(
+ $this->Application->unescapeRequestVariable($keywords),
+ kUtil::ESCAPE_URL
+ );
+ }
+
if (!array_key_exists('pass', $params)) {
$params['pass'] = 'm,' . $prefix_special;
}
Index: core/kernel/processors/main_processor.php
===================================================================
--- core/kernel/processors/main_processor.php
+++ core/kernel/processors/main_processor.php
@@ -1223,7 +1223,7 @@
function GetUrlHiddenFileds($params)
{
- $vars = Array ('page', 'per_page', 'sort_by');
+ $vars = array('page', 'per_page', 'sort_by', 'keywords');
$ret = '<input type="hidden" name="main_list" value="1"/>';
if (array_key_exists('skip', $params)) {
@@ -1283,4 +1283,22 @@
{
return $this->Application->Parser->blockFound($params['name']);
}
+
+ /**
+ * Search link.
+ *
+ * @param array $params Tag params.
+ *
+ * @return string
+ */
+ protected function SearchLink(array $params)
+ {
+ $params['keywords'] = kUtil::escape(
+ kUtil::unescape($this->Application->GetVar('keywords'), kUtil::ESCAPE_HTML),
+ kUtil::ESCAPE_URL
+ );
+
+ return $this->Application->ProcessParsedTag('m', 'Link', $params);
+ }
+
}
Index: core/units/categories/categories_event_handler.php
===================================================================
--- core/units/categories/categories_event_handler.php
+++ core/units/categories/categories_event_handler.php
@@ -2454,25 +2454,13 @@
$keywords = $this->Application->unescapeRequestVariable(trim($this->Application->GetVar('keywords')));
- $query_object = $this->Application->recallObject('HTTPQuery');
- /* @var $query_object kHTTPQuery */
-
- $sql = 'SHOW TABLES LIKE "'.$search_table.'"';
+ $search_helper = $this->Application->recallObject('SearchHelper');
+ /** @var kSearchHelper $search_helper */
- if ( !isset($query_object->Get['keywords']) && !isset($query_object->Post['keywords']) && $this->Conn->Query($sql) ) {
- // used when navigating by pages or changing sorting in search results
+ if ( !$search_helper->needNewSearch($search_table, $keywords) ) {
return;
}
- if(!$keywords || strlen($keywords) < $this->Application->ConfigValue('Search_MinKeyword_Length'))
- {
- $this->Conn->Query('DROP TABLE IF EXISTS '.$search_table);
- $this->Application->SetVar('keywords_too_short', 1);
- return; // if no or too short keyword entered, doing nothing
- }
-
- $this->Application->StoreVar('keywords', $keywords);
-
$this->saveToSearchLog($keywords, 0); // 0 - simple search, 1 - advanced search
$keywords = strtr($keywords, Array('%' => '\\%', '_' => '\\_'));
@@ -2586,9 +2574,6 @@
}
// keyword string processing
- $search_helper = $this->Application->recallObject('SearchHelper');
- /* @var $search_helper kSearchHelper */
-
$where_clause = Array ();
foreach ($field_list as $field) {
if (preg_match('/^' . preg_quote($items_table, '/') . '\.(.*)/', $field, $regs)) {
Index: core/units/helpers/search_helper.php
===================================================================
--- core/units/helpers/search_helper.php
+++ core/units/helpers/search_helper.php
@@ -802,4 +802,49 @@
$object->addFilter('includes_filter_h', $includes_or_filter_h, kDBList::HAVING_FILTER);
$object->addFilter('excepts_filter_h', $excepts_and_filter_h, kDBList::HAVING_FILTER);
}
- }
\ No newline at end of file
+
+ /**
+ * Determines if new search required.
+ *
+ * @param string $search_table Search table.
+ * @param string $keywords Keywords.
+ *
+ * @return boolean
+ */
+ public function needNewSearch($search_table, $keywords)
+ {
+ if ( $this->Application->GetVar('session_keywords') === false ) {
+ $this->Application->SetVar('session_keywords', $this->Application->RecallVar('keywords', ''));
+ }
+
+ $sql = 'SHOW TABLES LIKE "' . $search_table . '"';
+ $request_keywords = $this->Application->GetVarDirect('keywords', 'Get');
+
+ if ( !$request_keywords ) {
+ $request_keywords = $this->Application->GetVarDirect('keywords', 'Post');
+ }
+
+ $request_keywords_compare = $this->Application->unescapeRequestVariable(trim($request_keywords));
+ $session_keywords = $this->Application->GetVar('session_keywords');
+
+ if ( (!$request_keywords || $request_keywords_compare == $session_keywords)
+ && $this->Conn->Query($sql)
+ ) {
+ return false; // Used when navigating by pages or changing sorting in search results.
+ }
+
+ $this->Application->StoreVar('keywords', $request_keywords);
+
+ if ( !$keywords || strlen($keywords) < $this->Application->ConfigValue('Search_MinKeyword_Length') ) {
+ $this->Conn->Query('DROP TABLE IF EXISTS ' . $search_table);
+ $this->Application->SetVar('keywords_too_short', 1);
+
+ return false; // If no or too short keyword entered, doing nothing.
+ }
+
+ $this->Application->StoreVar('keywords', $keywords);
+
+ return true;
+ }
+
+ }
Index: themes/advanced/in-bulletin/elements/content_boxes/search_results.elm.tpl
===================================================================
--- themes/advanced/in-bulletin/elements/content_boxes/search_results.elm.tpl
+++ themes/advanced/in-bulletin/elements/content_boxes/search_results.elm.tpl
@@ -2,7 +2,7 @@
<inp2:bb_InitList list_name="topic_search_results" types="search" parent_cat_id="any" recursive="1" per_page="short_list"/>
<inp2:m_Capture to_var="header">
- <inp2:m_phrase name="lu_title_TopicSearchResults"/> (<inp2:bb_TotalRecords list_name="topic_search_results" />)
+ <inp2:m_phrase name="lu_title_TopicSearchResults"/> <inp2:m_RenderElement name="keywords_element"/> (<inp2:bb_TotalRecords list_name="topic_search_results" />)
</inp2:m_Capture>
<inp2:m_include template="in-bulletin/elements/topics.elm"/>
@@ -45,9 +45,5 @@
<inp2:m_Set items_found="1"/>
</inp2:m_if>
- <inp2:m_DefineElement name="more_link">
- <img src="<inp2:m_TemplatesBase module="In-Portal"/>img/s.gif" width="1" height="5" alt="" /><br />
- <a href="<inp2:m_Link template="in-bulletin/topics/search_results" />"><inp2:m_Phrase label="lu_More"/>...</a>
- </inp2:m_DefineElement>
- <inp2:bb_MoreLink list_name="topic_search_results" render_as="more_link" />
+ <inp2:bb_MoreLink list_name="topic_search_results" render_as="search_more_link_element" template="in-bulletin/topics/search_results"/>
</inp2:m_RenderElement>
\ No newline at end of file
Index: themes/advanced/in-bulletin/topics/search_results.tpl
===================================================================
--- themes/advanced/in-bulletin/topics/search_results.tpl
+++ themes/advanced/in-bulletin/topics/search_results.tpl
@@ -33,7 +33,7 @@
<inp2:bb_InitList list_name="topic_search_results" types="search" parent_cat_id="any" recursive="1" main_list="1"/>
<inp2:m_Capture to_var="header">
- <inp2:m_Phrase label="lu_title_TopicSearchResults"/>
+ <inp2:m_Phrase label="lu_title_TopicSearchResults"/> <inp2:m_RenderElement name="keywords_element"/>
</inp2:m_Capture>
<table class="fullwidth">
Index: themes/advanced/in-commerce/elements/content_boxes/search_results.elm.tpl
===================================================================
--- themes/advanced/in-commerce/elements/content_boxes/search_results.elm.tpl
+++ themes/advanced/in-commerce/elements/content_boxes/search_results.elm.tpl
@@ -2,7 +2,7 @@
<inp2:p_InitList list_name="product_search_results" types="search" parent_cat_id="any" recursive="1" per_page="short_list"/>
<inp2:m_Capture to_var="header">
- <inp2:m_phrase name="lu_title_ProductSearchResults"/> (<inp2:p_TotalRecords list_name="product_search_results" />)
+ <inp2:m_phrase name="lu_title_ProductSearchResults"/> <inp2:m_RenderElement name="keywords_element"/> (<inp2:p_TotalRecords list_name="product_search_results" />)
</inp2:m_Capture>
<inp2:m_include template="in-commerce/elements/products.elm"/>
@@ -18,9 +18,5 @@
<inp2:m_Set items_found="1"/>
</inp2:m_if>
- <inp2:m_DefineElement name="more_link">
- <img src="<inp2:m_TemplatesBase module="In-Portal"/>img/s.gif" width="1" height="5" alt="" /><br />
- <a href="<inp2:m_Link template="in-commerce/products/search_results" />"><inp2:m_Phrase label="lu_More"/>...</a>
- </inp2:m_DefineElement>
- <inp2:p_MoreLink list_name="product_search_results" render_as="more_link" />
-</inp2:m_RenderElement>
\ No newline at end of file
+ <inp2:p_MoreLink list_name="product_search_results" render_as="search_more_link_element" template="in-commerce/products/search_results"/>
+</inp2:m_RenderElement>
Index: themes/advanced/in-commerce/products/search_results.tpl
===================================================================
--- themes/advanced/in-commerce/products/search_results.tpl
+++ themes/advanced/in-commerce/products/search_results.tpl
@@ -46,7 +46,7 @@
<inp2:p_InitList list_name="product_search_results" main_list="1" types="search" parent_cat_id="any" recursive="1" except="in_cart"/>
<inp2:m_Capture to_var="header">
- <inp2:m_Phrase label="lu_title_ProductSearchResults"/> (<inp2:p_TotalRecords list_name="product_search_results"/>)
+ <inp2:m_Phrase label="lu_title_ProductSearchResults"/> <inp2:m_RenderElement name="keywords_element"/> (<inp2:p_TotalRecords list_name="product_search_results"/>)
</inp2:m_Capture>
<inp2:m_include template="in-commerce/elements/sorting.elm" list_name="product_search_results" is_search="1"/>
Index: themes/advanced/in-link/elements/content_boxes/search_results.elm.tpl
===================================================================
--- themes/advanced/in-link/elements/content_boxes/search_results.elm.tpl
+++ themes/advanced/in-link/elements/content_boxes/search_results.elm.tpl
@@ -2,7 +2,7 @@
<inp2:l_InitList list_name="link_search_results" types="search" parent_cat_id="any" recursive="1" per_page="short_list"/>
<inp2:m_Capture to_var="header">
- <inp2:m_phrase name="lu_title_LinkSearchResults"/> (<inp2:l_TotalRecords list_name="link_search_results" />)
+ <inp2:m_phrase name="lu_title_LinkSearchResults"/> <inp2:m_RenderElement name="keywords_element"/> (<inp2:l_TotalRecords list_name="link_search_results" />)
</inp2:m_Capture>
<inp2:m_include template="in-link/elements/links.elm"/>
@@ -18,10 +18,5 @@
<inp2:m_Set items_found="1"/>
</inp2:m_if>
- <inp2:m_DefineElement name="more_link">
- <img src="<inp2:m_TemplatesBase module="In-Portal"/>img/s.gif" width="1" height="5" alt="" /><br />
- <a href="<inp2:m_Link template="in-link/links/search_results" />"><inp2:m_Phrase label="lu_More"/>...</a>
- </inp2:m_DefineElement>
-
- <inp2:l_MoreLink list_name="link_search_results" render_as="more_link" />
+ <inp2:l_MoreLink list_name="link_search_results" render_as="search_more_link_element" template="in-link/links/search_results"/>
</inp2:m_RenderElement>
\ No newline at end of file
Index: themes/advanced/in-link/links/search_results.tpl
===================================================================
--- themes/advanced/in-link/links/search_results.tpl
+++ themes/advanced/in-link/links/search_results.tpl
@@ -48,7 +48,7 @@
<inp2:l_InitList list_name="link_search_results" types="search" parent_cat_id="any" recursive="1" main_list="1"/>
<inp2:m_Capture to_var="header">
- <inp2:m_Phrase label="lu_title_LinkSearchResults"/> (<inp2:l_TotalRecords list_name="link_search_results"/>)
+ <inp2:m_Phrase label="lu_title_LinkSearchResults"/> <inp2:m_RenderElement name="keywords_element"/> (<inp2:l_TotalRecords list_name="link_search_results"/>)
</inp2:m_Capture>
<inp2:m_include template="in-link/elements/sorting.elm" list_name="link_search_results" is_search="1"/>
Index: themes/advanced/in-news/articles/search_results.tpl
===================================================================
--- themes/advanced/in-news/articles/search_results.tpl
+++ themes/advanced/in-news/articles/search_results.tpl
@@ -46,7 +46,7 @@
<inp2:n_InitList list_name="article_search_results" types="search" parent_cat_id="any" recursive="1" main_list="1"/>
<inp2:m_Capture to_var="header">
- <inp2:m_Phrase label="lu_title_ArticleSearchResults"/> (<inp2:n_TotalRecords list_name="article_search_results"/>)
+ <inp2:m_Phrase label="lu_title_ArticleSearchResults"/> <inp2:m_RenderElement name="keywords_element"/> (<inp2:n_TotalRecords list_name="article_search_results"/>)
</inp2:m_Capture>
<inp2:m_include template="in-news/elements/sorting.elm" list_name="article_search_results" is_search="1"/>
Index: themes/advanced/in-news/elements/content_boxes/search_results.elm.tpl
===================================================================
--- themes/advanced/in-news/elements/content_boxes/search_results.elm.tpl
+++ themes/advanced/in-news/elements/content_boxes/search_results.elm.tpl
@@ -2,7 +2,7 @@
<inp2:n_InitList list_name="article_search_results" types="search" parent_cat_id="any" recursive="1" per_page="short_list"/>
<inp2:m_Capture to_var="header">
- <inp2:m_phrase name="lu_title_ArticleSearchResults"/> (<inp2:n_TotalRecords list_name="article_search_results" />)
+ <inp2:m_phrase name="lu_title_ArticleSearchResults"/> <inp2:m_RenderElement name="keywords_element"/> (<inp2:n_TotalRecords list_name="article_search_results" />)
</inp2:m_Capture>
<inp2:m_include template="in-news/elements/articles.elm"/>
@@ -18,9 +18,5 @@
<inp2:m_Set items_found="1"/>
</inp2:m_if>
- <inp2:m_DefineElement name="more_link">
- <img src="<inp2:m_TemplatesBase module="In-Portal"/>img/s.gif" width="1" height="5" alt="" /><br />
- <a href="<inp2:m_Link template="in-news/articles/search_results" />"><inp2:m_Phrase label="lu_More"/>...</a>
- </inp2:m_DefineElement>
- <inp2:n_MoreLink list_name="article_search_results" render_as="more_link"/>
+ <inp2:n_MoreLink list_name="article_search_results" render_as="search_more_link_element" template="in-news/articles/search_results"/>
</inp2:m_RenderElement>
\ No newline at end of file
Index: themes/advanced/platform/categories/search_results.tpl
===================================================================
--- themes/advanced/platform/categories/search_results.tpl
+++ themes/advanced/platform/categories/search_results.tpl
@@ -34,7 +34,7 @@
<inp2:c_InitList list_name="category_search_results" types="search" parent_cat_id="any" page_var="m_cat_page"/>
<inp2:m_Capture to_var="header">
- <inp2:m_Phrase label="lu_title_CategorySearchResults"/> (<inp2:c_TotalRecords list_name="category_search_results"/>)
+ <inp2:m_Phrase label="lu_title_CategorySearchResults"/> <inp2:m_RenderElement name="keywords_element"/> (<inp2:c_TotalRecords list_name="category_search_results"/>)
</inp2:m_Capture>
<!--##<inp2:m_include template="platform/elements/sorting.elm" list_name="category_search_results"/>##-->
Index: themes/advanced/platform/elements/content_boxes.elm.tpl
===================================================================
--- themes/advanced/platform/elements/content_boxes.elm.tpl
+++ themes/advanced/platform/elements/content_boxes.elm.tpl
@@ -196,4 +196,13 @@
None
</inp2:m_if>
</div>
-</inp2:m_DefineElement>
\ No newline at end of file
+</inp2:m_DefineElement>
+
+<inp2:m_DefineElement name="keywords_element">
+ for "<inp2:m_Get name="keywords" no_html_escape="no_html_escape"/>"
+</inp2:m_DefineElement>
+
+<inp2:m_DefineElement name="search_more_link_element">
+ <img src="<inp2:m_TemplatesBase module='In-Portal'/>img/s.gif" width="1" height="5" alt="" /><br />
+ <a href="<inp2:m_SearchLink template='$template'/>"><inp2:m_Phrase label="lu_More"/>...</a>
+</inp2:m_DefineElement>
Index: themes/advanced/platform/elements/content_boxes/search_results.elm.tpl
===================================================================
--- themes/advanced/platform/elements/content_boxes/search_results.elm.tpl
+++ themes/advanced/platform/elements/content_boxes/search_results.elm.tpl
@@ -2,7 +2,7 @@
<inp2:c_InitList list_name="category_search_results" types="search" parent_cat_id="any" per_page="short_list"/>
<inp2:m_Capture to_var="header">
- <inp2:m_phrase name="lu_title_CategorySearchResults"/> (<inp2:c_TotalRecords list_name="category_search_results" />)
+ <inp2:m_phrase name="lu_title_CategorySearchResults"/> <inp2:m_RenderElement name="keywords_element"/> (<inp2:c_TotalRecords list_name="category_search_results" />)
</inp2:m_Capture>
<inp2:m_include template="platform/elements/categories.elm"/>
@@ -18,9 +18,5 @@
<inp2:m_Set items_found="1"/>
</inp2:m_if>
- <inp2:m_DefineElement name="more_link">
- <img src="<inp2:m_TemplatesBase module="In-Portal"/>img/s.gif" width="1" height="5" alt="" /><br />
- <a href="<inp2:m_Link template="platform/categories/search_results" />"><inp2:m_Phrase label="lu_More"/>...</a>
- </inp2:m_DefineElement>
- <inp2:c_MoreLink list_name="category_search_results" render_as="more_link"/>
+ <inp2:c_MoreLink list_name="category_search_results" render_as="search_more_link_element" template="platform/categories/search_results"/>
</inp2:m_RenderElement>
\ No newline at end of file
Index: themes/advanced/platform/elements/side_boxes/search.elm.tpl
===================================================================
--- themes/advanced/platform/elements/side_boxes/search.elm.tpl
+++ themes/advanced/platform/elements/side_boxes/search.elm.tpl
@@ -2,12 +2,12 @@
<inp2:m_phrase name="lu_title_SearchBox"/>
</inp2:m_Capture>
-<form method="post" action="<inp2:m_Link template="platform/search/search_results" pass_category="1"/>">
+<form method="get" action="<inp2:m_Link template="platform/search/search_results" pass_category="1"/>">
<inp2:m_GetFormHiddens template="platform/search/search_results"/>
<table>
<tr>
<td colspan="2">
- <input type="text" name="keywords" id="keywords" style="width: 155px;" class="input-text" value="" />
+ <input type="text" name="keywords" id="keywords" style="width: 155px;" class="input-text" value="<inp2:m_Get name='keywords' no_html_escape='no_html_escape' html_escape='1'/>" />
</td>
</tr>
<!--## Show only when not on home ##-->
@@ -48,4 +48,4 @@
</tr>
</table>
##-->
-</form>
\ No newline at end of file
+</form>

Event Timeline