Beitragvon lukasimhof » Do 10. Aug 2017, 22:29
Die einfachsten Funktionen sind in we_collection schnell ersichtlich:
$coll = new we_collection;
$coll->Text = 'dieSammlung';
$coll->Path = '/dieSammlung';
$coll->ContentType = we_base_ContentTypes::COLLECTION;
$coll->remCT = we_base_ContentTypes::IMAGE; // optional: hier als CSV die zuläßigen Inhaltstypen
$coll->IsDuplicates = 0; // Dubletten zulassen oder nicht
$coll->we_save();
$coll->ID liefert die ID der eben angelegten Sammlung
=> Leider fehlt in tblVFile noch der UNIQUE über ParenID + Text: dadurch kannst du mit obigem Kode mehrere Sammlungen mit gleichem Pfad anlegen. Das wird im Backend angefangen, im PHP musst du die Eindeutigkeit des Sammlungspfades selbst gewährleisten.
Zum bestücken:
$coll = new we_collection();
$coll->initByID(16); // ID der bereits angelegten Sammlung
$coll->setCollection([491,496,491,495]); // damit legst du die gesamte Sammlung in genau dieser Reihenfolge an
$coll->we_save();
=> Mit $coll->we_save() (und in dieser einfchen Variante erst hier) werden zulässige Inhaltstypen (remCT) und IsDuplicates durchgesetzt: die Sammlung wird also je nach Bedarf gefiltert.
Das Ergebnis siehst du z.B. mit:
$coll->getCollection(); // jegliche -1 spielen nur im Backend eine Rolle und werden beim Speichern ausgefiltert
Weitere sinnvolle Funktionen:
- $coll->addItemsToCollection($items, $pos = -1) // $items als Array, $pos = Position ist optional
=> Achtung: wenn $pos gesetzt ist, wird das Element an dieser Position durch das erste einzufügende Element ersetzt; die weiteren einzufügenden Elemente folgen, ohne weitere bestehende Elemente zu überschreiben
- $coll->getValidCollection() // liefert die Collection mit durchgesetzten Filtern (schon vor dem we_save)
- $coll->getValidItemsFromIDs($ids, false, $recursive); // IDs als Array, $recursive true|false
=> wird z.B. beim Einfügen aus dem Tree verwendet, um für die jeweilige Sammlung valide IDs zu identifizieren (bei Verzeichnis-IDs die enthaltenen validen IDs, rekursiv oder nicht). Man kann damit also IDs validieren und dann mit setCollection() bzw. addItemsToCollection() einfügen.
HINWEIS:
All dies funktioniert JETZT, ist aber nicht Teil einer offiziellen öffentlichen API. Will heißen: Die Existenz sowie die Signaturen der genannten Methoden sind nicht garantiert und können sich im Zuge der weiteren Entwicklung ändern (v.a. wird nicht alles genannte auch langfristig public bleiben).
Core-Entwickler webEdition e.V.