Passed
Push — master ( 92128b...d5c2c1 )
by Andreas
17:19
created

net_nemein_rss_handler_fetch::_handler_fetch()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 30
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 3.7397

Importance

Changes 0
Metric Value
cc 3
eloc 23
nc 2
nop 2
dl 0
loc 30
ccs 13
cts 23
cp 0.5652
crap 3.7397
rs 9.552
c 0
b 0
f 0
1
<?php
2
/**
3
 * @package net.nemein.rss
4
 * @author The Midgard Project, http://www.midgard-project.org
5
 * @copyright The Midgard Project, http://www.midgard-project.org
6
 * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License
7
 */
8
9
/**
10
 * Feed management class.
11
 *
12
 * @package net.nemein.rss
13
 */
14
class net_nemein_rss_handler_fetch extends midcom_baseclasses_components_handler
15
{
16
    /**
17
     * @param array $data The local request data.
18
     * @param string $guid The object's GUID
19
     */
20 1
    public function _handler_fetch(array &$data, string $guid = null)
21
    {
22 1
        $this->_topic->require_do('midgard:create');
23 1
        midcom::get()->cache->content->no_cache();
24
25 1
        midcom::get()->disable_limits();
26 1
        $data['error'] = '';
27 1
        if ($guid !== null) {
28
            $data['feed'] = new net_nemein_rss_feed_dba($guid);
29
30
            $fetcher = new net_nemein_rss_fetch($data['feed']);
31
            $data['items'] = $fetcher->import();
32
            $data['error'] = $fetcher->lasterror;
33
            midcom::get()->metadata->set_request_metadata($data['feed']->metadata->revised, $data['feed']->guid);
34
            $this->bind_view_to_object($data['feed']);
35
        } else {
36 1
            $data['items'] = [];
37 1
            $qb = net_nemein_rss_feed_dba::new_query_builder();
38 1
            $qb->add_order('title');
39 1
            $qb->add_constraint('node', '=', $this->_topic->id);
40 1
            foreach ($qb->execute() as $feed) {
41
                $fetcher = new net_nemein_rss_fetch($feed);
42
                $items = $fetcher->import();
43
                $data['error'] .= $fetcher->lasterror . "<br /> \n";
44
                $data['items'] = array_merge($data['items'], $items);
45
            }
46
        }
47
48 1
        $this->_update_breadcrumb_line($guid);
49 1
        return $this->show('net-nemein-rss-feed-fetch');
50
    }
51
52
    /**
53
     * Update the context so that we get a complete breadcrumb line towards the current location.
54
     */
55 1
    private function _update_breadcrumb_line(?string $guid)
56
    {
57 1
        $this->add_breadcrumb($this->router->generate('feeds_list'), $this->_l10n->get('manage feeds'));
58
59 1
        if ($guid === null) {
60 1
            $this->add_breadcrumb($this->router->generate('feeds_fetch_all'), $this->_l10n->get('refresh all feeds'));
61
        } else {
62
            $this->add_breadcrumb($this->router->generate('feeds_list', ['guid' => $guid]), $this->_l10n->get('refresh feed'));
63
        }
64
65 1
        net_nemein_rss_manage::add_toolbar_buttons($this->_node_toolbar);
66 1
    }
67
}
68