getRootTableName();
$idTable = $acl->getID();
echo UI::h('details', ['style'=>"margin-bottom:24px; padding:0 10px; background-color:#eee", 'open' => "open"], [
UI::h('summary', ['style'=>"font-size:1.4em; line-height:2em; cursor:pointer; outline:none"], [
"Uprawnienia obiektu '{$namespace}' ",
// UI::h('small', ['style'=>"font-size:0.8em; font-style:italic; color:#aaa"], " więcej...")
]),
UI::h('div', ['style'=>"padding:4px 24px; border-top:1px solid #fff"], [
UI::h('p', [], "tabela: '{$rootTableName}'"),
UI::h('p', [], "id zasobu: [{$idTable}]"),
UI::h('p', [], [
"struktura: ",
($acl instanceof AntAclBase)
? UI::h('a', [ 'href' => Router::getRoute('Storage_AclStruct')->getLink('', [ 'idStorage' => $acl->getDatabaseID(), 'namespace' => $acl->getNamespace() ]) ], "struktura obiektu (AntAcl)")
: UI::h('a', [ 'href' => Router::getRoute('Storage_AclStruct')->getLink('tableStruct', [ 'idStorage' => $acl->getDatabaseID(), 'table' => $acl->getRootTableName() ]) ], "struktura tabeli (TableAcl)")
]),
UI::h('p', [], [
"dodaj proces: ",
UI::hButtonAjax("Dodaj podstawowy proces - read only (TODO)", 'addObjectBaseProcesAjax', [
'title' => "Dodaj podstawowy proces dla obiektu '{$namespace}' - read only (TODO)",
'class' => "btn btn-xs btn-default",
'href' => Router::getRoute('Storage')->getLink('addObjectBaseProcesAjax'),
'data' => [ 'namespace' => $namespace ]
]),
" ",
UI::hButtonAjax("TODO edytor procesu", 'todoGotoProcesEditorAjax', [
'title' => "Otwórz edytor procesu dla obiektu '{$namespace}'",
'class' => "btn btn-xs btn-warning",
'href' => Router::getRoute('Storage')->getLink('addObjectBaseProcesAjax'),
'data' => [ 'namespace' => $namespace ]
]),
]),
])
]);
UI::hButtonAjaxOnResponse('addObjectBaseProcesAjax', /* payload, n */ "
jQuery.notify(payload.msg, payload.type)
");
UI::hButtonAjaxOnResponse('todoGotoProcesEditorAjax', /* payload, n */ "
jQuery.notify('TODO: edytor procesu', 'error')
");
if ($idTable > 0) {
$aclTableRows = DB::getPDO()->fetchAll("select * from `CRM_PROCES_idx_TABLE_TO_PROCES_PERMS_VIEW` where ID_TABLE = {$idTable}");
UI::startTag('details');
echo UI::h('summary', ['style'=>"cursor:pointer; margin-bottom:12px"], "Wszystkie powiązania komórek z procesami - szczegóły");
UI::table([
'rows' => array_map(function ($row) {
$splitPos = (strlen($row['TABLE_DESCRIPTION']) > 20) ? strpos($row['TABLE_DESCRIPTION'], ' ', 20) : 20;
if ($splitPos > 30) $splitPos = 20;
$row['TABLE_DESCRIPTION'] = UI::h('details', [], [
UI::h('summary', [ 'style' => "white-space:nowrap" ], substr($row['TABLE_DESCRIPTION'], 0, $splitPos)),
UI::h('p', [], substr($row['TABLE_DESCRIPTION'], $splitPos)),
]);
return $row;
}, $aclTableRows)
]);
UI::endTag('details');
$csvIdProces = array();
foreach ($aclTableRows as $row) {
if (!in_array($row['ID_PROCES'], $csvIdProces)) $csvIdProces[] = $row['ID_PROCES'];
}
}
$databaseName = DB::getPDO( $acl->getDatabaseID() )->getDatabaseName();
UI::table([
'caption' => "Powiązania komórek z procesem",
'rows' => array_map(
function ($row) use ($aclTableRows, $idTable) {
$fieldName = $row['COLUMN_NAME'];
$item = [];
$item['name'] = $fieldName;
$item['typ'] = UI::h('details', [], [
UI::h('summary', ['style'=>"cursor:pointer"], $row['DATA_TYPE']),
UI::h('p', [], $row['COLUMN_TYPE']),
]);
$item['w procesie'] = array();
$item['id_zasob'] = 0;
$item['PERM_R'] = 0;
$item['PERM_W'] = 0;
$item['PERM_X'] = 0;
$item['PERM_C'] = 0;
$item['PERM_S'] = 0;
$item['PERM_O'] = 0;
$item['PERM_V'] = 0;
$item['PERM_E'] = 0;
foreach ($aclTableRows as $aclInfo) {
if (strtolower($aclInfo['CELL_NAME']) == strtolower($row['COLUMN_NAME'])) {
$item['w procesie'][] = $aclInfo['ID_PROCES'];
$item['id_zasob'] = $aclInfo['ID_CELL'];
$item['PERM_R'] += $aclInfo['PERM_R'];
$item['PERM_W'] += $aclInfo['PERM_W'];
$item['PERM_X'] += $aclInfo['PERM_X'];
$item['PERM_C'] += $aclInfo['PERM_C'];
$item['PERM_S'] += $aclInfo['PERM_S'];
$item['PERM_O'] += $aclInfo['PERM_O'];
$item['PERM_V'] += $aclInfo['PERM_V'];
$item['PERM_E'] += $aclInfo['PERM_E'];
}
}
$item['w procesie'] = (empty($item['w procesie']))
? "Brak"
: UI::h('span', ['style'=>"white-space:nowrap"], implode(", ", $item['w procesie']));
if (!$item['id_zasob']) $item['id_zasob'] = DB::getPDO()->fetchValue("select ID from CRM_LISTA_ZASOBOW where `DESC` = '{$fieldName}' and PARENT_ID = {$idTable} limit 1");
$item['id_zasob'] = ($item['id_zasob']) ? $item['id_zasob'] : UI::h('i', ['style'=>"color:silver"], "Brak");
return $item;
}, DB::getPDO()->fetchAll("
select t.COLUMN_NAME, t.DATA_TYPE, t.COLUMN_TYPE
from `information_schema`.`COLUMNS` t
where t.TABLE_SCHEMA = '{$databaseName}'
and t.TABLE_NAME like '{$rootTableName}'
")
)
]);
if (!empty($csvIdProces)) {
$userLogin = User::getLogin();
$csvIdProces = implode(",", $csvIdProces);
UI::tag('h4', ['style'=>"margin-top:40px"], "Procesy dla '{$userLogin}': [{$csvIdProces}] (z tabeli CRM_PROCES_idx_USER_to_PROCES_VIEW)");
$rows = DB::getPDO()->fetchAll("
select ID_PROCES
from `CRM_PROCES_idx_USER_to_PROCES_VIEW`
where ADM_ACCOUNT = '{$userLogin}'
and ID_PROCES in({$csvIdProces})
group by ID_PROCES
");
$userIdProces = array(); foreach ($rows as $row) $userIdProces[] = $row['ID_PROCES'];
$userTablePerms = array();
foreach ($aclTableRows as $row) {
if (!in_array($row['ID_PROCES'], $userIdProces)) continue;
if (array_key_exists($row['CELL_NAME'], $userTablePerms)) {
$userTablePerms[ $row['CELL_NAME'] ]['w procesie'] .= ",{$row['ID_PROCES']}";
$userTablePerms[ $row['CELL_NAME'] ][ 'PERM_R' ] += $row['PERM_R'];
$userTablePerms[ $row['CELL_NAME'] ][ 'PERM_W' ] += $row['PERM_W'];
$userTablePerms[ $row['CELL_NAME'] ][ 'PERM_X' ] += $row['PERM_X'];
$userTablePerms[ $row['CELL_NAME'] ][ 'PERM_C' ] += $row['PERM_C'];
$userTablePerms[ $row['CELL_NAME'] ][ 'PERM_S' ] += $row['PERM_S'];
$userTablePerms[ $row['CELL_NAME'] ][ 'PERM_O' ] += $row['PERM_O'];
$userTablePerms[ $row['CELL_NAME'] ][ 'PERM_V' ] += $row['PERM_V'];
$userTablePerms[ $row['CELL_NAME'] ][ 'PERM_E' ] += $row['PERM_E'];
} else {
$userTablePerms[ $row['CELL_NAME'] ] = [
'fieldName' => $row['CELL_NAME'],
'zasob' => $row['ID_CELL'],
'w procesie' => "{$row['ID_PROCES']}",
'PERM_R' => $row['PERM_R'],
'PERM_W' => $row['PERM_W'],
'PERM_X' => $row['PERM_X'],
'PERM_C' => $row['PERM_C'],
'PERM_S' => $row['PERM_S'],
'PERM_O' => $row['PERM_O'],
'PERM_V' => $row['PERM_V'],
'PERM_E' => $row['PERM_E'],
];
}
}
UI::table([
'caption' => "Uprawniena dla usera '{$userLogin}'",
'rows' => $userTablePerms
]);
} else UI::alert('warning', "Brak przypisanych procesów");
} catch (Exception $e) {
UI::alert('danger', $e->getMessage());
DBG::log($e);
}
UI::endContainer();
UI::dol();
}
}