Файл: concrete5.7.5.6/concrete/controllers/single_page/dashboard/reports/logs.php
Строк: 104
<?php
namespace ConcreteControllerSinglePageDashboardReports;
use ConcreteCorePageControllerDashboardPageController;
use ConcreteCoreLoggingLogList;
use Log;
use Core;
use Request;
use User;
class Logs extends DashboardPageController {
public function clear($token = '', $channel = false) {
$valt = Core::make('helper/validation/token');
if ($valt->validate('', $token)) {
if (!$channel) {
Log::clearAll();
} else {
Log::clearByChannel($channel);
}
$this->redirect('/dashboard/reports/logs');
} else {
$this->redirect('/dashboard/reports/logs');
}
$this->view();
}
public function view($page = 0) {
$this->requireAsset('select2');
$levels = array();
foreach(Log::getLevels() as $level) {
$levels[$level] = Log::getLevelDisplayName($level);
}
$channels = array('' => t('All Channels'));
foreach(Log::getChannels() as $channel) {
$channels[$channel] = Log::getChannelDisplayName($channel);
}
$r = Request::getInstance();
$query = http_build_query(array(
'channel' => $r->query->get('channel'),
'keywords' => $r->query->get('keywords'),
'level' => $r->query->get('level')
));
$list = $this->getFilteredList();
$entries = $list->getPage();
$this->set('list', $list);
$this->set('entries', $entries);
$this->set('levels', $levels);
$this->set('channels', $channels);
$this->set('query', $query);
}
public function csv($token = '') {
$valt = Core::make('helper/validation/token');
if (!$valt->validate('', $token)) {
$this->redirect('/dashboard/reports/logs');
} else {
$list = $this->getFilteredList();
$entries = $list->get(0);
$fileName = "Log Search Results";
header("Content-Type: text/csv");
header("Cache-control: private");
header("Pragma: public");
$date = date('Ymd');
header("Content-Disposition: attachment; filename=" . $fileName . "_form_data_{$date}.csv");
$fp = fopen('php://output', 'w');
// write the columns
$row = array(
t('Date'),
t('Level'),
t('Channel'),
t('User'),
t('Message')
);
fputcsv($fp, $row);
foreach($entries as $ent) {
$uID = $ent->getUserID();
if(empty($uID)) {
$user = t("Guest");
} else {
$u = User::getByUserID($uID);
if(is_object($u)) {
$user = $u->getUserName() ;
}
else {
$user = tc('Deleted user', 'Deleted (id: %s)', $uID);
}
}
$row = array(
$ent->getDisplayTimestamp(),
$ent->getLevelName(),
$ent->getChannelDisplayName(),
$user,
$ent->getMessage()
);
fputcsv($fp, $row);
}
fclose($fp);
die;
}
}
public function getFilteredList() {
$list = new LogList();
$r = Request::getInstance();
if ($r->query->has('channel') && $r->query->get('channel') != '') {
$list->filterByChannel($r->query->get('channel'));
$this->set('selectedChannel', h($r->query->get('channel')));
}
if ($r->query->has('level')) {
$selectedlevels = $r->get('level');
if (is_array($selectedlevels) && count($selectedlevels) != 8) {
$list->filterByLevels($selectedlevels);
}
}
if ($r->query->has('keywords') && $r->query->get('keywords') != '') {
$list->filterByKeywords($r->query->get('keywords'));
}
return $list;
}
}