Completed
Pull Request — master (#13)
by zzuutt
02:32
created

Dealer::update()   B

Complexity

Conditions 4
Paths 6

Size

Total Lines 26
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 6
Bugs 0 Features 5
Metric Value
c 6
b 0
f 5
dl 0
loc 26
rs 8.5806
cc 4
eloc 14
nc 6
nop 3
1
<?php
2
/**
3
 * This class has been generated by TheliaStudio
4
 * For more information, see https://github.com/thelia-modules/TheliaStudio
5
 */
6
7
namespace Dealer;
8
9
use Dealer\Model\DealerContactInfoQuery;
10
use Dealer\Model\DealerContactQuery;
11
use Dealer\Model\DealerContentQuery;
12
use Dealer\Model\DealerFolderQuery;
13
use Dealer\Model\DealerQuery;
14
use Dealer\Model\DealerShedulesQuery;
15
use Symfony\Component\Finder\Finder;
16
use Thelia\Core\Template\TemplateDefinition;
17
use Thelia\Model\Resource;
18
use Thelia\Model\ResourceQuery;
19
use Thelia\Module\BaseModule;
20
use Propel\Runtime\Connection\ConnectionInterface;
21
use Thelia\Install\Database;
22
23
/**
24
 * Class Dealer
25
 * @package Dealer
26
 */
27
class Dealer extends BaseModule
28
{
29
    const MESSAGE_DOMAIN = "dealer";
30
    const ROUTER = "router.dealer";
31
32
    const RESOURCES_DEALER = "admin.dealer";
33
    const RESOURCES_CONTACT = "admin.dealer.contact";
34
    const RESOURCES_SCHEDULES = "admin.dealer.schedules";
35
    const RESOURCES_GEO = "admin.dealer.geo";
36
    const RESOURCES_ASSOCIATED = "admin.dealer.associated";
37
    const RESOURCES_USERS = "admin.dealer.users";
38
    const RESOURCES_MODULE = "admin.dealer.module";
39
40
    public function postActivation(ConnectionInterface $con = null)
41
    {
42
        try {
43
            DealerQuery::create()->findOne();
44
            DealerContactInfoQuery::create()->findOne();
45
            DealerContactQuery::create()->findOne();
46
            DealerShedulesQuery::create()->findOne();
47
            DealerContentQuery::create()->findOne();
48
            DealerFolderQuery::create()->findOne();
49
        } catch (\Exception $e) {
50
            $database = new Database($con);
51
            $database->insertSql(null, [__DIR__ . "/Config/thelia.sql"]);
52
        }
53
54
        $this->addResource(self::RESOURCES_DEALER);
55
        $this->addResource(self::RESOURCES_CONTACT);
56
        $this->addResource(self::RESOURCES_SCHEDULES);
57
        $this->addResource(self::RESOURCES_GEO);
58
        $this->addResource(self::RESOURCES_ASSOCIATED);
59
        $this->addResource(self::RESOURCES_USERS);
60
        $this->addResource(self::RESOURCES_MODULE);
61
    }
62
63
    /**
64
     * @inheritDoc
65
     */
66
    public function update($currentVersion, $newVersion, ConnectionInterface $con = null)
67
    {
68
        $finder = (new Finder)
69
            ->files()
70
            ->name('#.*?\.sql#')
71
            ->in(__DIR__ . DS . 'Setup' . DS . 'sql');
72
73
        $database = new Database($con);
74
75
        /** @var \Symfony\Component\Finder\SplFileInfo $updateSQLFile */
76
        foreach ($finder as $updateSQLFile) {
77
            if (version_compare($currentVersion, str_replace('.sql', '', $updateSQLFile->getFilename()), '<')) {
78
                $database->insertSql(
79
                    null,
80
                    [
81
                        $updateSQLFile->getPathname()
82
                    ]
83
                );
84
            }
85
        }
86
        
87
        if (!self::getConfigValue('is_initialized', false)) {
88
            self::setConfigValue('googlemapsapi_key', '');
89
            self::setConfigValue('is_initialized', true);
90
        }
91
    }
92
93
    public function getHooks()
94
    {
95
        return [
96
            array(
97
                "type" => TemplateDefinition::BACK_OFFICE,
98
                "code" => "dealer.extra.content.edit",
99
                "title" => "Dealer Extra Content",
100
                "description" => [
101
                    "en_US" => "Allow you to insert element in modules tab on Dealer edit page",
102
                    "fr_FR" => "Permet l'ajout de contenu sur la partie module de l'edition",
103
                ],
104
                "active" => true,
105
            ),
106
            array(
107
                "type" => TemplateDefinition::BACK_OFFICE,
108
                "code" => "dealer.edit.js",
109
                "title" => "Dealer Edit Extra Js",
110
                "description" => [
111
                    "en_US" => "Allow you to insert js on Dealer edit page",
112
                    "fr_FR" => "Permet l'ajout de js sur l'edition",
113
                ],
114
                "active" => true,
115
            ),
116
            array(
117
                "type" => TemplateDefinition::BACK_OFFICE,
118
                "code" => "dealer.js",
119
                "title" => "Dealer Extra Js",
120
                "description" => [
121
                    "en_US" => "Allow you to insert js on Dealer list",
122
                    "fr_FR" => "Permet l'ajout de js sur la liste",
123
                ],
124
                "active" => true,
125
            ),
126
            array(
127
                "type" => TemplateDefinition::BACK_OFFICE,
128
                "code" => "dealer.additional",
129
                "title" => "Dealer Extra Tab",
130
                "description" => [
131
                    "en_US" => "Allow you to insert a tab on Dealer edit page",
132
                    "fr_FR" => "Permet l'ajout d'une page sur l'edition d'un point de vente",
133
                ],
134
                "active" => true,
135
                "block" => true,
136
            ),
137
            array(
138
                "type" => TemplateDefinition::BACK_OFFICE,
139
                "code" => "dealer.edit.nav.bar",
140
                "title" => "Dealer Edition NavBar Link",
141
                "description" => [
142
                    "en_US" => "Allow you to insert link between arrow previous and next on edtion view",
143
                    "fr_FR" => "Permet l'ajout d'un lien sur la page d'édition entre les liens suivant et précedent",
144
                ],
145
                "active" => true,
146
            ),
147
            array(
148
                "type" => TemplateDefinition::BACK_OFFICE,
149
                "code" => "dealer.associated.tabcontent",
150
                "title" => "Dealer Associated Nav Tab",
151
                "description" => [
152
                    "en_US" => "Allow you to insert association content",
153
                    "fr_FR" => "Permet l'ajout de contenu dans la table d'association",
154
                ],
155
                "active" => true,
156
            ),
157
        ];
158
    }
159
160
    protected function addResource($code)
161
    {
162
        if(null === ResourceQuery::create()->findOneByCode($code)){
163
            $resource = new Resource();
164
            $resource->setCode($code);
165
            $resource->setTitle($code);
166
            $resource->save();
167
        }
168
    }
169
}
170