Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Status-Abfrage "online": >= in = geändert #101

Closed
wants to merge 2 commits into from
Closed

Conversation

christophboecker
Copy link
Member

An mehreren Stellen wird wenn ich nicht gänzlich irre auf "status ist 'online'" überprüft. Allerdings nicht auf status == 1, sondern status >= 1.

Das ist aktuell unschädlich bei Kategorien, denn dort gibt es nur -1(draft) und 1 (online). Bei den Entries ist es anders. Es gibt auch 2(deleted). Eine Abfrage auf "online" würde also neben den Online-Artikeln auch die gelöschten liefern. Und Gelöschtes kann per defiition nicht online sein.

neues/lib/Entry.php

Lines 499 to 505 in c770420

public static function findOnline(?int $category_id = null): rex_yform_manager_collection
{
if (null !== $category_id) {
return self::findByCategory($category_id);
}
return self::query()->where('status', 1, '>=')->find();
}

Der PR setzt den Vergleichsoperator auf = statt >= bzwl öäscht ihn, da =der Default ist

@alxndr-w alxndr-w self-assigned this Sep 6, 2024
@alxndr-w alxndr-w added the question Further information is requested label Sep 6, 2024
@alxndr-w
Copy link
Member

alxndr-w commented Sep 6, 2024

"choices": "translate:neues_status_deleted=2,translate:neues_status_draft=-1,translate:neues_status_planned=0,translate:neues_status_online=1",

Grober Fehler von mir, das sollte -2 sein!

Alles aufwärts von 1 soll öffentlich sein, alles unterhalb nicht. Auch, um sich offen zu halten, dass es Mal einen Status 2 gibt.

Analog dazu sollte auch immer das URL-Profil sein.

Für mich erst nächste Woche frühestens ein Thema.

@christophboecker
Copy link
Member Author

OK, dann muss ein ganz anderes Problem ganz anders angegangen werden. Dann schließe ich den PR.

@alxndr-w alxndr-w deleted the cb-7 branch September 7, 2024 13:26
christophboecker referenced this pull request Sep 13, 2024
### Hinzufügen der `findByCategories`-Methode zur `Entry`-Klasse

#### Zusammenfassung:
In diesem Pull Request wird eine neue Methode `findByCategories` zur `Entry`-Klasse hinzugefügt. Diese Methode ermöglicht es, Einträge anhand einer oder mehrerer Kategorien zu finden, wobei der Status der Einträge ebenfalls berücksichtigt wird. Die Methode akzeptiert sowohl Strings als auch Arrays als Eingabeparameter für die Kategorie-IDs und ist kompatibel mit PHP 8.2.

#### Änderungen im Detail:
- **Neue Methode `findByCategories`:**
  - **Parameter**: 
    - `string|array|null $category_ids`: Akzeptiert entweder eine kommagetrennte Liste von Kategorie-IDs als String, ein Array von Kategorie-IDs oder `null`.
    - `int $status`: Definiert den Mindeststatus der Einträge, die gefiltert werden sollen.
  - **Funktionalität**: 
    - Wenn ein String übergeben wird, wird dieser in ein Array umgewandelt.
    - Die Methode verwendet `whereInList`, um die Einträge zu filtern, die den angegebenen Kategorien zugeordnet sind.
    - Es wird der `status` der Einträge berücksichtigt, sodass nur Einträge zurückgegeben werden, die einen bestimmten Status erfüllen.

- **Typdeklaration**:
  - Die Methode nutzt die neuen Union Types von PHP 8.2 (`string|array|null`), um klar anzugeben, welche Typen akzeptiert werden.



#### Anwendungsbeispiel:

```php
// Suche nach Einträgen, die den Kategorien 1 und 2 zugeordnet sind und den Status 1 oder höher haben
$entries = FriendsOfRedaxo\Neues\Entry::findByCategories([1, 2], 1);

// Suche mit einer kommagetrennten Liste von Kategorien als String
$entries = FriendsOfRedaxo\Neues\Entry::findByCategories('1,2', 1);

// Suche nach allen Einträgen mit einem Status von 1 oder höher, ohne Kategorienfilter
$entries = FriendsOfRedaxo\Neues\Entry::findByCategories(null, 1);
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants