admin log

This commit is contained in:
Etienne Roudeix
2013-10-29 16:09:50 +01:00
parent 082f9aff8d
commit a055f3b3eb
7 changed files with 222 additions and 88 deletions

View File

@@ -830,6 +830,10 @@
<default key="_controller">Thelia\Controller\Admin\AdminLogsController::defaultAction</default>
</route>
<route id="admin.configuration.admin-logs.logger" path="/admin/configuration/adminLogs/logger">
<default key="_controller">Thelia\Controller\Admin\AdminLogsController::loadLoggerAjaxAction</default>
</route>
<!-- end admin logs display -->
<!-- feature and features value management -->

View File

@@ -24,6 +24,7 @@
namespace Thelia\Controller\Admin;
use Thelia\Core\Security\AccessManager;
use Thelia\Model\AdminLogQuery;
class AdminLogsController extends BaseAdminController
{
@@ -36,4 +37,34 @@ class AdminLogsController extends BaseAdminController
// Render the edition template.
return $this->render('admin-logs');
}
public function loadLoggerAjaxAction()
{
$entries = array();
foreach( AdminLogQuery::getEntries(
$this->getRequest()->request->get('admins', array()),
null,
null,
array_merge($this->getRequest()->request->get('resources', array()), $this->getRequest()->request->get('modules', array()))
) as $entry) {
$entries[] = array(
"head" => sprintf(
"[%s][%s][%s:%s]",
date('Y-m-d H:i:s', $entry->getCreatedAt()->getTimestamp()),
$entry->getAdminLogin(),
$entry->getResource(),
$entry->getAction()
),
"data" => $entry->getMessage(),
);
}
return $this->render(
'ajax/logger',
array(
'entries' => $entries,
)
);
}
}

View File

@@ -2,6 +2,7 @@
namespace Thelia\Model;
use Propel\Runtime\ActiveQuery\Criteria;
use Thelia\Model\Base\AdminLogQuery as BaseAdminLogQuery;
@@ -15,6 +16,41 @@ use Thelia\Model\Base\AdminLogQuery as BaseAdminLogQuery;
* long as it does not already exist in the output directory.
*
*/
class AdminLogQuery extends BaseAdminLogQuery {
class AdminLogQuery extends BaseAdminLogQuery
{
/**
* @param null $login
* @param \DateTime $maxDateTime
* @param \DateTime $minDateTime
* @param null $resources
* @param null $actions
*
* @return array|mixed|\Propel\Runtime\Collection\ObjectCollection
*/
public static function getEntries($login = null, \DateTime $maxDateTime = null, \DateTime $minDateTime = null, $resources = null, $actions = null)
{
$search = self::create();
if(null !== $minDateTime) {
$search->filterByCreatedAt($minDateTime->getTimestamp(), Criteria::GREATER_EQUAL);
}
if(null !== $maxDateTime) {
$search->filterByCreatedAt($maxDateTime->getTimestamp(), Criteria::LESS_EQUAL);
}
if(null !== $resources) {
$search->filterByResource($resources);
}
if(null !== $actions) {
$search->filterByAction($actions);
}
if(null !== $login) {
$search->filterByAdminLogin($login);
}
return $search->find();
}
} // AdminLogQuery