|
|
@@ -38,7 +38,7 @@ if(isset($_SERVER["argv"][1])) {
|
|
|
|
|
|
}
|
|
|
|
|
|
-function DB_PROCEDURES_CREATE() {
|
|
|
+function DB_PROCEDURES_CREATE($DB=null) {
|
|
|
|
|
|
|
|
|
DEBUG_S(-3,"Deklaruje zmienna SQL do wykonania instalacji procedur",null,__FILE__,__FUNCTION__,__LINE__);
|
|
|
@@ -46,8 +46,127 @@ DEBUG_S(-3,"Deklaruje zmienna SQL do wykonania instalacji procedur",null,__FILE_
|
|
|
|
|
|
$sql['turn_off_database_locking']="SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;";
|
|
|
|
|
|
+//! CRM_ZASOBY_BEGIN
|
|
|
+$sql['drop_CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path']="drop function if exists CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path";
|
|
|
+$sql['create_CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path']="CREATE DEFINER=`root`@`localhost` FUNCTION `CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path`(`delimiter` TEXT, `node` INT) RETURNS text CHARSET latin2
|
|
|
+ READS SQL DATA
|
|
|
+BEGIN
|
|
|
+ DECLARE _path TEXT;
|
|
|
+ DECLARE _type CHAR(255);
|
|
|
+ DECLARE _lvl INT;
|
|
|
+
|
|
|
+ DECLARE _cpath TEXT;
|
|
|
+ DECLARE _id INT;
|
|
|
+ DECLARE _id_cur INT;
|
|
|
+ DECLARE EXIT HANDLER FOR NOT FOUND RETURN _path;
|
|
|
+ SET _id = COALESCE(node, @id);
|
|
|
+ SET _path = '';
|
|
|
+ SET _lvl=1;
|
|
|
+ the_loop: LOOP
|
|
|
+
|
|
|
+ SET _lvl =_lvl+1;
|
|
|
+
|
|
|
+ IF _lvl>100 THEN
|
|
|
+ RETURN concat('ERROR',_path);
|
|
|
+ LEAVE the_loop;
|
|
|
+
|
|
|
+ END IF;
|
|
|
+
|
|
|
+ SELECT PARENT_ID,`DESC`,ID
|
|
|
+ INTO _id,_type,_id_cur
|
|
|
+ FROM CRM_LISTA_ZASOBOW
|
|
|
+ WHERE id = _id
|
|
|
+ AND COALESCE(id <> @start_with, TRUE);
|
|
|
+ SET _path = CONCAT(_type, delimiter, _path);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ END LOOP the_loop;
|
|
|
+END";
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//!_CRM_LISTA_ZASOBOW_tree_UPDATE
|
|
|
+$sql['drop__CRM_LISTA_ZASOBOW_tree_UPDATE']="DROP TRIGGER IF EXISTS `_CRM_LISTA_ZASOBOW_tree_UPDATE`";
|
|
|
+$sql['create__CRM_LISTA_ZASOBOW_tree_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_LISTA_ZASOBOW_tree_UPDATE` BEFORE UPDATE ON `CRM_LISTA_ZASOBOW` FOR EACH ROW BEGIN
|
|
|
+IF NEW.PARENT_ID<>OLD.PARENT_ID or NEW.`DESC`<>OLD.`DESC` THEN
|
|
|
+SET NEW.path = CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.PARENT_ID);
|
|
|
+update CRM_WSKAZNIK ik set ik.path_CRM_LISTA_ZASOBOW=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.ID) where path_CRM_LISTA_ZASOBOW like concat('%',NEW.ID,'%');
|
|
|
+-- update CRM_LISTA_ZASOBOW ik set ik.path=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', ik.ID) where path like concat('%',OLD.`DESC`,'%') and ik.ID<>OLD.ID;
|
|
|
+END IF;
|
|
|
+END
|
|
|
+";
|
|
|
+
|
|
|
+//!_CRM_LISTA_ZASOBOW_tree_UPDATE_after
|
|
|
+$sql['drop__CRM_LISTA_ZASOBOW_tree_UPDATE_after']="DROP TRIGGER IF EXISTS `_CRM_LISTA_ZASOBOW_tree_UPDATE_after`";
|
|
|
+/*$sql['create__CRM_LISTA_ZASOBOW_tree_UPDATE_after']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_LISTA_ZASOBOW_tree_UPDATE_after` AFTER UPDATE ON `CRM_LISTA_ZASOBOW` FOR EACH ROW BEGIN
|
|
|
+IF NEW.PARENT_ID<>OLD.PARENT_ID or NEW.`DESC`<>OLD.`DESC` THEN
|
|
|
+-- update CRM_LISTA_ZASOBOW ik set ik.path=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', ik.ID) where path like concat('%',OLD.`DESC`,'%');
|
|
|
+update CRM_WSKAZNIK ik set ik.path_CRM_LISTA_ZASOBOW=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', ik.ID_ZASOB) where path_CRM_LISTA_ZASOBOW like concat('%',OLD.`DESC`,'%');
|
|
|
+END IF;
|
|
|
+
|
|
|
+END
|
|
|
+";
|
|
|
+*/
|
|
|
+
|
|
|
+
|
|
|
+//!_CRM_LISTA_ZASOBOW_tree_INSERT
|
|
|
+$sql['drop__CRM_LISTA_ZASOBOW_tree_INSERT']="DROP TRIGGER IF EXISTS `_CRM_LISTA_ZASOBOW_tree_INSERT`";
|
|
|
+$sql['create__CRM_LISTA_ZASOBOW_tree_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_LISTA_ZASOBOW_tree_INSERT` BEFORE INSERT ON `CRM_LISTA_ZASOBOW` FOR EACH ROW BEGIN
|
|
|
+
|
|
|
+ SET NEW.path = CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.PARENT_ID);
|
|
|
+END
|
|
|
+";
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//!_CRM_WSKAZNIK_tree_INSERT
|
|
|
+$sql['drop__CRM_WSKAZNIK_tree_INSERT']="DROP TRIGGER IF EXISTS `_CRM_WSKAZNIK_tree_INSERT`";
|
|
|
+$sql['create__CRM_WSKAZNIK_tree_INSERT']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_WSKAZNIK_tree_INSERT` BEFORE INSERT ON `CRM_WSKAZNIK` FOR EACH ROW BEGIN
|
|
|
+
|
|
|
+ SET NEW.path_CRM_LISTA_ZASOBOW = CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.ID_ZASOB);
|
|
|
+END
|
|
|
+";
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//!_CRM_WSKAZNIK_tree_UPDATE
|
|
|
+$sql['drop__CRM_WSKAZNIK_tree_UPDATE']="DROP TRIGGER IF EXISTS `_CRM_WSKAZNIK_tree_UPDATE`";
|
|
|
+$sql['create__CRM_WSKAZNIK_tree_UPDATE']="CREATE DEFINER=`root`@`localhost` TRIGGER `_CRM_WSKAZNIK_tree_UPDATE` BEFORE UPDATE ON `CRM_WSKAZNIK` FOR EACH ROW BEGIN
|
|
|
+
|
|
|
+IF NEW.ID_ZASOB<>OLD.ID_ZASOB THEN
|
|
|
+ SET NEW.path_CRM_LISTA_ZASOBOW = CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/', NEW.ID_ZASOB);
|
|
|
+
|
|
|
+END IF;
|
|
|
+END
|
|
|
+";
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//! event do aktualizacji PROJEKTOW - raz dziennie wszystkie przemapowac TODO trigger powinien aktualizowac pozostale powiazane rekordy, ktore zmienily strukture po zmianie struktury projektow
|
|
|
+
|
|
|
+
|
|
|
+$sql['event_delete_CRM_LISTA_ZASOBOW__CRM_WSKAZNIK_tree']="drop event if exists _CRM_LISTA_ZASOBOW__CRM_WSKAZNIK_tree_event";
|
|
|
+$sql['event_create_CRM_LISTA_ZASOBOW__CRM_WSKAZNIK_tree']="CREATE DEFINER=root@localhost EVENT _CRM_LISTA_ZASOBOW__CRM_WSKAZNIK_tree_event
|
|
|
+ ON SCHEDULE EVERY 1 DAY
|
|
|
+ STARTS str_to_date( date_format(now(), '%Y%m%d 0500'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
|
|
|
+ DO
|
|
|
+ BEGIN
|
|
|
+ update CRM_LISTA_ZASOBOW set path=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/',ID);
|
|
|
+ update CRM_WSKAZNIK set path_CRM_LISTA_ZASOBOW=CRM_LISTA_ZASOBOW_hierarchy_sys_connect_by_path('/',ID_ZASOB);
|
|
|
+
|
|
|
+ END
|
|
|
+
|
|
|
+ ";
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
+//! CRM_ZASOBY_END
|
|
|
+
|
|
|
//!IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path
|
|
|
$sql['drop_IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path']="drop function if exists IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path";
|
|
|
$sql['create_IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path']="CREATE DEFINER=`root`@`localhost` FUNCTION `IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path`(`delimiter` TEXT, `node` INT) RETURNS text CHARSET latin2
|
|
|
@@ -292,8 +411,6 @@ END";
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
$sql['drop__CRM_PROCES_STATS_proc_wiev']="drop table if exists _CRM_PROCES_STATS_proc_wiev;";
|
|
|
$sql['create__CRM_PROCES_STATS_proc_wiev']="create table _CRM_PROCES_STATS_proc_wiev
|
|
|
SELECT hi.ID,CRM_PROCES_tree_detect_init(hi.ID) as ID_PROCES_INIT,CONCAT(REPEAT(' ', lvl - 1), hi.id) AS treeitem,
|
|
|
@@ -420,6 +537,41 @@ END IF;
|
|
|
END";
|
|
|
|
|
|
|
|
|
+$sql['drop__CRM_PROCES_GOTO_CACHE']="drop table if exists _CRM_PROCES_GOTO_CACHE;";
|
|
|
+$sql_tmp['select_CRM_PROCES_GOTO_CACHE']="select t1.ID,t1.ID_PROCES_INIT,t2.IF_TRUE_GOTO , t2.IF_TRUE_GOTO_FLAG, now() as TIMESTAMP
|
|
|
+ from _CRM_PROCES_STATS_proc_wiev t1
|
|
|
+ inner join CRM_PROCES as t2 on ( t1.ID=t2.ID and t2.IF_TRUE_GOTO>0 and t2.IF_TRUE_GOTO_FLAG='GOTO_AND_RETURN' )
|
|
|
+ -- inner join CRM_PROCES as t3 on ( t2.IF_TRUE_GOTO=t3.ID and t2.IF_TRUE_GOTO>0 and t2.IF_TRUE_GOTO_FLAG='GOTO_AND_RETURN' ) TODO@2014-09-04 trzeba rekursywnie podlapac wzajemne powiazania
|
|
|
+
|
|
|
+ where t1.ID_PROCES_INIT>0
|
|
|
+ ";
|
|
|
+$sql['create__CRM_PROCES_GOTO_CACHE']="create table _CRM_PROCES_GOTO_CACHE ".$sql_tmp['select_CRM_PROCES_GOTO_CACHE'] ;
|
|
|
+
|
|
|
+$sql['alter__CRM_PROCES_GOTO_CACHE_ID']="alter table _CRM_PROCES_GOTO_CACHE add index(ID)" ;
|
|
|
+$sql['alter__CRM_PROCES_GOTO_CACHE_ID_PROCES_INIT_type']="alter table _CRM_PROCES_GOTO_CACHE modify ID_PROCES_INIT int(11)" ;
|
|
|
+$sql['alter__CRM_PROCES_GOTO_CACHE_ID_PROCES_INIT']="alter table _CRM_PROCES_GOTO_CACHE add index(ID_PROCES_INIT)" ;
|
|
|
+$sql['alter__CRM_PROCES_GOTO_CACHE_IF_TRUE_GOTO']="alter table _CRM_PROCES_GOTO_CACHE add index(IF_TRUE_GOTO)" ;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+$sql['event_delete_CRM_PROCES_GOTO_CACHE']="drop event if exists _CRM_PROCES_GOTO_CACHE_event";
|
|
|
+$sql['event_create_CRM_PROCES_GOTO_CACHE']="CREATE DEFINER=root@localhost EVENT _CRM_PROCES_GOTO_CACHE_event
|
|
|
+ ON SCHEDULE EVERY 1 DAY
|
|
|
+ STARTS str_to_date( date_format(now(), '%Y%m%d 0500'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
|
|
|
+ DO
|
|
|
+ BEGIN
|
|
|
+ SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
|
|
|
+ truncate table _CRM_PROCES_INIT_STATS;
|
|
|
+ replace into _CRM_PROCES_INIT_STATS ".$sql_tmp['select_CRM_PROCES_GOTO_CACHE']." ;
|
|
|
+ END
|
|
|
+
|
|
|
+ ";
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
$sql['drop__CRM_PROCES_STATS']="drop table if exists _CRM_PROCES_STATS ;";
|
|
|
@@ -612,8 +764,9 @@ BEGIN
|
|
|
END";
|
|
|
|
|
|
|
|
|
-$sql['replace__CRM_PROCES_USER_STATS_wiev']="create or replace definer=`root`@`localhost` view _CRM_PROCES_USER_STATS_wiev as
|
|
|
-select concat(au.ID,cw.ID) as ID,cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
|
|
|
+
|
|
|
+$sql['replace__CRM_PROCES_USER_STATS_wiev_to_group']="create or replace definer=`root`@`localhost` view _CRM_PROCES_USER_STATS_wiev_to_group as
|
|
|
+select concat(au.ID,cw.ID,0) as ID,cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
|
|
|
,au.ADM_ACCOUNT
|
|
|
,cps.path
|
|
|
, 'TEORETYCZNY' as TEST_TYPE,cps.SCQuest , max(ct.OCENA) as OCENA , max(ct.TEST_END) as TEST_END
|
|
|
@@ -621,7 +774,7 @@ select concat(au.ID,cw.ID) as ID,cps.ID as ID_PROCES , left(cps.`DESC`,50) as `
|
|
|
-- , max(if(ct.TEST_TYPE='PRAKTYCZNY',ct.OCENA,NULL)) as OCENA_P
|
|
|
from ADMIN_USERS as au
|
|
|
left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
|
|
|
- left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB and cw.A_STATUS in ('NORMAL','WAITING')
|
|
|
+ left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB and cw.A_STATUS in ('NORMAL','WAITING')
|
|
|
left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cw.ID_PROCES and ct.ID_TESTER=au.ID and ct.TEST_TYPE='TEORETYCZNY'
|
|
|
left join _CRM_PROCES_INIT_STATS as cps on cps.ID=cw.ID_PROCES
|
|
|
|
|
|
@@ -632,8 +785,33 @@ and cps.SCQuest>0
|
|
|
|
|
|
-- order by ct.OCENA desc
|
|
|
-- limit 10
|
|
|
+
|
|
|
+-- dodatkowe GOTO_AND_RETURN
|
|
|
+
|
|
|
union
|
|
|
-select concat(au.ID,cw.ID) as ID, cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
|
|
|
+select concat(au.ID,cw.ID,1) as ID,cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
|
|
|
+,au.ADM_ACCOUNT
|
|
|
+,cps.path
|
|
|
+, 'TEORETYCZNY' as TEST_TYPE,cps.SCQuest , max(ct.OCENA) as OCENA , max(ct.TEST_END) as TEST_END
|
|
|
+-- , max(if(ct.TEST_TYPE='TEORETYCZNY',ct.OCENA,NULL)) as OCENA_T
|
|
|
+-- , max(if(ct.TEST_TYPE='PRAKTYCZNY',ct.OCENA,NULL)) as OCENA_P
|
|
|
+
|
|
|
+from ADMIN_USERS as au
|
|
|
+ left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
|
|
|
+ left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB and cw.A_STATUS in ('NORMAL','WAITING')
|
|
|
+ left join _CRM_PROCES_GOTO_CACHE as cpgc on cpgc.ID_PROCES_INIT=cw.ID_PROCES
|
|
|
+
|
|
|
+ left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cpgc.IF_TRUE_GOTO and ct.ID_TESTER=au.ID and ct.TEST_TYPE='TEORETYCZNY'
|
|
|
+ left join _CRM_PROCES_INIT_STATS as cps on cps.ID=cpgc.IF_TRUE_GOTO
|
|
|
+
|
|
|
+where au.A_STATUS='NORMAL'
|
|
|
+
|
|
|
+and cps.SCQuest>0
|
|
|
+ group by au.ID, cps.ID
|
|
|
+
|
|
|
+
|
|
|
+union
|
|
|
+select concat(au.ID,cw.ID,2) as ID, cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
|
|
|
,au.ADM_ACCOUNT
|
|
|
,cps.path
|
|
|
, 'PRAKTYCZNY' as TEST_TYPE, cps.SCQuestPract , max(ct.OCENA) as OCENA, max(ct.TEST_END) as TEST_END
|
|
|
@@ -647,8 +825,34 @@ where au.A_STATUS='NORMAL'
|
|
|
|
|
|
and cps.SCQuestPract>0
|
|
|
group by au.ID,cps.ID
|
|
|
+
|
|
|
+-- dodatkowe GOTO_AND_RETURN
|
|
|
+
|
|
|
+union
|
|
|
+select concat(au.ID,cw.ID,3) as ID, cps.ID as ID_PROCES , left(cps.`DESC`,50) as `DESC`
|
|
|
+,au.ADM_ACCOUNT
|
|
|
+,cps.path
|
|
|
+, 'PRAKTYCZNY' as TEST_TYPE, cps.SCQuestPract , max(ct.OCENA) as OCENA, max(ct.TEST_END) as TEST_END
|
|
|
+from ADMIN_USERS as au
|
|
|
+ left join CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
|
|
|
+ left join CRM_WSKAZNIK as cw on cw.ID_ZASOB=cap.ID_ZASOB and cw.A_STATUS in ('NORMAL','WAITING')
|
|
|
+ left join _CRM_PROCES_GOTO_CACHE as cpgc on cpgc.ID_PROCES_INIT=cw.ID_PROCES
|
|
|
+
|
|
|
+ left join CRM_TESTY as ct on ct.ID_PROCES_INIT=cpgc.IF_TRUE_GOTO and ct.ID_TESTER=au.ID and ct.TEST_TYPE='PRAKTYCZNY'
|
|
|
+ left join _CRM_PROCES_INIT_STATS as cps on cps.ID=cpgc.IF_TRUE_GOTO
|
|
|
+
|
|
|
+where au.A_STATUS='NORMAL'
|
|
|
+
|
|
|
+and cps.SCQuestPract>0
|
|
|
+ group by au.ID,cps.ID
|
|
|
+
|
|
|
+";
|
|
|
+
|
|
|
+$sql['replace__CRM_PROCES_USER_STATS_wiev']="create or replace definer=`root`@`localhost` view _CRM_PROCES_USER_STATS_wiev as
|
|
|
+ select ID,ID_PROCES, `DESC`, ADM_ACCOUNT, path,TEST_TYPE,SCQuest,OCENA,TEST_END
|
|
|
+ from _CRM_PROCES_USER_STATS_wiev_to_group
|
|
|
+ group by ADM_ACCOUNT,ID_PROCES,TEST_TYPE ";
|
|
|
|
|
|
-order by ADM_ACCOUNT , path,OCENA desc";
|
|
|
|
|
|
$sql['event_drop_CRM_PROCES_USER_OCENA_OKRES']="drop event if exists CRM_PROCES_USER_OCENA_OKRES_event ";
|
|
|
$sql['event_create_CRM_PROCES_USER_OCENA_OKRES']=" CREATE DEFINER=root@localhost EVENT CRM_PROCES_USER_OCENA_OKRES_event
|
|
|
@@ -686,8 +890,11 @@ $sql['event_shedule_init']="SET GLOBAL event_scheduler = ON";
|
|
|
|
|
|
foreach($sql as $ind=>$sql_) {
|
|
|
DEBUG_S(-3,'wykonuje zapytanie sql dla '.$ind,$sql_,__FILE__,__FUNCTION__,__LINE__);
|
|
|
- DB::query($sql_) or die('Problem z zapytaniem '.mysql_error());
|
|
|
-
|
|
|
+ if(!empty($DB)) {
|
|
|
+ $DB->query($sql_) or die('Problem z zapytaniem '.mysql_error());
|
|
|
+ } else {
|
|
|
+ DB::query($sql_) or die('Problem z zapytaniem '.mysql_error());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|