| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804 |
- <?php
- Lib::loadClass('RouteBase');
- Lib::loadClass('DebugExecutionTime');
- Lib::loadClass('UI');
- class Route_FixCrmProcesInitIdx extends RouteBase {
- function handleAuth() {
- if (!User::logged()) {
- throw new HttpException('Unauthorized', 401);
- }
- }
- function defaultAction() { $this->layout('defaultView'); }
- function defaultView() {
- // echo '<a href="index.php?_route=FixCrmProcesInitIdx&_task=run">aktualizuj uprawnienia</a>';
- 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 '<a href="index.php?_route=FixCrmProcesInitIdx&_task=run">aktualizuj uprawnienia</a>';
- $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",
- '<br><span style="font-style:italic; opacity:0.4;">' . "(" . number_format($procExecTime, 6) . " s)" . '</span>',
- ]);
- 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<br>", $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'<p>['.$sqlExecuteCounter.'] Executing sql "'.$sqlName.'" ... </p>';
- 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'<p>['.$sqlExecuteCounter.'] DONE sql "'.$sqlName.'"</p>';
- 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'<p>['.$sqlExecuteCounter.'] Executing sql "'.$sqlName.'" ... </p>';
- DB::getPDO()->execSql($sql);
- if($DBG_TIME) $dbgExecTime->log("execute sql {$sqlName}");
- echo'<p>['.$sqlExecuteCounter.'] DONE sql "'.$sqlName.'"</p>';
- 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;
- }
- }
- }
- }
|