diff options
Diffstat (limited to 'lib/foldermapper.php')
-rw-r--r-- | lib/foldermapper.php | 68 |
1 files changed, 36 insertions, 32 deletions
diff --git a/lib/foldermapper.php b/lib/foldermapper.php index 79115ec56..45dc53c42 100644 --- a/lib/foldermapper.php +++ b/lib/foldermapper.php @@ -4,10 +4,10 @@ * * @author Alessandro Cosentino * Copyright (c) 2012 - Alessandro Cosentino <cosenal@gmail.com> -* +* * This file is licensed under the Affero General Public License version 3 or later. * See the COPYING-README file -* +* */ /** @@ -16,7 +16,7 @@ class OC_News_FolderMapper { const tableName = '*PREFIX*news_folders'; - + private $userid; public function __construct($userid = null){ @@ -25,51 +25,55 @@ class OC_News_FolderMapper { } $userid = OCP\USER::getUser(); } - - public function root(){ - $root = new OC_News_Folder('All feeds'); - $stmt = OCP\DB::prepare('SELECT * - FROM ' . self::tableName . + + /** + * @brief Create a folder and populate with children from the database + * @param id The id of the folder. + * @param name The name of the folder. + * @returns an instance of OC_News_Folder + */ + public function populate($name, $id){ + $root = new OC_News_Folder($name, $id); + $stmt = OCP\DB::prepare('SELECT * + FROM ' . self::tableName . ' WHERE user_id = ? AND parent_id = ?'); - $result = $stmt->execute(array($this->userid, 0)); - + $result = $stmt->execute(array($this->userid, $id)); + while( $row = $result->fetchRow()){ - $child = new OC_News_Folder($row['name'], $row['id']); + $child = OC_News_FolderMapper::populate($row['name'], $row['id']); $root->addChild($child); } - + $feedmapper = new OC_News_FeedMapper(); - $feeds = $feedmapper->findByFolderId(0); + $feeds = $feedmapper->findByFolderId($id); foreach ($feeds as $feed){ $root->addChild($feed); } - + return $root; } - + /** * @brief Retrieve a folder from the database * @param id The id of the folder in the database table. * @returns an instance of OC_News_Folder */ public function find($id){ - $stmt = OCP\DB::prepare('SELECT * - FROM ' . self::tableName . + $stmt = OCP\DB::prepare('SELECT * + FROM ' . self::tableName . ' WHERE user_id = ? AND id = ?'); - $result = $stmt->execute(array($this->userid, 0)); - - while( $row = $result->fetchRow()){ - $child = new OC_News_Folder($row['name'], $row['id']); - $root->addChild($child); - } + $result = $stmt->execute(array($this->userid, $id)); - return $root; + $row = $result->fetchRow(); + $folder = new OC_News_Folder($row['name'], $row['id']); + + return $folder; } /** * @brief Retrieve a feed and all its items from the database * @param id The id of the feed in the database table. - * @returns + * @returns */ public function findWithItems($id){ $stmt = OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE id = ?'); @@ -82,7 +86,7 @@ class OC_News_FolderMapper { $itemMapper = new OC_News_ItemMapper($feed); $items = $itemMapper->findAll(); $feed->setItems($items); - + return $feed; } @@ -97,7 +101,7 @@ class OC_News_FolderMapper { '(name, parent_id, user_id) VALUES (?, ?, ?) '); - + $name = $folder->getName(); if(empty($name)) { @@ -118,12 +122,12 @@ class OC_News_FolderMapper { $folder->setId($folderid); return $folderid; } - + public function delete(OC_News_Folder $folder){ $folderid = $folder->getId(); return deleteById(folderid); } - + //TODO: replace it with a DELETE INNER JOIN operation public function deleteById($folderid){ if ($folderid == null){ @@ -133,12 +137,12 @@ class OC_News_FolderMapper { $stmt = OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE id = ?'); $result = $stmt->execute(array($folderid)); - + $feedMapper = new OC_News_FeedMapper(); //TODO: handle the value that the execute returns $feedMapper->deleteAll($folderid); - + return true; } - + }
\ No newline at end of file |