summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorGregor Tätzner <gregor@freenet.de>2012-08-03 18:25:46 +0200
committerGregor Tätzner <gregor@freenet.de>2012-08-03 18:25:46 +0200
commitfbcac103cf685326f5a873760998672c7f93f039 (patch)
tree5fcdf361a0e90bf2195e9fed5352e80ebfa9bd7d /lib
parent58824771f2bc86f912d39e6485a70ee489bc262a (diff)
Fixed several issues in delete folder functions
Diffstat (limited to 'lib')
-rw-r--r--lib/feedmapper.php56
-rw-r--r--lib/foldermapper.php23
2 files changed, 40 insertions, 39 deletions
diff --git a/lib/feedmapper.php b/lib/feedmapper.php
index 6e3f6080d..274b28bb8 100644
--- a/lib/feedmapper.php
+++ b/lib/feedmapper.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
-*
+*
*/
/**
@@ -26,7 +26,7 @@ class OC_News_FeedMapper {
}
/**
- * @brief
+ * @brief
* @param row a row from the feeds table of the database
* @returns an object of the class OC_News_Feed
*/
@@ -34,9 +34,9 @@ class OC_News_FeedMapper {
}
/**
- * @brief
- * @param userid
- * @returns
+ * @brief
+ * @param userid
+ * @returns
*/
public function findAll(){
$stmt = OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE user_id = ?');
@@ -50,11 +50,11 @@ class OC_News_FeedMapper {
}
return $feeds;
}
-
+
/**
* @brief Retrieve a feed from the database
* @param id The id of the feed in the database table.
- * @returns
+ * @returns
*/
public function findById($id){
$stmt = OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE id = ?');
@@ -69,7 +69,7 @@ class OC_News_FeedMapper {
/**
* @brief Retrieve a feed from the database
* @param id The id of the feed in the database table.
- * @returns
+ * @returns
*/
public function findByFolderId($folderid){
$stmt = OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE folder_id = ?');
@@ -81,17 +81,17 @@ class OC_News_FeedMapper {
$id = $row['id'];
$feed = new OC_News_Feed($url, $title, null, $id);
$favicon = $row['favicon_link'];
- $feed->setFavicon($favicon);
+ $feed->setFavicon($favicon);
$feeds[] = $feed;
}
return $feeds;
}
-
+
/**
* @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 = ?');
@@ -101,19 +101,19 @@ class OC_News_FeedMapper {
$title = $row['title'];
$feed = new OC_News_Feed($url, $title, null,$id);
$favicon = $row['favicon_link'];
- $feed->setFavicon($favicon);
+ $feed->setFavicon($favicon);
$itemMapper = new OC_News_ItemMapper();
$items = $itemMapper->findAll($id);
$feed->setItems($items);
-
+
return $feed;
}
/**
* @brief Find the id of a feed and all its items from the database
* @param url url of the feed
- * @return id of the feed corresponding to the url passed as parameters
- * null - if there is no such feed
+ * @return id of the feed corresponding to the url passed as parameters
+ * null - if there is no such feed
*/
public function findIdFromUrl($url){
$stmt = OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE url = ?');
@@ -125,7 +125,7 @@ class OC_News_FeedMapper {
}
return $id;
}
-
+
public function mostRecent(){
//FIXME: does something like SELECT TOP 1 * exists in pear/mdb2 ??
$stmt = OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' ORDER BY lastmodified');
@@ -179,21 +179,21 @@ class OC_News_FeedMapper {
$this->userid
);
$query->execute($params);
-
+
$feedid = OCP\DB::insertid(self::tableName);
}
$feed->setId($feedid);
$itemMapper = new OC_News_ItemMapper();
-
+
$items = $feed->getItems();
foreach($items as $item){
$itemMapper->save($item, $feedid);
}
-
+
return $feedid;
}
-
+
public function deleteById($id){
if ($id == null) {
return false;
@@ -201,31 +201,31 @@ class OC_News_FeedMapper {
$stmt = OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE id = ?');
$result = $stmt->execute(array($id));
-
+
$itemMapper = new OC_News_ItemMapper();
//TODO: handle the value that the execute returns
$itemMapper->deleteAll($id);
-
+
return true;
}
public function delete(OC_News_Feed $feed){
$id = $feed->getId();
return deleteById($id);
}
-
+
//it's more complicated tan this...recursive delete, or delete with a join
- public function deleteAll($folderdid){
+ public function deleteAll($folderid){
if ($folderid == null) {
return false;
}
$stmt = OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE folder_id = ?');
$result = $stmt->execute(array($folderid));
-
+
$itemMapper = new OC_News_ItemMapper();
//TODO: handle the value that the execute returns
- $itemMapper->deleteAll($id);
-
+ $itemMapper->deleteAll($folderid);
+
return true;
}
} \ No newline at end of file
diff --git a/lib/foldermapper.php b/lib/foldermapper.php
index b875f1369..1e71fea90 100644
--- a/lib/foldermapper.php
+++ b/lib/foldermapper.php
@@ -28,32 +28,30 @@ class OC_News_FolderMapper {
/**
* @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.
+ * @param folder The folder to be populated.
* @returns an instance of OC_News_Folder
*/
- public function populate($name, $id){
- $root = new OC_News_Folder($name, $id);
-
+ public function populate($folder){
// first add child feeds
$feedmapper = new OC_News_FeedMapper();
- $feeds = $feedmapper->findByFolderId($id);
+ $feeds = $feedmapper->findByFolderId($folder->getId());
foreach ($feeds as $feed){
- $root->addChild($feed);
+ $folder->addChild($feed);
}
// and second child folders
$stmt = OCP\DB::prepare('SELECT *
FROM ' . self::tableName .
' WHERE user_id = ? AND parent_id = ?');
- $result = $stmt->execute(array($this->userid, $id));
+ $result = $stmt->execute(array($this->userid, $folder->getId()));
while( $row = $result->fetchRow()){
- $child = self::populate($row['name'], $row['id']);
- $root->addChild($child);
+ $unpopfolder = new OC_News_Folder($row['name'], $row['id']);
+ $popfolder = self::populate($unpopfolder);
+ $folder->addChild($popfolder);
}
- return $root;
+ return $folder;
}
/**
@@ -132,6 +130,9 @@ class OC_News_FolderMapper {
}
//TODO: replace it with a DELETE INNER JOIN operation
+ //Note Brumm: probably not possible, I've tried:
+ // 'DELETE FROM ' . self::tableName .' INNER JOIN ' . OC_News_FeedMapper::tableName .
+ // ' ON (' . self::tableName . '.id = ' . OC_News_FeedMapper::tableName . '.folder_id )')
public function deleteById($folderid){
if ($folderid == null){
return false;