. * */ namespace OCA\News\External; use \OCA\AppFramework\Core\API; use \OCA\AppFramework\Controller\Controller; use \OCA\AppFramework\Http\Request; use \OCA\News\BusinessLayer\ItemBusinessLayer; use \OCA\News\BusinessLayer\BusinessLayerException; class ItemAPI extends Controller { private $itemBusinessLayer; public function __construct(API $api, Request $request, ItemBusinessLayer $itemBusinessLayer){ parent::__construct($api, $request); $this->itemBusinessLayer = $itemBusinessLayer; } public function getAll() { $result = array( 'items' => array() ); $userId = $this->api->getUserId(); $batchSize = (int) $this->params('batchSize'); $offset = (int) $this->params('offset', 0); $type = (int) $this->params('type'); $id = (int) $this->params('id'); $showAll = $this->params('getRead') === 'true'; $items = $this->itemBusinessLayer->findAll( $id, $type, $batchSize, $offset, $showAll, $userId ); foreach ($items as $item) { array_push($result['items'], $item->toAPI()); } return new NewsAPIResult($result); } public function getUpdated() { $result = array( 'items' => array() ); $userId = $this->api->getUserId(); $lastModified = (int) $this->params('lastModified', 0); $type = (int) $this->params('type'); $id = (int) $this->params('id'); $items = $this->itemBusinessLayer->findAllNew( $id, $type, $lastModified, true, $userId ); foreach ($items as $item) { array_push($result['items'], $item->toAPI()); } return new NewsAPIResult($result); } private function setRead($isRead) { $userId = $this->api->getUserId(); $itemId = (int) $this->params('itemId'); try { $this->itemBusinessLayer->read($itemId, $isRead, $userId); return new NewsAPIResult(); } catch(BusinessLayerException $ex){ return new NewsAPIResult(null, NewsAPIResult::NOT_FOUND_ERROR, $ex->getMessage()); } } private function setStarred($isStarred) { $userId = $this->api->getUserId(); $feedId = (int) $this->params('feedId'); $guidHash = $this->params('guidHash'); try { $this->itemBusinessLayer->star($feedId, $guidHash, $isStarred, $userId); return new NewsAPIResult(); } catch(BusinessLayerException $ex){ return new NewsAPIResult(null, NewsAPIResult::NOT_FOUND_ERROR, $ex->getMessage()); } } public function read() { return $this->setRead(true); } public function unread() { return $this->setRead(false); } public function star() { return $this->setStarred(true); } public function unstar() { return $this->setStarred(false); } public function readAll() { $userId = $this->api->getUserId(); $newestItemId = (int) $this->params('newestItemId'); $this->itemBusinessLayer->readAll($newestItemId, $userId); return new NewsAPIResult(); } }