Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 161

Přidáno uživatelem Michal Kliment před více než 15 roky(ů)

Upraven grid u vypisu vsech IP adres - nyni obsahuje vice informaci, pridan filtr.
TODO: Osetrit VLAN rozhrani.

Zobrazit rozdíly:

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