/** * Creates a tree of a flat array of {@link Folder}s or {@link SimpleFolder}s. * @param array $folders An array of {@link Folder}s or {@link SimpleFolder}s. May be mixed. * @throws FolderException Thrown if an error occurs while building the folder tree. * @author Björn Hjortsten * @return array An array of top level {@link Folder}s. */ public static function createTree(array $folders) { usort($folders, array('Kaigan\\QBank2\\API\\Model\\SimpleFolder', 'compareByTree')); $tree = array(); $shortestTree = Folder::getShortestTree($folders); foreach ($folders as $folder) { if ($folder instanceof SimpleFolder) { $folder = Folder::createFromSimpleFolder($folder); } try { Folder::addToTree($tree, $folder, $shortestTree); } catch (FolderException $fe) { trigger_error($fe->getMessage(), E_USER_WARNING); } } return $tree; }