Merge branch '3.1.x'

Conflicts:
	phpBB/includes/mcp/mcp_main.php
This commit is contained in:
Marc Alexander 2015-06-09 15:24:08 +02:00
commit b2ada8ba09
17 changed files with 105 additions and 21 deletions

View file

@ -40,7 +40,7 @@ if (!class_exists($search_type))
} }
$error = false; $error = false;
$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
if ($error) if ($error)
{ {

View file

@ -638,7 +638,7 @@ class acp_main
{ {
$error = false; $error = false;
$search_type = $config['search_type']; $search_type = $config['search_type'];
$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
if (!$search->index_created()) if (!$search->index_created())
{ {

View file

@ -596,7 +596,7 @@ class acp_search
*/ */
function init_search($type, &$search, &$error) function init_search($type, &$search, &$error)
{ {
global $phpbb_root_path, $phpEx, $user, $auth, $config, $db; global $phpbb_root_path, $phpEx, $user, $auth, $config, $db, $phpbb_dispatcher;
if (!class_exists($type) || !method_exists($type, 'keyword_search')) if (!class_exists($type) || !method_exists($type, 'keyword_search'))
{ {
@ -605,7 +605,7 @@ class acp_search
} }
$error = false; $error = false;
$search = new $type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $search = new $type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
return $error; return $error;
} }

View file

@ -942,7 +942,7 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync =
} }
$error = false; $error = false;
$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
if ($error) if ($error)
{ {

View file

@ -2226,7 +2226,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
} }
$error = false; $error = false;
$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
if ($error) if ($error)
{ {

View file

@ -1188,7 +1188,7 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
function mcp_fork_topic($topic_ids) function mcp_fork_topic($topic_ids)
{ {
global $auth, $user, $db, $template, $config; global $auth, $user, $db, $template, $config;
global $phpEx, $phpbb_root_path, $phpbb_log, $request; global $phpEx, $phpbb_root_path, $phpbb_log, $request, $phpbb_dispatcher;
if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_'))) if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_')))
{ {
@ -1266,7 +1266,7 @@ function mcp_fork_topic($topic_ids)
} }
$error = false; $error = false;
$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
$search_mode = 'post'; $search_mode = 'post';
if ($error) if ($error)

View file

@ -538,7 +538,7 @@ function change_poster(&$post_info, $userdata)
{ {
// We do some additional checks in the module to ensure it can actually be utilised // We do some additional checks in the module to ensure it can actually be utilised
$error = false; $error = false;
$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
if (!$error && method_exists($search, 'destroy_cache')) if (!$error && method_exists($search, 'destroy_cache'))
{ {

View file

@ -625,7 +625,7 @@ class install_convert extends module
{ {
global $template, $user, $phpbb_root_path, $phpEx, $db, $lang, $config, $cache, $auth; global $template, $user, $phpbb_root_path, $phpEx, $db, $lang, $config, $cache, $auth;
global $convert, $convert_row, $message_parser, $skip_rows, $language; global $convert, $convert_row, $message_parser, $skip_rows, $language;
global $request, $phpbb_config_php_file; global $request, $phpbb_config_php_file, $phpbb_dispatcher;
extract($phpbb_config_php_file->get_all()); extract($phpbb_config_php_file->get_all());
@ -800,7 +800,7 @@ class install_convert extends module
} }
$error = false; $error = false;
$convert->fulltext_search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $convert->fulltext_search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
if ($error) if ($error)
{ {

View file

@ -1494,7 +1494,7 @@ class install_install extends module
*/ */
function build_search_index($mode, $sub) function build_search_index($mode, $sub)
{ {
global $db, $lang, $phpbb_root_path, $phpEx, $config, $auth, $user; global $db, $lang, $phpbb_root_path, $phpbb_dispatcher, $phpEx, $config, $auth, $user;
// Obtain any submitted data // Obtain any submitted data
$data = $this->get_submitted_data(); $data = $this->get_submitted_data();
@ -1525,7 +1525,7 @@ class install_install extends module
$config = new \phpbb\config\db($db, new \phpbb\cache\driver\dummy, CONFIG_TABLE); $config = new \phpbb\config\db($db, new \phpbb\cache\driver\dummy, CONFIG_TABLE);
$error = false; $error = false;
$search = new \phpbb\search\fulltext_native($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $search = new \phpbb\search\fulltext_native($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
$sql = 'SELECT post_id, post_subject, post_text, poster_id, forum_id $sql = 'SELECT post_id, post_subject, post_text, poster_id, forum_id
FROM ' . POSTS_TABLE; FROM ' . POSTS_TABLE;

View file

@ -42,6 +42,12 @@ class fulltext_mysql extends \phpbb\search\base
*/ */
protected $db; protected $db;
/**
* phpBB event dispatcher object
* @var \phpbb\event\dispatcher_interface
*/
protected $phpbb_dispatcher;
/** /**
* User object * User object
* @var \phpbb\user * @var \phpbb\user
@ -79,11 +85,13 @@ class fulltext_mysql extends \phpbb\search\base
* @param \phpbb\config\config $config Config object * @param \phpbb\config\config $config Config object
* @param \phpbb\db\driver\driver_interface Database object * @param \phpbb\db\driver\driver_interface Database object
* @param \phpbb\user $user User object * @param \phpbb\user $user User object
* @param \phpbb\event\dispatcher_interface $phpbb_dispatcher Event dispatcher object
*/ */
public function __construct(&$error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user) public function __construct(&$error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher)
{ {
$this->config = $config; $this->config = $config;
$this->db = $db; $this->db = $db;
$this->phpbb_dispatcher = $phpbb_dispatcher;
$this->user = $user; $this->user = $user;
$this->word_length = array('min' => $this->config['fulltext_mysql_min_word_len'], 'max' => $this->config['fulltext_mysql_max_word_len']); $this->word_length = array('min' => $this->config['fulltext_mysql_min_word_len'], 'max' => $this->config['fulltext_mysql_max_word_len']);
@ -447,6 +455,55 @@ class fulltext_mysql extends \phpbb\search\base
break; break;
} }
$search_query = $this->search_query;
/**
* Allow changing the query used to search for posts using fulltext_mysql
*
* @event core.search_mysql_keywords_main_query_before
* @var string search_query The parsed keywords used for this search
* @var int result_count The previous result count for the format of the query.
* Set to 0 to force a re-count
* @var bool join_topic Weather or not TOPICS_TABLE should be CROSS JOIN'ED
* @var array author_ary Array of user_id containing the users to filter the results to
* @var string author_name An extra username to search on (!empty(author_ary) must be true, to be relevant)
* @var array ex_fid_ary Which forums not to search on
* @var int topic_id Limit the search to this topic_id only
* @var string sql_sort_table Extra tables to include in the SQL query.
* Used in conjunction with sql_sort_join
* @var string sql_sort_join SQL conditions to join all the tables used together.
* Used in conjunction with sql_sort_table
* @var int sort_days Time, in days, of the oldest possible post to list
* @var string sql_match Which columns to do the search on.
* @var string sql_match_where Extra conditions to use to properly filter the matching process
* @var string sort_by_sql The possible predefined sort types
* @var string sort_key The sort type used from the possible sort types
* @var string sort_dir "a" for ASC or "d" dor DESC for the sort order used
* @var string sql_sort The result SQL when processing sort_by_sql + sort_key + sort_dir
* @var int start How many posts to skip in the search results (used for pagination)
* @since 3.1.5-RC1
*/
$vars = array(
'search_query',
'result_count',
'join_topic',
'author_ary',
'author_name',
'ex_fid_ary',
'topic_id',
'sql_sort_table',
'sql_sort_join',
'sort_days',
'sql_match',
'sql_match_where',
'sort_by_sql',
'sort_key',
'sort_dir',
'sql_sort',
'start',
);
extract($this->phpbb_dispatcher->trigger_event('core.search_mysql_keywords_main_query_before', compact($vars)));
$sql_select = (!$result_count) ? 'SQL_CALC_FOUND_ROWS ' : ''; $sql_select = (!$result_count) ? 'SQL_CALC_FOUND_ROWS ' : '';
$sql_select = ($type == 'posts') ? $sql_select . 'p.post_id' : 'DISTINCT ' . $sql_select . 't.topic_id'; $sql_select = ($type == 'posts') ? $sql_select . 'p.post_id' : 'DISTINCT ' . $sql_select . 't.topic_id';
$sql_from = ($join_topic) ? TOPICS_TABLE . ' t, ' : ''; $sql_from = ($join_topic) ? TOPICS_TABLE . ' t, ' : '';

View file

@ -93,6 +93,12 @@ class fulltext_native extends \phpbb\search\base
*/ */
protected $db; protected $db;
/**
* phpBB event dispatcher object
* @var \phpbb\event\dispatcher_interface
*/
protected $phpbb_dispatcher;
/** /**
* User object * User object
* @var \phpbb\user * @var \phpbb\user
@ -103,13 +109,15 @@ class fulltext_native extends \phpbb\search\base
* Initialises the fulltext_native search backend with min/max word length * Initialises the fulltext_native search backend with min/max word length
* *
* @param boolean|string &$error is passed by reference and should either be set to false on success or an error message on failure * @param boolean|string &$error is passed by reference and should either be set to false on success or an error message on failure
* @param \phpbb\event\dispatcher_interface $phpbb_dispatcher Event dispatcher object
*/ */
public function __construct(&$error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user) public function __construct(&$error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher)
{ {
$this->phpbb_root_path = $phpbb_root_path; $this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $phpEx; $this->php_ext = $phpEx;
$this->config = $config; $this->config = $config;
$this->db = $db; $this->db = $db;
$this->phpbb_dispatcher = $phpbb_dispatcher;
$this->user = $user; $this->user = $user;
$this->word_length = array('min' => $this->config['fulltext_native_min_chars'], 'max' => $this->config['fulltext_native_max_chars']); $this->word_length = array('min' => $this->config['fulltext_native_min_chars'], 'max' => $this->config['fulltext_native_max_chars']);

View file

@ -55,6 +55,12 @@ class fulltext_postgres extends \phpbb\search\base
*/ */
protected $db; protected $db;
/**
* phpBB event dispatcher object
* @var \phpbb\event\dispatcher_interface
*/
protected $phpbb_dispatcher;
/** /**
* User object * User object
* @var \phpbb\user * @var \phpbb\user
@ -92,11 +98,13 @@ class fulltext_postgres extends \phpbb\search\base
* @param \phpbb\config\config $config Config object * @param \phpbb\config\config $config Config object
* @param \phpbb\db\driver\driver_interface Database object * @param \phpbb\db\driver\driver_interface Database object
* @param \phpbb\user $user User object * @param \phpbb\user $user User object
* @param \phpbb\event\dispatcher_interface $phpbb_dispatcher Event dispatcher object
*/ */
public function __construct(&$error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user) public function __construct(&$error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher)
{ {
$this->config = $config; $this->config = $config;
$this->db = $db; $this->db = $db;
$this->phpbb_dispatcher = $phpbb_dispatcher;
$this->user = $user; $this->user = $user;
$this->word_length = array('min' => $this->config['fulltext_postgres_min_word_len'], 'max' => $this->config['fulltext_postgres_max_word_len']); $this->word_length = array('min' => $this->config['fulltext_postgres_min_word_len'], 'max' => $this->config['fulltext_postgres_max_word_len']);

View file

@ -95,6 +95,12 @@ class fulltext_sphinx
*/ */
protected $dbtype; protected $dbtype;
/**
* phpBB event dispatcher object
* @var \phpbb\event\dispatcher_interface
*/
protected $phpbb_dispatcher;
/** /**
* User object * User object
* @var \phpbb\user * @var \phpbb\user
@ -125,12 +131,14 @@ class fulltext_sphinx
* @param \phpbb\config\config $config Config object * @param \phpbb\config\config $config Config object
* @param \phpbb\db\driver\driver_interface Database object * @param \phpbb\db\driver\driver_interface Database object
* @param \phpbb\user $user User object * @param \phpbb\user $user User object
* @param \phpbb\event\dispatcher_interface $phpbb_dispatcher Event dispatcher object
*/ */
public function __construct(&$error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user) public function __construct(&$error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher)
{ {
$this->phpbb_root_path = $phpbb_root_path; $this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $phpEx; $this->php_ext = $phpEx;
$this->config = $config; $this->config = $config;
$this->phpbb_dispatcher = $phpbb_dispatcher;
$this->user = $user; $this->user = $user;
$this->db = $db; $this->db = $db;
$this->auth = $auth; $this->auth = $auth;

View file

@ -277,7 +277,7 @@ if ($keywords || $author || $author_id || $search_id || $submit)
} }
// We do some additional checks in the module to ensure it can actually be utilised // We do some additional checks in the module to ensure it can actually be utilised
$error = false; $error = false;
$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); $search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);
if ($error) if ($error)
{ {

View file

@ -37,8 +37,9 @@ class phpbb_search_mysql_test extends phpbb_search_common_test_case
$config['fulltext_mysql_max_word_len'] = 254; $config['fulltext_mysql_max_word_len'] = 254;
$this->db = $this->new_dbal(); $this->db = $this->new_dbal();
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
$error = null; $error = null;
$class = self::get_search_wrapper('\phpbb\search\fulltext_mysql'); $class = self::get_search_wrapper('\phpbb\search\fulltext_mysql');
$this->search = new $class($error, $phpbb_root_path, $phpEx, null, $config, $this->db, $user); $this->search = new $class($error, $phpbb_root_path, $phpEx, null, $config, $this->db, $user, $phpbb_dispatcher);
} }
} }

View file

@ -33,11 +33,12 @@ class phpbb_search_native_test extends phpbb_search_test_case
$cache = new phpbb_mock_cache(); $cache = new phpbb_mock_cache();
$this->db = $this->new_dbal(); $this->db = $this->new_dbal();
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
$error = null; $error = null;
$class = self::get_search_wrapper('\phpbb\search\fulltext_native'); $class = self::get_search_wrapper('\phpbb\search\fulltext_native');
$config['fulltext_native_min_chars'] = 2; $config['fulltext_native_min_chars'] = 2;
$config['fulltext_native_max_chars'] = 14; $config['fulltext_native_max_chars'] = 14;
$this->search = new $class($error, $phpbb_root_path, $phpEx, null, $config, $this->db, $user); $this->search = new $class($error, $phpbb_root_path, $phpEx, null, $config, $this->db, $user, $phpbb_dispatcher);
} }
public function keywords() public function keywords()

View file

@ -37,8 +37,9 @@ class phpbb_search_postgres_test extends phpbb_search_common_test_case
$config['fulltext_postgres_max_word_len'] = 254; $config['fulltext_postgres_max_word_len'] = 254;
$this->db = $this->new_dbal(); $this->db = $this->new_dbal();
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
$error = null; $error = null;
$class = self::get_search_wrapper('\phpbb\search\fulltext_postgres'); $class = self::get_search_wrapper('\phpbb\search\fulltext_postgres');
$this->search = new $class($error, $phpbb_root_path, $phpEx, null, $config, $this->db, $user); $this->search = new $class($error, $phpbb_root_path, $phpEx, null, $config, $this->db, $user, $phpbb_dispatcher);
} }
} }