AntonLV пре 10 година
родитељ
комит
eaa7ded4e9

+ 2 - 0
modules/boonex/forum/classes/BxForumConfig.php

@@ -96,6 +96,8 @@ class BxForumConfig extends BxBaseModTextConfig
             'OBJECT_FORM_ENTRY_DISPLAY_ADD' => 'bx_forum_entry_add',
             'OBJECT_FORM_ENTRY_DISPLAY_EDIT' => 'bx_forum_entry_edit',
             'OBJECT_FORM_ENTRY_DISPLAY_DELETE' => 'bx_forum_entry_delete',
+        	'OBJECT_FORM_SEARCH' => 'bx_forum_search',
+            'OBJECT_FORM_SEARCH_DISPLAY_FULL' => 'bx_forum_search_full',
             'OBJECT_MENU_ACTIONS_VIEW_ENTRY' => 'bx_forum_view', // actions menu on view entry page
             'OBJECT_MENU_ACTIONS_MY_ENTRIES' => 'bx_forum_my', // actions menu on my entries page
             'OBJECT_MENU_MANAGE_TOOLS' => 'bx_forum_menu_manage_tools', //manage menu in content administration tools

+ 7 - 0
modules/boonex/forum/classes/BxForumDb.php

@@ -41,6 +41,13 @@ class BxForumDb extends BxBaseModTextDb
     	$sJoinClause = $sWhereClause = $sGroupClause = $sOrderClause = "";
 
     	switch($aParams['type']) {
+    		case 'entries_keyword_search':
+    			$aMethod['name'] = 'getColumn';
+    			$sFieldsClause = "`te`.`cmt_object_id`"; 
+    			$sWhereClause = " AND `te`.`cmt_text` LIKE " . $this->escape("%" . $aParams['keyword'] . "%");
+    			$sGroupClause = "`te`.`cmt_object_id`";
+    			break;
+
 			case 'author_comments':
 				$aMethod['name'] = 'getPairs';
 				$sFieldsClause = "`te`.`cmt_author_id`, COUNT(`te`.`cmt_id`) AS `cmt_count`";

+ 35 - 0
modules/boonex/forum/classes/BxForumFormSearch.php

@@ -0,0 +1,35 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Forum Forum
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * Search form
+ */
+class BxForumFormSearch extends BxTemplFormView
+{
+	protected $MODULE;
+	protected $_oModule;
+
+    public function __construct($aInfo, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_forum';
+        $this->_oModule = BxDolModule::getInstance($this->MODULE);
+
+        parent::__construct($aInfo, $oTemplate);
+    }
+
+	protected function genCustomInputAuthor ($aInput)
+    {
+        $aInput['ajax_get_suggestions'] = BX_DOL_URL_ROOT . $this->_oModule->_oConfig->getBaseUri() . "ajax_get_authors";
+        return $this->genCustomInputUsernamesSuggestions($aInput);
+    }
+}
+
+/** @} */

+ 41 - 3
modules/boonex/forum/classes/BxForumGrid.php

@@ -68,7 +68,7 @@ class BxForumGrid extends BxTemplGrid
         return parent::_getActionDefault ($sType, $sKey, $a, $isSmall, $isDisabled, $aRow);
     }
 
-    protected function _getRowHeader ()
+    protected function _getRowHead ()
     {
     	return array();
     }
@@ -120,8 +120,11 @@ class BxForumGrid extends BxTemplGrid
 			$sWhereClause .= $aCondition['where'];
 
 		//--- Check browse params
-		if(!empty($this->_aParams['where']) && is_array($this->_aParams['where']))
-			$sWhereClause .= " AND " . $this->_oModule->_oDb->arrayToSQL($this->_aParams['where'], " AND ");
+		if(!empty($this->_aParams['where']) && is_array($this->_aParams['where'])) {
+			$sWhereClauseBrowse = $this->_getSqlWhereFromArray($this->_aParams['where']);
+			if(!empty($sWhereClauseBrowse))
+				$sWhereClause .= " AND " . $sWhereClauseBrowse;
+		}
 
 		$this->_aOptions['source'] = sprintf($this->_aOptions['source'], $sJoinClause, $sWhereClause);
 		return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
@@ -133,6 +136,41 @@ class BxForumGrid extends BxTemplGrid
 
     	return " ORDER BY `" . $this->_oModule->_oConfig->CNF['FIELD_STICK'] . "` DESC, " . $sOrder;
     }
+
+    protected function _getSqlWhereFromArray($aGroup)
+    {
+    	$sResult = "";
+    	if(empty($aGroup['grp']) || empty($aGroup['cnds']) || !is_array($aGroup['cnds']))
+    		return $sResult;
+
+		$sOprGrp = " " . $aGroup['opr'] . " ";
+    	foreach($aGroup['cnds'] as $aCnd) {
+    		if(!empty($aCnd['grp'])) {
+    			$sResult .= $sOprGrp . $this->_getSqlWhereFromArray($aCnd);
+
+    			continue;
+    		}
+
+			switch($aCnd['opr']) {
+				case '=':
+					$sResult .= $sOprGrp . "`" . $aCnd['fld'] . "` = " . $this->_oModule->_oDb->escape($aCnd['val']);
+					break;
+	
+				case 'IN':
+					if(empty($aCnd['val']) || !is_array($aCnd['val']))
+						break;
+	
+					$sResult .= $sOprGrp . "`" . $aCnd['fld'] . "` IN (" . $this->_oModule->_oDb->implode_escape($aCnd['val']) . ")";
+					break;
+	
+				case 'LIKE':
+					$sResult .= $sOprGrp . "`" . $aCnd['fld'] . "` LIKE " . $this->_oModule->_oDb->escape('%' . $aCnd['val'] . '%');
+					break;
+			}
+    	}
+
+    	return "(" . trim($sResult, $sOprGrp) . ")";
+    }
 }
 
 /** @} */

+ 61 - 4
modules/boonex/forum/classes/BxForumModule.php

@@ -63,6 +63,14 @@ class BxForumModule extends BxBaseModTextModule
     	echoJson(array('code' => 0, 'id' => $iContentId, 'reload' => 1));
     }
 
+    public function actionAjaxGetAuthors()
+    {
+        $aResult = BxDolService::call('system', 'profiles_search', array(bx_get('term')), 'TemplServiceProfiles');
+
+        header('Content-Type:text/javascript; charset=utf-8');
+        echo json_encode($aResult);
+    }
+
     /**
      * Service methods
      */
@@ -113,8 +121,48 @@ class BxForumModule extends BxBaseModTextModule
     	if($sUnitView != 'table')   
         	return $this->_serviceBrowse($sType, $sUnitView ? array('unit_view' => $sUnitView) : false, BX_DB_PADDING_DEF, $bEmptyMessage, $bAjaxPaginate);
 
-		return $this->_serviceBrowseTable(array('type' => $sType, 'where' => array('cat' => $iCategory)));
-    }  
+		return $this->_serviceBrowseTable(array('type' => $sType, 'where' => array(
+			array('fld' => 'cat', 'val' => $iCategory, 'opr' => '=')
+		)));
+    }
+
+    public function serviceBrowseSearchResults($sUnitView = false, $bEmptyMessage = true, $bAjaxPaginate = true)
+    {
+    	$sType = 'search';
+
+    	$aAutors = bx_process_input(bx_get('author'));
+    	$iCategory = bx_process_input(bx_get('category'), BX_DATA_INT);
+    	$sKeyword = bx_process_input(bx_get('keyword'));
+
+    	$aCategory = $this->_oDb->getCategories(array('type' => 'by_category', 'category' => $iCategory));
+    	if(!empty($aCategory['visible_for_levels']) && !BxDolAcl::getInstance()->isMemberLevelInSet($aCategory['visible_for_levels']))
+    		return $bEmptyMessage ? MsgBox(_t('_sys_txt_access_denied')) : '';
+
+    	if($sUnitView != 'table')   
+        	return $this->_serviceBrowse('', $sUnitView ? array('unit_view' => $sUnitView) : false, BX_DB_PADDING_DEF, $bEmptyMessage, $bAjaxPaginate);
+
+        $aWhereGroupAnd = array('grp' => 1, 'opr' => 'AND', 'cnds' => array());
+        if(!empty($aAutors) && is_array($aAutors))
+        	$aWhereGroupAnd['cnds'][] = array('fld' => 'author', 'val' => $aAutors, 'opr' => 'IN');
+
+        if(!empty($iCategory))
+        	$aWhereGroupAnd['cnds'][] = array('fld' => 'cat', 'val' => $iCategory, 'opr' => '=');
+
+        if(!empty($sKeyword)) {
+        	$aWhereGroupOr = array('grp' => 1, 'opr' => 'OR', 'cnds' => array(
+        		array('fld' => 'title', 'val' => $sKeyword, 'opr' => 'LIKE'),
+        		array('fld' => 'text', 'val' => $sKeyword, 'opr' => 'LIKE')
+        	));
+
+        	$aEntriesIds = $this->_oDb->getComments(array('type' => 'entries_keyword_search', 'keyword' => $sKeyword));
+        	if(!empty($aEntriesIds) && is_array($aEntriesIds))
+        		$aWhereGroupOr['cnds'][] = array('fld' => 'id', 'val' => $aEntriesIds, 'opr' => 'IN');
+
+        	$aWhereGroupAnd['cnds'][] = $aWhereGroupOr;
+        }
+
+		return $this->_serviceBrowseTable(array('type' => $sType, 'where' => $aWhereGroupAnd), false);
+    }
 
     /**
      * Get number of unread messages for spme profile
@@ -201,6 +249,15 @@ class BxForumModule extends BxBaseModTextModule
         return '';
     }
 
+	public function serviceSearch()
+    {
+    	$CNF = $this->_oConfig->CNF;
+    	$oForm = BxDolForm::getObjectInstance($CNF['OBJECT_FORM_SEARCH'], $CNF['OBJECT_FORM_SEARCH_DISPLAY_FULL'], $this->_oTemplate);
+    	$oForm->initChecker();
+
+        return $oForm->getCode();
+    }
+
     /**
      * No thumbs for discussions
      */
@@ -284,7 +341,7 @@ class BxForumModule extends BxBaseModTextModule
         return _t('_sys_txt_access_denied');
     }
 
-	protected function _serviceBrowseTable($aParams)
+	protected function _serviceBrowseTable($aParams, $isDisplayHeader = true)
     {
         $oGrid = BxDolGrid::getObjectInstance($this->_oConfig->CNF['OBJECT_GRID']);
         if(!$oGrid)
@@ -292,7 +349,7 @@ class BxForumModule extends BxBaseModTextModule
 
 		$oGrid->setBrowseParams($aParams);
 
-        return $oGrid->getCode();
+        return $oGrid->getCode($isDisplayHeader);
     }
 }
 

+ 16 - 0
modules/boonex/forum/install/langs/en.xml

@@ -36,6 +36,16 @@
     <string name="_bx_forum_form_entry_input_cat_err"><![CDATA[Please select category]]></string>
     <string name="_bx_forum_form_entry_input_sys_submit_text"><![CDATA[Draft status]]></string>
     <string name="_bx_forum_form_entry_input_sys_submit_block"><![CDATA[Submit block]]></string>
+    <string name="_bx_forum_form_search"><![CDATA[Search]]></string>
+	<string name="_bx_forum_form_search_display_full"><![CDATA[Full Search]]></string>
+	<string name="_bx_forum_form_search_input_sys_author"><![CDATA[Author]]></string>
+	<string name="_bx_forum_form_search_input_author"><![CDATA[Author]]></string>
+	<string name="_bx_forum_form_search_input_sys_category"><![CDATA[Category]]></string>
+	<string name="_bx_forum_form_search_input_category"><![CDATA[Category]]></string>
+	<string name="_bx_forum_form_search_input_sys_keyword"><![CDATA[Keyword]]></string>
+	<string name="_bx_forum_form_search_input_keyword"><![CDATA[Keyword]]></string>
+	<string name="_bx_forum_form_search_input_do_submit"><![CDATA[Search]]></string>
+	<string name="_bx_forum_form_search_input_sys_do_submit"><![CDATA[Search]]></string>
 
 	<string name="_bx_forum_acl_action_create_entry"><![CDATA[New discussion]]></string>
 	<string name="_bx_forum_acl_action_delete_entry"><![CDATA[Delete discussion]]></string>
@@ -117,6 +127,10 @@
     <string name="_bx_forum_page_block_title_popular_keywords"><![CDATA[Popular Hashtags]]></string>
 	<string name="_bx_forum_page_block_title_cats"><![CDATA[Categories]]></string>
 	<string name="_bx_forum_page_block_title_my_entries"><![CDATA[My Discussions]]></string>
+	<string name="_bx_forum_page_title_sys_entries_search"><![CDATA[Search]]></string>
+	<string name="_bx_forum_page_title_entries_search"><![CDATA[Search]]></string>
+	<string name="_bx_forum_page_block_title_entries_search_form"><![CDATA[Search]]></string>
+	<string name="_bx_forum_page_block_title_entries_search_results"><![CDATA[Search Results]]></string>
 
     <string name="_bx_forum_menu_title_submenu"><![CDATA[Forum Submenu]]></string>
     <string name="_bx_forum_menu_set_title_submenu"><![CDATA[Forum Submenu]]></string>
@@ -150,6 +164,8 @@
     <string name="_bx_forum_menu_item_title_entries_top"><![CDATA[Top]]></string>
     <string name="_bx_forum_menu_item_title_system_entries_categories"><![CDATA[Сategories]]></string>
     <string name="_bx_forum_menu_item_title_entries_categories"><![CDATA[Сategories]]></string>
+    <string name="_bx_forum_menu_item_title_system_entries_search"><![CDATA[Search]]></string>
+    <string name="_bx_forum_menu_item_title_entries_search"><![CDATA[Search]]></string>
     <string name="_bx_forum_menu_set_title_view_entry"><![CDATA[Discussion Actions]]></string>
     <string name="_bx_forum_menu_title_view_entry"><![CDATA[Discussion Actions]]></string>
     <string name="_bx_forum_menu_item_title_system_view_entries_author"><![CDATA[Discussions]]></string>

+ 13 - 6
modules/boonex/forum/install/sql/enable.sql

@@ -82,7 +82,7 @@ INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbo
 
 -- PAGE: categories
 INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
-('bx_forum_categories', 'discussions-categories', '_bx_forum_page_title_sys_entries_categories', '_bx_forum_page_title_entries_categories', @sName, 5, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxForumPageBrowse', 'modules/boonex/forum/classes/BxForumPageBrowse.php');
+('bx_forum_categories', 'discussions-categories', '_bx_forum_page_title_sys_entries_categories', '_bx_forum_page_title_entries_categories', @sName, 5, 2147483647, 1, 'page.php?i=discussions-categories', '', '', '', 0, 1, 0, 'BxForumPageBrowse', 'modules/boonex/forum/classes/BxForumPageBrowse.php');
 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
 ('bx_forum_categories', 1, @sName, '', '_bx_forum_page_block_title_entries_categories', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:17:"browse_categories";}', 0, 0, 1, 0);
@@ -94,16 +94,14 @@ INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
 ('bx_forum_category', 1, @sName, '_bx_forum_page_block_title_sys_entries_by_category', '_bx_forum_page_block_title_entries_by_category', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:8:"bx_forum";s:6:"method";s:15:"browse_category";s:6:"params";a:1:{i:0;s:5:"table";}}', 0, 0, 1, 1);
 
-
 -- PAGE: entries of author
 INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
-('bx_forum_author', 'discussions-author', '_bx_forum_page_title_sys_entries_of_author', '_bx_forum_page_title_entries_of_author', @sName, 5, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxForumPageAuthor', 'modules/boonex/forum/classes/BxForumPageAuthor.php');
+('bx_forum_author', 'discussions-author', '_bx_forum_page_title_sys_entries_of_author', '_bx_forum_page_title_entries_of_author', @sName, 5, 2147483647, 1, 'page.php?i=discussions-author', '', '', '', 0, 1, 0, 'BxForumPageAuthor', 'modules/boonex/forum/classes/BxForumPageAuthor.php');
 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
 ('bx_forum_author', 1, @sName, '', '_bx_forum_page_block_title_entries_actions', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:18:"my_entries_actions";}', 0, 0, 1, 0),
 ('bx_forum_author', 1, @sName, '_bx_forum_page_block_title_sys_entries_of_author', '_bx_forum_page_block_title_entries_of_author', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:13:"browse_author";}', 0, 0, 1, 1);
 
-
 -- PAGE: module home
 INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
 ('bx_forum_home', 'discussions-home', '_bx_forum_page_title_sys_home', '_bx_forum_page_title_home', @sName, 2, 2147483647, 1, 'page.php?i=discussions-home', '', '', '', 0, 1, 0, 'BxForumPageBrowse', 'modules/boonex/forum/classes/BxForumPageBrowse.php');
@@ -113,6 +111,14 @@ INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `t
 ('bx_forum_home', 2, @sName, '', '_bx_forum_page_block_title_cats', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:17:"browse_categories";}', 0, 1, 1, 0),
 ('bx_forum_home', 2, @sName, '', '_bx_forum_page_block_title_popular_keywords', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:14:"keywords_cloud";s:6:"params";a:2:{i:0;s:8:"bx_forum";i:1;s:8:"bx_forum";}s:5:"class";s:20:"TemplServiceMetatags";}', 0, 1, 1, 1);
 
+-- PAGE: module search
+INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
+('bx_forum_search', 'discussions-search', '_bx_forum_page_title_sys_entries_search', '_bx_forum_page_title_entries_search', @sName, 5, 2147483647, 1, 'page.php?i=discussions-search', '', '', '', 0, 1, 0, 'BxForumPageBrowse', 'modules/boonex/forum/classes/BxForumPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_forum_search', 1, @sName, '', '_bx_forum_page_block_title_entries_search_form', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:6:"search";}', 0, 0, 1, 0),
+('bx_forum_search', 1, @sName, '', '_bx_forum_page_block_title_entries_search_results', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:8:"bx_forum";s:6:"method";s:21:"browse_search_results";s:6:"params";a:1:{i:0;s:5:"table";}}', 0, 0, 1, 1);
+
 -- PAGE: module manage own
 INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `uri`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
 ('bx_forum_manage', '_bx_forum_page_title_sys_manage', '_bx_forum_page_title_manage', @sName, 5, 2147483647, 1, 'discussions-manage', 'page.php?i=discussions-manage', '', '', '', 0, 1, 0, 'BxForumPageBrowse', 'modules/boonex/forum/classes/BxForumPageBrowse.php');
@@ -204,7 +210,8 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_forum_submenu', @sName, 'discussions-new', '_bx_forum_menu_item_title_system_entries_new', '_bx_forum_menu_item_title_entries_new', 'page.php?i=discussions-new', '', '', '', '', 2147483647, 1, 1, 2),
 ('bx_forum_submenu', @sName, 'discussions-top', '_bx_forum_menu_item_title_system_entries_top', '_bx_forum_menu_item_title_entries_top', 'page.php?i=discussions-top', '', '', '', '', 2147483647, 1, 1, 3),
 ('bx_forum_submenu', @sName, 'discussions-categories', '_bx_forum_menu_item_title_system_entries_categories', '_bx_forum_menu_item_title_entries_categories', 'page.php?i=discussions-categories', '', '', '', '', 2147483647, 1, 1, 4),
-('bx_forum_submenu', @sName, 'discussions-manage', '_bx_forum_menu_item_title_system_entries_manage', '_bx_forum_menu_item_title_entries_manage', 'page.php?i=discussions-manage', '', '', '', '', 2147483646, 1, 1, 5);
+('bx_forum_submenu', @sName, 'discussions-search', '_bx_forum_menu_item_title_system_entries_search', '_bx_forum_menu_item_title_entries_search', 'page.php?i=discussions-search', '', '', '', '', 2147483647, 1, 1, 5),
+('bx_forum_submenu', @sName, 'discussions-manage', '_bx_forum_menu_item_title_system_entries_manage', '_bx_forum_menu_item_title_entries_manage', 'page.php?i=discussions-manage', '', '', '', '', 2147483646, 1, 1, 6);
 
 -- MENU: manage tools submenu
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
@@ -237,7 +244,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 
 -- GRIDS: main
 INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_mode`, `sorting_fields`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES
-(@sName, 'Sql', 'SELECT `bx_forum_discussions`.*, `bx_forum_cmts`.`cmt_text` FROM `bx_forum_discussions` LEFT JOIN `bx_forum_cmts` ON (`bx_forum_cmts`.`cmt_id` = `bx_forum_discussions`.`lr_comment_id`) %s WHERE 1 %s', 'bx_forum_discussions', 'id', 'lr_timestamp', '', 10, NULL, 'start', '', 'text', 'auto', '', 2147483647, 'BxForumGrid', 'modules/boonex/forum/classes/BxForumGrid.php');
+(@sName, 'Sql', 'SELECT `bx_forum_discussions`.*, `bx_forum_cmts`.`cmt_text` AS `cmt_text` FROM `bx_forum_discussions` LEFT JOIN `bx_forum_cmts` ON (`bx_forum_cmts`.`cmt_id` = `bx_forum_discussions`.`lr_comment_id`) %s WHERE 1 %s', 'bx_forum_discussions', 'id', 'lr_timestamp', '', 10, NULL, 'start', '', 'text', 'auto', '', 2147483647, 'BxForumGrid', 'modules/boonex/forum/classes/BxForumGrid.php');
 
 INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `order`) VALUES
 (@sName, 'author', '', '10%', '', 1),

+ 18 - 4
modules/boonex/forum/install/sql/install.sql

@@ -136,13 +136,16 @@ INSERT INTO `sys_transcoder_filters` (`transcoder_object`, `filter`, `filter_par
 
 -- FORMS
 INSERT INTO `sys_objects_form`(`object`, `module`, `title`, `action`, `form_attrs`, `table`, `key`, `uri`, `uri_title`, `submit_name`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
-(@sName, @sName, '_bx_forum_form_entry', '', 'a:1:{s:7:\"enctype\";s:19:\"multipart/form-data\";}', 'bx_forum_discussions', 'id', '', '', 'do_submit', '', 0, 1, 'BxForumFormEntry', 'modules/boonex/forum/classes/BxForumFormEntry.php');
+(@sName, @sName, '_bx_forum_form_entry', '', 'a:1:{s:7:\"enctype\";s:19:\"multipart/form-data\";}', 'bx_forum_discussions', 'id', '', '', 'do_submit', '', 0, 1, 'BxForumFormEntry', 'modules/boonex/forum/classes/BxForumFormEntry.php'),
+('bx_forum_search', @sName, '_bx_forum_form_search', '', 'a:1:{s:7:\"enctype\";s:19:\"multipart/form-data\";}', 'bx_forum_discussions', 'id', '', '', 'do_submit', '', 0, 1, 'BxForumFormSearch', 'modules/boonex/forum/classes/BxForumFormSearch.php');
 
 INSERT INTO `sys_form_displays`(`object`, `display_name`, `module`, `view_mode`, `title`) VALUES 
 (@sName, 'bx_forum_entry_add', @sName, 0, '_bx_forum_form_entry_display_add'),
 (@sName, 'bx_forum_entry_delete', @sName, 0, '_bx_forum_form_entry_display_delete'),
 (@sName, 'bx_forum_entry_edit', @sName, 0, '_bx_forum_form_entry_display_edit'),
-(@sName, 'bx_forum_entry_view', @sName, 1, '_bx_forum_form_entry_display_view');
+(@sName, 'bx_forum_entry_view', @sName, 1, '_bx_forum_form_entry_display_view'),
+
+('bx_forum_search', 'bx_forum_search_full', @sName, 0, '_bx_forum_form_search_display_full');
 
 INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `checked`, `type`, `caption_system`, `caption`, `info`, `required`, `collapsed`, `html`, `attrs`, `attrs_tr`, `attrs_wrapper`, `checker_func`, `checker_params`, `checker_error`, `db_pass`, `db_params`, `editable`, `deletable`) VALUES
 (@sName, @sName, 'allow_view_to', '', '', 0, 'custom', '_bx_forum_form_entry_input_sys_allow_view_to', '_bx_forum_form_entry_input_allow_view_to', '', 1, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
@@ -154,7 +157,12 @@ INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `ch
 (@sName, @sName, 'text', '', '', 0, 'textarea', '_bx_forum_form_entry_input_sys_text', '_bx_forum_form_entry_input_text', '', 1, 0, 2, '', '', '', 'Avail', '', '_bx_forum_form_entry_input_text_err', 'XssHtml', '', 1, 0),
 (@sName, @sName, 'title', '', '', 0, 'text', '_bx_forum_form_entry_input_sys_title', '_bx_forum_form_entry_input_title', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_forum_form_entry_input_title_err', 'Xss', '', 1, 0),
 (@sName, @sName, 'cat', '', '#!bx_forum_cats', 0, 'select', '_bx_forum_form_entry_input_sys_cat', '_bx_forum_form_entry_input_cat', '', 1, 0, 0, '', '', '', 'avail', '', '_bx_forum_form_entry_input_cat_err', 'Xss', '', 1, 0),
-(@sName, @sName, 'attachments', 'a:1:{i:0;s:9:"sys_html5";}', 'a:2:{s:10:"sys_simple";s:26:"_sys_uploader_simple_title";s:9:"sys_html5";s:25:"_sys_uploader_html5_title";}', 0, 'files', '_bx_forum_form_entry_input_sys_attachments', '_bx_forum_form_entry_input_attachments', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
+(@sName, @sName, 'attachments', 'a:1:{i:0;s:9:"sys_html5";}', 'a:2:{s:10:"sys_simple";s:26:"_sys_uploader_simple_title";s:9:"sys_html5";s:25:"_sys_uploader_html5_title";}', 0, 'files', '_bx_forum_form_entry_input_sys_attachments', '_bx_forum_form_entry_input_attachments', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+
+('bx_forum_search', @sName, 'author', '', '', 0, 'custom', '_bx_forum_form_search_input_sys_author', '_bx_forum_form_search_input_author', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_forum_search', @sName, 'category', '', '#!bx_forum_cats', 0, 'select', '_bx_forum_form_search_input_sys_category', '_bx_forum_form_search_input_category', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_forum_search', @sName, 'keyword', '', '', 0, 'text', '_bx_forum_form_search_input_sys_keyword', '_bx_forum_form_search_input_keyword', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_forum_search', @sName, 'do_submit', '_bx_forum_form_search_input_do_submit', '', 0, 'submit', '_bx_forum_form_search_input_sys_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
 
 INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES
 ('bx_forum_entry_add', 'title', 2147483647, 1, 1),
@@ -182,7 +190,13 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 ('bx_forum_entry_view', 'text', 2147483647, 1, 3),
 
 ('bx_forum_entry_delete', 'delete_confirm', 2147483647, 1, 1),
-('bx_forum_entry_delete', 'do_submit', 2147483647, 1, 2);
+('bx_forum_entry_delete', 'do_submit', 2147483647, 1, 2),
+
+('bx_forum_search_full', 'author', 2147483647, 1, 1),
+('bx_forum_search_full', 'category', 2147483647, 1, 2),
+('bx_forum_search_full', 'keyword', 2147483647, 1, 3),
+('bx_forum_search_full', 'do_submit', 2147483647, 1, 4);
+
 
 
 -- PRE-VALUES

+ 1 - 1
modules/boonex/forum/install/sql/uninstall.sql

@@ -18,7 +18,7 @@ DELETE FROM `sys_transcoder_images_files` WHERE `transcoder_object` IN ('bx_foru
 DELETE FROM `sys_objects_form` WHERE `module` = @sName;
 DELETE FROM `sys_form_displays` WHERE `module` = @sName;
 DELETE FROM `sys_form_inputs` WHERE `module` = @sName;
-DELETE FROM `sys_form_display_inputs` WHERE `display_name` IN('bx_forum_entry_add', 'bx_forum_entry_edit', 'bx_forum_entry_view', 'bx_forum_entry_delete');
+DELETE FROM `sys_form_display_inputs` WHERE `display_name` IN('bx_forum_entry_add', 'bx_forum_entry_edit', 'bx_forum_entry_view', 'bx_forum_entry_delete', 'bx_forum_search_full');
 
 
 -- PRE-VALUES

+ 16 - 0
modules/boonex/russian/data/langs/bx_forum/ru.xml

@@ -36,6 +36,16 @@
 	<string name="_bx_forum_form_entry_input_cat_err"><![CDATA[Нужно обязательно выбрать категорию]]></string>
     <string name="_bx_forum_form_entry_input_sys_submit_text"><![CDATA[Статус черновика]]></string>
     <string name="_bx_forum_form_entry_input_sys_submit_block"><![CDATA[Блок отправки сообщения]]></string>
+	<string name="_bx_forum_form_search"><![CDATA[Поиск]]></string>
+	<string name="_bx_forum_form_search_display_full"><![CDATA[Полный поиск]]></string>
+	<string name="_bx_forum_form_search_input_sys_author"><![CDATA[Автор]]></string>
+	<string name="_bx_forum_form_search_input_author"><![CDATA[Автор]]></string>
+	<string name="_bx_forum_form_search_input_sys_category"><![CDATA[Категория]]></string>
+	<string name="_bx_forum_form_search_input_category"><![CDATA[Категория]]></string>
+	<string name="_bx_forum_form_search_input_sys_keyword"><![CDATA[Ключевое слово]]></string>
+	<string name="_bx_forum_form_search_input_keyword"><![CDATA[Ключевое слово]]></string>
+	<string name="_bx_forum_form_search_input_do_submit"><![CDATA[Искать]]></string>
+	<string name="_bx_forum_form_search_input_sys_do_submit"><![CDATA[Искать]]></string>
 
 	<string name="_bx_forum_acl_action_create_entry"><![CDATA[Новое обсуждение]]></string>
 	<string name="_bx_forum_acl_action_delete_entry"><![CDATA[Удалить обсуждение]]></string>
@@ -117,6 +127,10 @@
     <string name="_bx_forum_page_block_title_popular_keywords"><![CDATA[Популярные Хэштеги]]></string>
     <string name="_bx_forum_page_block_title_cats"><![CDATA[Категории]]></string>
     <string name="_bx_forum_page_block_title_my_entries"><![CDATA[Мои обсуждения]]></string>
+	<string name="_bx_forum_page_title_sys_entries_search"><![CDATA[Поиск]]></string>
+	<string name="_bx_forum_page_title_entries_search"><![CDATA[Поиск]]></string>
+	<string name="_bx_forum_page_block_title_entries_search_form"><![CDATA[Поиск]]></string>
+	<string name="_bx_forum_page_block_title_entries_search_results"><![CDATA[Результаты поиска]]></string>
 
 	<string name="_bx_forum_menu_title_submenu"><![CDATA[Форум - Подменю]]></string>
     <string name="_bx_forum_menu_set_title_submenu"><![CDATA[Форум - Подменю]]></string>
@@ -150,6 +164,8 @@
     <string name="_bx_forum_menu_item_title_entries_top"><![CDATA[ТОП обсуждений]]></string>
     <string name="_bx_forum_menu_item_title_system_entries_categories"><![CDATA[Категории]]></string>
     <string name="_bx_forum_menu_item_title_entries_categories"><![CDATA[Категории]]></string>
+	<string name="_bx_forum_menu_item_title_system_entries_search"><![CDATA[Поиск]]></string>
+    <string name="_bx_forum_menu_item_title_entries_search"><![CDATA[Поиск]]></string>
     <string name="_bx_forum_menu_set_title_view_entry"><![CDATA[Действия для тем]]></string>
     <string name="_bx_forum_menu_title_view_entry"><![CDATA[Действия для тем]]></string>
     <string name="_bx_forum_menu_item_title_system_view_entries_author"><![CDATA[Обсуждения]]></string>