Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F872047
D8.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, May 8, 8:25 AM
Size
21 KB
Mime Type
text/x-diff
Expires
Fri, May 9, 8:25 AM (7 m, 24 s)
Engine
blob
Format
Raw Data
Handle
617775
Attached To
D8: INP-1375 - Ensure "keywords" URL parameter is present on all search related pages
D8.diff
View Options
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
Log In to Comment