Revize 161
Přidáno uživatelem Michal Kliment před více než 15 roky(ů)
freenetis/trunk/kohana/application/models/ip_address.php | ||
---|---|---|
<?php
|
||
class Ip_address_Model extends ORM {
|
||
|
||
protected $belongs_to = array('iface','subnet','vlan_iface');
|
||
protected $belongs_to = array('iface','subnet','vlan_iface');
|
||
|
||
public $arr_sql = array('segment_name'=>'s.name','device_name'=>'d.name','user'=>'concat(u.name,\' \',u.surname)');
|
||
|
||
public function count_all_ip_addresses()
|
||
public function count_all_ip_addresses($filter_values = array())
|
||
{
|
||
return self::$db->count_records('ip_addresses');
|
||
$where = '';
|
||
if(count($filter_values)>0) $where .= 'where ';
|
||
foreach ($filter_values as $key => $value)
|
||
{
|
||
if($key!='submit')
|
||
{
|
||
if($where!='where ') $where .= ' and ';
|
||
$where .= $this->get_sql($key).' like \'%'.trim($value).'%\' collate utf8_general_ci';
|
||
}
|
||
}
|
||
|
||
$ip_addresses = self::$db->query('select ip.id, ip.IP_address, f.MAC, s.name as segment_name, d.name as device_name, concat(u.name,\' \',u.surname) as user_name from ip_addresses ip
|
||
left join ifaces f on ip.iface_id = f.id
|
||
left join segments s on f.segment_id = s.id
|
||
left join devices d on f.device_id = d.id
|
||
left join users u on d.user_id = u.id '.$where);
|
||
return count($ip_addresses);
|
||
}
|
||
|
||
public function get_all_ip_addresses($limit_from = 0, $limit_results = 50, $order_by = 'ip_addresses.id', $order_by_direction = 'ASC')
|
||
{
|
||
return self::$db->query(' SELECT ifaces.name AS iface_name, vlan_ifaces.name AS vlan_iface_name,subnets.name as subnet_name, ip_addresses.* FROM ip_addresses
|
||
LEFT JOIN ifaces ON ifaces.id = ip_addresses.iface_id
|
||
LEFT JOIN vlan_ifaces ON vlan_ifaces.id = ip_addresses.VLAN_iface_id
|
||
LEFT JOIN subnets ON subnets.id=ip_addresses.subnet_id
|
||
ORDER BY '.$order_by.' '.$order_by_direction.' LIMIT '.$limit_from.','.$limit_results);
|
||
}
|
||
public function get_all_ip_addresses($limit_from = 0, $limit_results = 50, $order_by = 'ip_addresses.id', $order_by_direction = 'ASC', $filter_values = array())
|
||
{
|
||
$where = '';
|
||
if(count($filter_values)>0) $where .= 'where ';
|
||
foreach ($filter_values as $key => $value)
|
||
{
|
||
if($key!='submit')
|
||
{
|
||
if($where!='where ') $where .= ' and ';
|
||
$where .= $this->get_sql($key).' like \'%'.trim($value).'%\' collate utf8_general_ci';
|
||
}
|
||
}
|
||
|
||
return self::$db->query('select ip.id, ip.IP_address, f.MAC, s.name as segment_name, d.name as device_name, concat(u.name,\' \',u.surname) as user_name from ip_addresses ip
|
||
left join ifaces f on ip.iface_id = f.id
|
||
left join segments s on f.segment_id = s.id
|
||
left join devices d on f.device_id = d.id
|
||
left join users u on d.user_id = u.id '
|
||
.$where.' order by '.$this->get_sql($order_by).' '.$order_by_direction.' limit '.$limit_from.','.$limit_results);
|
||
}
|
||
|
||
private function get_sql($key = NULL)
|
||
{
|
||
return (isset($this->arr_sql[$key])) ? $this->arr_sql[$key] : $key;
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
?>
|
freenetis/trunk/kohana/application/controllers/ip_addresses.php | ||
---|---|---|
|
||
$ip_model = new Ip_address_Model();
|
||
|
||
$total_ip = $ip_model->count_all_ip_addresses(); // count all members in database
|
||
|
||
|
||
// get new selector
|
||
if (is_numeric($this->input->get('record_per_page'))) $limit_results = (int) $this->input->get('record_per_page');
|
||
|
||
$url_array = explode('/', trim(url::current(), '/'));
|
||
$sql_offset = (isset($url_array[7])) ? (int) ($url_array[7] - 1) * $limit_results : 0;
|
||
unset($url_array);
|
||
$sql_offset = ($sql_offset>$total_ip) ? 0 : $sql_offset;
|
||
|
||
|
||
//$query = $ip_model->select(array('ifaces.name as iface_name', 'vlan_ifaces.name as vlan_iface_name', 'ip_addresses.*'))->join('ifaces', 'ifaces.id = ip_addresses.iface_id')->join('vlan_ifaces', 'vlan_ifaces.id = ip_addresses.VLAN_iface_id')->orderby($order_by,$order_by_direction)->limit($limit_results,$sql_offset)->find_all();
|
||
/*$db = new Database;
|
||
$query = $db->query('SELECT ifaces.name AS iface_name, vlan_ifaces.name AS vlan_iface_name, ip_addresses.* FROM ip_addresses LEFT JOIN ifaces ON ifaces.id = ip_addresses.iface_id LEFT JOIN vlan_ifaces ON vlan_ifaces.id = ip_addresses.VLAN_iface_id ORDER BY id ASC LIMIT 0, 50');
|
||
*/
|
||
$query = $ip_model->get_all_ip_addresses($sql_offset, (int)$limit_results, $order_by, $order_by_direction);
|
||
|
||
|
||
|
||
$filter=new Table_Form(url_lang::base()."ip_addresses/show_all", "get", array(
|
||
"IP_address"=>"IP address",
|
||
"MAC"=>"MAC",
|
||
"tr",
|
||
"segment_name"=>"Segment name",
|
||
"device_name"=>"Device name",
|
||
"tr",
|
||
"user"=>"User",
|
||
"tr",
|
||
"td",
|
||
"submit"=>"Filter"
|
||
)
|
||
);
|
||
|
||
|
||
$query = $ip_model->get_all_ip_addresses($sql_offset, (int)$limit_results, $order_by, $order_by_direction, $filter->values());
|
||
$total_ip = $ip_model->count_all_ip_addresses($filter->values());
|
||
|
||
$sql_offset = ($sql_offset>$total_ip) ? 0 : $sql_offset;
|
||
|
||
|
||
|
||
|
||
$grid = new Grid(url_lang::base().'ip_addresses', null,array(
|
||
//'separator' => '<br />-----------',
|
||
//'use_paginator' => false,
|
||
... | ... | |
'style' => 'classic',
|
||
'order_by' => $order_by,
|
||
'order_by_direction' => $order_by_direction,
|
||
'limit_results' => $limit_results
|
||
'limit_results' => $limit_results,
|
||
'query_string' => $this->input->get()
|
||
));
|
||
|
||
$grid->add_new_button(url_lang::base().'ip_addresses/add', url_lang::lang('texts.Add new IP address'));
|
||
$grid->order_field('id')->label('ID')->class('center');
|
||
$grid->order_field('IP_address')->label(url_lang::lang('texts.ip addresses'));
|
||
$grid->order_field('iface_name')->label(url_lang::lang('texts.Interface name'));
|
||
$grid->order_field('vlan_iface_name')->label(url_lang::lang('texts.VLAN interface name'));
|
||
$grid->order_field('subnet_name')->label(url_lang::lang('texts.Subnet name'));
|
||
$grid->order_field('IP_address')->label(url_lang::lang('texts.ip addresses'));
|
||
//$grid->order_field('subnet_name')->label(url_lang::lang('texts.Subnet name'));
|
||
$grid->order_field('MAC')->label(url_lang::lang('texts.MAC'));
|
||
$grid->order_field('segment_name')->label(url_lang::lang('texts.Segment name'));
|
||
$grid->order_field('device_name')->label(url_lang::lang('texts.Device name'));
|
||
$grid->order_field('user_name')->label(url_lang::lang('texts.User'));
|
||
//$grid->order_field('vlan_iface_name')->label(url_lang::lang('texts.VLAN interface name'));
|
||
$grid->action_field('id')->label(url_lang::lang('texts.Show')) ->url(url_lang::base().'ip_addresses/show') ->action(url_lang::lang('texts.Show'))->class('center');
|
||
$grid->action_field('id')->label(url_lang::lang('texts.Edit')) ->url(url_lang::base().'ip_addresses/edit') ->action(url_lang::lang('texts.Edit'))->class('center');
|
||
$grid->action_field('id')->label(url_lang::lang('texts.Delete')) ->url('delete') ->action(url_lang::lang('texts.Delete'))->class('center');
|
||
$grid->datasource( $query );
|
||
$this->template->content = $grid;
|
||
$grid->datasource( $query );
|
||
|
||
|
||
$view = new View('template');
|
||
|
||
... | ... | |
$view->header->menu = Controller::render_menu();
|
||
|
||
$view->content = new View('show_all');
|
||
$view->content->table = $this->template->content;
|
||
$view->content->table = $filter->view.$grid;
|
||
$view->content->headline = url_lang::lang('texts.IP addresses list');
|
||
|
||
$view->footer = new View('base/footer');
|
||
... | ... | |
//----- end CALLBACKs --------------------------------------------------------------
|
||
//=============================================================================
|
||
}
|
||
?>
|
||
?>
|
Také k dispozici: Unified diff
Upraven grid u vypisu vsech IP adres - nyni obsahuje vice informaci, pridan filtr.
TODO: Osetrit VLAN rozhrani.