|
|
@@ -169,12 +169,13 @@ SQL;
|
|
|
|
|
|
public function test2Action() {
|
|
|
$sqlList = array();
|
|
|
- $sqlList['RemoveTableGroupToInit'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_GROUPS_to_INIT`";
|
|
|
$sqlList['RemoveTableGroupToInit'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_GROUP_to_PROCES`";
|
|
|
$sqlList['InstallTableGroupToInit'] = <<<SQL
|
|
|
CREATE TABLE IF NOT EXISTS `CRM_PROCES_idx_GROUP_to_PROCES` (
|
|
|
`ID_PROCES` int(11) NOT NULL
|
|
|
, `ID_GROUP` int(11) NOT NULL
|
|
|
+ , `HAS_PERM_R` tinyint(1) NOT NULL DEFAULT 0
|
|
|
+ , `HAS_PERM_X` tinyint(1) NOT NULL DEFAULT 0
|
|
|
, KEY `ID_PROCES` (`ID_PROCES`)
|
|
|
, KEY `ID_GROUP` (`ID_GROUP`)
|
|
|
, UNIQUE KEY `uniq__GROUP_to_PROCES` (`ID_PROCES`,`ID_GROUP`)
|
|
|
@@ -197,18 +198,63 @@ SQL;
|
|
|
-- where i.`TYPE` in('PROCES_INIT', 'GOTO_AND_RETURN')
|
|
|
SQL;
|
|
|
$db = DB::getDB();
|
|
|
- if ($db->has_errors()) {
|
|
|
- throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
|
|
|
+ if ($db->has_errors()) throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
|
|
|
+ $DBG_TIME = true;//('1' == V::get('DBG_TIME', '', $_GET));
|
|
|
+ $dbgExecTime = new DebugExecutionTime();
|
|
|
+ if ($DBG_TIME) $dbgExecTime->activate();
|
|
|
+ $dbgExecTime->log('start');
|
|
|
+ foreach ($sqlList as $sqlName => $sql) {
|
|
|
+ $res = $db->query($sql);
|
|
|
+ if ($db->has_errors()) throw new Exception("DB Errors at sql '{$sqlName}': " . implode("\n<br>", $db->get_errors()));
|
|
|
+ if($DBG_TIME) $dbgExecTime->log("end-{$sqlName}");
|
|
|
}
|
|
|
+ if($DBG_TIME) $dbgExecTime->printDebug();
|
|
|
+ }
|
|
|
+
|
|
|
+ public function test3Action() {
|
|
|
+ $sqlList = array();
|
|
|
+ $sqlList['RemoveTableGroupToInit'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_GROUP_to_PROCES_test3`";
|
|
|
+ $sqlList['RemoveTableGroupToInit'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_GROUP_to_PROCES_PERM`";
|
|
|
+ $sqlList['InstallTableGroupToInit'] = <<<SQL
|
|
|
+ CREATE TABLE IF NOT EXISTS `CRM_PROCES_idx_GROUP_to_PROCES_PERM` (
|
|
|
+ `ID_PROCES` int(11) NOT NULL
|
|
|
+ , `ID_GROUP` int(11) NOT NULL
|
|
|
+ , `HAS_PERM_R` tinyint(1) NOT NULL DEFAULT 0
|
|
|
+ , `HAS_PERM_X` tinyint(1) NOT NULL DEFAULT 0
|
|
|
+ , KEY `ID_PROCES` (`ID_PROCES`)
|
|
|
+ , KEY `ID_GROUP` (`ID_GROUP`)
|
|
|
+ , UNIQUE KEY `uniq__GROUP_to_PROCES` (`ID_PROCES`,`ID_GROUP`)
|
|
|
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
|
|
|
+SQL;
|
|
|
+ $sqlList['UpdateTableGroupToInit'] = <<<SQL
|
|
|
+ insert into `CRM_PROCES_idx_GROUP_to_PROCES_PERM` (`ID_PROCES`,`ID_GROUP`,`HAS_PERM_R`,`HAS_PERM_X`)
|
|
|
+ select i.`ID_PROCES` as `_ID_PROCES`
|
|
|
+ , z.`ID` as `_ID_GROUP`
|
|
|
+ , IF(przyp.`FORM_TREAT` & 2, 1, 0) as `_HAS_PERM_R`
|
|
|
+ , IF(przyp.`FORM_TREAT` & 8, 1, 0) as `_HAS_PERM_X`
|
|
|
+ from `CRM_PROCES_idx` i
|
|
|
+ join `CRM_WSKAZNIK` wsk on(wsk.`ID_PROCES`=i.`idx_PROCES_WITH_GROUPS_ID`
|
|
|
+ and wsk.`A_STATUS` in('NORMAL', 'WAITING')
|
|
|
+ )
|
|
|
+ join `CRM_LISTA_ZASOBOW` as z on(z.`ID`=wsk.`ID_ZASOB`
|
|
|
+ and z.`TYPE` in('STANOWISKO','PODMIOT','DZIAL')
|
|
|
+ and z.`A_STATUS` in('NORMAL', 'WAITING')
|
|
|
+ )
|
|
|
+ join `CRM_PRZYPADEK` przyp on(przyp.`ID`=wsk.`ID_PRZYPADEK`)
|
|
|
+ -- where i.`TYPE` in('PROCES_INIT', 'GOTO_AND_RETURN')
|
|
|
+ ON DUPLICATE KEY UPDATE `HAS_PERM_R`=GREATEST(`HAS_PERM_R`, IF(przyp.`FORM_TREAT` & 2, 1, 0))
|
|
|
+ , `HAS_PERM_X`=GREATEST(`HAS_PERM_X`, IF(przyp.`FORM_TREAT` & 8, 1, 0))
|
|
|
+ ;
|
|
|
+SQL;
|
|
|
+ $db = DB::getDB();
|
|
|
+ if ($db->has_errors()) throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
|
|
|
$DBG_TIME = true;//('1' == V::get('DBG_TIME', '', $_GET));
|
|
|
$dbgExecTime = new DebugExecutionTime();
|
|
|
if ($DBG_TIME) $dbgExecTime->activate();
|
|
|
$dbgExecTime->log('start');
|
|
|
foreach ($sqlList as $sqlName => $sql) {
|
|
|
$res = $db->query($sql);
|
|
|
- if ($db->has_errors()) {
|
|
|
- throw new Exception("DB Errors at sql '{$sqlName}': " . implode("\n<br>", $db->get_errors()));
|
|
|
- }
|
|
|
+ if ($db->has_errors()) throw new Exception("DB Errors at sql '{$sqlName}': " . implode("\n<br>", $db->get_errors()));
|
|
|
if($DBG_TIME) $dbgExecTime->log("end-{$sqlName}");
|
|
|
}
|
|
|
if($DBG_TIME) $dbgExecTime->printDebug();
|
|
|
@@ -624,6 +670,20 @@ SQL;
|
|
|
CREATE TABLE IF NOT EXISTS `CRM_PROCES_idx_GROUP_to_PROCES` (
|
|
|
`ID_PROCES` int(11) NOT NULL
|
|
|
, `ID_GROUP` int(11) NOT NULL
|
|
|
+ , `HAS_PERM_R` tinyint(1) NOT NULL DEFAULT 0
|
|
|
+ , `HAS_PERM_X` tinyint(1) NOT NULL DEFAULT 0
|
|
|
+ , KEY `ID_PROCES` (`ID_PROCES`)
|
|
|
+ , KEY `ID_GROUP` (`ID_GROUP`)
|
|
|
+ , UNIQUE KEY `uniq__GROUP_to_PROCES` (`ID_PROCES`,`ID_GROUP`)
|
|
|
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
|
|
|
+SQL;
|
|
|
+ $sqlList['RemoveTableGroupToInitPerm'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_GROUP_to_PROCES_PERM`";// TODO: to replace `CRM_PROCES_idx_GROUP_to_PROCES`
|
|
|
+ $sqlList['InstallTableGroupToInitPerm'] = <<<SQL
|
|
|
+ CREATE TABLE IF NOT EXISTS `CRM_PROCES_idx_GROUP_to_PROCES_PERM` (
|
|
|
+ `ID_PROCES` int(11) NOT NULL
|
|
|
+ , `ID_GROUP` int(11) NOT NULL
|
|
|
+ , `HAS_PERM_R` tinyint(1) NOT NULL DEFAULT 0
|
|
|
+ , `HAS_PERM_X` tinyint(1) NOT NULL DEFAULT 0
|
|
|
, KEY `ID_PROCES` (`ID_PROCES`)
|
|
|
, KEY `ID_GROUP` (`ID_GROUP`)
|
|
|
, UNIQUE KEY `uniq__GROUP_to_PROCES` (`ID_PROCES`,`ID_GROUP`)
|
|
|
@@ -1023,6 +1083,29 @@ BEGIN
|
|
|
-- where i.`TYPE` in('PROCES_INIT', 'GOTO_AND_RETURN')
|
|
|
;
|
|
|
|
|
|
+ -- GP.2--clear-CRM_PROCES_idx_GROUP_to_PROCES_PERM
|
|
|
+ truncate table `CRM_PROCES_idx_GROUP_to_PROCES_PERM`;
|
|
|
+
|
|
|
+ -- GP.3--fill-CRM_PROCES_idx_GROUP_to_PROCES_PERM
|
|
|
+ insert into `CRM_PROCES_idx_GROUP_to_PROCES_PERM` (`ID_PROCES`,`ID_GROUP`,`HAS_PERM_R`,`HAS_PERM_X`)
|
|
|
+ select i.`ID_PROCES` as `_ID_PROCES`
|
|
|
+ , z.`ID` as `_ID_GROUP`
|
|
|
+ , IF(przyp.`FORM_TREAT` & 2, 1, 0) as `_HAS_PERM_R`
|
|
|
+ , IF(przyp.`FORM_TREAT` & 8, 1, 0) as `_HAS_PERM_X`
|
|
|
+ from `CRM_PROCES_idx` i
|
|
|
+ join `CRM_WSKAZNIK` wsk on(wsk.`ID_PROCES`=i.`idx_PROCES_WITH_GROUPS_ID`
|
|
|
+ and wsk.`A_STATUS` in('NORMAL', 'WAITING')
|
|
|
+ )
|
|
|
+ join `CRM_LISTA_ZASOBOW` as z on(z.`ID`=wsk.`ID_ZASOB`
|
|
|
+ and z.`TYPE` in('STANOWISKO','PODMIOT','DZIAL')
|
|
|
+ and z.`A_STATUS` in('NORMAL', 'WAITING')
|
|
|
+ )
|
|
|
+ join `CRM_PRZYPADEK` przyp on(przyp.`ID`=wsk.`ID_PRZYPADEK`)
|
|
|
+ -- where i.`TYPE` in('PROCES_INIT', 'GOTO_AND_RETURN')
|
|
|
+ ON DUPLICATE KEY UPDATE `HAS_PERM_R`=GREATEST(`HAS_PERM_R`, IF(przyp.`FORM_TREAT` & 2, 1, 0))
|
|
|
+ , `HAS_PERM_X`=GREATEST(`HAS_PERM_X`, IF(przyp.`FORM_TREAT` & 8, 1, 0))
|
|
|
+ ;
|
|
|
+
|
|
|
-- CONF.2--set-end-time-in-config
|
|
|
replace into `CRM_CONFIG` (`conf_key`, `conf_val`) values (@conf_last_exec_lock_key, ''), (@conf_last_exec_end_key, NOW());
|
|
|
|