/** * Only to be called from getFolderArray, provides the recursive feature * @param $childrenArray array of children folders * @param $class The class being displayed * @param $allowedFolderArray Array being constructed with folders to display in a tree * @return allowedFolderArray for method chaining */ function getFolderArrayRecursive($childrenArray, $class, $allowedFolderArray, $object = null) { // Get the session $session = new Session(); // For each root folder, inspect it foreach ($childrenArray as $folder) { /* @var $folder Folder */ // Has this folder allowed children? if ($folder->hasAllowedLeaf($class, Action::ADD_OBJECTS_ACTION())) { // echo "Evaluando folder: " . $folder->getTitle() . "<br/>"; /* @var $folderClass FolderClass */ // Can the user add objects to this folder ? $folderClass = $folder->getFolderClass($class); if (is_null($folderClass)) { $folderClass = new FolderClass($class->getId(), $folder->getId()); $folderClass->setIsDefault(false); } // Must be displayed... $id = $folder->getId(); $parentId = 0; $closed = "leaf.gif"; $open = "leaf.gif"; $mode = ""; $checked = false; // If we are not rendering an update, we must check items that are marked as default if (is_null($object)) { $checked = $folderClass->getIsDefault(); } // Has him a parent ? if (is_null($folder->getParentId()) == false) { $parentId = $folder->getParentId(); } // If we are rendering an update, we must check items that are marked as it in the Persistence layer if ($object != null) { $checked = $object->isObjectInFolder($folder->getId()); } // Determine images if (count($folder->getChildren()) > 0) { $closed = "folderClosed.gif"; $open = "folderOpen.gif"; } // Create and add the new allowed item $arrayItem = array("id" => $id, "title" => $folder->getTitle(), "parentId" => $parentId, "closed" => $closed, "open" => $open, "mode" => $mode, "checked" => $checked); array_push($allowedFolderArray, $arrayItem); } // Display its children $allowedFolderArray = $this->getFolderArrayRecursive($folder->getChildren(), $class, $allowedFolderArray, $object); } return $allowedFolderArray; }