UrlActions system

...
type = 'success'; $jsonData->msg = 'Gotowe'; try { $this->reinstall(); } catch (Exception $e) { $jsonData->type = 'danger'; $jsonData->msg = $e->getMessage(); } echo json_encode($jsonData); } public function reinstall() { $sqlList = array(); // alter table enum add URL_ACTION //$sqlList['RemoveTable'] = "DROP TABLE IF EXISTS `CRM_UI_MSGS`"; $pdo = DB::getPDO(); foreach ($sqlList as $sqlName => $sql) { $pdo->exec($sql); } } /* 636 TABELA IN7_MK_BAZA_DYSTRYBUCJI Projekty 763 KOMORKA ID Nr 22332 22317 URL_ACTION ProjektyKosztyWstepnychRobot 22335 763 PARAM_IN ID_PROJECT 25 TYPESPECIALS TYPESPECIALS PowiÄ…zania tabel 22317 URL_ACTION ProjektyKosztyWstepnychRobot 22324 PARAM_IN ID_PROJECT */ public static function fetchTableFunctions($idTbl, $idRecord) { $sqlIdZasob = DB::getPDO()->quote($idTbl, PDO::PARAM_STR); return DB::getPDO()->fetchAll(" select z.ID as ID , IF(z.DESC_PL != '', z.DESC_PL, IF(za.DESC_PL != '', za.DESC_PL, z.`DESC`)) as fun_label , za.`DESC` as fun_name , zp.ALIAS_ID as param_in_to_cell_id , zp.DESC as param_in_name from CRM_LISTA_ZASOBOW z join CRM_LISTA_ZASOBOW za on(za.ID = z.ALIAS_ID) left join CRM_LISTA_ZASOBOW zp on(zp.PARENT_ID = z.ID and zp.`TYPE` = 'PARAM_IN') left join CRM_LISTA_ZASOBOW zpa on(zpa.ID = zp.ALIAS_ID and zpa.`TYPE` = 'PARAM_IN' and zpa.`DESC` = zp.`DESC`) where z.PARENT_ID = {$sqlIdZasob} and z.`TYPE` = 'URL_ACTION' "); } public static function fetchTableFunctionsForUser($idTbl, $idRecord, $usrLogin) { $sqlIdZasob = DB::getPDO()->quote($idTbl, PDO::PARAM_STR); $sqlUserLogin = DB::getPDO()->quote($usrLogin, PDO::PARAM_STR); return DB::getPDO()->fetchAll(" select z.ID as ID , IF(z.DESC_PL != '', z.DESC_PL, IF(za.DESC_PL != '', za.DESC_PL, z.`DESC`)) as fun_label , za.`DESC` as fun_name , zp.ALIAS_ID as param_in_to_cell_id , zp.DESC as param_in_name , param.`DESC` as link_param -- TODO find LINK_TARGET_SELF under za.ID - link target defined globally from CRM_LISTA_ZASOBOW z join CRM_LISTA_ZASOBOW za on(za.ID = z.ALIAS_ID) left join CRM_LISTA_ZASOBOW zp on(zp.PARENT_ID = z.ID and zp.`TYPE` = 'PARAM_IN') left join CRM_LISTA_ZASOBOW zpa on(zpa.ID = zp.ALIAS_ID and zpa.`TYPE` = 'PARAM_IN' and zpa.`DESC` = zp.`DESC`) join CRM_WSKAZNIK w on(w.ID_ZASOB = z.ID and w.A_STATUS not in('DELETED')) -- join CRM_PROCES p on(p.ID = w.ID_PROCES) join CRM_PROCES_idx_USER_to_PROCES_VIEW upv on(upv.ID_PROCES = w.ID_PROCES) left join CRM_LISTA_ZASOBOW param on(param.PARENT_ID = z.ID and param.`TYPE` = 'DANE') where z.PARENT_ID = {$sqlIdZasob} and z.`TYPE` = 'URL_ACTION' and upv.ADM_ACCOUNT = {$sqlUserLogin} -- group by z.ID "); } public static function getTableFunctions($idTbl, $idRecord, $tblName = '', $usrLogin = null) { $rows = array(); if (!empty($usrLogin)) { $rows = self::fetchTableFunctionsForUser($idTbl, $idRecord, $usrLogin); } else { $rows = self::fetchTableFunctions($idTbl, $idRecord); } DBG::log($rows, 'array', "getTableFunctions({$idTbl}, {$idRecord}, ...) :: rows"); $functions = array(); foreach ($rows as $row) { // TODO: Router::getRoute("UrlAction_{$row['fun_name']}")->isRecordAllowed($idTbl, $idRecord, $tblName); if (!array_key_exists($row['ID'], $functions)) { $fun = array(); $fun['label'] = $row['fun_label']; $fun['name'] = $row['fun_name']; $fun['baseLink'] = "index.php?_route=UrlAction_{$row['fun_name']}"; $fun['ico'] = "glyphicon glyphicon-share"; $fun['cell_id_params'] = array(); $fun['link_target'] = '_blank';// LINK_TARGET_SELF $functions[ $row['ID'] ] = $fun; } $funParams = $functions[ $row['ID'] ]['cell_id_params']; if (!empty($row['param_in_name'])) { if ($row['param_in_to_cell_id'] > 0) {// ALIAS to field - get field value from row $funParams[ $row['param_in_to_cell_id'] ] = $row['param_in_name']; $functions[ $row['ID'] ]['cell_id_params'] = $funParams; } else if (false !== strpos($row['param_in_name'], '=')) {// "{arg_name}={value}" - add to url $functions[ $row['ID'] ][ 'baseLink' ] .= "&" . $row['param_in_name']; } } if ('LINK_TARGET_SELF' == $row['link_param']) { unset($functions[ $row['ID'] ]['link_target']); } } $functions = array_filter($functions, function ($rowFunction) use ($idRecord) { return ($idRecord > 0) ? !empty($rowFunction['cell_id_params']) : empty($rowFunction['cell_id_params']); }); DBG::log($functions, 'array', "getTableFunctions({$idTbl}, {$idRecord}, ...) :: functions"); return $functions; } }