Dealer   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 137
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
wmc 8
lcom 0
cbo 0
dl 0
loc 137
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A postActivation() 0 25 2
A update() 0 17 3
B getHooks() 0 66 1
A addResource() 0 9 2
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
    const DOMAIN_NAME = "dealer";
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
    // List of admin profile_id allowed to see ALL the dealers (separated by coma)
41
    const CONFIG_ALLOW_PROFILE_ID = 'admin_profile_id';
42
43
    public function postActivation(ConnectionInterface $con = null)
44
    {
45
        try {
46
            DealerQuery::create()->findOne();
47
            DealerContactInfoQuery::create()->findOne();
48
            DealerContactQuery::create()->findOne();
49
            DealerShedulesQuery::create()->findOne();
50
            DealerContentQuery::create()->findOne();
51
            DealerFolderQuery::create()->findOne();
52
        } catch (\Exception $e) {
53
            $database = new Database($con);
54
            $database->insertSql(null, [__DIR__ . "/Config/thelia.sql"]);
55
        }
56
57
        $this->addResource(self::RESOURCES_DEALER);
58
        $this->addResource(self::RESOURCES_CONTACT);
59
        $this->addResource(self::RESOURCES_SCHEDULES);
60
        $this->addResource(self::RESOURCES_GEO);
61
        $this->addResource(self::RESOURCES_ASSOCIATED);
62
        $this->addResource(self::RESOURCES_USERS);
63
        $this->addResource(self::RESOURCES_MODULE);
64
65
        //Initialize the module_config
66
        self::setConfigValue(self::CONFIG_ALLOW_PROFILE_ID, '');
67
    }
68
69
    public function update($currentVersion, $newVersion, ConnectionInterface $con = null)
70
    {
71
        $finder = Finder::create()
72
            ->name('*.sql')
73
            ->depth(0)
74
            ->sortByName()
75
            ->in(__DIR__ . DS . 'Config' . DS . 'update');
76
77
        $database = new Database($con);
78
79
        /** @var \SplFileInfo $file */
80
        foreach ($finder as $file) {
81
            if (version_compare($currentVersion, $file->getBasename('.sql'), '<')) {
82
                $database->insertSql(null, [$file->getPathname()]);
83
            }
84
        }
85
    }
86
87
    public function getHooks()
88
    {
89
        return [
90
            array(
91
                "type" => TemplateDefinition::BACK_OFFICE,
92
                "code" => "dealer.extra.content.edit",
93
                "title" => "Dealer Extra Content",
94
                "description" => [
95
                    "en_US" => "Allow you to insert element in modules tab on Dealer edit page",
96
                    "fr_FR" => "Permet l'ajout de contenu sur la partie module de l'edition",
97
                ],
98
                "active" => true,
99
            ),
100
            array(
101
                "type" => TemplateDefinition::BACK_OFFICE,
102
                "code" => "dealer.edit.js",
103
                "title" => "Dealer Edit Extra Js",
104
                "description" => [
105
                    "en_US" => "Allow you to insert js on Dealer edit page",
106
                    "fr_FR" => "Permet l'ajout de js sur l'edition",
107
                ],
108
                "active" => true,
109
            ),
110
            array(
111
                "type" => TemplateDefinition::BACK_OFFICE,
112
                "code" => "dealer.js",
113
                "title" => "Dealer Extra Js",
114
                "description" => [
115
                    "en_US" => "Allow you to insert js on Dealer list",
116
                    "fr_FR" => "Permet l'ajout de js sur la liste",
117
                ],
118
                "active" => true,
119
            ),
120
            array(
121
                "type" => TemplateDefinition::BACK_OFFICE,
122
                "code" => "dealer.additional",
123
                "title" => "Dealer Extra Tab",
124
                "description" => [
125
                    "en_US" => "Allow you to insert a tab on Dealer edit page",
126
                    "fr_FR" => "Permet l'ajout d'une page sur l'edition d'un point de vente",
127
                ],
128
                "active" => true,
129
                "block" => true,
130
            ),
131
            array(
132
                "type" => TemplateDefinition::BACK_OFFICE,
133
                "code" => "dealer.edit.nav.bar",
134
                "title" => "Dealer Edition NavBar Link",
135
                "description" => [
136
                    "en_US" => "Allow you to insert link between arrow previous and next on edtion view",
137
                    "fr_FR" => "Permet l'ajout d'un lien sur la page d'édition entre les liens suivant et précedent",
138
                ],
139
                "active" => true,
140
            ),
141
            array(
142
                "type" => TemplateDefinition::BACK_OFFICE,
143
                "code" => "dealer.associated.tabcontent",
144
                "title" => "Dealer Associated Nav Tab",
145
                "description" => [
146
                    "en_US" => "Allow you to insert association content",
147
                    "fr_FR" => "Permet l'ajout de contenu dans la table d'association",
148
                ],
149
                "active" => true,
150
            ),
151
        ];
152
    }
153
154
    protected function addResource($code)
155
    {
156
        if(null === ResourceQuery::create()->findOneByCode($code)){
157
            $resource = new Resource();
158
            $resource->setCode($code);
159
            $resource->setTitle($code);
160
            $resource->save();
161
        }
162
    }
163
}
164