Seite 1 von 1
Class cArticleCollector Options
Verfasst: Do 10. Sep 2015, 08:54
von mattmarr
Hallo!
Mal eine generelle Frage.
Es betrifft die Class cArticleCollector -> setOptions.
Dort wird bei allen Optionen auf isset() geprüft.
Wäre es nicht ratsamer auf korrekten oder vorhanden Inhalt zu prüfen, anstelle von isset()?
Beispiel #1 funktioniert: Rekursiv alle Kategorien 1, 2, 3 und 4 ausgeben:
Code: Alles auswählen
$col = new cArticleCollector(array(
'idcat' => 1,
'categories' => array(2,3,4)
));
Beispiel #2 funktioniert nicht: Nur Kategorie 1 ausgeben:
Code: Alles auswählen
$col = new cArticleCollector(array(
'idcat' => 1,
'categories' => ''
));
Ich bin darauf gestossen, da ich mir derzeit die Class cArticleCollector umbaue, um Performance einbrüche im Contenido zu umgehen.
Gruß
Matthias
Re: Class cArticleCollector Options
Verfasst: Do 10. Sep 2015, 10:01
von Faar
Mir geht die Logik des doppelten Setzens der idcat in der Klasse (noch) nicht in den Sinn.
Einmal als idcat und einmal als categories.
Vielleicht gibt es da einen und kann es mir erklären?
@mattmar
Code: Alles auswählen
101: if (isset($options['idcat']) && !isset($options['categories'])) {
102: $options['categories'] = array(
103: $options['idcat']
104: );
105: }
Der Code setzt darauf ab, dass 'categories' nicht gesetzt ist, also zumindest false ist.
Aber categories = ' ' ist nicht unbedingt false, sondern leer, also empty().
Re: Class cArticleCollector Options
Verfasst: Do 10. Sep 2015, 10:45
von mattmarr
Hallo Faar,
Faar hat geschrieben:Mir geht die Logik des doppelten Setzens der idcat in der Klasse (noch) nicht in den Sinn.
...
Wird nur eine IDCAT angegeben, sollen wohl nur die Artikel aus der IDCAT gelesen werden.
Wird wohl zusätzlich bei CATEGORIES ein array mit IDCATs übergeben, werden diese ebenfalls berücksichtigt. So kann man z.b. eine Rekursive ausgabe aufbauen. So mach ich das jedenfalls.
Gruß
Matthias
Re: Class cArticleCollector Options
Verfasst: Do 10. Sep 2015, 12:17
von frederic.schneider_4fb
Vielen Dank für Deine Anregungen, von denen sicherlich die Community profitieren wird! Wir werden uns das auch mal näher ansehen
Re: Class cArticleCollector Options
Verfasst: Do 10. Sep 2015, 12:43
von Faar
mattmarr hat geschrieben:Wird nur eine IDCAT angegeben, sollen wohl nur die Artikel aus der IDCAT gelesen werden.
Das funktioniert in der Klasse wohl auch so:
Code: Alles auswählen
101: if (isset($options['idcat']) && !isset($options['categories'])) {
102: $options['categories'] = array(
103: $options['idcat']
104: );
105: }
Wenn idcat gesetzt ist und aber categories nicht, dann soll die idcat für die categories übernommen werden.
In der Klasse wird das aber nur mit isset() geprüft und nicht zusätzlich mit empty().
Wird wohl zusätzlich bei CATEGORIES ein array mit IDCATs übergeben, werden diese ebenfalls berücksichtigt.
Nun kommt Dein Code, worin du die categories setzst, zwar mit leerem Inhalt aber isset==true.
Code: Alles auswählen
$col = new cArticleCollector(array(
'idcat' => 1,
'categories' => ''
));
Besser wäre in deinem Fall, wenn du nur idcat=>1 gesetzt hättest, denn dann wird isset(categories)==false.
Und/oder 4fb baut noch das empty() dazu in ihrer Abfrage in der Klasse.
Re: Class cArticleCollector Options
Verfasst: Do 10. Sep 2015, 17:13
von frederic.schneider_4fb
Ich bin am Mittwoch wieder im Büro und melde mich dann

Re: Class cArticleCollector Options
Verfasst: Do 10. Sep 2015, 20:13
von mattmarr
Hallo frederic!
frederic.schneider_4fb hat geschrieben:Ich bin am Mittwoch wieder im Büro und melde mich dann

Ich werde hier brav sitzen bleiben und warten.

Re: Class cArticleCollector Options
Verfasst: Do 10. Sep 2015, 21:01
von Faar
Das ist ja erst nächste Woche?!

Re: Class cArticleCollector Options
Verfasst: Fr 11. Sep 2015, 09:41
von frederic.schneider_4fb
Faar hat geschrieben:Das ist ja erst nächste Woche?! :shock:
Sehr gut beobachtet :))