Fix search using user queries (#5669)

fix https://github.com/FreshRSS/FreshRSS/issues/5668
This commit is contained in:
Alexandre Alapetite
2023-09-26 22:38:09 +02:00
committed by GitHub
parent 86d713478b
commit 89a3d36c3e
3 changed files with 9 additions and 21 deletions

View File

@@ -90,10 +90,14 @@ class FreshRSS_BooleanSearch {
}
if (!empty($all_matches)) {
$category_dao = FreshRSS_Factory::createCategoryDao();
$feed_dao = FreshRSS_Factory::createFeedDao();
$tag_dao = FreshRSS_Factory::createTagDao();
/** @var array<string,FreshRSS_UserQuery> */
$queries = [];
foreach (FreshRSS_Context::$user_conf->queries as $raw_query) {
$query = new FreshRSS_UserQuery($raw_query);
$query = new FreshRSS_UserQuery($raw_query, $feed_dao, $category_dao, $tag_dao);
$queries[] = $query;
}

View File

@@ -125,7 +125,7 @@ class FreshRSS_UserQuery {
*/
private function parseCategory(int $id): void {
if ($this->category_dao === null) {
throw new FreshRSS_DAO_Exception('Category DAO is not loaded in UserQuery');
$this->category_dao = FreshRSS_Factory::createCategoryDao();
}
$category = $this->category_dao->searchById($id);
if ($category !== null) {
@@ -143,7 +143,7 @@ class FreshRSS_UserQuery {
*/
private function parseFeed(int $id): void {
if ($this->feed_dao === null) {
throw new FreshRSS_DAO_Exception('Feed DAO is not loaded in UserQuery');
$this->feed_dao = FreshRSS_Factory::createFeedDao();
}
$feed = $this->feed_dao->searchById($id);
if ($feed !== null) {
@@ -160,8 +160,8 @@ class FreshRSS_UserQuery {
* @throws FreshRSS_DAO_Exception
*/
private function parseTag(int $id): void {
if ($this->tag_dao == null) {
throw new FreshRSS_DAO_Exception('Tag DAO is not loaded in UserQuery');
if ($this->tag_dao === null) {
$this->tag_dao = FreshRSS_Factory::createTagDao();
}
$tag = $this->tag_dao->searchById($id);
if ($tag !== null) {

View File

@@ -19,14 +19,6 @@ class UserQueryTest extends PHPUnit\Framework\TestCase {
self::assertEquals('favorite', $user_query->getGetType());
}
public function test__construct_whenCategoryQueryAndNoDao_throwsException(): void {
$this->expectException(FreshRSS_DAO_Exception::class);
$this->expectExceptionMessage('Category DAO is not loaded in UserQuery');
$query = array('get' => 'c_1');
new FreshRSS_UserQuery($query);
}
public function test__construct_whenCategoryQuery_storesCategoryParameters(): void {
$category_name = 'some category name';
/** @var FreshRSS_Category&PHPUnit\Framework\MockObject\MockObject */
@@ -47,14 +39,6 @@ class UserQueryTest extends PHPUnit\Framework\TestCase {
self::assertEquals('category', $user_query->getGetType());
}
public function test__construct_whenFeedQueryAndNoDao_throwsException(): void {
$this->expectException(FreshRSS_DAO_Exception::class);
$this->expectExceptionMessage('Feed DAO is not loaded in UserQuery');
$query = array('get' => 'f_1');
new FreshRSS_UserQuery($query);
}
public function test__construct_whenFeedQuery_storesFeedParameters(): void {
$feed_name = 'some feed name';
/** @var FreshRSS_Feed&PHPUnit\Framework\MockObject\MockObject */