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

net_nemein_rss_handler_fetch   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Test Coverage

Coverage 62.07%

Importance

Changes 0
Metric Value
eloc 30
dl 0
loc 52
ccs 18
cts 29
cp 0.6207
rs 10
c 0
b 0
f 0
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A _update_breadcrumb_line() 0 11 2
A _handler_fetch() 0 30 3
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