DataProvider::getMediaUrl()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
/**
3
 * MagePrince
4
 *
5
 * NOTICE OF LICENSE
6
 *
7
 * This source file is subject to the mageprince.com license that is
8
 * available through the world-wide-web at this URL:
9
 * https://mageprince.com/end-user-license-agreement
10
 *
11
 * DISCLAIMER
12
 *
13
 * Do not edit or add to this file if you wish to upgrade this extension to newer
14
 * version in the future.
15
 *
16
 * @category    MagePrince
17
 * @package     Mageprince_Faq
18
 * @copyright   Copyright (c) MagePrince (https://mageprince.com/)
19
 * @license     https://mageprince.com/end-user-license-agreement
20
 */
21
22
namespace Mageprince\Faq\Model\FaqGroup;
23
24
use Magento\Framework\App\Request\DataPersistorInterface;
0 ignored issues
show
Bug introduced by
The type Magento\Framework\App\Re...\DataPersistorInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
25
use Magento\Framework\Exception\NoSuchEntityException;
0 ignored issues
show
Bug introduced by
The type Magento\Framework\Exception\NoSuchEntityException was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
26
use Magento\Store\Model\StoreManagerInterface;
0 ignored issues
show
Bug introduced by
The type Magento\Store\Model\StoreManagerInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
27
use Magento\Ui\DataProvider\AbstractDataProvider;
0 ignored issues
show
Bug introduced by
The type Magento\Ui\DataProvider\AbstractDataProvider was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
28
use Mageprince\Faq\Model\ResourceModel\FaqGroup\CollectionFactory;
0 ignored issues
show
Bug introduced by
The type Mageprince\Faq\Model\Res...Group\CollectionFactory was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
29
30
class DataProvider extends AbstractDataProvider
31
{
32
    /**
33
     * @var array
34
     */
35
    private $loadedData;
36
37
    /**
38
     * @var DataPersistorInterface
39
     */
40
    private $dataPersistor;
41
42
    /**
43
     * @var CollectionFactory
44
     */
45
    public $collection;
46
47
    /**
48
     * @var StoreManagerInterface
49
     */
50
    protected $storeManager;
51
52
    /**
53
     * DataProvider constructor.
54
     *
55
     * @param string $name
56
     * @param string $primaryFieldName
57
     * @param string $requestFieldName
58
     * @param CollectionFactory $collectionFactory
59
     * @param DataPersistorInterface $dataPersistor
60
     * @param StoreManagerInterface $storeManager
61
     * @param array $meta
62
     * @param array $data
63
     */
64
    public function __construct(
65
        $name,
66
        $primaryFieldName,
67
        $requestFieldName,
68
        CollectionFactory $collectionFactory,
69
        DataPersistorInterface $dataPersistor,
70
        StoreManagerInterface $storeManager,
71
        array $meta = [],
72
        array $data = []
73
    ) {
74
        $this->collection = $collectionFactory->create();
75
        $this->dataPersistor = $dataPersistor;
76
        $this->storeManager = $storeManager;
77
        parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
78
    }
79
80
    /**
81
     * Get data
82
     *
83
     * @return array
84
     * @throws NoSuchEntityException
85
     */
86
    public function getData()
87
    {
88
        if (isset($this->loadedData)) {
89
            return $this->loadedData;
90
        }
91
92
        $items = $this->collection->getItems();
93
94
        foreach ($items as $model) {
95
            $this->loadedData[$model->getId()] = $model->getData();
96
            if ($model->getIcon()) {
97
                $m['icon'][0]['name'] = $model->getIcon();
98
                $m['icon'][0]['url'] = $this->getMediaUrl() . $model->getIcon();
99
                $fullData = $this->loadedData;
100
                $this->loadedData[$model->getId()] = array_merge($fullData[$model->getId()], $m);
101
            }
102
        }
103
104
        $data = $this->dataPersistor->get('prince_faq_faqgroup');
105
106
        if (!empty($data)) {
107
            $model = $this->collection->getNewEmptyItem();
108
            $model->setData($data);
109
            $this->loadedData[$model->getId()] = $model->getData();
110
            $this->dataPersistor->clear('prince_faq_faqgroup');
111
        }
112
113
        return $this->loadedData;
114
    }
115
116
    /**
117
     * Get media url
118
     *
119
     * @return string
120
     * @throws NoSuchEntityException
121
     */
122
    public function getMediaUrl()
123
    {
124
        $mediaUrl = $this->storeManager->getStore()
125
            ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA) . 'faq/tmp/icon/';
0 ignored issues
show
Bug introduced by
The type Magento\Framework\UrlInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
126
        return $mediaUrl;
127
    }
128
}
129