Completed
Push — master ( 395774...b3be9a )
by
unknown
16s queued 12s
created

DealerImage::setParentId()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Dealer\Model;
4
5
use Dealer\Dealer;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, Dealer\Model\Dealer.

Let’s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let’s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
6
use Dealer\Form\DealerImageBoxForm;
7
use Dealer\Form\DealerImageHeaderForm;
8
use Dealer\Model\Base\DealerImage as BaseDealerImage;
9
use Propel\Runtime\Connection\ConnectionInterface;
10
use Symfony\Component\Filesystem\Filesystem;
11
use Symfony\Component\Routing\Router;
12
use Thelia\Files\FileModelInterface;
13
use Thelia\Files\FileModelParentInterface;
14
use Thelia\Model\Breadcrumb\CatalogBreadcrumbTrait;
15
use Thelia\Model\ConfigQuery;
16
17
class DealerImage extends BaseDealerImage implements FileModelInterface
18
{
19
    use CatalogBreadcrumbTrait;
20
21
    const IMAGE_TYPE_HEADER = "imageHeader";
22
    const IMAGE_TYPE_BOX = "imageBox";
23
24
    /**
25
     * @var array Possible image types
26
     */
27
    const POSSIBLE_TYPE = array(self::IMAGE_TYPE_HEADER, self::IMAGE_TYPE_BOX);
28
29
    /**
30
     * Set file parent id
31
     *
32
     * @param int $parentId parent id
33
     *
34
     * @return $this
35
     */
36
    public function setParentId($parentId)
37
    {
38
        $this->setDealerId($parentId);
39
        return $this;
40
    }
41
42
    /**
43
     * Get file parent id
44
     *
45
     * @return int parent id
46
     */
47
    public function getParentId()
48
    {
49
        return $this->getDealerId();
50
    }
51
52
    /**
53
     * @return FileModelParentInterface the parent file model
54
     */
55
    public function getParentFileModel()
56
    {
57
        return new Dealer();
58
    }
59
60
    public static function getTypeIdFromLabel($type) {
61
        return array_search($type, self::POSSIBLE_TYPE);
62
    }
63
64
    public function getBreadcrumb(Router $router, $container, $tab, $locale)
65
    {
66
        return $this->getProductBreadcrumb($router, $container, $tab, $locale);
67
    }
68
69
    /**
70
     * @return string the URL to redirect to after update from the back-office
71
     */
72
    public function getRedirectionUrl()
73
    {
74
        return '/admin/module/Dealer/dealer/edit?dealer_id='.$this->getDealerId();
75
    }
76
77
    public function getUploadDir()
78
    {
79
        $uploadDir = ConfigQuery::read('images_library_path');
80
        if ($uploadDir === null) {
81
            $uploadDir = THELIA_LOCAL_DIR . 'media' . DS . 'images';
82
        } else {
83
            $uploadDir = THELIA_ROOT . $uploadDir;
84
        }
85
        return $uploadDir . DS . Dealer::DOMAIN_NAME ;
86
    }
87
88
    /**
89
     * Get the Query instance for this object
90
     *
91
     * @return DealerImageQuery
92
     */
93
    public function getQueryInstance()
94
    {
95
        return DealerImageQuery::create();
96
    }
97
98
    /**
99
     * Set the current locale
100
     *
101
     * @param  bool $visible true if the file is visible, false otherwise
102
     * @return FileModelInterface
103
     */
104
    public function setVisible($visible)
105
    {
106
        return $this;
107
    }
108
109
    public function preDelete(ConnectionInterface $con = null)
110
    {
111
        $fs = new Filesystem();
112
        try {
113
            $fs->remove($this->getUploadDir() . DS . $this->getFile());
114
            return true;
115
        } catch (\Exception $e) {
116
            return false;
117
        }
118
    }
119
120
    /**
121
     * Get the ID of the form used to change this object information
122
     * @return int type
123
     */
124
    public function getUpdateFormId()
125
    {
126
        return 'dealer.image.modification';
127
    }
128
129
    /**
130
     * get the image type according form id
131
     *
132
     * @param $formId
133
     * @return int type
134
     */
135
    public static function getTypeFromFormId($formId)
136
    {
137
        switch ($formId) {
138
            case DealerImageHeaderForm::DEALER_IMAGE_HEADER_FORM_ID:
139
                $imageType = array_search(self::IMAGE_TYPE_HEADER, self::POSSIBLE_TYPE);
140
                break;
141
            case DealerImageBoxForm::DEALER_IMAGE_BOX_FORM_ID:
142
                $imageType = array_search(self::IMAGE_TYPE_BOX, self::POSSIBLE_TYPE);
143
                break;
144
            default :
145
                throw new \InvalidArgumentException("Unknown form id " . $formId);
146
        }
147
        return $imageType;
148
    }
149
150
    /**
151
     * @param $parentId
152
     * @param $formName
153
     * @return DealerImage
154
     */
155
    public static function fromProductIdAndFormName($parentId, $formName)
156
    {
157
        $imageType = DealerImage::getTypeFromFormId($formName);
158
        $imageSearch = new DealerImageQuery();
159
        $imageSearch->filterByType($imageType);
160
        $imageSearch->filterByDealerId($parentId);
161
        $fileModel = $imageSearch->findOne();
162
        if ($fileModel === null) {
163
            $fileModel = new DealerImage();
164
            $fileModel->setType($imageType);
165
            $fileModel->setDealerId($parentId);
166
        }
167
        return $fileModel;
168
    }
169
}
170