/** * @param Model\Asset $target * @param Model\Asset $source * @return Model\Asset copied asset */ public function copyRecursive($target, $source) { // avoid recursion if (!$this->_copyRecursiveIds) { $this->_copyRecursiveIds = []; } if (in_array($source->getId(), $this->_copyRecursiveIds)) { return; } $source->getProperties(); $new = clone $source; $new->id = null; if ($new instanceof Asset\Folder) { $new->setChilds(null); } $new->setFilename(Element\Service::getSaveCopyName("asset", $new->getFilename(), $target)); $new->setParentId($target->getId()); $new->setUserOwner($this->_user->getId()); $new->setUserModification($this->_user->getId()); $new->setDao(null); $new->setLocked(false); $new->setCreationDate(time()); $new->setStream($source->getStream()); $new->save(); // add to store $this->_copyRecursiveIds[] = $new->getId(); foreach ($source->getChilds() as $child) { $this->copyRecursive($new, $child); } if ($target instanceof Asset\Folder) { $this->updateChilds($target, $new); } return $new; }
/** * Returns the children of the asset if the asset is a folder * * @return array */ function getChildren() { $children = array(); if ($this->asset->hasChilds()) { foreach ($this->asset->getChilds() as $child) { if ($child->isAllowed("view")) { try { if ($child = $this->getChild($child)) { $children[] = $child; } } catch (\Exception $e) { \Logger::warning($e); } } } } return $children; }