summaryrefslogtreecommitdiffstats
path: root/0004-findAll-All-All.patch
diff options
context:
space:
mode:
Diffstat (limited to '0004-findAll-All-All.patch')
-rw-r--r--0004-findAll-All-All.patch230
1 files changed, 230 insertions, 0 deletions
diff --git a/0004-findAll-All-All.patch b/0004-findAll-All-All.patch
new file mode 100644
index 000000000..24645b60f
--- /dev/null
+++ b/0004-findAll-All-All.patch
@@ -0,0 +1,230 @@
+From 13a5c748036dde6d31c1ed08f92d7a116732b5cd Mon Sep 17 00:00:00 2001
+From: Alessandro Cosentino <cosenal@gmail.com>
+Date: Wed, 20 Mar 2013 23:41:33 +0100
+Subject: [PATCH 4/4] findAll All All
+
+---
+ db/itemmapper.php | 61 +++++++++++++++++++++++-----
+ tests/db/ItemMapperTest.php | 98 +++++++++++++++++++++++++++++++++++----------
+ 2 files changed, 127 insertions(+), 32 deletions(-)
+
+diff --git a/db/itemmapper.php b/db/itemmapper.php
+index 693dbc0..bd223a7 100644
+--- a/db/itemmapper.php
++++ b/db/itemmapper.php
+@@ -3,10 +3,22 @@
+ * ownCloud - News app
+ *
+ * @author Alessandro Cosentino
+-* Copyright (c) 2012 - Alessandro Cosentino <cosenal@gmail.com>
++* @author Bernhard Posselt
++* @copyright 2012 Alessandro Cosentino cosenal@gmail.com
++* @copyright 2012 Bernhard Posselt nukeawhale@gmail.com
+ *
+-* This file is licensed under the Affero General Public License version 3 or later.
+-* See the COPYING-README file
++* This library is free software; you can redistribute it and/or
++* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
++* License as published by the Free Software Foundation; either
++* version 3 of the License, or any later version.
++*
++* This library is distributed in the hope that it will be useful,
++* but WITHOUT ANY WARRANTY; without even the implied warranty of
++* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
++*
++* You should have received a copy of the GNU Affero General Public
++* License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+@@ -36,7 +48,7 @@ class ItemMapper extends NewsMapper {
+
+ return $items;
+ }
+-
++
+ public function findAllFromFeed($feedId, $userId){
+ $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
+ 'WHERE user_id = ? ' .
+@@ -46,17 +58,46 @@ class ItemMapper extends NewsMapper {
+ return $this->findAllRows($sql, $params);
+ }
+
+- public function findAllFromFolder($userId, $folderId, $status){
+- $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
++ public function findAllFromFeedByStatus($feedId, $userId, $status){
++ $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
++ 'WHERE user_id = ? ' .
++ 'AND feed_id = ? ' .
++ 'AND ((`*dbprefix*news_items`.`status` & ?) > 0)';
++
++ $params = array($feedId, $userId, $status);
++ return $this->findAllRows($sql, $params);
++ }
++
++
++ public function findAllFromFolder($userId, $folderId){
++ $sql = $this->makeFindAllFromFolderQuery('');
++ $params = array($userId, $folderId);
++ return $this->findAllRows($sql, $params);
++ }
++
++ public function findAllFromFolderByStatus($userId, $folderId, $status){
++ $sql = $this->makeFindAllFromFolderQuery('AND ((`*dbprefix*news_items`.`status` & ?) > 0)');
++ $params = array($userId, $folderId, $status);
++ return $this->findAllRows($sql, $params);
++ }
++
++ public function findAllFromFolderByLastMofified($userId, $folderId, $lastModified){
++ $sql = $this->makeFindAllFromFolderQuery('AND `*dbprefix*news_items`.last_modified >= ? ');
++ $params = array($userId, $folderId, $lastModified);
++ return $this->findAllRows($sql, $params);
++ }
++
++ private function makeFindAllFromFolderQuery($custom) {
++ return 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
+ 'JOIN `*dbprefix*news_feeds` ' .
+ 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
+ 'WHERE `*dbprefix*news_feeds`.`user_id` = ? ' .
+ 'AND `*dbprefix*news_feeds`.`folder_id` = ? ' .
+- 'AND ((`*dbprefix*news_items`.`status` & ?) > 0)';
+-
+- $params = array($userId, $folderId, $status);
+- return $this->findAllRows($sql, $params);
++ $custom;
+ }
++
++
++
+ /*
+ request: get all items of a folder of a user (unread and read)
+ SELECT * FROM items
+diff --git a/tests/db/ItemMapperTest.php b/tests/db/ItemMapperTest.php
+index eba9175..983bfc9 100644
+--- a/tests/db/ItemMapperTest.php
++++ b/tests/db/ItemMapperTest.php
+@@ -48,26 +48,6 @@ class ItemMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility {
+ );
+ }
+
+-
+- public function testFindAllFromFeed(){
+- $userId = 'john';
+- $feedId = 3;
+- $rows = array(
+- array('id' => $this->items[0]->getId()),
+- array('id' => $this->items[1]->getId())
+- );
+- $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
+- 'WHERE user_id = ? ' .
+- 'AND feed_id = ?';
+-
+- $this->setMapperResult($sql, array($feedId, $userId), $rows);
+-
+- $result = $this->itemMapper->findAllFromFeed($feedId, $userId);
+-
+- $this->assertEquals($this->items, $result);
+-
+- }
+-
+ public function testFind(){
+ $userId = 'john';
+ $id = 3;
+@@ -122,8 +102,64 @@ class ItemMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility {
+ $result = $this->itemMapper->find($id, $userId);
+ }
+
++ public function testFindAllFromFeed(){
++ $userId = 'john';
++ $feedId = 3;
++ $rows = array(
++ array('id' => $this->items[0]->getId()),
++ array('id' => $this->items[1]->getId())
++ );
++ $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
++ 'WHERE user_id = ? ' .
++ 'AND feed_id = ?';
++
++ $this->setMapperResult($sql, array($feedId, $userId), $rows);
++ $result = $this->itemMapper->findAllFromFeed($feedId, $userId);
++ $this->assertEquals($this->items, $result);
++
++ }
+
+- public function FindAllFromFolder() {
++ public function testFindAllFromFeedByStatus(){
++ $userId = 'john';
++ $feedId = 3;
++ $status = 2;
++ $rows = array(
++ array('id' => $this->items[0]->getId()),
++ array('id' => $this->items[1]->getId())
++ );
++ $sql = 'SELECT * FROM `*PREFIX*news_items` ' .
++ 'WHERE user_id = ? ' .
++ 'AND feed_id = ? ' .
++ 'AND ((`*dbprefix*news_items`.`status` & ?) > 0)';
++
++ $this->setMapperResult($sql, array($feedId, $userId, $status), $rows);
++ $result = $this->itemMapper->findAllFromFeedByStatus($feedId, $userId, $status);
++ $this->assertEquals($this->items, $result);
++
++ }
++
++ public function testFindAllFromFolder() {
++ $userId = 'john';
++ $folderId = 3;
++
++ $rows = array(
++ array('id' => $this->items[0]->getId()),
++ array('id' => $this->items[1]->getId())
++ );
++
++ $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
++ 'JOIN `*dbprefix*news_feeds` ' .
++ 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
++ 'WHERE `*dbprefix*news_feeds`.`user_id` = ? ' .
++ 'AND `*dbprefix*news_feeds`.`folder_id` = ? ';
++
++ $this->setMapperResult($sql, array($userId, $folderId), $rows);
++ $result = $this->itemMapper->findAllFromFolder($userId, $folderId);
++ $this->assertEquals($this->items, $result);
++
++ }
++
++ public function testFindAllFromFolderByStatus() {
+ $userId = 'john';
+ $folderId = 3;
+ $status = 2;
+@@ -135,7 +171,25 @@ class ItemMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility {
+ 'AND ((`*dbprefix*news_items`.`status` & ?) > 0)';
+
+ $this->setMapperResult($sql, array($userId, $folderId, $status));
+- $result = $this->itemMapper->findAllFromFolder($userId, $folderId, $status);
++ $result = $this->itemMapper->findAllFromFolderByStatus($userId, $folderId, $status);
+
+ }
++
++ public function testFindAllFromFolderByLastModified() {
++ $userId = 'john';
++ $folderId = 3;
++ $lastModified = 123;
++
++ $sql = 'SELECT `*dbprefix*news_items`.* FROM `*dbprefix*news_items` ' .
++ 'JOIN `*dbprefix*news_feeds` ' .
++ 'ON `*dbprefix*news_feeds`.`id` = `*dbprefix*news_items`.`feed_id` ' .
++ 'WHERE `*dbprefix*news_feeds`.`user_id` = ? ' .
++ 'AND `*dbprefix*news_feeds`.`folder_id` = ? ' .
++ 'AND `*dbprefix*news_items`.last_modified >= ? ';
++
++ $this->setMapperResult($sql, array($userId, $folderId, $lastModified));
++ $result = $this->itemMapper->findAllFromFolderByLastMofified($userId, $folderId, $lastModified);
++ }
++
++
+ }
+\ No newline at end of file
+--
+1.8.2
+