. * */ namespace OCA\News\Db; use \OCA\AppFramework\Core\API; use \OCA\AppFramework\Db\Mapper; use \OCA\AppFramework\Db\Entity; class FolderMapper extends Mapper implements IMapper { public function __construct(API $api) { parent::__construct($api, 'news_folders'); } public function find($id, $userId){ $sql = 'SELECT * FROM `*PREFIX*news_folders` ' . 'WHERE `id` = ? ' . 'AND `user_id` = ?'; $row = $this->findOneQuery($sql, array($id, $userId)); $folder = new Folder(); $folder->fromRow($row); return $folder; } private function findAllRows($sql, $params=array()){ $result = $this->execute($sql, $params); $folders = array(); while($row = $result->fetchRow()){ $folder = new Folder(); $folder->fromRow($row); array_push($folders, $folder); } return $folders; } public function findAllFromUser($userId){ $sql = 'SELECT * FROM `*PREFIX*news_folders` ' . 'WHERE `user_id` = ?'; $params = array($userId); return $this->findAllRows($sql, $params); } public function findByName($folderName, $userId){ $sql = 'SELECT * FROM `*PREFIX*news_folders` ' . 'WHERE `name` = ?' . 'AND `user_id` = ?'; $params = array($folderName, $userId); return $this->findAllRows($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` = ?; '. 'DELETE `items` FROM `*PREFIX*news_items` `items` '. 'LEFT JOIN `*PREFIX*news_feeds` `feeds` ON '. '`items`.`feed_id` = `feed`.`id` WHERE `feeds`.`id` IS NULL;'; $params = array($entity->getId()); $this->execute($sql, $params); } }