2015-06-01 12:18:13 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Icinga\Module\Director\Tables;
|
|
|
|
|
|
|
|
use Icinga\Module\Director\Web\Table\QuickTable;
|
|
|
|
|
|
|
|
class ActivityLogTable extends QuickTable
|
|
|
|
{
|
2015-06-30 11:19:31 +02:00
|
|
|
protected $filters = array();
|
|
|
|
|
2015-06-01 12:18:13 +02:00
|
|
|
public function getColumns()
|
|
|
|
{
|
|
|
|
return array(
|
|
|
|
'id' => 'l.id',
|
|
|
|
'change_time' => 'l.change_time',
|
|
|
|
'author' => 'l.author',
|
|
|
|
'action' => "CONCAT(l.action_name || ' ' || REPLACE(l.object_type, 'icinga_', '') || ' \"' || l.object_name || '\"')"
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2015-06-01 12:42:40 +02:00
|
|
|
protected function getActionUrl($row)
|
2015-06-01 12:18:13 +02:00
|
|
|
{
|
2015-06-01 12:42:40 +02:00
|
|
|
return $this->url('director/show/activitylog', array('id' => $row->id));
|
2015-06-01 12:18:13 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function getTitles()
|
|
|
|
{
|
|
|
|
$view = $this->view();
|
|
|
|
return array(
|
|
|
|
'change_time' => $view->translate('Timestamp'),
|
|
|
|
'author' => $view->translate('Author'),
|
|
|
|
'action' => $view->translate('Action'),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2015-06-30 11:19:31 +02:00
|
|
|
public function filterObject($type, $name)
|
|
|
|
{
|
|
|
|
$this->filters[] = array('l.object_type = ?', $type);
|
|
|
|
$this->filters[] = array('l.object_name = ?', $name);
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
2015-06-01 12:18:13 +02:00
|
|
|
public function fetchData()
|
|
|
|
{
|
|
|
|
$db = $this->connection()->getConnection();
|
|
|
|
|
|
|
|
$query = $db->select()->from(
|
|
|
|
array('l' => 'director_activity_log'),
|
|
|
|
$this->getColumns()
|
|
|
|
)->order('change_time DESC');
|
|
|
|
|
2015-06-30 11:19:31 +02:00
|
|
|
foreach ($this->filters as $filter) {
|
|
|
|
$query->where($filter[0], $filter[1]);
|
|
|
|
}
|
|
|
|
|
2015-06-01 12:18:13 +02:00
|
|
|
return $db->fetchAll($query);
|
|
|
|
}
|
|
|
|
}
|