[ticket/15540] Add types

PHPBB3-15540
This commit is contained in:
rubencm 2021-03-23 11:51:02 +01:00
parent a8de540e93
commit 658a0489d0
12 changed files with 140 additions and 133 deletions

View file

@ -283,6 +283,7 @@ class acp_search
case 'delete':
try
{
$this->state[2] = $this->state[2] ?? 0;
if ($status = $this->search->delete_index($this->state[2])) // Status is not null, so deleting is in progress....
{
// save the current state
@ -312,6 +313,7 @@ class acp_search
case 'create':
try
{
$this->state[2] = $this->state[2] ?? 0;
if ($status = $this->search->create_index($this->state[2])) // Status is not null, so indexing is in progress....
{
// save the current state

View file

@ -1634,7 +1634,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll_ary, &$data
// Collect some basic information about which tables and which rows to update/insert
$sql_data = array();
$poster_id = ($mode == 'edit') ? $data_ary['poster_id'] : (int) $user->data['user_id'];
$poster_id = ($mode == 'edit') ? (int) $data_ary['poster_id'] : (int) $user->data['user_id'];
// Retrieve some additional information if not present
if ($mode == 'edit' && (!isset($data_ary['post_visibility']) || !isset($data_ary['topic_visibility']) || $data_ary['post_visibility'] === false || $data_ary['topic_visibility'] === false))
@ -2215,7 +2215,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll_ary, &$data
$sql_data[TOPICS_TABLE]['stat'][] = "topic_last_post_subject = '" . $db->sql_escape($subject) . "'";
// Maybe not only the subject, but also changing anonymous usernames. ;)
if ($data_ary['poster_id'] == ANONYMOUS)
if ((int) $data_ary['poster_id'] == ANONYMOUS)
{
$sql_data[TOPICS_TABLE]['stat'][] = "topic_last_poster_name = '" . $db->sql_escape($username) . "'";
}
@ -2232,7 +2232,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll_ary, &$data
$db->sql_freeresult($result);
// this post is the latest post in the forum, better update
if ($row['forum_last_post_id'] == $data_ary['post_id'] && ($row['forum_last_post_subject'] !== $subject || $data_ary['poster_id'] == ANONYMOUS))
if ($row['forum_last_post_id'] == $data_ary['post_id'] && ($row['forum_last_post_subject'] !== $subject || (int) $data_ary['poster_id'] == ANONYMOUS))
{
// the post's subject changed
if ($row['forum_last_post_subject'] !== $subject)
@ -2241,7 +2241,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll_ary, &$data
}
// Update the user name if poster is anonymous... just in case a moderator changed it
if ($data_ary['poster_id'] == ANONYMOUS)
if ((int) $data_ary['poster_id'] == ANONYMOUS)
{
$sql_data[FORUMS_TABLE]['stat'][] = "forum_last_poster_name = '" . $db->sql_escape($username) . "'";
}
@ -2308,11 +2308,11 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll_ary, &$data
}
}
$search->index($mode, $data_ary['post_id'], $data_ary['message'], $subject, $poster_id, $data_ary['forum_id']);
$search->index($mode, (int) $data_ary['post_id'], $data_ary['message'], $subject, $poster_id, (int) $data_ary['forum_id']);
}
// Topic Notification, do not change if moderator is changing other users posts...
if ($user->data['user_id'] == $poster_id)
if ((int) $user->data['user_id'] == $poster_id)
{
if (!$data_ary['notify_set'] && $data_ary['notify'])
{

View file

@ -1566,7 +1566,7 @@ function mcp_fork_topic($topic_ids)
}
}
$db->sql_query('INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
$new_post_id = $db->sql_nextid();
$new_post_id = (int) $db->sql_nextid();
/**
* Perform actions after forked topic is created.
@ -1605,7 +1605,7 @@ function mcp_fork_topic($topic_ids)
if (!empty($search))
{
$search->index($search_mode, $new_post_id, $sql_ary['post_text'], $sql_ary['post_subject'], $sql_ary['poster_id'], ($topic_row['topic_type'] == POST_GLOBAL) ? 0 : $to_forum_id);
$search->index($search_mode, $new_post_id, $sql_ary['post_text'], $sql_ary['post_subject'], (int) $sql_ary['poster_id'], ($topic_row['topic_type'] == POST_GLOBAL) ? 0 : $to_forum_id);
$search_mode = 'reply'; // After one we index replies
}

View file

@ -642,7 +642,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)
}
}
$search->index('edit', $first_post_data['post_id'], $first_post_data['post_text'], $subject, $first_post_data['poster_id'], $first_post_data['forum_id']);
$search->index('edit', (int) $first_post_data['post_id'], $first_post_data['post_text'], $subject, (int) $first_post_data['poster_id'], (int) $first_post_data['forum_id']);
}
// Copy topic subscriptions to new topic

View file

@ -169,11 +169,11 @@ class create_search_index extends database_task
{
$this->search_indexer->index(
'post',
$value['post_id'],
(int) $value['post_id'],
$value['post_text'],
$value['post_subject'],
$value['poster_id'],
$value['forum_id']
(int) $value['poster_id'],
(int) $value['forum_id']
);
}

View file

@ -321,7 +321,7 @@ abstract class base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function create_index(int &$post_counter = null): ?array
public function create_index(int &$post_counter = 0): ?array
{
$max_post_id = $this->get_max_post_id();
$forums_indexing_enabled = $this->forum_ids_with_indexing_enabled();
@ -343,7 +343,7 @@ abstract class base implements search_backend_interface
// Indexing enabled for this forum
if (in_array($row['forum_id'], $forums_indexing_enabled, true))
{
$this->index('post', $row['post_id'], $row['post_text'], $row['post_subject'], $row['poster_id'], $row['forum_id']);
$this->index('post', (int) $row['post_id'], $row['post_text'], $row['post_subject'], (int) $row['poster_id'], (int) $row['forum_id']);
}
$row_count++;
}

View file

@ -196,7 +196,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_word_length(): array
public function get_word_length()
{
return $this->word_length;
}
@ -204,7 +204,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function split_keywords(&$keywords, $terms): bool
public function split_keywords(string &$keywords, string $terms): bool
{
if ($terms == 'all')
{
@ -342,7 +342,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function keyword_search($type, $fields, $terms, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page)
public function keyword_search(string $type, string $fields, string $terms, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page)
{
// No keywords? No posts
if (!$this->search_query)
@ -590,7 +590,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function author_search($type, $firstpost_only, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page)
public function author_search(string $type, bool $firstpost_only, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page)
{
// No author? No posts
if (!count($author_ary))
@ -844,7 +844,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index($mode, $post_id, &$message, &$subject, $poster_id, $forum_id)
public function index(string $mode, int $post_id, string &$message, string &$subject, int $poster_id, int $forum_id)
{
// Split old and new post/subject to obtain array of words
$split_text = $this->split_message($message);
@ -892,7 +892,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index_remove($post_ids, $author_ids, $forum_ids)
public function index_remove(array $post_ids, array $author_ids, array $forum_ids): void
{
$this->destroy_cache([], array_unique($author_ids));
}
@ -900,7 +900,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function tidy()
public function tidy(): void
{
// destroy too old cached search results
$this->destroy_cache([]);
@ -911,7 +911,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function create_index(int &$post_counter = null): ?array
public function create_index(int &$post_counter = 0): ?array
{
// Make sure we can actually use MySQL with fulltext indexes
if ($error = $this->init())
@ -1049,7 +1049,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index_created()
public function index_created(): bool
{
if (empty($this->stats))
{
@ -1146,7 +1146,7 @@ class fulltext_mysql extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function acp()
public function acp(): array
{
$tpl = '
<dl>

View file

@ -134,7 +134,7 @@ class fulltext_native extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_name()
public function get_name(): string
{
return 'phpBB Native Fulltext';
}
@ -158,7 +158,7 @@ class fulltext_native extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_search_query()
public function get_search_query(): string
{
return $this->search_query;
}
@ -166,7 +166,7 @@ class fulltext_native extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_common_words()
public function get_common_words(): array
{
return $this->common_words;
}
@ -180,21 +180,9 @@ class fulltext_native extends base implements search_backend_interface
}
/**
* This function fills $this->search_query with the cleaned user search query
*
* If $terms is 'any' then the words will be extracted from the search query
* and combined with | inside brackets. They will afterwards be treated like
* an standard search query.
*
* Then it analyses the query and fills the internal arrays $must_not_contain_ids,
* $must_contain_ids and $must_exclude_one_ids which are later used by keyword_search()
*
* @param string $keywords contains the search query string as entered by the user
* @param string $terms is either 'all' (use search query as entered, default words to 'must be contained in post')
* or 'any' (find all posts containing at least one of the given words)
* @return boolean false if no valid keywords were found and otherwise true
* {@inheritdoc}
*/
public function split_keywords(&$keywords, $terms)
public function split_keywords(string &$keywords, string $terms): bool
{
$tokens = '+-|()* ';
@ -516,7 +504,7 @@ class fulltext_native extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function keyword_search($type, $fields, $terms, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page)
public function keyword_search(string $type, string $fields, string $terms, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page)
{
// No keywords? No posts.
if (empty($this->search_query))
@ -1001,7 +989,7 @@ class fulltext_native extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function author_search($type, $firstpost_only, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page)
public function author_search(string $type, bool $firstpost_only, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page)
{
// No author? No posts
if (!count($author_ary))
@ -1303,7 +1291,7 @@ class fulltext_native extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index($mode, $post_id, &$message, &$subject, $poster_id, $forum_id)
public function index(string $mode, int $post_id, string &$message, string &$subject, int $poster_id, int $forum_id)
{
if (!$this->config['fulltext_native_load_upd'])
{
@ -1492,7 +1480,7 @@ class fulltext_native extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index_remove($post_ids, $author_ids, $forum_ids)
public function index_remove(array $post_ids, array $author_ids, array $forum_ids): void
{
if (count($post_ids))
{
@ -1549,7 +1537,7 @@ class fulltext_native extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function tidy()
public function tidy(): void
{
// Is the fulltext indexer disabled? If yes then we need not
// carry on ... it's okay ... I know when I'm not wanted boo hoo
@ -2008,7 +1996,7 @@ class fulltext_native extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function acp()
public function acp(): array
{
/**
* if we need any options, copied from fulltext_native for now, will have to be adjusted or removed

View file

@ -114,7 +114,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_name()
public function get_name(): string
{
return 'PostgreSQL Fulltext';
}
@ -143,7 +143,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_search_query()
public function get_search_query(): string
{
return $this->search_query;
}
@ -151,7 +151,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_common_words()
public function get_common_words(): array
{
return $this->common_words;
}
@ -167,7 +167,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function split_keywords(&$keywords, $terms)
public function split_keywords(string &$keywords, string $terms): bool
{
if ($terms == 'all')
{
@ -258,7 +258,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function keyword_search($type, $fields, $terms, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page)
public function keyword_search(string $type, string $fields, string $terms, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page)
{
// No keywords? No posts
if (!$this->search_query)
@ -522,7 +522,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function author_search($type, $firstpost_only, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page)
public function author_search(string $type, bool $firstpost_only, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page)
{
// No author? No posts
if (!count($author_ary))
@ -798,7 +798,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index($mode, $post_id, &$message, &$subject, $poster_id, $forum_id)
public function index(string $mode, int $post_id, string &$message, string &$subject, int $poster_id, int $forum_id)
{
// Split old and new post/subject to obtain array of words
$split_text = $this->split_message($message);
@ -846,7 +846,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index_remove($post_ids, $author_ids, $forum_ids)
public function index_remove(array $post_ids, array $author_ids, array $forum_ids): void
{
$this->destroy_cache([], $author_ids);
}
@ -854,7 +854,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function tidy()
public function tidy(): void
{
// destroy too old cached search results
$this->destroy_cache(array());
@ -865,7 +865,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function create_index(int &$post_counter = null): ?array
public function create_index(int &$post_counter = 0): ?array
{
// Make sure we can actually use PostgreSQL with fulltext indexes
if ($error = $this->init())
@ -983,7 +983,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index_created()
public function index_created(): bool
{
if (empty($this->stats))
{
@ -1081,7 +1081,7 @@ class fulltext_postgres extends base implements search_backend_interface
/**
* {@inheritdoc}
*/
public function acp()
public function acp(): array
{
$tpl = '
<dl>

View file

@ -190,7 +190,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_name()
public function get_name(): string
{
return 'Sphinx Fulltext';
}
@ -222,7 +222,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_search_query()
public function get_search_query(): string
{
return $this->search_query;
}
@ -230,7 +230,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function get_common_words()
public function get_common_words(): array
{
return array();
}
@ -246,7 +246,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function split_keywords(&$keywords, $terms)
public function split_keywords(string &$keywords, string $terms): bool
{
// Keep quotes and new lines
$keywords = str_replace(['&quot;', "\n"], ['"', ' '], trim($keywords));
@ -280,7 +280,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function keyword_search($type, $fields, $terms, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page)
public function keyword_search(string $type, string $fields, string $terms, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page)
{
// No keywords? No posts.
if (!strlen($this->search_query) && !count($author_ary))
@ -520,7 +520,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function author_search($type, $firstpost_only, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page)
public function author_search(string $type, bool $firstpost_only, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page)
{
$this->search_query = '';
@ -541,7 +541,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index($mode, $post_id, &$message, &$subject, $poster_id, $forum_id)
public function index(string $mode, int $post_id, string &$message, string &$subject, int $poster_id, int $forum_id)
{
/**
* Event to modify method arguments before the Sphinx search index is updated
@ -607,7 +607,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index_remove($post_ids, $author_ids, $forum_ids)
public function index_remove(array $post_ids, array $author_ids, array $forum_ids): void
{
$values = array();
foreach ($post_ids as $post_id)
@ -621,7 +621,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* Nothing needs to be destroyed
*/
public function tidy()
public function tidy(): void
{
$this->config->set('search_last_gc', time(), false);
}
@ -629,7 +629,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function create_index(int &$post_counter = null): ?array
public function create_index(int &$post_counter = 0): ?array
{
if ($this->index_created())
{
@ -672,7 +672,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function index_created($allow_new_files = true)
public function index_created($allow_new_files = true): bool
{
$created = false;
@ -783,7 +783,7 @@ class fulltext_sphinx implements search_backend_interface
/**
* {@inheritdoc}
*/
public function acp()
public function acp(): array
{
$config_vars = array(
'fulltext_sphinx_data_path' => 'string',

View file

@ -20,14 +20,14 @@ interface search_backend_interface
*
* @return string Name
*/
public function get_name();
public function get_name(): string;
/**
* Returns if the search engine is available
*
* @return bool
*/
public function is_available();
public function is_available(): bool;
/**
* Method executed when a search backend is set from acp.
@ -43,31 +43,39 @@ interface search_backend_interface
*
* @return string search query
*/
public function get_search_query();
public function get_search_query(): string;
/**
* Returns the common_words array
*
* @return array common words that are ignored by search backend
*/
public function get_common_words();
public function get_common_words(): array;
/**
* Returns the word_length array
*
* @return array min and max word length for searching
* @return array|false min and max word length for searching
*/
public function get_word_length();
/**
* Splits keywords entered by a user into an array of words stored in $this->split_words
* Stores the tidied search query in $this->search_query
* This function fills $this->search_query with the cleaned user search query
*
* @param string &$keywords Contains the keyword as entered by the user
* @param string $terms is either 'all' or 'any'
* @return bool false if no valid keywords were found and otherwise true
* If $terms is 'any' then the words will be extracted from the search query
* and combined with | inside brackets. They will afterwards be treated like
* an standard search query.
*
* Then it analyses the query and fills the internal arrays $must_not_contain_ids,
* $must_contain_ids and $must_exclude_one_ids which are later used by keyword_search()
*
* @param string $keywords contains the search query string as entered by the user
* @param string $terms is either 'all' (use search query as entered, default words to 'must be contained in post')
* or 'any' (find all posts containing at least one of the given words)
* @return boolean false if no valid keywords were found and otherwise true
*/
public function split_keywords(&$keywords, $terms);
public function split_keywords(string &$keywords, string $terms): bool;
/**
* Performs a search on keywords depending on display specific params. You have to run split_keywords() first
@ -89,7 +97,7 @@ interface search_backend_interface
* @param int $per_page number of ids each page is supposed to contain
* @return boolean|int total number of results
*/
public function keyword_search($type, $fields, $terms, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page);
public function keyword_search(string $type, string $fields, string $terms, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page);
/**
* Performs a search on an author's posts without caring about message contents. Depends on display specific params
@ -110,7 +118,7 @@ interface search_backend_interface
* @param int $per_page number of ids each page is supposed to contain
* @return boolean|int total number of results
*/
public function author_search($type, $firstpost_only, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $post_visibility, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page);
public function author_search(string $type, bool $firstpost_only, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array &$id_ary, int &$start, int $per_page);
/**
* Returns if phrase search is supported or not
@ -130,38 +138,47 @@ interface search_backend_interface
* @param int $poster_id contains the user id of the poster
* @param int $forum_id contains the forum id of parent forum of the post
*/
public function index($mode, $post_id, &$message, &$subject, $poster_id, $forum_id);
public function index(string $mode, int $post_id, string &$message, string &$subject, int $poster_id, int $forum_id);
/**
* Destroy cached results, that might be outdated after deleting a post
* @param array $post_ids
* @param array $author_ids
* @param array $forum_ids
*
* @return void
*/
public function index_remove($post_ids, $author_ids, $forum_ids);
public function index_remove(array $post_ids, array $author_ids, array $forum_ids): void;
/**
* Destroy old cache entries
*
* @return void
*/
public function tidy();
public function tidy(): void;
/**
* Create fulltext index
*
* @param int|null $post_counter
* @param int $post_counter
* @return array|null array with current status or null if finished
*/
public function create_index(int &$post_counter = null): ?array;
public function create_index(int &$post_counter = 0): ?array;
/**
* Drop fulltext index
*
* @param int|null $post_counter
* @param int $post_counter
* @return array|null array with current status or null if finished
*/
public function delete_index(int &$post_counter = null): ?array;
public function delete_index(int &$post_counter = 0): ?array;
/**
* Returns true if both FULLTEXT indexes exist
*
* @return bool
*/
public function index_created();
public function index_created(): bool;
/**
* Returns an associative array containing information about the indexes
@ -173,7 +190,7 @@ interface search_backend_interface
/**
* Display various options that can be configured for the backend from the acp
*
* @return associative array containing template and config variables
* @return array array containing template and config variables
*/
public function acp();
public function acp(): array;
}

View file

@ -29,7 +29,7 @@ $mode = $request->variable('mode', '');
$search_id = $request->variable('search_id', '');
$start = max($request->variable('start', 0), 0);
$post_id = $request->variable('p', 0);
$topic_id = $request->variable('t', 0);
$topic_id = (int) $request->variable('t', 0);
$view = $request->variable('view', '');
$submit = $request->variable('submit', false);
@ -544,7 +544,7 @@ if ($keywords || $author || $author_id || $search_id || $submit)
extract($phpbb_dispatcher->trigger_event('core.search_modify_param_after', compact($vars)));
// show_results should not change after this
$per_page = ($show_results == 'posts') ? $config['posts_per_page'] : $config['topics_per_page'];
$per_page = ($show_results == 'posts') ? (int) $config['posts_per_page'] : (int) $config['topics_per_page'];
$total_match_count = 0;
// Set limit for the $total_match_count to reduce server load