"container"]);
echo UI::h('h1', [], [
UI::h('a', ['href'=>"index.php"], "SE"),
" » ",
" Status systemu procesy5"
]);
try {
DB::getPDO();
$this->viewStatusDatabase();
if (in_array(User::get('ADM_ADMIN_LEVEL'), ['0', '1'])) {
$this->viewStatusUsers();
}
// UI::table([
// 'caption' => 'Baza danych',
// 'rows' => DB::getPDO()->fetchAll(" SHOW VARIABLES ")
// ]);
} catch (Exception $e) {
UI::alert('danger', $e->getMessage());
}
UI::endTag('div');// .container
UI::dol();
}
public function viewStatusDatabase() {
if (1 == V::get('event_sheduler_on', '', $_POST)) {
$this->fixEventSheduler();
}
$dbEvents = DB::getPDO()->fetchFirst(" SHOW VARIABLES WHERE VARIABLE_NAME = 'event_scheduler' ");
// DBG::nicePrint($dbEvents, '$dbEvents');
// [Variable_name] => event_scheduler
// [Value] => ON
UI::table([
'caption' => UI::h('b', ['style' => "color:#000"], 'Baza danych'),
'rows' => [
[
'nazwa' => 'Event Scheduler (generowanie Grafika, itp.)',
'wartość' => ('ON' == $dbEvents['Value'])
? UI::h('span', ['class' => "label label-success"], "ON")
: UI::h('span', ['class' => "label label-danger"], "OFF"),
'#' => UI::hButtonPost("Włącz", [
'class' => "btn btn-xs btn-default",
'data' => [
'event_sheduler_on' => 1
]
])
]
]
]);
}
public function fixEventSheduler() {
DB::getPDO()->execSql(" SET GLOBAL event_scheduler='ON' ");
}
public function viewStatusUsers() {
$nowMinus3Months = date("Y-m-d", mktime(0,0,0, date('m') - 1, date('d'), date('Y')));
$sesUsers = DB::getPDO()->fetchAll("
select c.ID, c.CONF_KEY, c.CONF_VAL
from CRM_CONFIG c
where c.CONF_KEY like 'acl_user_%_%_cache_update'
and c.CONF_VAL > '{$nowMinus3Months}'
");
$sesUsers = array_reduce( $sesUsers, function ($ret, $record) {
// $format = "acl_user_{ID_USERS}_{ID_PROCES}_cache_update";
list($idUser, $idProces) = explode('_', substr($record['CONF_KEY'], strlen('acl_user_'), -1 * strlen('_cache_update')));
if (!array_key_exists($idUser, $ret)) {
$ret[$idUser] = [
'idUser' => $idUser,
'lastUpdateAclCache' => $record['CONF_VAL'],
'log' => []
];
} else {
$ret[$idUser]['lastUpdateAclCache'] = ($record['CONF_VAL'] > $ret[$idUser]['lastUpdateAclCache'])
? $record['CONF_VAL']
: $ret[$idUser]['lastUpdateAclCache'];
}
$ret[$idUser]['log'][] = [ 'ID_PROCES' => $idProces, 'data' => $record['CONF_VAL'] ];
return $ret;
}, [] );
$sesUsers = array_map(function ($sesGroup) {
return [
'idUser' => $sesGroup['idUser'],
'user' => DB::getPDO()->fetchValue("select u.ADM_ACCOUNT from ADMIN_USERS u where u.ID = {$sesGroup['idUser']}"),
'lastUpdateAclCache' => $sesGroup['lastUpdateAclCache'],
'log' => UI::h('span', [ 'style' => "color:#bbb" ], implode('
', array_map(function ($log) {
return ($log['ID_PROCES'] > 0)
? "Filtr procesu {$log['ID_PROCES']} uruchomiony {$log['data']}"
: "Filtr ogólny uruchomiony {$log['data']}";
}, $sesGroup['log']))),
];
}, $sesUsers);
usort($sesUsers, function ($ua, $ub) {
$a = $ua['lastUpdateAclCache'];
$b = $ub['lastUpdateAclCache'];
return ($a === $b)
? 0
: ( ($a < $b)
? 1
: -1
) ;
});
UI::table([
'caption' => UI::h('b', ['style' => "color:#000"], "Ostatnie logowania do aplikacji") . " (update acl cache)", // TODO: Aktualnie zalogowani użytkownicy
'rows' => $sesUsers
]);
}
}