summaryrefslogtreecommitdiffstats
path: root/composer.lock
diff options
context:
space:
mode:
authorDaniel Schaal <daniel@schaal.email>2017-01-04 11:09:46 +0100
committerBernhard Posselt <BernhardPosselt@users.noreply.github.com>2017-01-04 11:09:46 +0100
commit04f66c9710faf9438adcc69028eed082c98a5178 (patch)
tree3e11906b5e318b0fdddccfe6e8b9d30af44dcb0f /composer.lock
parent41932775bcf79d5f80060e87b5051bd9b5937c5f (diff)
Add updatedDate to item model (#81)
* Update picoFeed to v0.1.28 * Add updated_date to database and bump version to 10.1.1 * Add updatedDate to item model * Check for updatedDate when updating a feed * Fix unit test to check for newer updatedDate
Diffstat (limited to 'composer.lock')
-rw-r--r--composer.lock23
1 files changed, 13 insertions, 10 deletions
diff --git a/composer.lock b/composer.lock
index 673ce9801..3c98487d1 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "7d53c930874a1103e790167b8d0e0d0c",
- "content-hash": "2bd56b0f3d648651eb3470b5d003ef46",
+ "hash": "2aeb3a6a1ab336d16bf352f4e88f6825",
+ "content-hash": "ef2350b58d0ee66262400727956c9786",
"packages": [
{
"name": "ezyang/htmlpurifier",
@@ -53,16 +53,16 @@
},
{
"name": "fguillot/picofeed",
- "version": "dev-master",
+ "version": "v0.1.28",
"source": {
"type": "git",
"url": "https://github.com/fguillot/picoFeed.git",
- "reference": "58a94dcefd12401cdb5a40017dfbbb960756e22a"
+ "reference": "9da506c308bcb40b6fc630f9123466028c03170b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fguillot/picoFeed/zipball/58a94dcefd12401cdb5a40017dfbbb960756e22a",
- "reference": "58a94dcefd12401cdb5a40017dfbbb960756e22a",
+ "url": "https://api.github.com/repos/fguillot/picoFeed/zipball/9da506c308bcb40b6fc630f9123466028c03170b",
+ "reference": "9da506c308bcb40b6fc630f9123466028c03170b",
"shasum": ""
},
"require": {
@@ -74,6 +74,11 @@
"php": ">=5.3.0",
"zendframework/zendxml": "^1.0"
},
+ "require-dev": {
+ "phpdocumentor/reflection-docblock": "2.0.4",
+ "phpunit/phpunit": "4.8.26",
+ "symfony/yaml": "2.8.7"
+ },
"suggest": {
"ext-curl": "PicoFeed will use cURL if present"
},
@@ -97,7 +102,7 @@
],
"description": "Modern library to handle RSS/Atom feeds",
"homepage": "https://github.com/fguillot/picoFeed",
- "time": "2016-12-09 00:31:15"
+ "time": "2016-12-29 00:06:41"
},
{
"name": "pear/net_url2",
@@ -254,9 +259,7 @@
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": {
- "fguillot/picofeed": 20
- },
+ "stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
*/ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
<?php
/**
 * ownCloud - News
 *
 * This file is licensed under the Affero General Public License version 3 or
 * later. See the COPYING file.
 *
 * @author Alessandro Cosentino <cosenal@gmail.com>
 * @author Bernhard Posselt <dev@bernhard-posselt.com>
 * @copyright Alessandro Cosentino 2012
 * @copyright Bernhard Posselt 2012, 2014
 */

namespace OCA\News\Controller;

use \OCP\IRequest;
use \OCP\IConfig;
use \OCP\AppFramework\Controller;
use \OCP\AppFramework\Http;

use \OCA\News\Service\ServiceException;
use \OCA\News\Service\ServiceNotFoundException;
use \OCA\News\Service\ItemService;
use \OCA\News\Service\FeedService;


class ItemController extends Controller {

    use JSONHttpError;

    private $itemService;
    private $feedService;
    private $userId;
    private $settings;

    public function __construct($appName,
                                IRequest $request,
                                FeedService $feedService,
                                ItemService $itemService,
                                IConfig $settings,
                                $userId){
        parent::__construct($appName, $request);
        $this->itemService = $itemService;
        $this->feedService = $feedService;
        $this->userId = $userId;
        $this->settings = $settings;
    }


    /**
     * @NoAdminRequired
     *
     * @param int $type
     * @param int $id
     * @param int $limit
     * @param int $offset
     * @return array
     */
    public function index($type, $id, $limit=50, $offset=0) {
        $showAll = $this->settings->getUserValue($this->userId, $this->appName,
            'showAll') === '1';
        $oldestFirst = $this->settings->getUserValue($this->userId,
            $this->appName, 'oldestFirst') === '1';

        $this->settings->setUserValue($this->userId, $this->appName,
            'lastViewedFeedId', $id);
        $this->settings->setUserValue($this->userId, $this->appName,
            'lastViewedFeedType', $type);

        $params = [];

        try {

            // the offset is 0 if the user clicks on a new feed
            // we need to pass the newest feeds to not let the unread count get
            // out of sync
            if($offset === 0) {
                $params['newestItemId'] =
                    $this->itemService->getNewestItemId($this->userId);
                $params['feeds'] = $this->feedService->findAll($this->userId);
                $params['starred'] =
                    $this->itemService->starredCount($this->userId);
            }

            $params['items'] = $this->itemService->findAll(
                $id, $type, $limit, $offset, $showAll, $oldestFirst,
                $this->userId
            );

        // this gets thrown if there are no items
        // in that case just return an empty array
        } catch(ServiceException $ex) {}

        return $params;
    }


    /**
     * @NoAdminRequired
     *
     * @param int $type
     * @param int $id
     * @param int $lastModified
     * @return array
     */
    public function newItems($type, $id, $lastModified=0) {
        $showAll = $this->settings->getUserValue($this->userId, $this->appName,
            'showAll') === '1';

        $params = [];

        try {
            $params['newestItemId'] =
                $this->itemService->getNewestItemId($this->userId);
            $params['feeds'] = $this->feedService->findAll($this->userId);
            $params['starred'] =
                $this->itemService->starredCount($this->userId);
            $params['items'] = $this->itemService->findAllNew($id, $type,
                $lastModified, $showAll, $this->userId);

        // this gets thrown if there are no items
        // in that case just return an empty array
        } catch(ServiceException $ex) {}

        return $params;
    }


    /**
     * @NoAdminRequired
     *
     * @param int $feedId
     * @param string $guidHash
     * @param bool $isStarred
     * @return array|\OCP\AppFramework\Http\JSONResponse
     */
    public function star($feedId, $guidHash, $isStarred){
        try {
            $this->itemService->star($feedId, $guidHash, $isStarred,
                                     $this->userId);
        } catch(ServiceException $ex) {
            return $this->error($ex, Http::STATUS_NOT_FOUND);
        }

        return [];
    }


    /**
     * @NoAdminRequired
     *
     * @param int $itemId
     * @param bool $isRead
     * @return array|\OCP\AppFramework\Http\JSONResponse
     */
    public function read($itemId, $isRead=true){
        try {
            $this->itemService->read($itemId, $isRead, $this->userId);
        } catch(ServiceException $ex) {
            return $this->error($ex, Http::STATUS_NOT_FOUND);
        }

        return [];
    }


    /**
     * @NoAdminRequired
     *
     * @param int $highestItemId
     * @return array
     */
    public function readAll($highestItemId){
        $this->itemService->readAll($highestItemId, $this->userId);
        return ['feeds' => $this->feedService->findAll($this->userId)];
    }


    /**
     * @NoAdminRequired
     *
     * @param int[] item ids
     */
    public function readMultiple($itemIds) {
        foreach($itemIds as $id) {
            try {
                $this->itemService->read($id, true, $this->userId);
            } catch(ServiceNotFoundException $ex) {
                continue;
            }
        }
    }


}