[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Medienpool Überkategorie herausfinden für Datei
Seite 1 von 1

Medienpool Überkategorie herausfinden für Datei

Verfasst: 27. Mär 2015, 15:36
von Popkultur
Hallo,

ich sehe OOMedia hat die Funktion getid, aber ich möchte in einem Modul prüfen, ob eine Datei Teil einer bestimmten Überkategorie ist. Wie kann ich das bewerkstelligen?

Geht es vielleicht per getParentTree() von OOMediaCategory?

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 27. Mär 2015, 17:34
von RexDude
Das geht in dem man es programmieren tut ;)
Die Logik ist ungefähr so:

- OOMedia Objekt holen für die Datei
- Per getCategoryId() die ID der Kategorie holen
- Dann über OOMediaCategory per getParentID an die Parent ID kommen und prüfen obs die entsprechende ID ist

Ist wie Lego...einfach zusammenbauen wie mans haben möchte ;)

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 10:10
von Popkultur
Okay, und wie finde ich die *oberste* Kategorie-ID? Vermutlich rekursiv mit hasParent.

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 10:53
von RexDude
Hab ich doch geschrieben, mit getParentID().
Ausser du befindest dich natürlich noch tiefer, dann würd ich mir den Categorypfad holen. So in der Art wie hier gemacht: https://github.com/RexDude/seo42/blob/m ... hp#L67-L73
Kann sein dass man den Pfad mit getParentTree() bekommt über das OOFramework. Bin mir aber nicht sicher.

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 11:06
von Popkultur
getParentTree ist wohl der richtige weg.

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 11:16
von RexDude
Glauben ist aber nicht wissen ;)
Im REDAXO Cheatsheet ist es unter OOCategory aufgeführt.
Aber sonst hol dir halt den Startartikel!

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 11:29
von Popkultur

Code: Alles auswählen

          $pdf = OOMedia::getMediaByFileName($filename[count($filename)-1]);
		  $c = OOMediaCategory::getCategoryById($pdf->getCategoryId());
		  $tree = OOMediaCategory::getParentTree($c);
		  $closed = false;
		  foreach ($tree as $t) {
		  	if ($t->getId() == 79) { $closed = true; }  // HIER DIE ID DES GESCHÜTZTEN BEREICHS
		  }
		
Das hab ich jetzt, aber so ganz tut es noch nicht.

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 11:44
von RexDude
Sorry, ich war bei OOCategory. OOMediaCategory hat getParentTree() nicht dafür aber getPath() ;)
Und bevor du dass jetzt einfach austauscht, schau bitte was getPath() dir ausgibt und pass deinen Code dann dran an.

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 11:58
von Popkultur
"OOMediaCategory hat getParentTree() nich" doch! Laut SPezifikation schon, nur bleibt das Array leer, was mich wundert. getPath kann ich nicht nutzen, die Dateien liegen alle im gleichen Ordner.

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 12:06
von RexDude
Hast schon mal geschaut getPath() zurückgibt?

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 12:53
von Popkultur
Ahhhhh super.

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 12:58
von RexDude
Also ich hab keine Lust dir die gesamte Lösung zu liefern. Hier wie man von der aktuellen Media Category den "Pfad" bekommt, denn man per explode() auf das | (Pipe) Zeichen auseinanderfummelt um zur Root Media Category zu kommen (erster bzw. zweiter index in dem array wäre das dann).

$mediaCat = OOMediaCategory::getCategoryById(5); // 5 = aktuelle Media Cat der Datei
echo $mediaCat->getPath();

Re: Medienpool Überkategorie herausfinden für Datei

Verfasst: 8. Mai 2015, 13:06
von Popkultur
Ich habs schon ich habs schon. Danke.

Code: Alles auswählen

		  $filename = explode('/', $hit['filename']);
          $pdf = OOMedia::getMediaByFileName($filename[count($filename)-1]);
		  $c = OOMediaCategory::getCategoryById($pdf->getCategoryId());
		  $c = explode('|', $c->getPath());
		  if ($c[1] == $closed_id_mediapool) { $closed = true; } else { $closed = false; }