Skip to content

Commit d184673

Browse files
committed
2.1.0
1 parent a5f29e7 commit d184673

File tree

3 files changed

+92
-36
lines changed

3 files changed

+92
-36
lines changed

inc/RRAssignmentsEntity.class.php

Lines changed: 71 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -63,40 +63,92 @@ public function cleanUp() {
6363

6464
protected function createTable() {
6565
PluginSmartAssignLogger::addWarning(__FUNCTION__ . ' - entrou...');
66-
67-
// Criar tabela de configurações
66+
67+
// Verificar e corrigir tabela de configurações
6868
if (!$this->DB->tableExists($this->rrAssignmentTable)) {
69-
$sqlCreateAssign = <<< EOT
69+
$sqlCreateAssign = <<<EOT
7070
CREATE TABLE IF NOT EXISTS {$this->rrAssignmentTable} (
71-
id INT(11) NOT NULL AUTO_INCREMENT,
72-
itilcategories_id INT(11),
73-
is_active INT(1) DEFAULT 0,
74-
last_assignment_index INT(11) DEFAULT NULL,
71+
id INT NOT NULL AUTO_INCREMENT,
72+
itilcategories_id INT,
73+
is_active INT DEFAULT NULL,
74+
last_assignment_index INT DEFAULT NULL,
7575
PRIMARY KEY (id),
76-
UNIQUE INDEX ix_itilcategories_uq (itilcategories_id ASC)
76+
UNIQUE INDEX ix_itilcategories_uq (itilcategories_id)
7777
) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
78-
EOT;
78+
EOT;
7979
PluginSmartAssignLogger::addWarning(__FUNCTION__ . ' - sqlCreate: ' . $sqlCreateAssign);
8080
$this->DB->queryOrDie($sqlCreateAssign, $this->DB->error());
81+
} else {
82+
// Verificar e corrigir estrutura existente
83+
$this->checkAndAlterTable($this->rrAssignmentTable, [
84+
'id' => 'INT NOT NULL AUTO_INCREMENT',
85+
'itilcategories_id' => 'INT',
86+
'is_active' => 'INT DEFAULT NULL',
87+
'last_assignment_index' => 'INT DEFAULT NULL',
88+
'PRIMARY KEY' => '(id)',
89+
'UNIQUE INDEX' => 'ix_itilcategories_uq (itilcategories_id)'
90+
]);
8191
}
82-
83-
/**
84-
* Criar tabela de opções
85-
*/
92+
93+
// Verificar e corrigir tabela de opções
8694
if (!$this->DB->tableExists($this->rrOptionsTable)) {
87-
$sqlCreateOption = <<< EOT
95+
$sqlCreateOption = <<<EOT
8896
CREATE TABLE IF NOT EXISTS {$this->rrOptionsTable} (
89-
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
90-
auto_assign_group INT(1) DEFAULT 1,
91-
auto_assign_type INT(1) DEFAULT 1,
92-
auto_assign_mode INT(1) DEFAULT 1,
97+
id INT NOT NULL AUTO_INCREMENT,
98+
auto_assign_group INT DEFAULT 1,
99+
auto_assign_type INT DEFAULT 1,
100+
auto_assign_mode INT DEFAULT 1,
93101
PRIMARY KEY (id)
94102
) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
95-
EOT;
103+
EOT;
96104
PluginSmartAssignLogger::addWarning(__FUNCTION__ . ' - sqlCreate: ' . $sqlCreateOption);
97105
$this->DB->queryOrDie($sqlCreateOption, $this->DB->error());
106+
} else {
107+
// Verificar e corrigir estrutura existente
108+
$this->checkAndAlterTable($this->rrOptionsTable, [
109+
'id' => 'INT NOT NULL AUTO_INCREMENT',
110+
'auto_assign_group' => 'INT DEFAULT 1',
111+
'auto_assign_type' => 'INT DEFAULT 1',
112+
'auto_assign_mode' => 'INT DEFAULT 1',
113+
'PRIMARY KEY' => '(id)',
114+
]);
98115
}
99116
}
117+
118+
// Função para verificar e alterar tabela
119+
private function checkAndAlterTable($tableName, $desiredStructure) {
120+
// Verifica a estrutura atual da tabela
121+
$columns = $this->DB->getColumns($tableName);
122+
$currentStructure = [];
123+
124+
foreach ($columns as $column) {
125+
$currentStructure[$column['Field']] = $column['Type'];
126+
}
127+
128+
// Verificar e ajustar colunas
129+
foreach ($desiredStructure as $column => $definition) {
130+
if (!isset($currentStructure[$column])) {
131+
// Adicionar coluna se não existir
132+
$this->DB->queryOrDie("ALTER TABLE {$tableName} ADD COLUMN {$column} {$definition}");
133+
} elseif ($currentStructure[$column] !== $definition) {
134+
// Alterar coluna se a definição for diferente
135+
$this->DB->queryOrDie("ALTER TABLE {$tableName} MODIFY COLUMN {$column} {$definition}");
136+
}
137+
}
138+
139+
// Verificar e ajustar índices
140+
$currentIndexes = $this->DB->getIndexes($tableName);
141+
$indexNames = array_column($currentIndexes, 'Key_name');
142+
foreach ($desiredStructure as $key => $definition) {
143+
if (strpos($key, 'INDEX') !== false) {
144+
$indexName = $definition;
145+
if (!in_array($indexName, $indexNames)) {
146+
// Adicionar índice se não existir
147+
$this->DB->queryOrDie("ALTER TABLE {$tableName} ADD INDEX {$indexName}");
148+
}
149+
}
150+
}
151+
}
100152

101153
protected function truncateTable() {
102154
PluginSmartAssignLogger::addWarning(__FUNCTION__ . ' - entrou...');

inc/config.class.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,16 @@ public static function loadSources() {
7272

7373
public static function hookAddSource($uriArray, $hook, $sourceFile) {
7474
global $PLUGIN_HOOKS;
75-
75+
7676
if (!is_array($uriArray)) {
7777
throw new InvalidArgumentException("Estrutura de URI inválida, esperado array.");
7878
}
79+
80+
// Verifica se 'REQUEST_URI' existe antes de acessá-lo
81+
$requestUri = PluginSmartAssignRequest::getServerParam('REQUEST_URI') ?? '';
82+
7983
foreach ($uriArray as $uri) {
80-
if (strpos(PluginSmartAssignRequest::getServerParam('REQUEST_URI'), $uri) !== false) {
84+
if ($requestUri !== '' && strpos($requestUri, $uri) !== false) {
8185
$PLUGIN_HOOKS[$hook][self::$PLUGIN_SMARTASSIGN_CODE] = $sourceFile;
8286
PluginSmartAssignLogger::addWarning(__METHOD__ . " - recurso $sourceFile carregado!");
8387
break;

smartassign.xml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@
88
<short>
99
<en_US>This plugin allows the assignment of a ticket using a smartassign policy.</en_US>
1010
<en_GB>This plugin allows the assignment of a ticket using a smartassign policy.</en_GB>
11-
<it>Questo plugin permette l'assegnazione di un ticket utilizzando una politica di smartassign.</it>
11+
<it_IT>Questo plugin permette l'assegnazione di un ticket utilizzando una politica di smartassign.</it_IT>
1212
<pt_BR>Este plugin permite a atribuição de um chamado utilizando uma política de smartassign.</pt_BR>
13-
<fr>Ce plugin permet l'attribution d'un ticket en utilisant une politique de smartassign.</fr>
14-
<es>Este plugin permite la asignación de un ticket utilizando una política de smartassign.</es>
13+
<fr_FR>Ce plugin permet l'attribution d'un ticket en utilisant une politique de smartassign.</fr_FR>
14+
<es_ES>Este plugin permite la asignación de un ticket utilizando una política de smartassign.</es_ES>
1515
</short>
1616
<long>
1717
<en_US>This plugin allows the automatic assignment and distribution of tickets based on the group responsible for the ITIL category. The plugin operates in two modes: Balancing, where tickets are distributed evenly among the group members, or Rotation, where tickets are assigned alternately.</en_US>
1818
<en_GB>This plugin allows the automatic assignment and distribution of tickets based on the group responsible for the ITIL category. The plugin operates in two modes: Balancing, where tickets are distributed evenly among the group members, or Rotation, where tickets are assigned alternately.</en_GB>
19-
<it>Questo plugin permette l'assegnazione e distribuzione automatica dei ticket in base al gruppo responsabile della categoria ITIL. Il plugin opera in due modalità: Bilanciamento, dove i ticket vengono distribuiti equamente tra i membri del gruppo, o Rotazione, dove i ticket vengono assegnati in modo alternato.</it>
19+
<it_IT>Questo plugin permette l'assegnazione e distribuzione automatica dei ticket in base al gruppo responsabile della categoria ITIL. Il plugin opera in due modalità: Bilanciamento, dove i ticket vengono distribuiti equamente tra i membri del gruppo, o Rotazione, dove i ticket vengono assegnati in modo alternato.</it_IT>
2020
<pt_BR>Atribuição e distribuição automática de chamados com base no grupo responsável pela categoria ITIL. O plugin opera em duas modalidades: Balanceamento, onde os chamados são distribuídos de maneira equilibrada entre os membros do grupo, ou Rodízio, em que os chamados são atribuídos de forma alternada.</pt_BR>
21-
<fr>Ce plugin permet l'attribution et la distribution automatique des tickets en fonction du groupe responsable de la catégorie ITIL. Le plugin fonctionne en deux modes : Équilibrage, où les tickets sont distribués de manière équilibrée entre les membres du groupe, ou Rotation, où les tickets sont attribués de manière alternée.</fr>
22-
<es>Este plugin permite la asignación y distribución automática de tickets en función del grupo responsable de la categoría ITIL. El plugin funciona en dos modos: Balanceo, donde los tickets se distribuyen equitativamente entre los miembros del grupo, o Rotación, donde los tickets se asignan de forma alternada.</es>
21+
<fr_FR>Ce plugin permet l'attribution et la distribution automatique des tickets en fonction du groupe responsable de la catégorie ITIL. Le plugin fonctionne en deux modes : Équilibrage, où les tickets sont distribués de manière équilibrée entre les membres du groupe, ou Rotation, où les tickets sont attribués de manière alternée.</fr_FR>
22+
<es_ES>Este plugin permite la asignación y distribución automática de tickets en función del grupo responsable de la categoría ITIL. El plugin funciona en dos modos: Balanceo, donde los tickets se distribuyen equitativamente entre los miembros del grupo, o Rotación, donde los tickets se asignan de forma alternada.</es_ES>
2323
</long>
2424
</description>
2525
<homepage>https://github.com/RPGMais/smartassign</homepage>
@@ -40,9 +40,9 @@
4040
<lang>en_US</lang>
4141
<lang>en_GB</lang>
4242
<lang>pt_BR</lang>
43-
<lang>es</lang>
44-
<lang>fr</lang>
45-
<lang>it</lang>
43+
<lang>es_ES</lang>
44+
<lang>fr_FR</lang>
45+
<lang>it_IT</lang>
4646
</langs>
4747
<license>GPL v3</license>
4848
<tags>
@@ -56,26 +56,26 @@
5656
<tag>Helpdesk</tag>
5757
<tag>Technician</tag>
5858
</en_GB>
59-
<it>
59+
<it_IT>
6060
<tag>Ticket</tag>
6161
<tag>Assistenza</tag>
6262
<tag>Tecnico</tag>
63-
</it>
63+
</it_IT>
6464
<pt_BR>
6565
<tag>Chamado</tag>
6666
<tag>Assistência</tag>
6767
<tag>Técnico</tag>
6868
</pt_BR>
69-
<fr>
69+
<fr_FR>
7070
<tag>Ticket</tag>
7171
<tag>Assistance</tag>
7272
<tag>Technicien</tag>
73-
</fr>
74-
<es>
73+
</fr_FR>
74+
<es_ES>
7575
<tag>Ticket</tag>
7676
<tag>Soporte</tag>
7777
<tag>Técnico</tag>
78-
</es>
78+
</es_ES>
7979
</tags>
8080
<screenshots>
8181
<screenshot>https://raw.githubusercontent.com/RPGMais/smartassign/refs/heads/main/pics/smartassign.png</screenshot>

0 commit comments

Comments
 (0)