layout('defaultView'); } function defaultView() { // echo 'aktualizuj uprawnienia'; echo UI::h('div', [ 'class' => "jumbotron" ], [ UI::h('div', [ 'class' => "container" ], [ UI::h('form', [ 'class' => "form-inline", 'method' => "POST" ], [ UI::h('input', [ 'type' => "hidden", 'name' => "_route", 'value' => "FixCrmProcesInitIdx" ]), UI::h('input', [ 'type' => "hidden", 'name' => "_task", 'value' => "run" ]), UI::h('button', [ 'type' => "submit", 'id' => "fldExecuteBtn", 'class' => "btn btn-primary", 'autocomplete' => "off" ], "Zaktualizuj uprawnienia"), ]), ]), ]); echo UI::h('script', [ 'type' => "text/javascript" ], " jQuery(document).ready(function () { jQuery('#fldExecuteBtn').on('click', function () { jQuery(this).text(jQuery(this).text() + '...').attr('disabled', 'disabled'); jQuery(this).parent().submit(); }) }); "); } function mapAction() { $this->layout('mapView'); } function mapView() { // echo 'aktualizuj uprawnienia'; $idProcesInit = V::get('id_proces_init', '', $_REQUEST, 'int'); echo UI::h('div', [ 'class' => "jumbotron" ], [ UI::h('div', [ 'class' => "container" ], [ UI::h('form', [ 'class' => "form-inline", 'method' => "POST" ], [ UI::h('input', [ 'type' => "hidden", 'name' => "_route", 'value' => "FixCrmProcesInitIdx" ]), UI::h('input', [ 'type' => "hidden", 'name' => "_task", 'value' => "map" ]), UI::h('input', [ 'type' => "text", 'class' => "form-control", 'name' => "id_proces_init", 'value' => $idProcesInit ]), UI::h('button', [ 'type' => "submit", 'id' => "fldExecuteBtn", 'class' => "btn btn-primary", 'autocomplete' => "off" ], "Pokaż mapę"), ]), ]), ]); echo UI::h('script', [ 'type' => "text/javascript" ], " jQuery(document).ready(function () { jQuery('#fldExecuteBtn').on('click', function () { jQuery(this).text(jQuery(this).text() + '...').attr('disabled', 'disabled'); jQuery(this).parent().submit(); }) }); "); if ($idProcesInit) { $this->printProcesInitMap($idProcesInit); } } function printProcesInitMap($idProcesInit) { Lib::loadClass('CrmProcesMap'); $map = new CrmProcesMap($idProcesInit); } function runAction() { $this->layout('runView'); } function runView() { $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) { UI::alert('warning', $e->getMessage()); UI::dol(); exit; } $dbgExecTime->log('procedure'); $procExecTime = $dbgExecTime->getLastExecTime(); //$totalExecTime = $dbgExecTime->getTotalExecTime(); UI::alert('success', [ "Zaktualizowano uprawnienia", '
' . "(" . number_format($procExecTime, 6) . " s)" . '', ]); if($DBG_TIME){ $dbgExecTime->log('end'); //$dbgExecTime->printDebug(); } } function runApiAction() { $this->callProcedure(); die('Zaktualizowano uprawnienia'); } 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); } } function test1Action() { $this->layout('test1View'); } function test1View() { try { $sql = " select count(*) as cnt, p.`ID`, group_concat(i.`idx_PROCES_INIT_ID`), group_concat(i.`idx_PROCES_WITH_GROUPS_ID`) from `CRM_PROCES` p left join `CRM_PROCES_idx` i on(i.`ID_PROCES`=p.`ID`) where i.`ID_PROCES`=p.`ID` group by p.`ID` order by cnt desc "; UI::table([ 'rows' => array_map( function ($item) { return $item; }, DB::getPDO()->fetchAll($sql) ), ]); } catch (Exception $e) { UI::alert('danger', $e->getMessage()); } } function testReinstallViewsAction() { $sqlList = array(); $sqlList['install--CRM_AUTH_#Group'] = " CREATE OR REPLACE VIEW `CRM_AUTH_#Group` AS select z.`ID`, concat(z.`TYPE`, ' ', z.`DESC`) as LABEL from `CRM_LISTA_ZASOBOW` as z where z.`TYPE` in('STANOWISKO','PODMIOT','DZIAL') and z.`A_STATUS` in('NORMAL', 'WAITING') "; $sqlList['install--CRM_AUTH_#Proces'] = " CREATE OR REPLACE VIEW `CRM_AUTH_#Proces` AS select p.`ID`, concat(p.`TYPE`, ' ', p.`DESC`) as LABEL from `CRM_PROCES` as p where p.`A_STATUS` in('NORMAL', 'WAITING') "; $sqlList['install--CRM_AUTH_#ProcesInit'] = " CREATE OR REPLACE VIEW `CRM_AUTH_#ProcesInit` AS select p.`ID`, p.`DESC` as LABEL from `CRM_PROCES` as p where p.`A_STATUS` in('NORMAL', 'WAITING') and p.`TYPE` = 'PROCES_INIT' "; $sqlList['install--CRM_AUTH_#Ref__Proces_to_Zasob'] = " CREATE OR REPLACE VIEW `CRM_AUTH_#Ref__Proces_to_Zasob` AS select wsk.ID_PROCES as pk , wsk.ID_ZASOB as rpk from `CRM_WSKAZNIK` as wsk where wsk.`A_STATUS` in('NORMAL', 'WAITING') "; $sqlList['install--CRM_AUTH_#Ref__Proces_to_Zasob_with_perm_x'] = " CREATE OR REPLACE VIEW `CRM_AUTH_#Ref__Proces_to_Zasob_with_perm_x` AS select wsk.ID_PROCES as pk , wsk.ID_ZASOB as rpk from `CRM_WSKAZNIK` as wsk join `CRM_PRZYPADEK` as przyp on ( przyp.ID = wsk.ID_PRZYPADEK and przyp.FORM_TREAT & 8 ) where wsk.`A_STATUS` in('NORMAL', 'WAITING') "; $sqlList['install--CRM_AUTH_#Ref__Proces_to_Group_with_perm_x'] = " CREATE OR REPLACE VIEW `CRM_AUTH_#Ref__Proces_to_Group_with_perm_x` AS select g.ID as pk , p.ID as rpk from `CRM_AUTH_#Group` as g join `CRM_AUTH_#Ref__Proces_to_Zasob_with_perm_x` as refP2Z on ( refP2Z.rpk = g.ID ) join `CRM_AUTH_#Proces` as p on ( p.ID = refP2Z.pk ) "; // below 2 the same queries but wrong data if there is a RULE: only ProcesInit my have relation to Group $sqlList__OFF['install--CRM_AUTH_#PROCES_WITH_RELATED_PERM_X'] = " CREATE OR REPLACE VIEW `CRM_AUTH_#PROCES_WITH_RELATED_PERM_X` AS select p.ID, concat( 'Groups: ', group_concat(g.ID) ) as LABEL from `CRM_PROCES` p join `CRM_WSKAZNIK` as wsk on ( wsk.`ID_PROCES` = p.`ID` and wsk.`A_STATUS` in ( 'NORMAL', 'WAITING' ) ) join `CRM_AUTH_#Group` as g on ( g.`ID` = wsk.`ID_ZASOB` ) group by p.ID "; $sqlList__OFF['install--CRM_AUTH_#PROCES_WITH_RELATED_PERM_X'] = " CREATE OR REPLACE VIEW `CRM_AUTH_#PROCES_WITH_RELATED_PERM_X` AS select p.ID, concat( 'Groups: ', group_concat(g.ID) ) as LABEL from `CRM_PROCES` p join `CRM_AUTH_#Ref__Proces_to_Zasob_with_perm_x` refP2ZX on ( refP2ZX.pk = p.ID ) join `CRM_AUTH_#Group` as g on ( g.`ID` = refP2ZX.rpk ) group by p.ID "; $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.'" ...

'; try { DB::getPDO()->execSql($sql); } catch (\Exception $e) { DBG::log($e); UI::alert('danger', $e->getMessage()); } if($DBG_TIME) $dbgExecTime->log("execute sql {$sqlName}"); echo'

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

'; if ($sqlExecuteLimit > 0 && $sqlExecuteCounter >= $sqlExecuteLimit) break; } if($DBG_TIME) $dbgExecTime->printDebug(); } static function _getSqlDebug($sqlFile) { return file_get_contents( substr( __FILE__ , 0, -4 ) . '/' . $sqlFile . '.sql' ); } 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'] = self::_getSqlDebug('update_proces_init_idx__loop__fill_idx_INIT'); $sqlList['0-prepare-while-1-rm'] = "DROP PROCEDURE if exists `update_proces_init_idx_rec__while1`"; $sqlList['0-prepare-while-1-create'] = self::_getSqlDebug('update_proces_init_idx_rec__while1'); $sqlList['0-prepare-while-2-rm'] = "DROP PROCEDURE if exists `update_proces_init_idx_rec__while2`"; $sqlList['0-prepare-while-2-create'] = self::_getSqlDebug('update_proces_init_idx_rec__while2'); $sqlList['CONF.1--set-start-time-in-config'] = " -- CONF.1--set-start-time-in-config replace into `CRM_CONFIG` (`conf_key`, `conf_val`) values ('tbl_indexer_CRM_PROCES_last_exec_start', NOW()); "; $sqlList['I.2--fill-CRM_PROCES_idx_TEMP'] = self::_getSqlDebug('fill__CRM_PROCES_idx_TEMP'); $sqlList['G.1--before-while-2-set-initial-proc_with_groups_id'] = self::_getSqlDebug('set_initial_proc_with_groups_id'); $sqlList['G.2--while-2-loop-update-proc_with_groups_id-from-parent'] = " -- G.2--while-2-loop-update-proc_with_groups_id-from-parent call `update_proces_init_idx_rec__while2`(); "; $sqlList['P_INIT_ID.1--fill_idx_INIT'] = " -- P_INIT_ID.1--fill_idx_INIT call `update_proces_init_idx__loop__fill_idx_INIT`(); "; $sqlList['GOTO_AND_RET.1--from-7-fill_goto_and_return'] = self::_getSqlDebug('fill_goto_and_return'); $sqlList['GOTO_AND_RET.2--fill_childrens_of_goto_and_return'] = self::_getSqlDebug('fill_childrens_of_goto_and_return'); $sqlList__TODO_IS_NEEDED__['4.2-NEW-while-1'] = " call `update_proces_init_idx_rec__while1`(); "; // TODO: mv here loop insert goto_and_return // TODO: add idx_MAIN_PROCES_INIT_ID - which proces has goto_end_return for this step $sqlList__TODO_SEE_IDX_2__['CLEANUP.1--remove-not-needed-rows'] = " -- // TODO: add to main procedure delete from `CRM_PROCES_idx_TEMP` where `idx_PROCES_INIT_ID`=0; "; $sqlList__TODO_SEE_IDX_2__['CLEANUP.2--update-idx_PROCES_WITH_GROUPS_ID-zero-where-null'] = " update `CRM_PROCES_idx_TEMP` set `idx_PROCES_WITH_GROUPS_ID`=0 where `idx_PROCES_WITH_GROUPS_ID` is null and `TYPE`='PROCES_INIT' ; "; $sqlList__TODO_IS_NEEDED__['9-fix-goto_and_return'] = " insert ignore into `CRM_PROCES_idx_TEMP` (`ID_PROCES`,`TYPE`,`PARENT_ID`,`idx_PROCES_INIT_ID`,`idx_PROCES_WITH_GROUPS_ID`) select i.`ID_PROCES`, 'GOTO_AND_RETURN' as `TYPE`, i.`PARENT_ID`, i.`idx_PROCES_INIT_ID`, pi.`idx_PROCES_WITH_GROUPS_ID` from `CRM_PROCES_idx_TEMP` i join `CRM_PROCES_idx_TEMP` pi on(pi.`idx_PROCES_INIT_ID`=i.`idx_PROCES_INIT_ID`) where i.`idx_PROCES_WITH_GROUPS_ID` is null and pi.`idx_PROCES_WITH_GROUPS_ID` is not null and pi.`idx_PROCES_WITH_GROUPS_ID`>0 and i.`TYPE`!='GOTO_AND_RETURN' ; "; $sqlList__TODO_IS_NEEDED__['10-delete-where-!idx_PROCES_WITH_GROUPS_ID'] = " delete from `CRM_PROCES_idx_TEMP` where `idx_PROCES_WITH_GROUPS_ID` is null or `idx_PROCES_WITH_GROUPS_ID`=0; "; $sqlList['GOTO_AND_RET.3--fill_goto_and_return_lvl2'] = self::_getSqlDebug('fill_goto_and_return_lvl2'); $sqlList['GOTO_AND_RET.3--fill_childrens_of_goto_and_return_lvl2'] = self::_getSqlDebug('fill_childrens_of_goto_and_return_lvl2'); $sqlList['IDX.1--clear-CRM_PROCES_idx'] = " -- IDX.1--clear-CRM_PROCES_idx truncate table `CRM_PROCES_idx`; "; $sqlList['IDX.2--update-CRM_PROCES_idx-from-temp'] = " -- 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 ; "; $sqlList__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) ; "; $sqlList['GP.1--clear-CRM_PROCES_idx_GROUP_to_PROCES'] = " -- GP.1--clear-CRM_PROCES_idx_GROUP_to_PROCES truncate table `CRM_PROCES_idx_GROUP_to_PROCES`; "; $sqlList['GP.2--fill_CRM_PROCES_idx_GROUP_to_PROCES'] = self::_getSqlDebug('fill_CRM_PROCES_idx_GROUP_to_PROCES'); $sqlList['CONF.2--set-end-time-in-config'] = " -- CONF.2--set-end-time-in-config replace into `CRM_CONFIG` (`conf_key`, `conf_val`) values ('tbl_indexer_CRM_PROCES_last_exec_end', NOW()); "; $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.'" ...

'; DB::getPDO()->execSql($sql); if($DBG_TIME) $dbgExecTime->log("execute sql {$sqlName}"); echo'

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

'; if ($sqlExecuteLimit > 0 && $sqlExecuteCounter >= $sqlExecuteLimit) break; } if($DBG_TIME) $dbgExecTime->printDebug(); } function reinstallAction() { $this->reinstall(); die('OK'); } static function getSqlInstall__CRM_PROCES_idx() { return " CREATE TABLE IF NOT EXISTS `CRM_PROCES_idx` ( `ID_PROCES` int(11) NOT NULL , `PARENT_ID` int(11) NOT NULL DEFAULT '0' , `TYPE` varchar(32) NOT NULL DEFAULT '' , `idx_PROCES_INIT_ID` int(11) NOT NULL DEFAULT '0' , `idx_MAIN_PROCES_INIT_ID` int(11) NOT NULL DEFAULT '0' , `idx_PROCES_WITH_GROUPS_ID` int(11) NULL DEFAULT NULL -- , `idx_PATH` text NOT NULL , KEY `ID_PROCES` (`ID_PROCES`) , KEY `PARENT_ID` (`PARENT_ID`) , KEY `idx_PROCES_INIT_ID` (`idx_PROCES_INIT_ID`) , KEY `idx_MAIN_PROCES_INIT_ID` (`idx_MAIN_PROCES_INIT_ID`) , KEY `idx_PROCES_WITH_GROUPS_ID` (`idx_PROCES_WITH_GROUPS_ID`) -- , UNIQUE KEY `uniq__idx_PROCES_WITH_GROUPS_ID` (`ID_PROCES`,`idx_PROCES_WITH_GROUPS_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2; "; } static function getSqlInstall__CRM_PROCES_idx_TEMP() { return " CREATE TABLE IF NOT EXISTS `CRM_PROCES_idx_TEMP` ( `ID_PROCES` int(11) NOT NULL , `PARENT_ID` int(11) NOT NULL DEFAULT '0' , `TYPE` varchar(32) NOT NULL DEFAULT '' , `idx_PROCES_INIT_ID` int(11) NOT NULL DEFAULT '0' , `idx_MAIN_PROCES_INIT_ID` int(11) NULL DEFAULT '0' , `idx_PROCES_WITH_GROUPS_ID` int(11) NULL DEFAULT NULL -- , `idx_PATH` text NOT NULL , KEY `ID_PROCES` (`ID_PROCES`) , KEY `PARENT_ID` (`PARENT_ID`) , KEY `idx_PROCES_INIT_ID` (`idx_PROCES_INIT_ID`) , KEY `idx_MAIN_PROCES_INIT_ID` (`idx_MAIN_PROCES_INIT_ID`) , KEY `idx_PROCES_WITH_GROUPS_ID` (`idx_PROCES_WITH_GROUPS_ID`) , UNIQUE KEY `uniq__idx_PROCES_WITH_GROUPS_ID` (`ID_PROCES`,`idx_PROCES_WITH_GROUPS_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2; "; } static function getSqlInstall__CRM_PROCES_idx_GROUP_to_PROCES() { return " 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; "; } static function getSqlInstall__CRM_PROCES_idx_GROUP_to_PROCES_PERM() { return " 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; "; } static function getSqlInstall__CRM_PROCES_idx_USER_to_PROCES_VIEW() { return " CREATE OR REPLACE VIEW `CRM_PROCES_idx_USER_to_PROCES_VIEW` AS select concat(u.`ID`, gi.`ID_PROCES`) as ID , gi.`ID_PROCES` as `ID_PROCES` , u.`ADM_ACCOUNT` as `ADM_ACCOUNT` , u.`EMPLOYEE_TYPE` as `EMPLOYEE_TYPE` , u.`A_STATUS` as `A_STATUS` from `ADMIN_USERS` u join `CRM_AUTH_PROFILE` au on(au.`REMOTE_ID`=u.`ID` and au.`REMOTE_TABLE`='ADMIN_USERS' and au.`A_STATUS` in('NORMAL','WAITING')) join `CRM_PROCES_idx_GROUP_to_PROCES` gi on(gi.`ID_GROUP`=au.`ID_ZASOB`) "; } static function getSqlInstall__CRM_PROCES_idx_USER_to_INIT_VIEW() { return " CREATE VIEW `CRM_PROCES_idx_USER_to_INIT_VIEW` AS select concat(u.`ID`, p.`ID`) as ID , p.`ID` as `ID_PROCES_INIT` , p.`DESC` as `DESC` , u.`ADM_ACCOUNT` as `ADM_ACCOUNT` , u.`EMPLOYEE_TYPE` as `EMPLOYEE_TYPE` , u.`A_STATUS` as `A_STATUS` from `ADMIN_USERS` u join `CRM_AUTH_PROFILE` au on(au.`REMOTE_ID`=u.`ID` and au.`REMOTE_TABLE`='ADMIN_USERS' and au.`A_STATUS` in('NORMAL','WAITING')) join `CRM_PROCES_idx_GROUP_to_PROCES` gi on(gi.`ID_GROUP`=au.`ID_ZASOB`) join `CRM_PROCES_idx` i on(i.`ID_PROCES`=gi.`ID_PROCES`) join `CRM_PROCES` p on(p.`ID`=i.`idx_PROCES_INIT_ID`) where p.`TYPE`='PROCES_INIT' group by u.`ID`, p.`ID` "; } static function getSqlInstall__CRM_PROCES_idx_GROUP_to_INIT_VIEW() { return " CREATE VIEW `CRM_PROCES_idx_GROUP_to_INIT_VIEW` AS select concat(gi.`ID_GROUP`, p.`ID`) as ID , p.`ID` as `ID_PROCES_INIT` , p.`DESC` as `DESC` , gi.`ID_GROUP` as `ID_GROUP` from `CRM_PROCES_idx_GROUP_to_PROCES` gi join `CRM_PROCES_idx` i on(i.`ID_PROCES`=gi.`ID_PROCES`) join `CRM_PROCES` p on(p.`ID`=i.`idx_PROCES_INIT_ID`) where p.`TYPE`='PROCES_INIT' group by gi.`ID_GROUP`, p.`ID` "; } static function getSqlInstall__CRM_PROCES_idx_TABLES_INFO_VIEW() { return " CREATE VIEW `CRM_PROCES_idx_TABLES_INFO_VIEW` AS select z.`ID` as `ID_CELL` , z.`DESC` as `CELL_NAME` , z.`DESC_PL` as `CELL_LABEL` , z.`OPIS` as `CELL_DESCRIPTION` , z.`SORT_PRIO` as `CELL_SORT_PRIO` , zp.`ID` as `ID_TABLE` , zp.`DESC` as `TABLE_NAME` , zp.`DESC_PL` as `TABLE_LABEL` , zp.`OPIS` as `TABLE_DESCRIPTION` , zpp.`ID` as `ID_DATABASE` from `CRM_LISTA_ZASOBOW` z join `CRM_LISTA_ZASOBOW` zp on(zp.`ID`=z.`PARENT_ID` and zp.`TYPE`='TABELA' and zp.`A_STATUS` in('WAITING','NORMAL')) join `CRM_LISTA_ZASOBOW` zpp on(zpp.`ID`=zp.`PARENT_ID` -- TODO: and zpp.`TYPE`='BAZA_DANYCH...' and zpp.`A_STATUS` in('WAITING','NORMAL') ) where z.`TYPE`='KOMORKA' and z.`A_STATUS` in('WAITING','NORMAL') "; } static function getSqlInstall__CRM_PROCES_idx_TABLE_TO_PROCES_VIEW() { return " CREATE VIEW `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` AS select tv.`ID_CELL` as `ID_CELL` , tv.`CELL_NAME` as `CELL_NAME` , tv.`ID_TABLE` as `ID_TABLE` , tv.`TABLE_NAME` as `TABLE_NAME` , tv.`TABLE_LABEL` as `TABLE_LABEL` , tv.`TABLE_DESCRIPTION` as `TABLE_DESCRIPTION` , tv.`ID_DATABASE` as `ID_DATABASE` , wsk.`ID_PROCES` as `ID_PROCES` from `CRM_PROCES_idx_TABLES_INFO_VIEW` tv join `CRM_WSKAZNIK` wsk on(wsk.`ID_ZASOB`=tv.`ID_CELL` and wsk.`A_STATUS` in('WAITING','NORMAL')) join `CRM_PROCES` p on(p.`ID`=wsk.`ID_PROCES` and p.`A_STATUS` in('WAITING','NORMAL')) "; } static function getSqlInstall__CRM_PROCES_idx_URL_TO_PROCES_VIEW() { return " CREATE VIEW `CRM_PROCES_idx_URL_TO_PROCES_VIEW` AS select z.`ID` as `ID_URL` , z.`DESC` as `URL_LINK` , z.`DESC_PL` as `URL_LABEL` , z.`OPIS` as `URL_DESC` , wsk.`ID_PROCES` as `ID_PROCES` from `CRM_LISTA_ZASOBOW` z join `CRM_WSKAZNIK` wsk on(wsk.`ID_ZASOB`=z.`ID` and wsk.`A_STATUS` in('WAITING','NORMAL')) join `CRM_PROCES` p on(p.`ID`=wsk.`ID_PROCES` and p.`A_STATUS` in('WAITING','NORMAL')) where z.`TYPE`='URL' and z.`A_STATUS` in('WAITING','NORMAL') "; } static function getSqlInstall__CRM_PROCES_idx_TABLE_TO_PROCES_PERMS_VIEW() { return " CREATE VIEW `CRM_PROCES_idx_TABLE_TO_PROCES_PERMS_VIEW` AS select tv.`ID_CELL` as `ID_CELL` , tv.`CELL_NAME` as `CELL_NAME` , tv.`ID_TABLE` as `ID_TABLE` , tv.`TABLE_NAME` as `TABLE_NAME` , tv.`TABLE_LABEL` as `TABLE_LABEL` , tv.`TABLE_DESCRIPTION` as `TABLE_DESCRIPTION` , tv.`ID_DATABASE` as `ID_DATABASE` , wsk.`ID_PROCES` as `ID_PROCES` , replace(przyp.`FORM_TREAT`, ',', '') as FORM_TREAT , IF(przyp.`FORM_TREAT` & 2, 1, 0) as PERM_R , IF(przyp.`FORM_TREAT` & 4, 1, 0) as PERM_W , IF(przyp.`FORM_TREAT` & 8, 1, 0) as PERM_X , IF(przyp.`FORM_TREAT` & 16, 1, 0) as PERM_C , IF(przyp.`FORM_TREAT` & 32, 1, 0) as PERM_S , IF(przyp.`FORM_TREAT` & 64, 1, 0) as PERM_O , IF(przyp.`FORM_TREAT` & 128, 1, 0) as PERM_V , IF(przyp.`FORM_TREAT` & 256, 1, 0) as PERM_E from `CRM_PROCES_idx_TABLES_INFO_VIEW` tv join `CRM_WSKAZNIK` wsk on(wsk.`ID_ZASOB`=tv.`ID_CELL` and wsk.`A_STATUS` in('WAITING','NORMAL')) join `CRM_PROCES` p on(p.`ID`=wsk.`ID_PROCES` and p.`A_STATUS` in('WAITING','NORMAL')) join `CRM_PRZYPADEK` as przyp on (przyp.`ID`=wsk.`ID_PRZYPADEK`) "; } static function getSqlInstall__CRM_PROCES_idx_TABLE_TO_PROCES_GROUPED_VIEW() { return " CREATE VIEW `CRM_PROCES_idx_TABLE_TO_PROCES_GROUPED_VIEW` AS select tpv.`ID_TABLE` , tpv.`TABLE_NAME` , tpv.`TABLE_LABEL` , tpv.`TABLE_DESCRIPTION` , tpv.`ID_DATABASE` , tpv.`ID_PROCES` from `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` tpv group by tpv.`ID_TABLE`, tpv.`ID_PROCES` "; } static function getSqlInstall__CRM_PROCES_idx_TABLE_TO_USER_VIEW() { return " CREATE VIEW `CRM_PROCES_idx_TABLE_TO_USER_VIEW` AS select tpgv.`ID_TABLE`, tpgv.`TABLE_NAME`, tpgv.`ID_PROCES` , upv.`ADM_ACCOUNT` , upv.`EMPLOYEE_TYPE` , upv.`A_STATUS` from `CRM_PROCES_idx_TABLE_TO_PROCES_GROUPED_VIEW` as tpgv join `CRM_PROCES_idx_USER_to_PROCES_VIEW` upv on(upv.`ID_PROCES`=tpgv.`ID_PROCES`) "; } static function getSqlInstall__CRM_PROCES_idx_TABLE_TO_USER_VIEW__TEST() { return " CREATE VIEW `CRM_PROCES_idx_TABLE_TO_USER_VIEW__TEST` AS select tpgv.`ID_TABLE`, tpgv.`TABLE_NAME`, tpgv.`ID_PROCES` , upv.`ADM_ACCOUNT` , upv.`EMPLOYEE_TYPE` , upv.`A_STATUS` from `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` as tpgv join `CRM_PROCES_idx_USER_to_PROCES_VIEW` upv on(upv.`ID_PROCES`=tpgv.`ID_PROCES`) "; } static function getSqlInstall__CRM_PROCES_idx_TABLE_TO_USER_VIEW__TEST2() { return " CREATE VIEW `CRM_PROCES_idx_TABLE_TO_USER_VIEW__TEST2` AS select tpgv.`ID_TABLE`, tpgv.`TABLE_NAME`, tpgv.`ID_PROCES` , upv.`ADM_ACCOUNT` , upv.`EMPLOYEE_TYPE` , upv.`A_STATUS` from `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` as tpgv join `CRM_PROCES_idx_USER_to_PROCES_VIEW` upv on(upv.`ID_PROCES`=tpgv.`ID_PROCES`) "; } static function getSqlInstall__CRM_PROCES_idx_TABLE_TO_INIT_VIEW() { return " CREATE VIEW `CRM_PROCES_idx_TABLE_TO_INIT_VIEW` AS select tpgv.`ID_TABLE`, tpgv.`TABLE_NAME`, tpgv.`ID_PROCES` , pidx.`idx_MAIN_PROCES_INIT_ID` as `ID_MAIN_PROCES_INIT` from `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` as tpgv join `CRM_PROCES_idx` pidx on(pidx.`ID_PROCES`=tpgv.`ID_PROCES`) "; } static function getSqlInstall__update_proces_init_idx_rec() { return file_get_contents( substr( __FILE__ , 0, -4 ) . '/' . 'update_proces_init_idx_rec' . '.sql' ); } function reinstall() { $sqlList = array(); $sqlList['RemoveTable_CRM_PROCES_idx'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx`"; $sqlList['InstallTable_CRM_PROCES_idx'] = self::getSqlInstall__CRM_PROCES_idx(); $sqlList['RemoveTable_CRM_PROCES_idx_TEMP'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_TEMP`"; $sqlList['InstallTable_CRM_PROCES_idx_TEMP'] = self::getSqlInstall__CRM_PROCES_idx_TEMP(); $sqlList['RemoveOldTableGroupToInit'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_GROUPS_to_INIT`"; $sqlList['RemoveTableGroupToInit'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_GROUP_to_PROCES`"; $sqlList['InstallTableGroupToInit'] = self::getSqlInstall__CRM_PROCES_idx_GROUP_to_PROCES(); $sqlList['RemoveTableGroupToInitPerm'] = "DROP TABLE IF EXISTS `CRM_PROCES_idx_GROUP_to_PROCES_PERM`";// TODO: to replace `CRM_PROCES_idx_GROUP_to_PROCES` $sqlList['InstallTableGroupToInitPerm'] = self::getSqlInstall__CRM_PROCES_idx_GROUP_to_PROCES_PERM(); $sqlList['InstallViewUserToProces'] = self::getSqlInstall__CRM_PROCES_idx_USER_to_PROCES_VIEW(); $sqlList['RemoveViewUserToInit'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_USER_to_INIT_VIEW`"; $sqlList['InstallViewUserToInit'] = self::getSqlInstall__CRM_PROCES_idx_USER_to_INIT_VIEW(); /* Usage - find proces init for user by $userLogin: SELECT * FROM `CRM_PROCES_idx_USER_to_INIT_VIEW` WHERE `ADM_ACCOUNT` LIKE '{$userLogin}' GROUP BY ID_PROCES_INIT */ $sqlList['RemoveViewGroupToInit'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_GROUP_to_INIT_VIEW`"; $sqlList['InstallViewGroupToInit'] = self::getSqlInstall__CRM_PROCES_idx_GROUP_to_INIT_VIEW(); $sqlList['RemoveViewTablesInfo'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLES_INFO_VIEW`"; $sqlList['InstallViewTablesInfo'] = self::getSqlInstall__CRM_PROCES_idx_TABLES_INFO_VIEW(); $sqlList['RemoveViewTableToProces'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW`"; $sqlList['InstallViewTableToProces'] = self::getSqlInstall__CRM_PROCES_idx_TABLE_TO_PROCES_VIEW(); $sqlList['RemoveViewUrlToProces'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_URL_TO_PROCES_VIEW`"; $sqlList['InstallViewUrlToProces'] = self::getSqlInstall__CRM_PROCES_idx_URL_TO_PROCES_VIEW(); $sqlList['RemoveViewTableCellToProcesWithPerms'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLE_TO_PROCES_PERMS_VIEW`"; $sqlList['InstallViewTableCellToProcesWithPerms'] = self::getSqlInstall__CRM_PROCES_idx_TABLE_TO_PROCES_PERMS_VIEW(); $sqlExample_TableCellToProcesForInitTable = " select tv.`ID_CELL` as `ID_CELL` , tv.`CELL_NAME` as `CELL_NAME` , tv.`CELL_LABEL` as `CELL_LABEL` , tv.`CELL_DESC` as `CELL_DESC` , tv.`CELL_SORT_PRIO` as `SORT_PRIO` , tv.`ID_TABLE` as `ID_TABLE` , tv.`TABLE_NAME` as `TABLE_NAME` , wsk.`ID_PROCES` as `ID_PROCES` , sum(IF(przyp.`FORM_TREAT` & 2, 1, 0)) as PERM_R , sum(IF(przyp.`FORM_TREAT` & 4, 1, 0)) as PERM_W , sum(IF(przyp.`FORM_TREAT` & 8, 1, 0)) as PERM_X , sum(IF(przyp.`FORM_TREAT` & 16, 1, 0)) as PERM_C , sum(IF(przyp.`FORM_TREAT` & 32, 1, 0)) as PERM_S , sum(IF(przyp.`FORM_TREAT` & 64, 1, 0)) as PERM_O , sum(IF(przyp.`FORM_TREAT` & 128, 1, 0)) as PERM_V , sum(IF(przyp.`FORM_TREAT` & 256, 1, 0)) as PERM_E from `CRM_PROCES_idx_TABLES_INFO_VIEW` tv join `CRM_WSKAZNIK` wsk on(wsk.`ID_ZASOB`=tv.`ID_CELL` and wsk.`A_STATUS` in('WAITING','NORMAL')) join `CRM_PROCES` p on(p.`ID`=wsk.`ID_PROCES` and p.`A_STATUS` in('WAITING','NORMAL')) join `CRM_PRZYPADEK` as przyp on (przyp.`ID`=wsk.`ID_PRZYPADEK`) where tv.`ID_TABLE`='{$idTable}' and wsk.`ID_PROCES` in({$sqlIdProcesList}) group by tv.`ID_CELL`, wsk.`ID_PROCES` order by tv.`CELL_SORT_PRIO` "; $sqlExample_UrlToUserProces = " select zpv.* from `CRM_PROCES_idx_URL_TO_PROCES_VIEW` zpv where zpv.`ID_PROCES` in({$sqlIdProcesList}) "; $sqlExample_sqlIdProcesList = " select gi.`ID_PROCES` from `CRM_PROCES_idx_GROUP_to_PROCES` gi where gi.`ID_GROUP` in({$idUserGroupList}) "; $sqlList_BUG = " -- BUG #1349 - View's SELECT contains a subquery in the FROM clause CREATE VIEW `CRM_PROCES_idx_TABLE_TO_USER_VIEW` AS select tpvg.`ID_PROCES`, tpvg.`TABLE_NAME` , upv.`ADM_ACCOUNT` , upv.`EMPLOYEE_TYPE` , upv.`A_STATUS` from (select tpv.`ID_PROCES`, tpv.`TABLE_NAME` from `CRM_PROCES_idx_TABLE_TO_PROCES_VIEW` tpv group by tpv.`TABLE_NAME`, tpv.`ID_PROCES`) as tpvg join `CRM_PROCES_idx_USER_to_PROCES_VIEW` upv on(upv.`ID_PROCES`=tpvg.`ID_PROCES`) "; $sqlList['RemoveViewTableToProcesGrouped'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLE_TO_PROCES_GROUPED_VIEW`"; $sqlList['InstallViewTableToProcesGrouped'] = self::getSqlInstall__CRM_PROCES_idx_TABLE_TO_PROCES_GROUPED_VIEW(); $sqlList['RemoveViewTableToUser'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLE_TO_USER_VIEW`"; $sqlList['InstallViewTableToUser'] = self::getSqlInstall__CRM_PROCES_idx_TABLE_TO_USER_VIEW(); // TODO: faster then using GROUPED view (~6ms vs ~180ms) - explain show that if `group by` in view then temporary and filesort used $sqlList['RemoveViewTableToUser__TEST'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLE_TO_USER_VIEW__TEST`"; $sqlList['InstallViewTableToUser__TEST'] = self::getSqlInstall__CRM_PROCES_idx_TABLE_TO_USER_VIEW__TEST(); $sqlList['RemoveViewTableToUser__TEST2'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLE_TO_USER_VIEW__TEST2`"; $sqlList['InstallViewTableToUser__TEST2'] = self::getSqlInstall__CRM_PROCES_idx_TABLE_TO_USER_VIEW__TEST2(); $sqlList['RemoveViewTableToInit'] = "DROP VIEW IF EXISTS `CRM_PROCES_idx_TABLE_TO_INIT_VIEW`"; $sqlList['InstallViewTableToInit'] = self::getSqlInstall__CRM_PROCES_idx_TABLE_TO_INIT_VIEW(); $sqlList['RemoveProcedure'] = "DROP PROCEDURE if exists `update_proces_init_idx_rec`"; // throws errors: // #1146 - Table '{DATABASE_NAME}.P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Already executed' doesn't exist $sqlList['CreateProcedure'] = self::getSqlInstall__update_proces_init_idx_rec(); $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'; "; foreach ($sqlList as $sqlName => $sql) { DB::getPDO()->execSql($sql); } $this->callProcedure(); } /* #1146 - Table '{DATABASE_NAME}.P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Already executed' doesn't exist */ 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; } function parseMessageFromMsgsSystem($msg) { switch ($msg) { case 'Update perms': { $msg = "Wymagana aktualizacja uprawnień"; break; } } return $msg; } function runByMessageFromMsgsSystem($msg, &$execNotes) { switch ($msg) { case 'Update perms': { $execNotes .= 'Wymagana aktualizacja uprawnień'; $this->callProcedure(); $execNotes .= ' done'; break; } } } }