diff --git a/boot.php b/boot.php index cbfc8ca..d6f2e32 100644 --- a/boot.php +++ b/boot.php @@ -51,7 +51,6 @@ $pages = $addon->getProperty('pages'); if ($_REQUEST) { - $_csrf_key = Entry::table()->getCSRFKey(); $token = rex_csrf_token::factory($_csrf_key)->getUrlParams(); diff --git a/lib/neues_entry.php b/lib/neues_entry.php index 2c56afe..7b472f4 100644 --- a/lib/neues_entry.php +++ b/lib/neues_entry.php @@ -16,6 +16,8 @@ use rex_yform_manager_dataset; use rex_yform_manager_table; +use function is_string; + /** * Class neues_entry. * @@ -522,6 +524,36 @@ public static function findByCategory(?int $category_id = null, int $status = 1) return $query->find(); } + /** + * Findet Einträge durch IDs mehrerer Kategorien. + * Finds entries by multiple Categories. + * + * @param string|array|null $category_ids Die IDs der Kategorien als String oder Array. / The IDs of the Categories as a String or Array. + * @param int $status Der Status der Einträge. / The status of the entries. + * @return rex_yform_manager_collection|null Die gefundenen Einträge oder null, wenn keine Einträge gefunden wurden. / The found entries or null if no entries were found. + * + * Beispiel / Example: + * $entries = FriendsOfRedaxo\Neues\Entry::findByCategoryIds('1,2', 1); + * + * @api + */ + public static function findByCategoryIds(string|array|null $category_ids = null, int $status = 1): ?rex_yform_manager_collection + { + $query = self::query()->where('status', $status, '>='); + + if ($category_ids) { + // Wenn es ein String ist, in ein Array umwandeln + if (is_string($category_ids)) { + $category_ids = explode(',', $category_ids); + } + + // whereInList anwenden + $query->whereInList('category_ids', $category_ids); + } + + return $query->find(); + } + /** * Gibt die URL des Eintrags zurück. * Returns the URL of the entry.