mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-01 20:19:13 +02:00
[ticket/15540] Add types
PHPBB3-15540
This commit is contained in:
parent
a8de540e93
commit
658a0489d0
@ -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
|
||||
|
@ -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'])
|
||||
{
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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']
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -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++;
|
||||
}
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
*/
|
||||
public function split_keywords(&$keywords, $terms)
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
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
|
||||
|
@ -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>
|
||||
|
@ -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(['"', "\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',
|
||||
|
@ -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,74 +43,82 @@ 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
|
||||
*
|
||||
* @param string $type contains either posts or topics depending on what should be searched for
|
||||
* @param string $fields contains either titleonly (topic titles should be searched), msgonly (only message bodies should be searched), firstpost (only subject and body of the first post should be searched) or all (all post bodies and subjects should be searched)
|
||||
* @param string $terms is either 'all' (use query as entered, words without prefix should default to "have to be in field") or 'any' (ignore search query parts and just return all posts that contain any of the specified words)
|
||||
* @param array $sort_by_sql contains SQL code for the ORDER BY part of a query
|
||||
* @param string $sort_key is the key of $sort_by_sql for the selected sorting
|
||||
* @param string $sort_dir is either a or d representing ASC and DESC
|
||||
* @param string $sort_days specifies the maximum amount of days a post may be old
|
||||
* @param array $ex_fid_ary specifies an array of forum ids which should not be searched
|
||||
* @param string $post_visibility specifies which types of posts the user can view in which forums
|
||||
* @param int $topic_id is set to 0 or a topic id, if it is not 0 then only posts in this topic should be searched
|
||||
* @param array $author_ary an array of author ids if the author should be ignored during the search the array is empty
|
||||
* @param string $author_name specifies the author match, when ANONYMOUS is also a search-match
|
||||
* @param array &$id_ary passed by reference, to be filled with ids for the page specified by $start and $per_page, should be ordered
|
||||
* @param int $start indicates the first index of the page
|
||||
* @param int $per_page number of ids each page is supposed to contain
|
||||
* @return boolean|int total number of results
|
||||
* @param string $type contains either posts or topics depending on what should be searched for
|
||||
* @param string $fields contains either titleonly (topic titles should be searched), msgonly (only message bodies should be searched), firstpost (only subject and body of the first post should be searched) or all (all post bodies and subjects should be searched)
|
||||
* @param string $terms is either 'all' (use query as entered, words without prefix should default to "have to be in field") or 'any' (ignore search query parts and just return all posts that contain any of the specified words)
|
||||
* @param array $sort_by_sql contains SQL code for the ORDER BY part of a query
|
||||
* @param string $sort_key is the key of $sort_by_sql for the selected sorting
|
||||
* @param string $sort_dir is either a or d representing ASC and DESC
|
||||
* @param string $sort_days specifies the maximum amount of days a post may be old
|
||||
* @param array $ex_fid_ary specifies an array of forum ids which should not be searched
|
||||
* @param string $post_visibility specifies which types of posts the user can view in which forums
|
||||
* @param int $topic_id is set to 0 or a topic id, if it is not 0 then only posts in this topic should be searched
|
||||
* @param array $author_ary an array of author ids if the author should be ignored during the search the array is empty
|
||||
* @param string $author_name specifies the author match, when ANONYMOUS is also a search-match
|
||||
* @param array &$id_ary passed by reference, to be filled with ids for the page specified by $start and $per_page, should be ordered
|
||||
* @param int $start indicates the first index of the page
|
||||
* @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
|
||||
*
|
||||
* @param string $type contains either posts or topics depending on what should be searched for
|
||||
* @param boolean $firstpost_only if true, only topic starting posts will be considered
|
||||
* @param array $sort_by_sql contains SQL code for the ORDER BY part of a query
|
||||
* @param string $sort_key is the key of $sort_by_sql for the selected sorting
|
||||
* @param string $sort_dir is either a or d representing ASC and DESC
|
||||
* @param string $sort_days specifies the maximum amount of days a post may be old
|
||||
* @param array $ex_fid_ary specifies an array of forum ids which should not be searched
|
||||
* @param string $post_visibility specifies which types of posts the user can view in which forums
|
||||
* @param int $topic_id is set to 0 or a topic id, if it is not 0 then only posts in this topic should be searched
|
||||
* @param array $author_ary an array of author ids
|
||||
* @param string $author_name specifies the author match, when ANONYMOUS is also a search-match
|
||||
* @param array &$id_ary passed by reference, to be filled with ids for the page specified by $start and $per_page, should be ordered
|
||||
* @param int $start indicates the first index of the page
|
||||
* @param int $per_page number of ids each page is supposed to contain
|
||||
* @return boolean|int total number of results
|
||||
* @param string $type contains either posts or topics depending on what should be searched for
|
||||
* @param boolean $firstpost_only if true, only topic starting posts will be considered
|
||||
* @param array $sort_by_sql contains SQL code for the ORDER BY part of a query
|
||||
* @param string $sort_key is the key of $sort_by_sql for the selected sorting
|
||||
* @param string $sort_dir is either a or d representing ASC and DESC
|
||||
* @param string $sort_days specifies the maximum amount of days a post may be old
|
||||
* @param array $ex_fid_ary specifies an array of forum ids which should not be searched
|
||||
* @param string $post_visibility specifies which types of posts the user can view in which forums
|
||||
* @param int $topic_id is set to 0 or a topic id, if it is not 0 then only posts in this topic should be searched
|
||||
* @param array $author_ary an array of author ids
|
||||
* @param string $author_name specifies the author match, when ANONYMOUS is also a search-match
|
||||
* @param array &$id_ary passed by reference, to be filled with ids for the page specified by $start and $per_page, should be ordered
|
||||
* @param int $start indicates the first index of the page
|
||||
* @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
|
||||
@ -123,45 +131,54 @@ interface search_backend_interface
|
||||
* Updates wordlist and wordmatch tables when a message is posted or changed
|
||||
* Destroys cached search results, that contained one of the new words in a post so the results won't be outdated
|
||||
*
|
||||
* @param string $mode contains the post mode: edit, post, reply, quote ...
|
||||
* @param int $post_id contains the post id of the post to index
|
||||
* @param string $message contains the post text of the post
|
||||
* @param string $subject contains the subject of the post to index
|
||||
* @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
|
||||
* @param string $mode contains the post mode: edit, post, reply, quote ...
|
||||
* @param int $post_id contains the post id of the post to index
|
||||
* @param string $message contains the post text of the post
|
||||
* @param string $subject contains the subject of the post to index
|
||||
* @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;
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user