summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorGregor Tätzner <gregor@freenet.de>2012-08-03 23:32:35 +0200
committerGregor Tätzner <gregor@freenet.de>2012-08-03 23:32:35 +0200
commit7ebeeacf49a2d00d90a15d2eb359e1fb1c6b7715 (patch)
tree8a7cbc1eb42d6c2d21024f5fa21fc39609730f1f /lib
parentfbcac103cf685326f5a873760998672c7f93f039 (diff)
Fixed deletion of feed items on folder removal
Diffstat (limited to 'lib')
-rw-r--r--lib/feedmapper.php18
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/feedmapper.php b/lib/feedmapper.php
index 274b28bb8..4e3987a17 100644
--- a/lib/feedmapper.php
+++ b/lib/feedmapper.php
@@ -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 an instance of OC_News_Feed
*/
public function findByFolderId($folderid){
$stmt = OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE folder_id = ?');
@@ -91,7 +91,7 @@ class OC_News_FeedMapper {
/**
* @brief Retrieve a feed and all its items from the database
* @param id The id of the feed in the database table.
- * @returns
+ * @returns an instance of OC_News_Feed
*/
public function findWithItems($id){
$stmt = OCP\DB::prepare('SELECT * FROM ' . self::tableName . ' WHERE id = ?');
@@ -218,13 +218,21 @@ class OC_News_FeedMapper {
if ($folderid == null) {
return false;
}
- $stmt = OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE folder_id = ?');
+
+ // delete items
+ $itemMapper = new OC_News_ItemMapper();
+ $stmt = OCP\DB::prepare('SELECT ' . self::tableName . '.id FROM ' . self::tableName .' INNER JOIN ' . OC_News_ItemMapper::tableName .
+ ' ON ' . self::tableName . '.id = ' . OC_News_ItemMapper::tableName . '.feed_id WHERE folder_id = ?');
$result = $stmt->execute(array($folderid));
+ while ($row = $result->fetchRow()) {
+ $itemMapper->deleteAll($row['id']);
+ }
- $itemMapper = new OC_News_ItemMapper();
+ // delete feeds
+ $stmt = OCP\DB::prepare('DELETE FROM ' . self::tableName .' WHERE folder_id = ?');
+ $result = $stmt->execute(array($folderid));
//TODO: handle the value that the execute returns
- $itemMapper->deleteAll($folderid);
return true;
}