summaryrefslogtreecommitdiffstats
path: root/db
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-10-21 16:45:36 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-10-21 16:45:36 +0200
commit42d69a95f3276a2d6089ca68f635c4e2f6aa7a23 (patch)
tree6a17fd7998f291e6dec1d996c1e7c724b92b8e58 /db
parent0e6598b0734fb927109f745d9c0f3a8605a30ca5 (diff)
convert tabs indention to indention with 4 spaces because of mixing of both variants in code and better readability on github and websites because you cant set the indention width there and 8 spaces will be used for a tab
Diffstat (limited to 'db')
-rw-r--r--db/entityjsonserializer.php14
-rw-r--r--db/feed.php176
-rw-r--r--db/feedmapper.php304
-rw-r--r--db/feedtype.php10
-rw-r--r--db/folder.php60
-rw-r--r--db/foldermapper.php168
-rw-r--r--db/iapi.php2
-rw-r--r--db/item.php342
-rw-r--r--db/itemmapper.php538
-rw-r--r--db/mapperfactory.php34
-rw-r--r--db/newsmapper.php2
-rw-r--r--db/postgres/itemmapper.php88
-rw-r--r--db/statusflag.php48
13 files changed, 893 insertions, 893 deletions
diff --git a/db/entityjsonserializer.php b/db/entityjsonserializer.php
index 7e3357304..c0d946452 100644
--- a/db/entityjsonserializer.php
+++ b/db/entityjsonserializer.php
@@ -16,13 +16,13 @@ namespace OCA\News\Db;
trait EntityJSONSerializer {
- public function serializeFields($properties) {
- $result = [];
- foreach($properties as $property) {
- $result[$property] = $this->$property;
- }
- return $result;
- }
+ public function serializeFields($properties) {
+ $result = [];
+ foreach($properties as $property) {
+ $result[$property] = $this->$property;
+ }
+ return $result;
+ }
} \ No newline at end of file
diff --git a/db/feed.php b/db/feed.php
index c5b76656e..0f5a9ba47 100644
--- a/db/feed.php
+++ b/db/feed.php
@@ -43,94 +43,94 @@ use \OCP\AppFramework\Db\Entity;
*/
class Feed extends Entity implements IAPI, \JsonSerializable {
- use EntityJSONSerializer;
-
- protected $userId;
- protected $urlHash;
- protected $url;
- protected $title;
- protected $faviconLink;
- protected $added;
- protected $folderId;
- protected $unreadCount;
- protected $link;
- protected $preventUpdate;
- protected $deletedAt;
- protected $articlesPerUpdate;
-
- public function __construct(){
- $this->addType('parentId', 'integer');
- $this->addType('added', 'integer');
- $this->addType('folderId', 'integer');
- $this->addType('unreadCount', 'integer');
- $this->addType('preventUpdate', 'boolean');
- $this->addType('deletedAt', 'integer');
- $this->addType('articlesPerUpdate', 'integer');
- }
-
-
- /**
- * Turns entitie attributes into an array
- */
- public function jsonSerialize() {
- $serialized = $this->serializeFields([
- 'id',
- 'userId',
- 'urlHash',
- 'url',
- 'title',
- 'faviconLink',
- 'added',
- 'folderId',
- 'unreadCount',
- 'link',
- 'preventUpdate',
- 'deletedAt',
- 'articlesPerUpdate',
- ]);
-
- $url = parse_url($this->link)['host'];
-
- // strip leading www. to avoid css class confusion
- if (strpos($url, 'www.') === 0) {
- $url = substr($url, 4);
- }
-
- $serialized['cssClass'] = 'custom-' . str_replace('.', '-', $url);
-
- return $serialized;
- }
-
-
- public function toAPI() {
- return $this->serializeFields([
- 'id',
- 'url',
- 'title',
- 'faviconLink',
- 'added',
- 'folderId',
- 'unreadCount',
- 'link'
- ]);
- }
-
-
- public function setUrl($url) {
- $url = trim($url);
- if(strpos($url, 'http') === 0) {
- parent::setUrl($url);
- $this->setUrlHash(md5($url));
- }
- }
-
-
- public function setLink($url) {
- $url = trim($url);
- if(strpos($url, 'http') === 0) {
- parent::setLink($url);
- }
- }
+ use EntityJSONSerializer;
+
+ protected $userId;
+ protected $urlHash;
+ protected $url;
+ protected $title;
+ protected $faviconLink;
+ protected $added;
+ protected $folderId;
+ protected $unreadCount;
+ protected $link;
+ protected $preventUpdate;
+ protected $deletedAt;
+ protected $articlesPerUpdate;
+
+ public function __construct(){
+ $this->addType('parentId', 'integer');
+ $this->addType('added', 'integer');
+ $this->addType('folderId', 'integer');
+ $this->addType('unreadCount', 'integer');
+ $this->addType('preventUpdate', 'boolean');
+ $this->addType('deletedAt', 'integer');
+ $this->addType('articlesPerUpdate', 'integer');
+ }
+
+
+ /**
+ * Turns entitie attributes into an array
+ */
+ public function jsonSerialize() {
+ $serialized = $this->serializeFields([
+ 'id',
+ 'userId',
+ 'urlHash',
+ 'url',
+ 'title',
+ 'faviconLink',
+ 'added',
+ 'folderId',
+ 'unreadCount',
+ 'link',
+ 'preventUpdate',
+ 'deletedAt',
+ 'articlesPerUpdate',
+ ]);
+
+ $url = parse_url($this->link)['host'];
+
+ // strip leading www. to avoid css class confusion
+ if (strpos($url, 'www.') === 0) {
+ $url = substr($url, 4);
+ }
+
+ $serialized['cssClass'] = 'custom-' . str_replace('.', '-', $url);
+
+ return $serialized;
+ }
+
+
+ public function toAPI() {
+ return $this->serializeFields([
+ 'id',
+ 'url',
+ 'title',
+ 'faviconLink',
+ 'added',
+ 'folderId',
+ 'unreadCount',
+ 'link'
+ ]);
+ }
+
+
+ public function setUrl($url) {
+ $url = trim($url);
+ if(strpos($url, 'http') === 0) {
+ parent::setUrl($url);
+ $this->setUrlHash(md5($url));
+ }
+ }
+
+
+ public function setLink($url) {
+ $url = trim($url);
+ if(strpos($url, 'http') === 0) {
+ parent::setLink($url);
+ }
+ }
} \ No newline at end of file
diff --git a/db/feedmapper.php b/db/feedmapper.php
index b913288a6..ab55c6f1b 100644
--- a/db/feedmapper.php
+++ b/db/feedmapper.php
@@ -20,158 +20,158 @@ use \OCP\AppFramework\Db\Entity;
class FeedMapper extends NewsMapper {
- public function __construct(IDb $db) {
- parent::__construct($db, 'news_feeds', '\OCA\News\Db\Feed');
- }
-
-
- public function find($id, $userId){
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- // WARNING: this is a desperate attempt at making this query work
- // because prepared statements dont work. This is a possible
- // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
- // think twice when changing this
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`id` = ? ' .
- 'AND `feeds`.`user_id` = ? ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $params = [$id, $userId];
-
- return $this->findEntity($sql, $params);
- }
-
-
- public function findAllFromUser($userId){
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT OUTER JOIN `*PREFIX*news_folders` `folders` '.
- 'ON `feeds`.`folder_id` = `folders`.`id` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- // WARNING: this is a desperate attempt at making this query work
- // because prepared statements dont work. This is a possible
- // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
- // think twice when changing this
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`user_id` = ? ' .
- 'AND (`feeds`.`folder_id` = 0 ' .
- 'OR `folders`.`deleted_at` = 0' .
- ')' .
- 'AND `feeds`.`deleted_at` = 0 ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $params = [$userId];
-
- return $this->findEntities($sql, $params);
- }
-
-
- public function findAll(){
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT OUTER JOIN `*PREFIX*news_folders` `folders` '.
- 'ON `feeds`.`folder_id` = `folders`.`id` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- // WARNING: this is a desperate attempt at making this query work
- // because prepared statements don't work. This is a possible
- // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
- // think twice when changing this
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE (`feeds`.`folder_id` = 0 ' .
- 'OR `folders`.`deleted_at` = 0' .
- ')' .
- 'AND `feeds`.`deleted_at` = 0 ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
-
- return $this->findEntities($sql);
- }
-
-
- public function findByUrlHash($hash, $userId){
- $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
- 'FROM `*PREFIX*news_feeds` `feeds` ' .
- 'LEFT JOIN `*PREFIX*news_items` `items` ' .
- 'ON `feeds`.`id` = `items`.`feed_id` ' .
- // WARNING: this is a desperate attempt at making this query work
- // because prepared statements dont work. This is a possible
- // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
- // think twice when changing this
- 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
- StatusFlag::UNREAD . ' ' .
- 'WHERE `feeds`.`url_hash` = ? ' .
- 'AND `feeds`.`user_id` = ? ' .
- 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
- '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
- '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
- '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
- $params = [$hash, $userId];
-
- return $this->findEntity($sql, $params);
- }
-
-
- public function delete(Entity $entity){
- parent::delete($entity);
-
- // someone please slap me for doing this manually :P
- // we needz CASCADE + FKs please
- $sql = 'DELETE FROM `*PREFIX*news_items` WHERE `feed_id` = ?';
- $params = [$entity->getId()];
- $this->execute($sql, $params);
- }
-
-
- /**
- * @param int $deleteOlderThan if given gets all entries with a delete date
- * older than that timestamp
- * @param string $userId if given returns only entries from the given user
- * @return array with the database rows
- */
- public function getToDelete($deleteOlderThan=null, $userId=null) {
- $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' .
- 'WHERE `deleted_at` > 0 ';
- $params = [];
-
- // sometimes we want to delete all entries
- if ($deleteOlderThan !== null) {
- $sql .= 'AND `deleted_at` < ? ';
- $params[] = $deleteOlderThan;
- }
-
- // we need to sometimes only delete feeds of a user
- if($userId !== null) {
- $sql .= 'AND `user_id` = ?';
- $params[] = $userId;
- }
-
- return $this->findEntities($sql, $params);
- }
-
-
- /**
- * Deletes all feeds of a user, delete items first since the user_id
- * is not defined in there
- * @param string $userId the name of the user
- */
- public function deleteUser($userId) {
- $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `user_id` = ?';
- $this->execute($sql, [$userId]);
- }
+ public function __construct(IDb $db) {
+ parent::__construct($db, 'news_feeds', '\OCA\News\Db\Feed');
+ }
+
+
+ public function find($id, $userId){
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ // WARNING: this is a desperate attempt at making this query work
+ // because prepared statements dont work. This is a possible
+ // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
+ // think twice when changing this
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`id` = ? ' .
+ 'AND `feeds`.`user_id` = ? ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $params = [$id, $userId];
+
+ return $this->findEntity($sql, $params);
+ }
+
+
+ public function findAllFromUser($userId){
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT OUTER JOIN `*PREFIX*news_folders` `folders` '.
+ 'ON `feeds`.`folder_id` = `folders`.`id` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ // WARNING: this is a desperate attempt at making this query work
+ // because prepared statements dont work. This is a possible
+ // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
+ // think twice when changing this
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`user_id` = ? ' .
+ 'AND (`feeds`.`folder_id` = 0 ' .
+ 'OR `folders`.`deleted_at` = 0' .
+ ')' .
+ 'AND `feeds`.`deleted_at` = 0 ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $params = [$userId];
+
+ return $this->findEntities($sql, $params);
+ }
+
+
+ public function findAll(){
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT OUTER JOIN `*PREFIX*news_folders` `folders` '.
+ 'ON `feeds`.`folder_id` = `folders`.`id` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ // WARNING: this is a desperate attempt at making this query work
+ // because prepared statements don't work. This is a possible
+ // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
+ // think twice when changing this
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE (`feeds`.`folder_id` = 0 ' .
+ 'OR `folders`.`deleted_at` = 0' .
+ ')' .
+ 'AND `feeds`.`deleted_at` = 0 ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+
+ return $this->findEntities($sql);
+ }
+
+
+ public function findByUrlHash($hash, $userId){
+ $sql = 'SELECT `feeds`.*, COUNT(`items`.`id`) AS `unread_count` ' .
+ 'FROM `*PREFIX*news_feeds` `feeds` ' .
+ 'LEFT JOIN `*PREFIX*news_items` `items` ' .
+ 'ON `feeds`.`id` = `items`.`feed_id` ' .
+ // WARNING: this is a desperate attempt at making this query work
+ // because prepared statements dont work. This is a possible
+ // SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
+ // think twice when changing this
+ 'AND (`items`.`status` & ' . StatusFlag::UNREAD . ') = ' .
+ StatusFlag::UNREAD . ' ' .
+ 'WHERE `feeds`.`url_hash` = ? ' .
+ 'AND `feeds`.`user_id` = ? ' .
+ 'GROUP BY `feeds`.`id`, `feeds`.`user_id`, `feeds`.`url_hash`,'.
+ '`feeds`.`url`, `feeds`.`title`, `feeds`.`link`,'.
+ '`feeds`.`favicon_link`, `feeds`.`added`, `feeds`.`articles_per_update`,'.
+ '`feeds`.`folder_id`, `feeds`.`prevent_update`, `feeds`.`deleted_at`';
+ $params = [$hash, $userId];
+
+ return $this->findEntity($sql, $params);
+ }
+
+
+ public function delete(Entity $entity){
+ parent::delete($entity);
+
+ // someone please slap me for doing this manually :P
+ // we needz CASCADE + FKs please
+ $sql = 'DELETE FROM `*PREFIX*news_items` WHERE `feed_id` = ?';
+ $params = [$entity->getId()];
+ $this->execute($sql, $params);
+ }
+
+
+ /**
+ * @param int $deleteOlderThan if given gets all entries with a delete date
+ * older than that timestamp
+ * @param string $userId if given returns only entries from the given user
+ * @return array with the database rows
+ */
+ public function getToDelete($deleteOlderThan=null, $userId=null) {
+ $sql = 'SELECT * FROM `*PREFIX*news_feeds` ' .
+ 'WHERE `deleted_at` > 0 ';
+ $params = [];
+
+ // sometimes we want to delete all entries
+ if ($deleteOlderThan !== null) {
+ $sql .= 'AND `deleted_at` < ? ';
+ $params[] = $deleteOlderThan;
+ }
+
+ // we need to sometimes only delete feeds of a user
+ if($userId !== null) {
+ $sql .= 'AND `user_id` = ?';
+ $params[] = $userId;
+ }
+
+ return $this->findEntities($sql, $params);
+ }
+
+
+ /**
+ * Deletes all feeds of a user, delete items first since the user_id
+ * is not defined in there
+ * @param string $userId the name of the user
+ */
+ public function deleteUser($userId) {
+ $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `user_id` = ?';
+ $this->execute($sql, [$userId]);
+ }
}
diff --git a/db/feedtype.php b/db/feedtype.php
index 2539214ed..d43948a3c 100644
--- a/db/feedtype.php
+++ b/db/feedtype.php
@@ -15,9 +15,9 @@ namespace OCA\News\Db;
class FeedType {
- const FEED = 0;
- const FOLDER = 1;
- const STARRED = 2;
- const SUBSCRIPTIONS = 3;
- const SHARED = 4;
+ const FEED = 0;
+ const FOLDER = 1;
+ const STARRED = 2;
+ const SUBSCRIPTIONS = 3;
+ const SHARED = 4;
}; \ No newline at end of file
diff --git a/db/folder.php b/db/folder.php
index d5f50685f..6d4af1aa3 100644
--- a/db/folder.php
+++ b/db/folder.php
@@ -31,38 +31,38 @@ use \OCP\AppFramework\Db\Entity;
*/
class Folder extends Entity implements IAPI, \JsonSerializable {
- use EntityJSONSerializer;
+ use EntityJSONSerializer;
- protected $parentId;
- protected $name;
- protected $userId;
- protected $opened;
- protected $deletedAt;
+ protected $parentId;
+ protected $name;
+ protected $userId;
+ protected $opened;
+ protected $deletedAt;
- public function __construct(){
- $this->addType('parentId', 'integer');
- $this->addType('opened', 'boolean');
- $this->addType('deletedAt', 'integer');
- }
+ public function __construct(){
+ $this->addType('parentId', 'integer');
+ $this->addType('opened', 'boolean');
+ $this->addType('deletedAt', 'integer');
+ }
- /**
- * Turns entitie attributes into an array
- */
- public function jsonSerialize() {
- return $this->serializeFields([
- 'id',
- 'parentId',
- 'name',
- 'userId',
- 'opened',
- 'deletedAt',
- ]);
- }
+ /**
+ * Turns entitie attributes into an array
+ */
+ public function jsonSerialize() {
+ return $this->serializeFields([
+ 'id',
+ 'parentId',
+ 'name',
+ 'userId',
+ 'opened',
+ 'deletedAt',
+ ]);
+ }
- public function toAPI() {
- return $this->serializeFields([
- 'id',
- 'name'
- ]);
- }
+ public function toAPI() {
+ return $this->serializeFields([
+ 'id',
+ 'name'
+ ]);
+ }
} \ No newline at end of file
diff --git a/db/foldermapper.php b/db/foldermapper.php
index 2c4d2aca5..bce599b45 100644
--- a/db/foldermapper.php
+++ b/db/foldermapper.php
@@ -18,90 +18,90 @@ use \OCP\AppFramework\Db\Entity;
class FolderMapper extends NewsMapper {
- public function __construct(IDb $db) {
- parent::__construct($db, 'news_folders', '\OCA\News\Db\Folder');
- }
-
- public function find($id, $userId){
- $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
- 'WHERE `id` = ? ' .
- 'AND `user_id` = ?';
-
- return $this->findEntity($sql, [$id, $userId]);
- }
-
-
- public function findAllFromUser($userId){
- $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
- 'WHERE `user_id` = ? ' .
- 'AND `deleted_at` = 0';
- $params = [$userId];
-
- return $this->findEntities($sql, $params);
- }
-
-
- public function findByName($folderName, $userId){
- $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
- 'WHERE `name` = ? ' .
- 'AND `user_id` = ?';
- $params = [$folderName, $userId];
-
- return $this->findEntities($sql, $params);
- }
-
-
- public function delete(Entity $entity){
- parent::delete($entity);
-
- // someone please slap me for doing this manually :P
- // we needz CASCADE + FKs please
- $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `folder_id` = ?';
- $params = [$entity->getId()];
- $this->execute($sql, $params);
-
- $sql = 'DELETE FROM `*PREFIX*news_items` WHERE `feed_id` NOT IN '.
- '(SELECT `feeds`.`id` FROM `*PREFIX*news_feeds` `feeds`)';
-
- $this->execute($sql);
- }
-
-
- /**
- * @param int $deleteOlderThan if given gets all entries with a delete date
- * older than that timestamp
- * @param string $userId if given returns only entries from the given user
- * @return array with the database rows
- */
- public function getToDelete($deleteOlderThan=null, $userId=null) {
- $sql = 'SELECT * FROM `*PREFIX*news_folders` ' .
- 'WHERE `deleted_at` > 0 ';
- $params = [];
-
- // sometimes we want to delete all entries
- if ($deleteOlderThan !== null) {
- $sql .= 'AND `deleted_at` <