Skip to content

Commit 7f73d67

Browse files
committed
Zend Feed refactoring WIP
1 parent 9779ebe commit 7f73d67

File tree

6 files changed

+65
-37
lines changed

6 files changed

+65
-37
lines changed

app/code/Magento/Rss/Model/Rss.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Magento\Framework\App\ObjectManager;
99
use Magento\Framework\App\Rss\DataProviderInterface;
1010
use Magento\Framework\Serialize\SerializerInterface;
11+
use Magento\Framework\App\FeedInterface;
1112
use Magento\Framework\App\FeedFactoryInterface;
1213

1314
/**
@@ -101,13 +102,13 @@ public function setDataProvider(DataProviderInterface $dataProvider)
101102
*/
102103
public function createRssXml()
103104
{
104-
$feed = $this->feedFactory->importArray(
105+
$feed = $this->feedFactory->create(
105106
$this->getFeeds(),
106-
\Magento\Framework\App\FeedFormatsInterface::DEFAULT_FORMAT
107+
FeedFactoryInterface::DEFAULT_FORMAT
107108
);
108109

109-
return $feed->getFormatedContentAs(
110-
\Magento\Framework\App\FeedOutputFormatsInterface::DEFAULT_FORMAT
110+
return $feed->getFormattedContentAs(
111+
FeedInterface::DEFAULT_FORMAT
111112
);
112113
}
113114
}

app/etc/di.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,11 @@
174174
<preference for="Magento\Framework\App\FeedInterface" type="Magento\Framework\App\Feed" />
175175
<preference for="Magento\Framework\App\FeedFactoryInterface" type="Magento\Framework\App\FeedFactory" />
176176
<preference for="Magento\Framework\Indexer\Config\DependencyInfoProviderInterface" type="Magento\Framework\Indexer\Config\DependencyInfoProvider" />
177+
<type name="Magento\Framework\Acl\Data\Cache">
178+
<arguments>
179+
<argument name="aclBuilder" xsi:type="object">Magento\Framework\Acl\Builder\Proxy</argument>
180+
</arguments>
181+
</type>
177182
<type name="Magento\Framework\Model\ResourceModel\Db\TransactionManager" shared="false" />
178183
<type name="Magento\Framework\Acl\Data\Cache">
179184
<arguments>
@@ -243,6 +248,13 @@
243248
</argument>
244249
</arguments>
245250
</type>
251+
<type name="Magento\Framework\FeedFactory">
252+
<arguments>
253+
<argument name="formats" xsi:type="array">
254+
<item name="rss" xsi:type="string">Magento\Framework\App\Feed</item>
255+
</argument>
256+
</arguments>
257+
</type>
246258
<type name="Magento\Framework\Session\SaveHandler\Redis">
247259
<arguments>
248260
<argument name="config" xsi:type="object">Cm\RedisSession\Handler\ConfigInterface</argument>

lib/internal/Magento/Framework/App/Feed.php

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,35 @@
55
*/
66
namespace Magento\Framework\App;
77

8-
use \Magento\Framework\App\FeedInterface;
9-
10-
class Feed implements \Magento\Framework\App\FeedInterface
8+
/**
9+
* Default XML feed class
10+
*/
11+
class Feed implements FeedInterface
1112
{
1213
/**
13-
* @var \Zend_Feed_Abstract
14+
* @param Zend_Feed $feed
15+
* @param array $data
1416
*/
15-
private $feed;
16-
17-
/**
18-
* @param \Zend_Feed_Abstract $feed
19-
*/
20-
public function __construct(\Zend_Feed_Abstract $feed)
21-
{
22-
$this->feed = $feed;
17+
public function __construct(
18+
\Zend_Feed $feed,
19+
array $data
20+
) {
21+
$this->feed = $feed;
22+
$this->data = $data;
2323
}
2424

2525
/**
26-
* Get the xml from Zend_Feed_Abstract object
27-
*
26+
* Returns the formatted feed content
27+
*
2828
* @return string
2929
*/
3030
public function getFormatedContentAs(
31-
$format = FeedInterface::DEFAULT_FORMAT
31+
$format = self::DEFAULT_FORMAT
3232
) {
33-
if ($format === FeedInterface::DEFAULT_FORMAT) {
34-
return $this->feed->saveXml();
35-
}
36-
throw new \Magento\Framework\Exception\RuntimeException(
37-
__('Given feed format is not supported'),
38-
$e
33+
$feed = $this->feed::importArray(
34+
$this->data,
35+
FeedFactoryInterface::DEFAULT_FORMAT
3936
);
37+
return $this->feed->saveXml();
4038
}
41-
}
39+
}

lib/internal/Magento/Framework/App/FeedFactory.php

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
*/
66
namespace Magento\Framework\App;
77

8-
use Magento\Framework\App\FeedFactory;
98
use Magento\Framework\App\FeedFactoryInterface;
9+
use Magento\Framework\ObjectManagerInterface;
1010
use Psr\Log\LoggerInterface;
1111

1212
/**
@@ -15,7 +15,7 @@
1515
class FeedFactory implements FeedFactoryInterface
1616
{
1717
/**
18-
* @var \Zend_Feed
18+
* @var FeedProcessorInterface
1919
*/
2020
private $feedProcessor;
2121

@@ -25,19 +25,27 @@ class FeedFactory implements FeedFactoryInterface
2525
private $logger;
2626

2727
/**
28-
* @param \Zend_Feed $feedProcessor
28+
* @var ObjectManagerInterface
29+
*/
30+
protected $objectManager;
31+
32+
/**
33+
* @param ObjectManagerInterface $objectManger
2934
* @param LoggerInterface $logger
35+
* @param array $formats
3036
*/
3137
public function __construct(
32-
\Zend_Feed $feedProcessor,
33-
LoggerInterface $logger
38+
ObjectManagerInterface $objectManger,
39+
LoggerInterface $logger,
40+
array $formats
3441
) {
35-
$this->feedProcessor = $feedProcessor;
42+
$this->objectManager = $objectManger;
3643
$this->logger = $logger;
44+
$this->formats = $formats;
3745
}
3846

3947
/**
40-
* Get a new \Magento\Framework\App\Feed object from a custom array
48+
* Get a new \Magento\Framework\App\FeedInterface object from a custom array
4149
*
4250
* @throws \Magento\Framework\Exception\InputException
4351
* @param array $data
@@ -48,9 +56,18 @@ public function create(
4856
array $data,
4957
$format = FeedFactoryInterface::DEFAULT_FORMAT
5058
) {
59+
if (!isset($this->formats[$format])) {
60+
throw new \Magento\Framework\Exception\InputException(
61+
__('The format is not supported'),
62+
$e
63+
);
64+
}
5165
try {
52-
return $this->feedProcessor->importArray($data, $format);
53-
} catch (\Zend_Feed_Exception $e) {
66+
return $this->objectManager->create(
67+
$this->formats[$format],
68+
$data
69+
);
70+
} catch (\Exception $e) {
5471
$this->logger->error($e->getMessage());
5572
throw new \Magento\Framework\Exception\InputException(
5673
__('There has been an error with import'),

lib/internal/Magento/Framework/App/FeedFactoryInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ interface FeedFactoryInterface
1313
/**
1414
* Returns FeedInterface object from a custom array
1515
*
16-
* @throws \Magento\Framework\Exception\RuntimeException
16+
* @throws \Magento\Framework\Exception\InputException
1717
* @param array $data
1818
* @param string $format
1919
* @return FeedInterface

lib/internal/Magento/Framework/App/FeedInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface FeedInterface
1212
/**
1313
* @return string
1414
*/
15-
public function getFormatedContentAs(
15+
public function getFormattedContentAs(
1616
$format = self::DEFAULT_FORMAT
1717
);
1818
}

0 commit comments

Comments
 (0)