*/
class IpLogDataTable extends DataTable implements AdminArea
{
public function initContent()
{
$this->initIds('ipLog');
$this->title = null;
$this->addActionButton(new DeleteButton());
$this->addMassActionButton(new DeleteMassButton);
}
protected function loadHtml()
{
$i = (new IpLog())->getTable();
$h = (new Hosting)->getTable();
$c = (new Client())->getTable();
$this->addColumn((new Column('id', $i))->setSearchable(true, Column::TYPE_INT)->setOrderable('DESC'))
->addColumn((new Column('message', $i))->setSearchable(true, Column::TYPE_STRING)->setOrderable())
->addColumn((new Column('domain', $h))->setSearchable(true, Column::TYPE_STRING)->setOrderable())
->addColumn((new Column('firstname', $c))->setSearchable(true, Column::TYPE_STRING)->setOrderable())
->addColumn((new Column('created_at', $i))->setSearchable(true, Column::TYPE_DATE)->setOrderable());
}
public function replaceFieldDomain($key, $row)
{
if ($row->domain)
{
return sprintf(' %s', $row->userid, $row->hosting_id, $row->domain);
}
return sprintf(' %s', $row->userid, $row->hosting_id, $row->hosting_id);
}
public function replaceFieldFirstname($key, $row)
{
return sprintf('%s %s', $row->userid, $row->firstname, $row->lastname);
}
protected function loadData()
{
$i = (new IpLog())->getTable();
$h = (new Hosting)->getTable();
$c = (new Client())->getTable();
$query = (new IpLog())
->query()
->getQuery()
->leftJoin($h, "{$i}.hosting_id", '=', "{$h}.id")
->leftJoin($c, "{$h}.userid", '=', "{$c}.id")
->select("{$i}.*", "{$h}.domain", "{$h}.userid", "{$c}.firstname", "{$c}.lastname");
$dataProv = new QueryDataProvider();
$dataProv->setDefaultSorting("id", 'DESC');
$dataProv->setData($query);
$this->setDataProvider($dataProv);
}
}