Completed
Push — master ( d67f41...79042b )
by Adam
07:27
created

NewsFeedProvider   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 6
dl 0
loc 34
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getFeedContent() 0 11 1
A addItems() 0 19 2
1
<?php
2
3
namespace WellCommerce\Bundle\CmsBundle\Service\Feed;
4
5
use Debril\RssAtomBundle\Provider\FeedContentProviderInterface;
6
use FeedIo\Feed;
7
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
8
use WellCommerce\Bundle\CoreBundle\DependencyInjection\AbstractContainerAware;
9
10
/**
11
 * Class NewsFeedProvider
12
 *
13
 * @author  Adam Piotrowski <[email protected]>
14
 */
15
class NewsFeedProvider extends AbstractContainerAware implements FeedContentProviderInterface
16
{
17
    public function getFeedContent(array $options)
18
    {
19
        $feed = new Feed();
20
        $feed->setTitle($this->getShopStorage()->getCurrentShop()->getName());
21
        $feed->setLink($this->getRouterHelper()->generateUrl('front.news.' . $options['format']));
22
        $feed->setLastModified(new \DateTime());
23
        
24
        $this->addItems($feed);
25
        
26
        return $feed;
27
    }
28
    
29
    private function addItems(Feed $feed): Feed
30
    {
31
        $news = $this->get('news.dataset.front')->getResult('array', [
32
            'order_by'  => 'startDate',
33
            'order_dir' => 'desc',
34
        ]);
35
        
36
        foreach ($news['rows'] as $row) {
37
            $item = new Feed\Item();
38
            $item->setPublicId($row['id']);
39
            $item->setLink($this->getRouterHelper()->generateUrl('dynamic_' . $row['routeId'], [], UrlGeneratorInterface::ABSOLUTE_URL));
40
            $item->setTitle($row['topic']);
41
            $item->setDescription($row['summary']);
42
            $item->setLastModified($row['updatedAt']);
43
            $feed->add($item);
44
        }
45
        
46
        return $feed;
47
    }
48
}
49