1
0
mirror of https://github.com/chylex/Nextcloud-News.git synced 2025-04-27 17:15:48 +02:00

removed old controller classes

This commit is contained in:
Bernhard Posselt 2013-03-23 00:43:29 +01:00
parent 29edf7eacd
commit a2d264b4d4
2 changed files with 0 additions and 526 deletions

View File

@ -1,428 +0,0 @@
<?php
/**
* ownCloud - News app
*
* @author Bernhard Posselt
* Copyright (c) 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
*
*/
namespace OCA\News;
/**
* Class which handles all ajax calls
*/
class NewsAjaxController extends Controller {
private $feedMapper;
private $folderMapper;
private $itemMapper;
/**
* @param Request $request: the object with the request instance
* @param string $api: an instance of the api wrapper
* @param FeedMapper $feedMapepr an instance of the feed mapper
* @param FolderMapper $folderMapper an instance of the folder mapper
* @param ItemMapper $itemMapper an instance of the item mapper
*/
public function __construct($request, $api, $feedMapper, $folderMapper,
$itemMapper){
parent::__construct($request, $api);
$this->feedMapper = $feedMapper;
$this->folderMapper = $folderMapper;
$this->itemMapper = $itemMapper;
}
/**
* @brief turns a post parameter which got a boolean from javascript to
* a boolean in PHP
* @param string $param the post parameter that should be turned into a bool
* @return a PHP boolean
*/
public function postParamToBool($param){
if($param === 'false') {
return false;
} else {
return true;
}
}
/**
* This turns a folder result into an array which can be sent to the client
* as JSON
* @param array $folders the database query result for folders
* @return an array ready for sending as JSON
*/
private function foldersToArray($folders){
$foldersArray = array();
foreach($folders as $folder){
if($folder instanceof \OCA\News\Folder){
array_push($foldersArray, array(
'id' => (int)$folder->getId(),
'name' => $folder->getName(),
'open' => $folder->getOpened()==="1",
'hasChildren' => count($folder->getChildren()) > 0,
'show' => true
)
);
}
}
return $foldersArray;
}
/**
* This turns a feed result into an array which can be sent to the client
* as JSON
* @param array $feeds the database query result for feeds
* @return an array ready for sending as JSON
*/
private function feedsToArray($feeds){
$feedsArray = array();
foreach($feeds as $feed){
array_push($feedsArray, array(
'id' => (int)$feed->getId(),
'name' => $feed->getTitle(),
'unreadCount' => (int)$this->itemMapper->getUnreadCount(FeedType::FEED,
$feed->getId()),
'folderId' => (int)$feed->getFolderId(),
'show' => true,
'icon' => 'url(' . $feed->getFavicon() .')',
'url' => $feed->getUrl()
)
);
}
return $feedsArray;
}
/**
* This turns an items result into an array which can be sent to the client
* as JSON
* @param array $items the database query result for items
* @return an array ready for sending as JSON
*/
private function itemsToArray($items){
$itemsArray = array();
foreach($items as $item){
$enclosure = $item->getEnclosure();
if($enclosure){
$enclosure = array(
'link' => $enclosure->getLink(),
'type' => $enclosure->getMimeType()
);
}
array_push($itemsArray, array(
'id' => (int)$item->getId(),
'title' => $item->getTitle(),
'isRead' => (bool)$item->isRead(),
'isImportant' => (bool)$item->isImportant(),
'feedId' => (int)$item->getFeedId(),
'feedTitle' => $item->getFeedTitle(),
'date' => (int)$item->getDate(),
'body' => $item->getBody(),
'author' => $item->getAuthor(),
'url' => $item->getUrl(),
'enclosure' => $enclosure
)
);
}
return $itemsArray;
}
/**
* This is being called when the app starts and all feeds
* and folders are requested
*/
public function init(){
$folders = $this->folderMapper->childrenOfWithFeeds(0);
$foldersArray = $this->foldersToArray($folders);
$feeds = $this->feedMapper->findAll();
$feedsArray = $this->feedsToArray($feeds);
$activeFeed = array();
$activeFeed['id'] = (int)$this->api->getUserValue('lastViewedFeed');
$activeFeed['type'] = (int)$this->api->getUserValue('lastViewedFeedType');
$showAll = $this->api->getUserValue('showAll') === "1";
$starredCount = $this->itemMapper->getUnreadCount(\OCA\News\FeedType::STARRED, 0);
$result = array(
'folders' => $foldersArray,
'feeds' => $feedsArray,
'activeFeed' => $activeFeed,
'showAll' => $showAll,
'userId' => $this->userId,
'starredCount' => $starredCount
);
return $this->renderJSON($result);
}
/**
* loads the next X feeds from the server
*/
public function loadFeed(){
$feedType = (int)$this->params('type');
$feedId = (int)$this->params('id');
$latestFeedId = (int)$this->params('latestFeedId');
$latestTimestamp = (int)$this->params('latestTimestamp');
$limit = (int)$this->params('limit');
// FIXME: integrate latestFeedId, latestTimestamp and limit
$this->api->setUserValue('lastViewedFeed', $feedId);
$this->api->setUserValue('lastViewedFeedType', $feedType);
$showAll = $this->api->getUserValue('showAll');
$items = $this->itemMapper->getItems($feedType, $feedId, $showAll);
$itemsArray = $this->itemsToArray($items);
// update unread count of all feeds
$feeds = $this->feedMapper->findAll();
$feedsArray = array();
foreach($feeds as $feed){
$unreadCount = $this->itemMapper->countAllStatus($feed->getId(), StatusFlag::UNREAD);
$unreadArray = array(
'id' => (int)$feed->getId(),
'unreadCount' => (int)$unreadCount
);
array_push($feedsArray, $unreadArray);
}
$result = array(
'items' => $itemsArray,
'feeds' => $feedsArray
);
return $this->renderJSON($result);
}
/**
* Used for setting the showAll value from a post request
*/
public function setShowAll(){
$showAll = $this->postParamToBool($this->params('showAll'));
$this->api->setUserValue('showAll', $showAll);
return $this->renderJSON();
}
/**
* Used for setting the showAll value from a post request
*/
public function collapseFolder(){
$folderId = (int)$this->params('folderId');
$opened = $this->postParamToBool($this->params('opened'));
$folder = $this->folderMapper->find($folderId);
$folder->setOpened($opened);
$this->folderMapper->update($folder);
return $this->renderJSON();
}
/**
* Deletes a feed
*/
public function deleteFeed(){
$feedId = (int)$this->params('feedId');
$this->feedMapper->deleteById($feedId);
return $this->renderJSON();
}
/**
* Deletes a folder
*/
public function deleteFolder(){
$folderId = (int)$this->params('folderId');
$this->folderMapper->deleteById($folderId);
return $this->renderJSON();
}
/**
* Sets the status of an item
*/
public function setItemStatus(){
$itemId = (int)$this->params('itemId');
$status = $this->params('status');
$item = $this->itemMapper->findById($itemId);
switch ($status) {
case 'read':
$item->setRead();
break;
case 'unread':
$item->setUnread();
break;
case 'important':
$item->setImportant();
break;
case 'unimportant':
$item->setUnimportant();
break;
default:
exit();
break;
}
$this->itemMapper->update($item);
return $this->renderJSON();
}
/**
* Changes the name of a folder
*/
public function changeFolderName(){
$folderId = (int)$this->params('folderId');
$folderName = $this->params('folderName');
$folder = $this->folderMapper->find($folderId);
$folder->setName($folderName);
$this->folderMapper->update($folder);
return $this->renderJSON();
}
/**
* Moves a feed to a new folder
*/
public function moveFeedToFolder(){
$feedId = (int)$this->params('feedId');
$folderId = (int)$this->params('folderId');
$feed = $this->feedMapper->findById($feedId);
if($folderId === 0) {
$this->feedMapper->save($feed, $folderId);
} else {
$folder = $this->folderMapper->find($folderId);
if(!$folder){
$msgString = 'Can not move feed %s to folder %s';
$msg = $this->trans->t($msgString, array($feedId, $folderId));
return $this->renderJSONError($msg, __FILE__);
}
$this->feedMapper->save($feed, $folder->getId());
}
return $this->renderJSON();
}
/**
* Pulls new feed items from its url
*/
public function updateFeed(){
$feedId = (int)$this->params('feedId');
$feed = $this->feedMapper->findById($feedId);
$newFeed = Utils::fetch($feed->getUrl());
$newFeedId = false;
if ($newFeed !== null) {
$newFeedId = $this->feedMapper->save($newFeed, $feed->getFolderId());
}
if($newFeedId){
$feeds = array($this->feedMapper->findById($feedId));
$feedsArray = array(
'feeds' => $this->feedsToArray($feeds)
);
return $this->renderJSON($feedsArray);
} else {
$msgString = 'Error updating feed %s';
$msg = $this->trans->t($msgString, array($feed->getUrl()));
return $this->renderJSONError($msg, __FILE__);
}
}
/**
* Creates a new folder
*/
public function createFolder(){
$folderName = $this->params('folderName');
$folder = new Folder($folderName);
$folderId = $this->folderMapper->save($folder);
$folders = array($this->folderMapper->findById($folderId));
$foldersArray = array(
'folders' => $this->foldersToArray($folders)
);
return $this->renderJSON($foldersArray);
}
/**
* Creates a new feed
*/
public function createFeed(){
$feedUrl = trim($this->params('feedUrl'));
$folderId = (int)$this->params('folderId');
$folder = $this->folderMapper->findById($folderId);
if(!$folder && $folderId !== 0){
$msgString = 'Folder with id %s does not exist';
$msg = $this->trans->t($msgString, array($folderId));
var_dump($folder);
return $this->renderJSONError($msg, __FILE__);
}
if($this->feedMapper->findIdFromUrl($feedUrl)){
$msgString = 'Feed %s does already exist';
$msg = $this->trans->t($msgString, array($feedUrl));
return $this->renderJSONError($msg, __FILE__);
}
$feed = Utils::fetch($feedUrl);
if($feed){
$feedId = $this->feedMapper->save($feed, $folderId);
$feeds = array($this->feedMapper->findById($feedId));
$feedsArray = array(
'feeds' => $this->feedsToArray($feeds)
);
return $this->renderJSON($feedsArray);
} else {
$msgString = 'Could not create feed %s';
$msg = $this->trans->t($msgString, array($feedUrl));
return $this->renderJSONError($msg, __FILE__);
}
}
/**
* Sets all items read that are older than the current transmitted
* dates and ids
*/
public function setAllItemsRead($feedId, $mostRecentItemId){
$feedId = (int)$this->params('feedId');
$mostRecentItemId = (int)$this->params('mostRecentItemId');
$feed = $this->feedMapper->findById($feedId);
if($feed){
$this->itemMapper->markAllRead($feed->getId(), $mostRecentItemId);
$feeds = array($this->feedMapper->findById($feed->getId()));
$feedsArray = array(
'feeds' => $this->feedsToArray($feeds)
);
return $this->renderJSON($feedsArray);
}
}
}

View File

@ -1,98 +0,0 @@
<?php
/**
* ownCloud - News app
*
* @author Bernhard Posselt
* Copyright (c) 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
*
*/
namespace OCA\News;
class NewsController extends Controller {
private $feedMapper;
private $folderMapper;
/**
* @param Request $request: the object with the request instance
* @param string $api: an instance of the api wrapper object
* @param FolderMapper $folderMapper: an instance of the folder mapper
* @param FeedMapper $feedMapper: an instance of the feed mapper
*/
public function __construct($request, $api, $feedMapper, $folderMapper){
parent::__construct($request, $api);
$this->feedMapper = $feedMapper;
$this->folderMapper = $folderMapper;
$this->api->activateNavigationEntry();
}
/**
* OPML export download page
*/
public function exportOPML($urlParams=array()){
$opmlExporter = new OPMLExporter($this->api);
$allFeeds = $this->folderMapper->childrenOfWithFeeds(0);
$opml = $opmlExporter->buildOPML($allFeeds);
$fileName = 'ownCloud ' . $this->trans->t('News') . ' ' . $this->userId . '.opml';
$contentType = 'application/x.opml+xml';
$response = new TextDownloadResponse($opml, $fileName, $contentType);
return $response;
}
/**
* Decides wether to show the feedpage or the firstrun page
*/
public function index($urlParams=array()){
$this->api->add3rdPartyScript('angular/angular');
$this->api->add3rdPartyScript('angular-ui/angular-ui');
$this->api->add3rdPartyScript('moment.min');
$this->api->addScript('app');
$this->api->addScript('multiselect', 'core');
$this->api->addStyle('owncloud');
$this->api->addStyle('addnew');
$this->api->addStyle('feeds');
$this->api->addStyle('items');
$this->api->addStyle('settings');
$this->api->addStyle('addnew');
$this->api->addStyle('showall');
if(array_key_exists('feedid', $urlParams)){
$this->api->setUserValue('lastViewedFeed', $urlParams['feedid']);
$this->api->setUserValue('lastViewedFeedType', FeedType::FEED);
}
$lastViewedFeedId = $this->api->getUserValue('lastViewedFeed');
$lastViewedFeedType = $this->api->getUserValue('lastViewedFeedType');
if( $lastViewedFeedId === null || $lastViewedFeedType === null) {
$this->api->setUserValue('lastViewedFeed', $this->feedMapper->mostRecent());;
$this->api->setUserValue('lastViewedFeedType', FeedType::FEED);
} else {
// check if the last selected feed or folder exists
if(($lastViewedFeedType === FeedType::FEED &&
$this->feedMapper->findById($lastViewedFeedId) === null) ||
($lastViewedFeedType === FeedType::FOLDER &&
$this->folderMapper->findById($lastViewedFeedId) === null)){
$this->api->setUserValue('lastViewedFeed', $this->feedMapper->mostRecent());;
$this->api->setUserValue('lastViewedFeedType', FeedType::FEED);
}
}
return $this->render('main');
}
}