Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
10 / 10 |
CRAP | |
100.00% |
49 / 49 |
| ImageProcessor | |
100.00% |
1 / 1 |
|
100.00% |
10 / 10 |
22 | |
100.00% |
49 / 49 |
| setIgnoredPatterns(array $ignoredPatterns) | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
|||
| addIgnoredPattern($ignoredPattern) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getIgnoredPatterns() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setOverrideImage($overrideImage) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| process(array $items) | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
| setImage(Item $item) | |
100.00% |
1 / 1 |
3 | |
100.00% |
4 / 4 |
|||
| setImageFromContent(Item $item) | |
100.00% |
1 / 1 |
3 | |
100.00% |
8 / 8 |
|||
| isOnIgnoredPatterns($imageSrc) | |
100.00% |
1 / 1 |
3 | |
100.00% |
5 / 5 |
|||
| createDOM($content) | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
|||
| getImages($content) | |
100.00% |
1 / 1 |
4 | |
100.00% |
12 / 12 |
|||
| <?php | |
| /** | |
| * This file is part of the FastFeed package. | |
| * | |
| * (c) Daniel González <daniel@desarrolla2.com> | |
| * | |
| * For the full copyright and license information, please view the LICENSE | |
| * file that was distributed with this source code. | |
| */ | |
| namespace FastFeed\Processor; | |
| use DOMDocument; | |
| use FastFeed\Item; | |
| /** | |
| * ImageProcessor | |
| */ | |
| class ImageProcessor implements ProcessorInterface | |
| { | |
| /** | |
| * @var array | |
| */ | |
| protected $ignoredPatterns = array(); | |
| /** | |
| * @var bool | |
| */ | |
| protected $overrideImage = false; | |
| /** | |
| * @param array $ignoredPatterns | |
| */ | |
| public function setIgnoredPatterns(array $ignoredPatterns) | |
| { | |
| $this->ignoredPatterns = array(); | |
| foreach ($ignoredPatterns as $ignoredPattern) { | |
| $this->addIgnoredPattern($ignoredPattern); | |
| } | |
| } | |
| /** | |
| * @param $ignoredPattern | |
| */ | |
| public function addIgnoredPattern($ignoredPattern) | |
| { | |
| $this->ignoredPatterns[] = (string) $ignoredPattern; | |
| } | |
| /** | |
| * @return array | |
| */ | |
| public function getIgnoredPatterns() | |
| { | |
| return $this->ignoredPatterns; | |
| } | |
| /** | |
| * @param boolean $overrideImage | |
| */ | |
| public function setOverrideImage($overrideImage) | |
| { | |
| $this->overrideImage = (bool) $overrideImage; | |
| } | |
| /** | |
| * Execute processor | |
| * | |
| * @param array $items | |
| * | |
| * @return array | |
| */ | |
| public function process(array $items) | |
| { | |
| foreach ($items as $key => $item) { | |
| $items[$key] = $this->setImage($item); | |
| } | |
| return $items; | |
| } | |
| /** | |
| * @param Item $item | |
| * | |
| * @return Item | |
| */ | |
| protected function setImage(Item $item) | |
| { | |
| if ($item->hasImage() && !$this->overrideImage) { | |
| return $item; | |
| } | |
| $this->setImageFromContent($item); | |
| return $item; | |
| } | |
| /** | |
| * @param Item $item | |
| * | |
| * @return bool|string | |
| */ | |
| protected function setImageFromContent(Item $item) | |
| { | |
| $images = $this->getImages($item->getContent()); | |
| foreach ($images as $image) { | |
| if ($this->isOnIgnoredPatterns($image)) { | |
| continue; | |
| } | |
| $item->setImage($image); | |
| return; | |
| } | |
| } | |
| /** | |
| * @param $imageSrc | |
| * | |
| * @return bool | |
| */ | |
| protected function isOnIgnoredPatterns($imageSrc) | |
| { | |
| foreach ($this->ignoredPatterns as $ignoredPattern) { | |
| if (preg_match($ignoredPattern, $imageSrc)) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| /** | |
| * @param $content | |
| * | |
| * @return bool|DOMDocument | |
| */ | |
| protected function createDOM($content) | |
| { | |
| if (!$content) { | |
| return false; | |
| } | |
| $dom = new DOMDocument(); | |
| $dom->loadHTML($content); | |
| $dom->preserveWhiteSpace = false; | |
| return $dom; | |
| } | |
| /** | |
| * @param $content | |
| * | |
| * @return bool|array | |
| */ | |
| protected function getImages($content) | |
| { | |
| $images = array(); | |
| $dom = $this->createDOM($content); | |
| if (!$dom) { | |
| return $images; | |
| } | |
| $domList = $dom->getElementsByTagName('img'); | |
| foreach ($domList as $image) { | |
| $imageSrc = $image->getAttribute('src'); | |
| if (!$imageSrc) { | |
| continue; | |
| } | |
| $images[] = $imageSrc; | |
| } | |
| return $images; | |
| } | |
| } |