summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAlessandro Cosentino <cosenal@gmail.com>2012-07-08 14:35:01 -0400
committerAlessandro Cosentino <cosenal@gmail.com>2012-07-08 14:35:01 -0400
commit0b4106fab98ab3018601b2d6d51ffb36ffcbc411 (patch)
treec770ce0d34aa4391df716759c0f47cac1a60ec4a /lib
parent3eab4c8e901166e94953d430d3cb0f7fd5d79c39 (diff)
parent70537725190ed54a4c3cc6a1d603cf3d1582a117 (diff)
merging merge-requests7
Diffstat (limited to 'lib')
-rw-r--r--lib/foldermapper.php68
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