aktualizuj uprawnienia'; ?>
aktualizuj uprawnienia'; $idProcesInit = V::get('id_proces_init', '', $_REQUEST, 'int'); ?>
printProcesInitMap($idProcesInit); } SE_Layout::dol(); } public function printProcesInitMap($idProcesInit) { Lib::loadClass('CrmProcesMap'); $map = new CrmProcesMap($idProcesInit); } public function runAction() { SE_Layout::gora(); SE_Layout::menu(); $DBG_TIME = true;//('1' == V::get('DBG_TIME', '', $_GET)); $dbgExecTime = new DebugExecutionTime(); if ($DBG_TIME) $dbgExecTime->activate(); $dbgExecTime->log('start'); try { $this->callProcedure(); } catch (Exception $e) { ?>
getMessage(); ?>
log('procedure'); $procExecTime = $dbgExecTime->getLastExecTime(); //$totalExecTime = $dbgExecTime->getTotalExecTime(); ?>
Zaktualizowano uprawnienia
( s)
log('end'); //$dbgExecTime->printDebug(); } SE_Layout::dol(); } public function runApiAction() { $this->callProcedure(); die('Zaktualizowano uprawnienia'); } public function callProcedure() { $sql = "call `update_proces_init_idx_rec`();"; $db = DB::getDB(); if ($db->has_errors()) { throw new Exception("DB Errors: " . implode("\n
", $db->get_errors())); } $res = $db->query($sql); if ($db->has_errors()) { $dbErrors = array(); if ($db->has_errors()) { $dbErrorsSql = $db->get_errors(); foreach ($dbErrorsSql as $vErr) { if ('SQL QUERY FAILED: ' == substr($vErr, 0, 18)) { $vErr = substr($vErr, 18); } //$dbErrors[] = StorageException::parseMessage($vErr); $dbErrors[] = $vErr; } } throw new StorageException($dbErrors); } } public function test1Action() { $sql = <<has_errors()) { throw new Exception("DB Errors: " . implode("\n
", $db->get_errors())); } $res = $db->query($sql); if ($db->has_errors()) { throw new Exception("DB Errors: " . implode("\n
", $db->get_errors())); } while ($r = $db->fetch($res)) { echo'
';print_r($r);echo'
'; } } public function test2Action() { $sqlList = array(); $sqlList['RemoveTableGroupToInit'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_GROUP_to_PROCES`"; $sqlList['InstallTableGroupToInit'] = <<has_errors()) throw new Exception("DB Errors: " . implode("\n
", $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
", $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'] = <<has_errors()) throw new Exception("DB Errors: " . implode("\n
", $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
", $db->get_errors())); if($DBG_TIME) $dbgExecTime->log("end-{$sqlName}"); } if($DBG_TIME) $dbgExecTime->printDebug(); } public function runDebugAction() { $sqlList = array(); // SET @conf_last_exec_start_key = 'tbl_indexer_CRM_PROCES_last_exec_start'; // SET @conf_last_exec_end_key = 'tbl_indexer_CRM_PROCES_last_exec_end'; $sqlList['0-prepare-fill_idx_INIT-rm'] = "DROP PROCEDURE if exists `update_proces_init_idx__loop__fill_idx_INIT`"; $sqlList['0-prepare-fill_idx_INIT-create'] = << 0 DO update `CRM_PROCES_idx_TEMP` p join `CRM_PROCES_idx_TEMP` pp on(pp.`ID_PROCES`=p.`PARENT_ID`) set p.`idx_PROCES_INIT_ID`=IF(p.`idx_PROCES_INIT_ID`>0, p.`idx_PROCES_INIT_ID`, pp.`idx_PROCES_INIT_ID`) , p.`idx_MAIN_PROCES_INIT_ID`=pp.`idx_MAIN_PROCES_INIT_ID` -- // TODO:?: update here `idx_MAIN_PROCES_INIT_ID` where p.`idx_PROCES_INIT_ID`=0 and pp.`idx_PROCES_INIT_ID`>0 ; SET @pinitCnt = ROW_COUNT(); SET @i = @i + 1; END WHILE; END SQL; $sqlList['0-prepare-while-1-rm'] = "DROP PROCEDURE if exists `update_proces_init_idx_rec__while1`"; $sqlList['0-prepare-while-1-create'] = << 0 DO update `CRM_PROCES_idx_TEMP` p join `CRM_PROCES_idx_TEMP` pp on(pp.`ID_PROCES`=p.`PARENT_ID`) set p.`idx_MAIN_PROCES_INIT_ID`=pp.`idx_MAIN_PROCES_INIT_ID` where p.`idx_MAIN_PROCES_INIT_ID`=0 and pp.`idx_MAIN_PROCES_INIT_ID`>0 ; SET @pinitCnt = ROW_COUNT(); SET @i = @i + 1; END WHILE; END SQL; $sqlList['0-prepare-while-2-rm'] = "DROP PROCEDURE if exists `update_proces_init_idx_rec__while2`"; $sqlList['0-prepare-while-2-create'] = << 0 DO update `CRM_PROCES_idx_TEMP` as p join `CRM_PROCES_idx_TEMP` as pp on( pp.`ID_PROCES`=p.`PARENT_ID` and pp.`idx_PROCES_WITH_GROUPS_ID` is not null and pp.`idx_PROCES_WITH_GROUPS_ID`>0 ) set p.`idx_PROCES_WITH_GROUPS_ID`=pp.`idx_PROCES_WITH_GROUPS_ID` where p.`idx_PROCES_WITH_GROUPS_ID` is null ; SET @groupCnt = ROW_COUNT(); SET @i = @i + 1; END WHILE; END SQL; $sqlList__TEST_PERF_NO_DIFF['0-prepare-while-2-create'] = << 0 DO update `CRM_PROCES_idx_TEMP` as p join `CRM_PROCES_idx_TEMP` as pp on(pp.`ID_PROCES`=p.`PARENT_ID` and pp.`idx_PROCES_WITH_GROUPS_ID` is not null and pp.`idx_PROCES_WITH_GROUPS_ID`>0 ) set p.`idx_PROCES_WITH_GROUPS_ID`=pp.`idx_PROCES_WITH_GROUPS_ID` where p.`idx_PROCES_WITH_GROUPS_ID` is null ; SET @groupCnt = ROW_COUNT(); SET @i = @i + 1; END WHILE; END SQL; $sqlList['CONF.1--set-start-time-in-config'] = <<0 ; SQL; $sqlList['G.2--while-2-loop-update-proc_with_groups_id-from-parent'] = <<0 ) join `CRM_PROCES_idx_TEMP` gi on(gi.`ID_PROCES`=g.`ID`) where p.`A_STATUS` in('NORMAL','WAITING') ; SQL; $sqlList['GOTO_AND_RET.2--fill-childrens-of-goto_and_return'] = <<0 and i.`TYPE`!='GOTO_AND_RETURN' ; SQL; $sqlList__TODO_IS_NEEDED__['10-delete-where-!idx_PROCES_WITH_GROUPS_ID'] = <<0 and i.`idx_PROCES_WITH_GROUPS_ID` is not null ; SQL; $sqlList__TODO_OFF_time_0_1__['P.1--update-CRM_PROCES-idx_PROCES_INIT_ID'] = <<has_errors()) { throw new Exception("DB Errors: " . implode("\n
", $db->get_errors())); } $DBG_TIME = true;//('1' == V::get('DBG_TIME', '', $_GET)); $dbgExecTime = new DebugExecutionTime(); if ($DBG_TIME) $dbgExecTime->activate(); $dbgExecTime->log('start'); $sqlExecuteLimit = V::get('DBG_LIMIT', 0, $_GET); $sqlExecuteCounter = 0; foreach ($sqlList as $sqlName => $sql) { $sqlExecuteCounter++; echo'

['.$sqlExecuteCounter.'] Executing sql "'.$sqlName.'" ...

'; $res = $db->query($sql); if ($db->has_errors()) { throw new Exception("DB Errors at sql '{$sqlName}': " . implode("\n
", $db->get_errors())); } if($DBG_TIME) $dbgExecTime->log("execute sql {$sqlName}"); echo'

['.$sqlExecuteCounter.'] DONE sql "'.$sqlName.'"

'; if ($sqlExecuteLimit > 0 && $sqlExecuteCounter >= $sqlExecuteLimit) break; } if($DBG_TIME) $dbgExecTime->printDebug(); } public function reinstallAction() { $this->reinstall(); die('OK'); } public function reinstall() { $sqlList = array(); $sqlList['RemoveTable_CRM_PROCES_idx'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx`"; $sqlList['InstallTable_CRM_PROCES_idx'] = <<0 THEN UPDATE `P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Already executed` SET x=1; ELSE BEGIN -- CONF.1--set-start-time-in-config replace into `CRM_CONFIG` (`conf_key`, `conf_val`) values (@conf_last_exec_lock_key, NOW()), (@conf_last_exec_start_key, NOW()); -- I.1--truncate-table truncate table `CRM_PROCES_idx_TEMP`; -- I.2--fill-CRM_PROCES_idx_TEMP insert into `CRM_PROCES_idx_TEMP` (`ID_PROCES`,`TYPE`,`PARENT_ID`,`idx_PROCES_INIT_ID`,`idx_MAIN_PROCES_INIT_ID`) select p.`ID` as `ID_PROCES` , p.`TYPE` as `TYPE` , p.`PARENT_ID` as `PARENT_ID` , IF(p.`TYPE`='PROCES_INIT', p.`ID`, 0) as `idx_PROCES_INIT_ID` , IF(p.`TYPE`='PROCES_INIT', p.`ID`, 0) as `idx_MAIN_PROCES_INIT_ID` from `CRM_PROCES` p where p.`A_STATUS` in('NORMAL','WAITING') ; -- G.1--before-while-2-set-initial-proc_with_groups_id update `CRM_PROCES_idx_TEMP` i join `CRM_WSKAZNIK` as wsk on(wsk.`ID_PROCES`=i.`ID_PROCES` 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` and przyp.`FORM_TREAT` & 8 -- has perm X ) set i.`idx_PROCES_WITH_GROUPS_ID`=i.`ID_PROCES` where i.`idx_PROCES_INIT_ID`>0 ; -- G.2--while-2-loop-update-proc_with_groups_id-from-parent SET @i = 0; SET @loopLomit = 100; SET @groupCnt = 1; WHILE @i < @loopLomit and @groupCnt > 0 DO update `CRM_PROCES_idx_TEMP` as p join `CRM_PROCES_idx_TEMP` as pp on( pp.`ID_PROCES`=p.`PARENT_ID` and pp.`idx_PROCES_WITH_GROUPS_ID` is not null and pp.`idx_PROCES_WITH_GROUPS_ID`>0 ) set p.`idx_PROCES_WITH_GROUPS_ID`=pp.`idx_PROCES_WITH_GROUPS_ID` where p.`idx_PROCES_WITH_GROUPS_ID` is null ; SET @groupCnt = ROW_COUNT(); SET @i = @i + 1; END WHILE; -- P_INIT_ID.1--fill_idx_INIT SET @i = 0; SET @loopLomit = 100; SET @pinitCnt = 1; WHILE @i < @loopLomit and @pinitCnt > 0 DO update `CRM_PROCES_idx_TEMP` p join `CRM_PROCES_idx_TEMP` pp on(pp.`ID_PROCES`=p.`PARENT_ID`) set p.`idx_PROCES_INIT_ID`=IF(p.`idx_PROCES_INIT_ID`>0, p.`idx_PROCES_INIT_ID`, pp.`idx_PROCES_INIT_ID`) , p.`idx_MAIN_PROCES_INIT_ID`=pp.`idx_MAIN_PROCES_INIT_ID` -- // TODO:?: update here `idx_MAIN_PROCES_INIT_ID` where p.`idx_PROCES_INIT_ID`=0 and pp.`idx_PROCES_INIT_ID`>0 ; SET @pinitCnt = ROW_COUNT(); SET @i = @i + 1; END WHILE; -- GOTO_AND_RET.1--from-7-fill-goto_and_return insert ignore into `CRM_PROCES_idx_TEMP` (`ID_PROCES`,`TYPE`,`PARENT_ID`,`idx_PROCES_INIT_ID`,`idx_MAIN_PROCES_INIT_ID`,`idx_PROCES_WITH_GROUPS_ID`) select g.`ID` , 'GOTO_AND_RETURN' as `TYPE` , p.`ID` as `PARENT_ID` , g.`ID` as `idx_PROCES_INIT_ID` , i.`idx_MAIN_PROCES_INIT_ID` as `idx_MAIN_PROCES_INIT_ID` , IF(i.`idx_PROCES_WITH_GROUPS_ID` is null, gi.`idx_PROCES_WITH_GROUPS_ID`, i.`idx_PROCES_WITH_GROUPS_ID`) as `idx_PROCES_WITH_GROUPS_ID` from `CRM_PROCES` p join `CRM_PROCES_idx_TEMP` i on(i.`ID_PROCES`=p.`ID`) join `CRM_PROCES` g on(g.`ID`=p.`IF_TRUE_GOTO` and g.`TYPE`='PROCES_INIT' and g.`A_STATUS` in('NORMAL','WAITING') and p.`IF_TRUE_GOTO_FLAG`='GOTO_AND_RETURN' and p.`IF_TRUE_GOTO`>0 ) join `CRM_PROCES_idx_TEMP` gi on(gi.`ID_PROCES`=g.`ID`) where p.`A_STATUS` in('NORMAL','WAITING') ; -- GOTO_AND_RET.2--fill-childrens-of-goto_and_return insert ignore into `CRM_PROCES_idx_TEMP` (`ID_PROCES`,`TYPE`,`PARENT_ID`,`idx_PROCES_INIT_ID`,`idx_MAIN_PROCES_INIT_ID`,`idx_PROCES_WITH_GROUPS_ID`) select ic.`ID_PROCES` , 'GOTO_AND_RETURN_CHILD' as `TYPE` , ic.`PARENT_ID` as `PARENT_ID` , ic.`idx_PROCES_INIT_ID` as `idx_PROCES_INIT_ID` , i.`idx_MAIN_PROCES_INIT_ID` as `idx_MAIN_PROCES_INIT_ID` , IF(ic.`idx_PROCES_WITH_GROUPS_ID` is null, i.`idx_PROCES_WITH_GROUPS_ID`, ic.`idx_PROCES_WITH_GROUPS_ID`) as `idx_PROCES_WITH_GROUPS_ID` from `CRM_PROCES_idx_TEMP` i join `CRM_PROCES_idx_TEMP` ic on( ic.`idx_PROCES_INIT_ID`=i.`ID_PROCES` and ic.`ID_PROCES`!=i.`ID_PROCES` ) where i.`TYPE`='GOTO_AND_RETURN' ; -- GOTO_AND_RET.3--fill-goto_and_return_lvl2 -- gc p(5105) is GOTO_AND_RETURN_CHILD pID(5061) pI(5039) pIM(5040) pG(5040) -- gc p(5105) is GOTO_AND_RETURN_CHILD pID(5061) pI(5039) pIM(5100) pG(5100) -- gg p(5103) is GOTO_AND_RETURN pID(5105) pI(5103) pIM(5039) pG(NULL) -- + p(5103) is GOTO_AND_RETURN_LVL2 pID(5105) pI(5103) pIM(5040) pG(5040) -- + p(5103) is GOTO_AND_RETURN_LVL2 pID(5105) pI(5103) pIM(5100) pG(5100) insert ignore into `CRM_PROCES_idx_TEMP` (`ID_PROCES`,`TYPE`,`PARENT_ID`,`idx_PROCES_INIT_ID`,`idx_MAIN_PROCES_INIT_ID`,`idx_PROCES_WITH_GROUPS_ID`) select gg.`ID_PROCES` as `ID_PROCES` , 'GOTO_AND_RETURN_LVL2' as `TYPE` , gg.`PARENT_ID` as `PARENT_ID` , gg.`idx_PROCES_INIT_ID` as `idx_PROCES_INIT_ID` , gc.`idx_MAIN_PROCES_INIT_ID` as `idx_MAIN_PROCES_INIT_ID` , IF(gg.`idx_PROCES_WITH_GROUPS_ID` is null, gc.`idx_PROCES_WITH_GROUPS_ID`, gg.`idx_PROCES_WITH_GROUPS_ID`) as `idx_PROCES_WITH_GROUPS_ID` -- , 'gc', gc.*, 'gg', gg.* from `CRM_PROCES_idx_TEMP` gg join `CRM_PROCES_idx_TEMP` gc on(gc.`ID_PROCES`=gg.`PARENT_ID`) where gg.`TYPE`='GOTO_AND_RETURN' and gc.`TYPE`='GOTO_AND_RETURN_CHILD' ; -- GOTO_AND_RET.3--fill-childrens-of-goto_and_return_lvl2 -- i p(5103) is GOTO_AND_RETURN_LVL2 pID(5105) pI(5103) pIM(5040) pG(5040) -- i p(5103) is GOTO_AND_RETURN_LVL2 pID(5105) pI(5103) pIM(5100) pG(5100) -- ic p(5104) is GOTO_AND_RETURN_CHILD pID(5103) pI(5103) pIM(5039) pG(NULL) -- ic p(5104) is GOTO_AND_RETURN_CHILD pID(5103) pI(5103) pIM(5039) pG(NULL) -- + p(5104) is GOTO_AND_RETURN_CHILD_LVL2 pID(5103) pI(5103) pIM(5100) pG(5100) -- + p(5104) is GOTO_AND_RETURN_CHILD_LVL2 pID(5103) pI(5103) pIM(5040) pG(5040) insert ignore into `CRM_PROCES_idx_TEMP` (`ID_PROCES`,`TYPE`,`PARENT_ID`,`idx_PROCES_INIT_ID`,`idx_MAIN_PROCES_INIT_ID`,`idx_PROCES_WITH_GROUPS_ID`) select ic.`ID_PROCES` , 'GOTO_AND_RETURN_CHILD_LVL2' as `TYPE` , ic.`PARENT_ID` as `PARENT_ID` , ic.`idx_PROCES_INIT_ID` as `idx_PROCES_INIT_ID` , i.`idx_MAIN_PROCES_INIT_ID` as `idx_MAIN_PROCES_INIT_ID` , IF(ic.`idx_PROCES_WITH_GROUPS_ID` is null, i.`idx_PROCES_WITH_GROUPS_ID`, ic.`idx_PROCES_WITH_GROUPS_ID`) as `idx_PROCES_WITH_GROUPS_ID` -- , 'i', i.*, 'ic', ic.* from `CRM_PROCES_idx_TEMP` i join `CRM_PROCES_idx_TEMP` ic on( ic.`idx_PROCES_INIT_ID`=i.`ID_PROCES` and ic.`ID_PROCES`!=i.`ID_PROCES` and ic.`TYPE`='GOTO_AND_RETURN_CHILD' ) where i.`TYPE`='GOTO_AND_RETURN_LVL2' ; -- IDX.1--clear-CRM_PROCES_idx truncate table `CRM_PROCES_idx`; -- IDX.2--update-CRM_PROCES_idx-from-temp insert into `CRM_PROCES_idx` (`ID_PROCES`,`PARENT_ID`,`TYPE`,`idx_PROCES_INIT_ID`,`idx_MAIN_PROCES_INIT_ID`,`idx_PROCES_WITH_GROUPS_ID`) select i.`ID_PROCES`,i.`PARENT_ID`,i.`TYPE`,i.`idx_PROCES_INIT_ID`,i.`idx_MAIN_PROCES_INIT_ID`,i.`idx_PROCES_WITH_GROUPS_ID` from `CRM_PROCES_idx_TEMP` i where i.`idx_PROCES_INIT_ID`>0 and i.`idx_PROCES_WITH_GROUPS_ID` is not null ; -- TODO OFF: time ~0.1 P.1--update-CRM_PROCES-idx_PROCES_INIT_ID -- update `CRM_PROCES` p -- set p.`idx_PROCES_INIT_ID`=coalesce((select i.`idx_PROCES_INIT_ID` from `CRM_PROCES_idx` i where i.`ID_PROCES`=p.`ID` limit 1), 0) -- ; -- GP.1--clear-CRM_PROCES_idx_GROUP_to_PROCES truncate table `CRM_PROCES_idx_GROUP_to_PROCES`; -- GP.2--fill-CRM_PROCES_idx_GROUP_to_PROCES insert ignore into `CRM_PROCES_idx_GROUP_to_PROCES` (`ID_PROCES`,`ID_GROUP`) select i.`ID_PROCES` as ID_PROCES, z.`ID` as ID_GROUP 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` and przyp.`FORM_TREAT` & 8 -- has perm X ) -- 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()); -- clear msg 'Update perms' from Msgs system CALL CRM_UI_MSGS__markTableEveryoneAsExecuted('update_proces_init_idx_rec','FixCrmProcesInitIdx','Update perms','CRM_PROCES'); END ; END IF ; END ; SQL; $sqlList['RemoveTrigger_AfterInsertProces'] = "DROP TRIGGER IF EXISTS `FixCrmProcesInitIdx_CRM_PROCES_AFTER_INSERT`"; $sqlList['CreateTrigger_AfterInsertProces'] = " CREATE DEFINER=`root`@`localhost` TRIGGER `FixCrmProcesInitIdx_CRM_PROCES_AFTER_INSERT` AFTER INSERT ON `CRM_PROCES` FOR EACH ROW BEGIN -- only when PARENT_ID changes and PARENT_ID exists in `CRM_PROCES_idx` IF NEW.`PARENT_ID` IS NOT NULL AND NEW.`PARENT_ID`>0 AND (select count(*) from `CRM_PROCES_idx` where `ID_PROCES`=NEW.`PARENT_ID` limit 1)>0 THEN -- throw warning to update perms CALL CRM_UI_MSGS__addTableEveryoneUniqueMsg(coalesce(NEW.A_RECORD_CREATE_AUTHOR,':AFTER_INSERT'), 'FixCrmProcesInitIdx', 'danger', 'Update perms', 'CRM_PROCES'); -- UPDATE `P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Update perms` SET x=1; END IF; END "; $sqlList['RemoveTrigger_AfterUpdateProces'] = "DROP TRIGGER IF EXISTS `FixCrmProcesInitIdx_CRM_PROCES_AFTER_UPDATE`"; $sqlList['CreateTrigger_AfterUpdateProces'] = " CREATE DEFINER=`root`@`localhost` TRIGGER `FixCrmProcesInitIdx_CRM_PROCES_AFTER_UPDATE` AFTER UPDATE ON `CRM_PROCES` FOR EACH ROW BEGIN -- only when PARENT_ID changes and ID exists in `CRM_PROCES_idx` IF NEW.`PARENT_ID`!=OLD.`PARENT_ID` AND (select count(*) from `CRM_PROCES_idx` where `ID_PROCES` in(NEW.`ID`, NEW.`PARENT_ID`, OLD.`PARENT_ID`) limit 1)>0 THEN -- throw warning to update perms CALL CRM_UI_MSGS__addTableEveryoneUniqueMsg(coalesce(NEW.A_RECORD_UPDATE_AUTHOR,':AFTER_UPDATE'), 'FixCrmProcesInitIdx', 'danger', 'Update perms', 'CRM_PROCES'); -- UPDATE `P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Update perms` SET x=1; END IF; END "; $sqlList['RemoveTrigger_AfterInsertWskaznik'] = "DROP TRIGGER IF EXISTS `FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_INSERT`"; $sqlList['CreateTrigger_AfterInsertWskaznik'] = " CREATE DEFINER=`root`@`localhost` TRIGGER `FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_INSERT` AFTER INSERT ON `CRM_WSKAZNIK` FOR EACH ROW BEGIN -- only when ID_PROCES exists in `CRM_PROCES_idx` -- only when ID_ZASOB is group -- only when ID_PRZYPADEK has perm 'X' IF NEW.`ID_PROCES`>0 AND NEW.`ID_ZASOB`>0 AND NEW.`ID_PRZYPADEK`>0 AND (select count(*) from `CRM_PROCES_idx` where `ID_PROCES`=NEW.`ID_PROCES` limit 1)>0 AND (select count(*) from `CRM_LISTA_ZASOBOW` z where z.`ID`=NEW.`ID_ZASOB` and z.`TYPE` in('STANOWISKO','DZIAL','PODMIOT') limit 1)>0 AND (select count(*) from `CRM_PRZYPADEK` przyp where przyp.`ID`=NEW.`ID_PRZYPADEK` and przyp.`FORM_TREAT` & 8 limit 1)>0 THEN -- throw warning to update perms CALL CRM_UI_MSGS__addTableEveryoneUniqueMsg(coalesce(NEW.A_RECORD_CREATE_AUTHOR,':AFTER_INSERT_WSK'), 'FixCrmProcesInitIdx', 'danger', 'Update perms', 'CRM_PROCES'); -- UPDATE `P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Update perms` SET x=1; END IF; END "; $sqlList['RemoveTrigger_AfterUpdateWskaznik'] = "DROP TRIGGER IF EXISTS `FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_UPDATE`"; $sqlList['CreateTrigger_AfterUpdateWskaznik'] = " CREATE DEFINER=`root`@`localhost` TRIGGER `FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_UPDATE` AFTER UPDATE ON `CRM_WSKAZNIK` FOR EACH ROW BEGIN -- only when old or new ID_PROCES exists in `CRM_PROCES_idx` -- only when old or new ID_ZASOB is group -- only when old or new ID_PRZYPADEK has perm 'X' IF (NEW.`ID_PROCES`!=OLD.`ID_PROCES` or NEW.`ID_ZASOB`!=OLD.`ID_ZASOB` or NEW.`ID_PRZYPADEK`!=OLD.`ID_PRZYPADEK` or (NEW.`A_STATUS`!=OLD.`A_STATUS` and ((NEW.`A_STATUS` in('WAITING','NORMAL') and OLD.`A_STATUS` not in('WAITING','NORMAL')) or (NEW.`A_STATUS` not in('WAITING','NORMAL') and OLD.`A_STATUS` in('WAITING','NORMAL')) ) ) ) AND (NEW.`ID_PROCES`>0 or OLD.`ID_PROCES`>0) AND (NEW.`ID_ZASOB`>0 or OLD.`ID_ZASOB`>0) AND (NEW.`ID_PRZYPADEK`>0 or OLD.`ID_PRZYPADEK`>0) -- AND (select count(*) from `CRM_PROCES_idx` where `ID_PROCES` in(NEW.`ID_PROCES`,OLD.`ID_PROCES`) limit 1)>0 AND (select count(*) from `CRM_LISTA_ZASOBOW` z where z.`ID` in(NEW.`ID_ZASOB`,OLD.`ID_ZASOB`) and z.`TYPE` in('STANOWISKO','DZIAL','PODMIOT') limit 1)>0 AND (select count(*) from `CRM_PRZYPADEK` przyp where przyp.`ID` in(NEW.`ID_PRZYPADEK`,OLD.`ID_PRZYPADEK`) and przyp.`FORM_TREAT` & 8 limit 1)>0 THEN -- throw warning to update perms CALL CRM_UI_MSGS__addTableEveryoneUniqueMsg(coalesce(NEW.A_RECORD_UPDATE_AUTHOR,':AFTER_UPDATE_WSK'), 'FixCrmProcesInitIdx', 'danger', 'Update perms', 'CRM_PROCES'); -- UPDATE `P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Update perms` SET x=1; END IF; END "; $sqlList['RemoveConfigLocks'] = " DELETE FROM `CRM_CONFIG` where `CONF_KEY`='tbl_indexer_CRM_PROCES_last_exec_lock_date'; "; $db = DB::getDB(); if ($db->has_errors()) { throw new Exception("DB Errors: " . implode("\n
", $db->get_errors())); } foreach ($sqlList as $sqlName => $sql) { $res = $db->query($sql); if ($db->has_errors()) { throw new Exception("DB Errors at sql '{$sqlName}': " . implode("\n
", $db->get_errors())); } } $this->callProcedure(); } /* #1146 - Table '{DATABASE_NAME}.P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Already executed' doesn't exist */ public function parseMessageFromStorage($msg) { switch ($msg) { case 'ERROR: Already executed': { $msg = "Aktualizacja uprawnień została już uruchomiona przez inną osobę"; break; } case 'ERROR: Update perms': { $msg = "Wymagana aktualizacja uprawnień"; break; } } return $msg; } public function parseMessageFromMsgsSystem($msg) { switch ($msg) { case 'Update perms': { $msg = "Wymagana aktualizacja uprawnień"; break; } } return $msg; } public function runByMessageFromMsgsSystem($msg, &$execNotes) { switch ($msg) { case 'Update perms': { $execNotes .= 'Wymagana aktualizacja uprawnień'; $this->callProcedure(); $execNotes .= ' done'; break; } } } }