diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/feedmapper.php | 10 | ||||
-rw-r--r-- | lib/foldermapper.php | 79 |
2 files changed, 45 insertions, 44 deletions
diff --git a/lib/feedmapper.php b/lib/feedmapper.php index 3d11ff0e6..df310730d 100644 --- a/lib/feedmapper.php +++ b/lib/feedmapper.php @@ -80,13 +80,13 @@ class FeedMapper { } /** - * @brief Retrieve a feed from the database - * @param id The id of the feed in the database table. - * @returns an instance of OC_News_Feed + * @brief Retrieve all the feeds contained in the folder $folderid + * @param folderid The id of the folder in the database table. + * @returns a list of feeds */ public function findByFolderId($folderid){ - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE folder_id = ?'); - $result = $stmt->execute(array($folderid)); + $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE user_id = ? AND folder_id = ?'); + $result = $stmt->execute(array($this->userid, $folderid)); $feeds = array(); while ($row = $result->fetchRow()) { $url = $row['url']; diff --git a/lib/foldermapper.php b/lib/foldermapper.php index cf22b55b7..7fb8aa9af 100644 --- a/lib/foldermapper.php +++ b/lib/foldermapper.php @@ -29,33 +29,54 @@ class FolderMapper { } /** - * @brief Create a folder and populate with children from the database - * @param folder The folder to be populated. - * @returns an instance of OC_News_Folder + * @brief Returns the forest (list of trees) of folders children of $parentid + * @param + * @returns */ - public function populate($folder){ - // first add child feeds - $feedmapper = new FeedMapper(); - $feeds = $feedmapper->findByFolderId($folder->getId()); - foreach ($feeds as $feed){ - $folder->addChild($feed); + public function childrenOf($parentid) { + $folderlist = array(); + $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . + ' WHERE user_id = ? AND parent_id = ?'); + $result = $stmt->execute(array($this->userid, $parentid)); + + while( $row = $result->fetchRow()){ + $folderid = $row['id']; + $folder = new Folder($row['name'], $folderid); + $children = self::childrenOf($folderid); + $folder->addChildren($children); + $folderlist[] = $folder; } + + return $folderlist; + } - // and second child folders - $stmt = \OCP\DB::prepare('SELECT * - FROM ' . self::tableName . + /** + * @brief Returns the forest (list of trees) of folders children of $parentid, + * including the feeds that they contain + * @param + * @returns + */ + public function childrenOfWithFeeds($parentid) { + + $feedmapper = new FeedMapper(); + $collectionlist = $feedmapper->findByFolderId($parentid); + + $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE user_id = ? AND parent_id = ?'); - $result = $stmt->execute(array($this->userid, $folder->getId())); - + $result = $stmt->execute(array($this->userid, $parentid)); + while( $row = $result->fetchRow()){ - $unpopfolder = new Folder($row['name'], $row['id']); - $popfolder = self::populate($unpopfolder); - $folder->addChild($popfolder); + $folderid = $row['id']; + $folder = new Folder($row['name'], $folderid); + $children = self::childrenOf($folderid); + $folder->addChildren($children); + $collectionlist[] = $folder; } - - return $folder; + + return $collectionlist; } + /** * @brief Retrieve a folder from the database * @param id The id of the folder in the database table. @@ -74,26 +95,6 @@ class FolderMapper { } /** - * @brief Retrieve a feed and all its items from the database - * @param id The id of the feed in the database table. - * @returns - */ - public function findWithItems($id){ - $stmt = \OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE id = ?'); - $result = $stmt->execute(array($id)); - $row = $result->fetchRow(); - $url = $row['url']; - $title = $row['title']; - $feed = new Feed($url, $title, null,$id); - - $itemMapper = new ItemMapper($feed); - $items = $itemMapper->findAll(); - $feed->setItems($items); - - return $feed; - } - - /** * @brief Store the folder and all its feeds into the database * @param folder the folder to be saved * @returns The id of the folder in the database table. |