Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 198

Přidáno uživatelem Jiří Sviták před více než 15 roky(ů)

Pridan export clenu do xls, ale neni funkcni. Vytvari se poskozene xls soubory. Mozne chyby: nekde u tagy

Zobrazit rozdíly:

freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php
'entrance fee' => 'Vstupní příspěvek',
'entrance fee left' => 'Nedoplatek vstupního příspěvku',
'enumerations' => 'Výčty',
'error - cant add new account.' => 'Chyba: nelze vytvořit účet.',
'error - cant add new member.' => 'Chyba: nelze vytvořit člena.',
'error - cant add new user.' => 'Chyba: nelze vytvořit uživatele.',
'error - cant add new work.' => 'Chyba: nelze přidat novou práci.',
'error - cant delete user.' => 'Chyba: nelze smazat uživatele.',
'error - cant delete work.' => 'Chyba: nelze smazat práci.',
'error - cant do the transfer.' => 'Chyba: nelze provést transakci.',
'error - cant change password' => 'Chyba: nelze změnit heslo',
'error - cant update account.' => 'Chyba: nelze upravit účet.',
'error - cant update aditional contacts.' => 'Chyba: nelze upravit další kontakty.',
'error - cant update member.' => 'Chyba: nelze upravit člena.',
'error - cant update user.' => 'Chyba: nelze upravit uživatele.',
'error - cant update work.' => 'Chyba: nelze upravit práci.',
'error - cant add new account.' => 'Chyba - nelze vytvořit účet.',
'error - cant add new member.' => 'Chyba - nelze vytvořit člena.',
'error - cant add new user.' => 'Chyba - nelze vytvořit uživatele.',
'error - cant add new work.' => 'Chyba - nelze přidat novou práci.',
'error - cant delete user.' => 'Chyba - nelze smazat uživatele.',
'error - cant delete work.' => 'Chyba - nelze smazat práci.',
'error - cant do the transfer.' => 'Chyba - nelze provést transakci.',
'error - cant change password' => 'Chyba - nelze změnit heslo',
'error - cant update account.' => 'Chyba - nelze upravit účet.',
'error - cant update aditional contacts.' => 'Chyba - nelze upravit další kontakty.',
'error - cant update member.' => 'Chyba - nelze upravit člena.',
'error - cant update user.' => 'Chyba - nelze upravit uživatele.',
'error - cant update work.' => 'Chyba - nelze upravit práci.',
'error - it is not possible to remove admin.' => 'Chyba - nelze odebrat správce zařízení.',
'error - it is not possible to remove engineer.' => 'Chyba - nelze odebrat technika zařízení.',
'error: parameter ID is required!' => 'Chyba: parametr ID je povinný!',
'error' => 'Chyba',
'fee' => 'Poplatek',
......
'netmask' => 'Maska',
'network address' => 'Síťová adresa',
'networks' => 'Síť',
'new device admin was successfully saved.' => 'Nový správce zařízení byl úspěšně uložen.',
'new device admin has been successfully saved.' => 'Nový správce zařízení byl úspěšně uložen.',
'new device engineer has been successfully saved.' => 'Nový technik zařízení byl úspěšně uložen.',
'new member' => 'Nový člen',
'new password' => 'Nové heslo',
'new transfer' => 'Nová transakce',
freenetis/trunk/kohana/application/controllers/members.php
<?php
class Members_Controller extends Controller {
class Members_Controller extends Controller
{
protected $member_id= false;
protected $user_id= false;
/**
* Redirects default member address to show_all function.
* @return unknown_type
*/
function index()
{
url::redirect(url_lang::base().'members/show_all');
}
/**
* Shows list of all members.
* @param $limit_results
* @param $order_by
* @param $order_by_direction
* @return unknown_type
*/
function show_all($limit_results = 500, $order_by = 'id', $order_by_direction = 'ASC')
{
if (!$this->acl_check_view(get_class($this),'members')) Controller::Error(1);
// get new selector
if (is_numeric($this->input->get('record_per_page'))) $limit_results = (int) $this->input->get('record_per_page');
// checks access control
if (!$this->acl_check_view(get_class($this),'members'))
Controller::Error(1);
// gets new selector
if (is_numeric($this->input->get('record_per_page')))
$limit_results = (int) $this->input->get('record_per_page');
// parameters control
$allowed_order_type = array('name', 'street', 'street_number', 'town', 'ZIP_code', 'qos_ceil', 'qos_rate', 'entrance_fee', 'debt_payment_rate', 'entrance_fee_left', 'must_pay_regular_fee', 'current_credit', 'entrance_date', 'comment');
if (!in_array(strtolower($order_by),$allowed_order_type)) $order_by = 'id';
if (strtolower($order_by_direction) != 'asc' && strtolower($order_by_direction) != 'desc') $order_by_direction = 'asc';
if (!in_array(strtolower($order_by), $allowed_order_type))
$order_by = 'id';
if (strtolower($order_by_direction) != 'asc' && strtolower($order_by_direction) != 'desc')
$order_by_direction = 'asc';
// to do - comment
$data['title'] = url_lang::lang('texts.Association members');
$data['heading'] = url_lang::lang('texts.Association members');
// creates member model
$model_members = new Member_Model();
// creates fields for filtering members
$filter=new Table_Form(url_lang::base()."members/show_all", "get", array(
new Table_Form_Item('text','name','Name'),
new Table_Form_Item('text','town','Town'),
......
)
);
// unknown... what's this? to do - comment
$url_array = explode('/', trim(url::current(), '/'));
$sql_offset = (isset($url_array[7])) ? (int) ($url_array[7] - 1) * $limit_results : 0;
// gets members from database
$query = $model_members->get_all_members($sql_offset, (int)$limit_results, $order_by, $order_by_direction, $filter->values());
$total_members = $query->count();
......
foreach ($this->input->get() as $key=>$value) $arr_gets[] = $key.'='.$value;
$query_string = '?'.implode('&',$arr_gets);
// to do - comment this
// $query = $model_members
// -> like($filter->values())
// -> orderby($order_by, $order_by_direction)
// -> limit($limit_results, $sql_offset)
// -> find_all();
// $query = $model_members->get_all_members();
// $query = $model_members->get_all_members();
// creates grid to view members
$grid = new Grid(url_lang::base().'members', url_lang::lang('texts.List of all members'),array(
//'separator' => '<br />-----------',
//'use_paginator' => false,
//'use_selector' => false,
'current' => $limit_results, // current selected 'records_per_page' value
'selector_increace' => 200, // increace
'selector_min' => 200, // minimum where selector start
'selector_increace' => 500, // increace
'selector_min' => 500, // minimum where selector start
'selector_max_multiplier' => 10,
'base_url' => Config::item('locale.lang').'/members/show_all/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
......
'query_string' => $query_string
));
if ($this->acl_check_new(get_class($this), 'members'))
$grid->add_new_button(url_lang::base().'members/add', url_lang::lang('texts.Add new member'));
//$grid->order_field('member_id')->label('ID');
$grid->order_field('id')->label('ID');
$grid->order_field('registration')->label(url_lang::lang('texts.Reg'))->bool(array(url_lang::lang('texts.No'),url_lang::lang('texts.Yes')))->class('center');
$grid->order_field('name')->label(url_lang::lang('texts.Name'));
//$grid->order_field('surname')->label(url_lang::lang('texts.Surname'));
//$grid->order_field('login')->label(url_lang::lang('texts.Username'));
//$grid->order_field('email')->label('E-mail');
$grid->order_field('street')->label(url_lang::lang('texts.Street'));
$grid->order_field('street_number')->label(url_lang::lang('texts.Street number'));
//$grid->order_field('phone')->label(url_lang::lang('texts.Phone'));
$grid->order_field('town')->label(url_lang::lang('texts.Town'));
if ($this->acl_check_view(get_class($this), 'members'))
$grid->action_field('id') ->label(url_lang::lang('texts.Member')) ->url(url_lang::base().'members/show') ->action(url_lang::lang('texts.Show'));
if ($this->acl_check_edit(get_class($this), 'members'))
//if ($this->acl_check_2D('freenetis', 'edit_all'))
$grid->action_field('id') ->label(url_lang::lang('texts.Member')) ->url(url_lang::base().'members/edit') ->action(url_lang::lang('texts.Edit'));
// if ($this->acl_check_2D('freenetis', 'delete_all'))
// $grid->action_field('member_id') ->label(url_lang::lang('texts.Delete')) ->url(url_lang::base().'members/delete') ->action(url_lang::lang('texts.Delete'))->script('onclick="return potvrd(\''.url_lang::lang('texts.delete_member').'\');"');
$grid->datasource( $query );
if ($this->acl_check_new(get_class($this), 'members'))
$grid->add_new_button(url_lang::base().'members/add', url_lang::lang('texts.Add new member'));
if ($this->acl_check_new(get_class($this), 'members'))
$grid->add_new_button(url_lang::base().'members/xls_export', url_lang::lang('texts.Export members to xls file'));
$grid->order_field('id')->label('ID');
$grid->order_field('registration')->label(url_lang::lang('texts.Reg'))->bool(array(url_lang::lang('texts.No'),url_lang::lang('texts.Yes')))->class('center');
$grid->order_field('name')->label(url_lang::lang('texts.Name'));
//$grid->order_field('surname')->label(url_lang::lang('texts.Surname'));
//$grid->order_field('login')->label(url_lang::lang('texts.Username'));
//$grid->order_field('email')->label('E-mail');
$grid->order_field('street')->label(url_lang::lang('texts.Street'));
$grid->order_field('street_number')->label(url_lang::lang('texts.Street number'));
//$grid->order_field('phone')->label(url_lang::lang('texts.Phone'));
$grid->order_field('town')->label(url_lang::lang('texts.Town'));
if ($this->acl_check_view(get_class($this), 'members'))
$grid->action_field('id') ->label(url_lang::lang('texts.Show')) ->url(url_lang::base().'members/show') ->action(url_lang::lang('texts.Show'));
if ($this->acl_check_edit(get_class($this), 'members'))
//if ($this->acl_check_2D('freenetis', 'edit_all'))
$grid->action_field('id') ->label(url_lang::lang('texts.Edit')) ->url(url_lang::base().'members/edit') ->action(url_lang::lang('texts.Edit'));
//if ($this->acl_check_2D('freenetis', 'delete_all'))
//$grid->action_field('member_id') ->label(url_lang::lang('texts.Delete')) ->url(url_lang::base().'members/delete') ->action(url_lang::lang('texts.Delete'))->script('onclick="return potvrd(\''.url_lang::lang('texts.delete_member').'\');"');
$view = new View('template');
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->content = $filter->view . $grid;
// sets grid source of data
$grid->datasource($query);
// creates view
$view = new View('template');
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->content = $filter->view . $grid;
//$view->content = new View('pokus');
//$view->content->total = $total_members;
//$view->content->sql_offset = $sql_offset;
//$view->content->limit_results = $limit_results;
$view->footer = new View('base/footer');
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.List of all members');
//$view->content->heading = "Úprava uživatele ".$data['row']['name']." ".$data['row']['surname'];
//$view->content->form = $form->html();
$view->render(TRUE);
}
$view->footer = new View('base/footer');
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.List of all members');
//$view->content->heading = "Úprava uživatele ".$data['row']['name']." ".$data['row']['surname'];
//$view->content->form = $form->html();
$view->render(TRUE);
} // end of show_all function
/**
* Shows list of users assigned to current member.
* @param $member_id id of member to whom are users assigned to
* @param $order_by sorting column
* @param $order_by_direction sorting direction
* @return unknown_type
*/
function users($member_id = NULL, $order_by = 'member_id', $order_by_direction = 'ASC')
{
if (isset($member_id))
{
if ($member_id == $_SESSION['member_id'])
{
if (!$this->acl_check_2D('freenetis', 'view_own')) Controller::error(1);
if (!$this->acl_check_2D('freenetis', 'view_own'))
Controller::error(1);
}
else
{
if (!$this->acl_check_2D('freenetis', 'view_all')) Controller::error(1);
if (!$this->acl_check_2D('freenetis', 'view_all'))
Controller::error(1);
}
$model_users = new User_Model();
$users = $model_users->orderby($order_by,$order_by_direction)->find_all_by_member_id($member_id);
$grid = new Grid(url_lang::base().'members/users/', url_lang::lang('texts.My users'),array(
'separator' => '<br /><br />',
'use_paginator' => false,
'use_selector' => false,
'separator' => '<br /><br />',
'use_paginator' => false,
'use_selector' => false,
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'variables' => $member_id.'/'
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'variables' => $member_id.'/'
));
));
if ($this->acl_check_2D('freenetis', 'new_own'))
$grid->add_new_button(url_lang::base().'users/add/'.$member_id, url_lang::lang('texts.Add new user'));
......
$grid->action_field('id') ->label(url_lang::lang('texts.Delete'))->url(url_lang::base().'users/delete')->action(url_lang::lang('texts.Delete'))->script('onclick="return potvrd(\''.url_lang::lang('texts.delete_user').'\');"');;
$grid->datasource( $users );
// creates view
$view = new View('template');
$view->header = new View('base/header');
$view->content = $grid;
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.My users');
$view->header = new View('base/header');
$view->content = $grid;
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.My users');
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
$view->render(TRUE);
}
else
{
Controller::warning(1);
}
} // end of users function
/**
* Shows details of member.
* @param $member_id id of member to show
* @param $order_by sorting column
* @param $order_by_direction sorting direction
* @return unknown_type
*/
function show($member_id = NULL, $order_by = 'member_id', $order_by_direction = 'ASC')
{
if (isset($member_id))
......
$users = $model_users->orderby($order_by,$order_by_direction)->find_all_by_member_id($member_id);
$grid = new Grid(url_lang::base().'members', null,array(
'separator' => '<br /><br />',
'use_paginator' => false,
'use_selector' => false,
'separator' => '<br /><br />',
'use_paginator' => false,
'use_selector' => false,
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'variables' => $member_id.'/'
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'variables' => $member_id.'/'
));
));
if($this->acl_check_new('Users_Controller','users',$member_id))
$grid->add_new_button(url_lang::base().'users/add/'.$member_id, url_lang::lang('texts.Add new user'));
......
} // end of show function
/**
* Adds new member to database. Creates special user assigned to this member.
* @return unknown_type
*/
function add()
{
if (!$this->acl_check_new(get_class($this),'members')) Controller::error(1);
......
} // end of add function
/**
* Creates form for editing member.
* @param $member_id id of member to edit
* @return unknown_type
*/
function edit($member_id = NULL)
{
if (isset($member_id))
......
}
} // end of edit function
/**
* to do - write comment
* @param $limit_results
* @param $page
* @return unknown_type
*/
function registration($limit_results = 500, $page = 1)
{
......
$view->render(TRUE);
}
}
} // end of registration function
/**
* Checks if username already exists.
* @param $input new username
* @return unknown_type
*/
function valid_username($input)
{
$user_model=new User_Model();
......
$input->add_error('required', url_lang::lang('texts.Username already exists in database.'));
}
}
/**
* Checks validity of phone number.
* @param $input new phone number
* @return unknown_type
*/
function valid_phone($input)
{
$user_model=new User_Model();
......
}
}
/**
* Checks validity of email.
* @param $input new email
* @return unknown_type
*/
function valid_email($input)
{ /*
{
// commented - why? to do - write comment
/*
$user_model=new User_Model();
if ($user_model->email_exist($input->value,$this->user_id) || trim($input->value)=='')
{
$input->add_error('required', url_lang::lang('texts.Email already exists in database.'));
}
*/
*/
}
}
?>
/**
* Export list of members to xls file. Requires library PEAR.
* not functional - it says workbook->close() is not defined (creating empty workbook only)
* looks like it tries to use pear library installed in system instead of our version added to application
* @return unknown_type
*/
function xls_export()
{
url::redirect(url_lang::base().'xls_export');
exit;
// checks access control
if (!$this->acl_check_view(get_class($this),'members'))
Controller::Error(1);
// requires xls module from library PEAR
require_once(APPPATH.'vendors/Spreadsheet/Excel/Writer.php');
// workbook represents xls file
$workbook = new Spreadsheet_Excel_Writer();
$workbook->send('database.xls');
$workbook->setVersion(8);
// sets xls cells format
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
// worksheet represents sheet in xls file
$worksheet =& $workbook->addWorksheet('Clenove');
//$worksheet->setInputEncoding("UTF-8");
/*
// creates database member model
$member_model = new Member_Model();
$members = $member_model->find_all();
$first = true;
$row = 0;
$line = $member_model->find(0, FALSE);
// goes through columns of header
foreach ($line as $key => $value)
{
$valLen = strlen($value);
// max array stores lenghts of columns in xls sheet
$max[$key] = $valLen;
// writes header
$worksheet->write(0, $col, url_lang::lang('texts.'.$key), $format_bold);
if ($col >= $colCnt-1)
$first = false;
if ($row>=$resultCnt-1)
$worksheet->setColumn($col, $col, $max[$key]);
$col++;
}
// goes through rows of data
foreach ($members as $key => $line)
{
$colCnt = count($line);
$col = 0;
// goes through columns of data and writes them into the sheet
foreach ($line as $key => $value)
{
$valLen = strlen($value);
if ($max[$key] < $valLen)
$max[$key] = $valLen;
// writes data
$worksheet->write($row, $col, $value);
if ($row >= $resultCnt)
$worksheet->setColumn($col, $col, $max[$key]);
$col++;
}
$row++;
}
*/
$workbook->close();
//url::redirect(url_lang::base().'members/show_all');
}
}
?>
freenetis/trunk/kohana/application/controllers/device_engineers.php
unset($form_data);
if ($device_engineer->save()) {
$this->session->set_flash('message', url_lang::lang('texts.New device engineer was successfully saved.'));
$this->session->set_flash('message', url_lang::lang('texts.New device engineer has been successfully saved.'));
url::redirect(url_lang::base().'devices/show/'.$device_id);
exit;
}
......
}
else
{
$this->session->set_flash('message', url_lang::lang('texts.Error - can\'t remove engineer.'));
$this->session->set_flash('message', url_lang::lang('texts.Error - it is not possible to remove engineer.'));
}
}
else
freenetis/trunk/kohana/application/controllers/xls_export.php
<?php
class Xls_Export_Controller extends Controller
{
function index()
{
// requires xls module from library PEAR
require_once(APPPATH.'vendors/Spreadsheet/Excel/Writer.php');
// workbook represents xls file
$workbook = new Spreadsheet_Excel_Writer();
$workbook->send('database.xls');
$workbook->setVersion(8);
// sets xls cells format
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
// worksheet represents sheet in xls file
$worksheet =& $workbook->addWorksheet('Clenove');
//$worksheet->setInputEncoding("UTF-8");
/*
// creates database member model
$member_model = new Member_Model();
$members = $member_model->find_all();
$first = true;
$row = 0;
$line = $member_model->find(0, FALSE);
// goes through columns of header
foreach ($line as $key => $value)
{
$valLen = strlen($value);
// max array stores lenghts of columns in xls sheet
$max[$key] = $valLen;
// writes header
$worksheet->write(0, $col, url_lang::lang('texts.'.$key), $format_bold);
if ($col >= $colCnt-1)
$first = false;
if ($row>=$resultCnt-1)
$worksheet->setColumn($col, $col, $max[$key]);
$col++;
}
// goes through rows of data
foreach ($members as $key => $line)
{
$colCnt = count($line);
$col = 0;
// goes through columns of data and writes them into the sheet
foreach ($line as $key => $value)
{
$valLen = strlen($value);
if ($max[$key] < $valLen)
$max[$key] = $valLen;
// writes data
$worksheet->write($row, $col, $value);
if ($row >= $resultCnt)
$worksheet->setColumn($col, $col, $max[$key]);
$col++;
}
$row++;
}
*/
$workbook->close();
//url::redirect(url_lang::base().'members/show_all');
}
}
?>
freenetis/trunk/kohana/application/controllers/device_admins.php
unset($form_data);
if ($device_admin->save()) {
$this->session->set_flash('message', url_lang::lang('texts.New device admin was successfully saved.'));
$this->session->set_flash('message', url_lang::lang('texts.New device admin has been successfully saved.'));
url::redirect(url_lang::base().'devices/show/'.$device_id);
exit;
}
......
unset($form_data);
if ($device_admin->save()) {
$this->session->set_flash('message', url_lang::lang('texts.Device admin is successfully updated.'));
$this->session->set_flash('message', url_lang::lang('texts.Device admin has been successfully updated.'));
url::redirect(url_lang::base().'devices/show/'.$device_id);
exit;
}
......
}
else
{
$this->session->set_flash('message', url_lang::lang('texts.Error - can\'t remove engineer.'));
$this->session->set_flash('message', url_lang::lang('texts.Error - it is not possible to remove admin.'));
}
}
else
freenetis/trunk/kohana/application/controllers/ip_addresses.php
<?php
class Ip_addresses_Controller extends Controller {
class Ip_addresses_Controller extends Controller
{
protected $form;
protected $arr_mask_by_id;
protected $arr_net_by_id;
function index()
{
url::redirect(url_lang::base().'ip_addresses/show_all');
}
//=============================================================================
//----- SHOW_ALL --------------------------------------------------------------
//=============================================================================
/**
* Shows all ip addresses.
* @param $limit_results ip addresses per page
* @param $order_by sorting column
* @param $order_by_direction sorting direction
* @return unknown_type
*/
function show_all($limit_results = 500, $order_by = 'id', $order_by_direction = 'ASC')
{
if (!$this->acl_check_view('Devices_Controller','ip_address')) Controller::error(1);
if (!$this->acl_check_view('Devices_Controller','ip_address'))
Controller::error(1);
//---- delete session device and Iface ----
$this->session->del('ssDevice_id');
......
$ip_model = new Ip_address_Model();
// get new selector
if (is_numeric($this->input->get('record_per_page'))) $limit_results = (int) $this->input->get('record_per_page');
......
$sql_offset = (isset($url_array[7])) ? (int) ($url_array[7] - 1) * $limit_results : 0;
unset($url_array);
//$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');
*/
$filter=new Table_Form(url_lang::base()."ip_addresses/show_all", "get", array(
new Table_Form_Item('text','IP_address','IP address'),
......
$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', url_lang::lang('texts.IP addresses list'),array(
//'separator' => '<br />-----------',
//'use_paginator' => false,
......
'query_string' => $this->input->get()
));
if ($this->acl_check_new('Devices_Controller','ip_address'))
$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('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'));
if ($this->acl_check_view('Devices_Controller','ip_address'))
$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');
if ($this->acl_check_edit('Devices_Controller','ip_address'))
$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 ); + if ($this->acl_check_new('Devices_Controller','ip_address'))
$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('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'));
if ($this->acl_check_view('Devices_Controller','ip_address'))
$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');
if ($this->acl_check_edit('Devices_Controller','ip_address'))
$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 );
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.IP addresses list');
$view->header->menu = Controller::render_menu();
$view->content = new View('show_all');
$view->content->table = $filter->view.$grid;
$view->content->headline = '';
$view->footer = new View('base/footer');
$view->render(TRUE);
}
//----- end SHOW_ALL ----------------------------------------------------------
//=============================================================================
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.IP addresses list');
$view->header->menu = Controller::render_menu();
$view->content = new View('show_all');
$view->content->table = $filter->view.$grid;
$view->content->headline = '';
$view->footer = new View('base/footer');
$view->render(TRUE);
} // end of show_all function
//=============================================================================
//----- SHOW ------------------------------------------------------------------
//=============================================================================
/**
* Shows details of ip address.
* @param $ip_address_id id of ip address to show
* @return unknown_type
*/
function show($ip_address_id = null)
{
$ip_address = new Ip_address_Model($ip_address_id);
$member_id = $ip_address->iface->device->user->member_id;
......
Controller::warning(1);
}
if (!$this->acl_check_view('Devices_Controller','ip_address',$member_id)) Controller::error(1);
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.IP address detail').' - '.$ip_address->IP_address;
$view->header->menu = Controller::render_menu();
$view->content = new View('show_ip_addresses');
$view->content->ip_address = $ip_address;
$view->content->headline = url_lang::lang('texts.IP address detail').' - '.$ip_address->IP_address;
//$view->content->table_ip_addresses = $grid_ip_addresses;
$view->footer = new View('base/footer');
$view->render(TRUE);
}
//----- end SHOW --------------------------------------------------------------
//=============================================================================
//=============================================================================
//----- ADD -------------------------------------------------------------------
//=============================================================================
} // end of show function
/**
* Adds new ip address to current interface.
* @return unknown_type
*/
function add()
{
//---- Get variable for narrow selecting of selectbox ----
......
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
//----- validate form and save data -----------------------------------
if($form->validate())
{
......
exit;
}
} else {
// $form->IP_address->value("ahoj"); //demo of how to fill a field after validation error
}
else
{
//$form->IP_address->value("ahoj"); //demo of how to fill a field after validation error
}
//----- end validate --------------------------------------------------
if ($ssVlan_iface_id) $link_back = html::anchor(url_lang::base().'vlan_ifaces/show/'.$ssVlan_iface_id, url_lang::lang('texts.Back to VLAN interface parameters'));
......
$view->footer = new View('base/footer');
$view->render(TRUE);
}
//----- end ADD ---------------------------------------------------------------
//=============================================================================
} // end of add function
//=============================================================================
//----- EDIT ------------------------------------------------------------------
//=============================================================================
/**
* Edits ip address.
* @param $ip_address_id id of ipaddress to edit
* @return unknown_type
*/
function edit($ip_address_id = null)
{
//---- Get variable for narrow selecting of selectbox ----
$ssDevice_id = $this->session->get('ssDevice_id');
$ssIface_id = $this->session->get('ssIface_id');
......
$view->footer = new View('base/footer');
$view->render(TRUE);
}
//----- end EDIT --------------------------------------------------------------
//=============================================================================
} // end of edit function
/**
* to do - comment
* @param $acc_id
* @return unknown_type
*/
function delete($acc_id = NULL)
{
// if (!$this->gacl_class->acl_check('freenetis', 'delete_own', 'all', $_SESSION['username'],get_class($this),'delete_accounts')) Controller::error(1);
......
}
}
function valid_ip($input) {
/**
* Checks validity of ip address.
* @param $input
* @return unknown_type
*/
function valid_ip($input)
{
$method=$this->form->IP_address->method; // <FORM> method = POST, GET, ...
$ip=ip2long($this->input->$method('IP_address')); // Submitted values
$subnet_id=$this->input->$method('subnet_id');
$subnet_id2=$this->input->$method('subnet_id2');
if ($subnet_id==0 && $subnet_id2==0) { // subnet was not selected
if ($ip > 0) // try to find a subnet matching to the ip
$input->add_error('required', url_lang::lang('texts.Subnet not selected - trying to guess!'));
......
else $input->add_error('required', url_lang::lang('texts.IP address required!'));
}
function check_ip($ip, $net, $mask, $input) {
/**
* Checks ip iddress if matches subnet and mask.
* @param $ip
* @param $net
* @param $mask
* @param $input
* @return unknown_type
*/
function check_ip($ip, $net, $mask, $input)
{
$mask=0xffffffff<<(32-$mask) & 0xffffffff;
//printf(" ip=%lx, net=%lx, mask=%lx, AND=%lx", $ip, $net, $mask, $ip & $mask);
......
$input->add_error('required', url_lang::lang('texts.IP address does not match the subnet/mask.'));
else if ($ip==$net || $ip==($net | ~$mask))
$input->add_error('required', url_lang::lang('texts.Invalid IP!'));
}
/**
* Removed by dulik for SVN rev. 98 - does not work with JavaScript disabled
freenetis/trunk/kohana/application/controllers/devices.php
<?php
class Devices_Controller extends Controller {
class Devices_Controller extends Controller
{
function index()
{
url::redirect(url_lang::base().'devices/show_all');
}
//=============================================================================
//----- SHOW_ALL --------------------------------------------------------------
//=============================================================================
/**
* Shows all devices.
* @param $limit_results devices per page
* @param $order_by sorting column
* @param $order_by_direction sorting direction
* @return unknown_type
*/
function show_all($limit_results = 500, $order_by = 'id', $order_by_direction = 'ASC')
{
......
$view->header->menu = Controller::render_menu();
$view->content = $filter->view . $grid;
/* $view->content->table = $this->template->content;
/*
$view->content->table = $this->template->content;
$view->content->headline = url_lang::lang('texts.Devices list');*/
$view->footer = new View('base/footer');
$view->render(TRUE);
}
//----- end SHOW_ALL ----------------------------------------------------------
//=============================================================================
} // end of show_all function
//=============================================================================
//----- SHOW_MY --------------------------------------------------------------
//=============================================================================
/**
* Shows devices of logged member.
* @param $limit_results
* @param $order_by
* @param $order_by_direction
* @return unknown_type
*/
function show_my($limit_results = 500, $order_by = 'id', $order_by_direction = 'ASC')
{
$user_id = $this->session->get('user_id');
......
$view->footer = new View('base/footer');
$view->render(TRUE);
}
//----- end SHOW_MY ----------------------------------------------------------
//=============================================================================
} // end of show_my function
/**
* @todo Add the acl_check calls!
*/
......
$grid->add_new_button(url_lang::base().'device_engineers/add', url_lang::lang('texts.Add new device engineer'));
$grid->field('name')->label(url_lang::lang('texts.Name'));
$grid->field('surname')->label(url_lang::lang('texts.Surname'));
$grid->field('login')->label(url_lang::lang('texts.User name'));
$grid->field('login')->label(url_lang::lang('texts.Username'));
$grid->action_field('id')->label(url_lang::lang('texts.Remove')) ->url(url_lang::base().'device_engineers/remove')->action(url_lang::lang('texts.Remove'))->class('center');
$grid->datasource($query);
$grid_device_engineers = $grid;
......
$view->header->title = url_lang::lang('texts.Edit device');
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
}
//----- end EDIT --------------------------------------------------------------
//=============================================================================
} // end of function edit
//=============================================================================
//----- ADD WHOLE DEVICE ------------------------------------------------------
// adds whole device with interface and ip address
//=============================================================================
/**
* Adds whole device. It means it creates new device, new interface assigned to this device
* and new ip address assigned to this interface.
* @return unknown_type
*/
function add_whole()
{
// gets member id from current session
$ssMember_id = $this->session->get('ssMember_id');
if (!$this->acl_check_new(get_class($this),'devices',$ssMember_id)) Controller::error(1);
......
}
foreach ($users as $user) {
foreach ($users as $user)
{
$arr_users[$user->id] = $user->surname.' '.$user->name.' - '.$user->login;
}
asort($arr_users);
......
$engineers = $model_user->select('id','name','surname','login')->orderby('id')->find_all();
$arr_engineers[0] = '----- '.url_lang::lang('texts.select user').' -----';
foreach ($engineers as $engineer) {
foreach ($engineers as $engineer)
{
$arr_engineers[$engineer->id] = $engineer->surname.' '.$engineer->name.' - '.$engineer->login;
}
asort($arr_engineers);
......
$types[0] = '----- '.url_lang::lang('texts.select type').' -----';
asort($types);
// copied from ifaces.php
$segment_model = new Segment_Model();
// models for adding interface
//$segment_model = new Segment_Model();
//$iface_model = new Iface_Model();
// copied from ip_addresses.php
$iface_model = new Iface_Model();
$subnet_model = new Subnet_Model();
$subnets = $subnet_model
->select("id","name","network_address as net_str",
......
->orderby('name')->find_all();
$arr_subnets_netnames[]=$arr_subnets_names[] = '----- '.url_lang::lang('texts.select subnet').' -----';
$arr_subnets_ids[]=$arr_subnets_masks[]=$arr_subnets_nets[]=0;
foreach ($subnets as $subnet) {
foreach ($subnets as $subnet)
{
$arr_subnets_names[$subnet->id] = $subnet->name . ": ". $subnet->net_str."/".$subnet->mask;
$this->arr_mask_by_id[$subnet->id]=$subnet->mask;
$this->arr_net_by_id[$subnet->id]=$subnet->net;
......
$segment_model = new Segment_Model();
$segments = $segment_model->select(array('id','name'))->orderby('name')->find_all();
$arr_segments[0] = '----- '.url_lang::lang('texts.select segment').' -----';
foreach ($segments as $segment) {
foreach ($segments as $segment)
{
$arr_segments[$segment->id] = $segment->name;
}
// form
// ----
// adding device only
// adding device
$form->dropdown('user_id')->label(url_lang::lang('texts.user'))->options($arr_users)->rules('required');
$form->input('name')->label(url_lang::lang('texts.Device name').':')->rules('required|length[3,250]');
$form->dropdown('type')->label(url_lang::lang('texts.Type'))->options($types)->rules('required');
......
$form->textarea('comment')->label(url_lang::lang('texts.comment').':')->rules('length[0,254]');
$form->dropdown('first_engineer_id')->label(url_lang::lang('texts.engineer').' 1:')->options($arr_engineers)->rules('required')->selected($this->session->get('user_id'));
$form->dropdown('second_engineer_id')->label(url_lang::lang('texts.engineer').' 2:')->options($arr_engineers);
// adding interface
$form->group('')->label(url_lang::lang('texts.Iface'));
// adding interface - copied from ifaces.php
$form->input('MAC')->label(url_lang::lang('texts.MAC').':')->rules('required|length[3,250]');
$form->dropdown('segment_id')->label(url_lang::lang('texts.Segment name'))->options($arr_segments)->rules('required');
// adding ip address
$form->group('')->label(url_lang::lang('texts.IP address'));
// adding ip address - copied from ip_addresses.php
$form->input('IP_address')->label(url_lang::lang('texts.IP address').':')->rules('required|length[7,15]')
->callback(array($this, 'valid_ip'));
$form->dropdown('subnet_id')->label(url_lang::lang('texts.Select subnet name').':')->rules('required')
->options($arr_subnets_names);
// submit button
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
//----- validate form and save data -----------------------------------
// validates form and saves data
if($form->validate())
{
$form_data = $form->as_array();
// device model
$device_model = new Device_Model();
//foreach($form_data as $key => $value)
//{
// $device_model->$key = htmlspecialchars($value);
//}
$engineers_data[] = $form_data["first_engineer_id"];
if($form_data["second_engineer_id"]>0)
$engineers_data[] = $form_data["second_engineer_id"];
// device model
$device_model->user_id = htmlspecialchars($form_data["user_id"]);
$device_model->name = htmlspecialchars($form_data["name"]);
$device_model->type = htmlspecialchars($form_data["type"]);
// $device_model->description = htmlspecialchars($form_data["description"]);
//$device_model->description = htmlspecialchars($form_data["description"]);
$device_model->PPPoE_logging_in = htmlspecialchars($form_data["PPPoE_logging_in"]);
$device_model->login = htmlspecialchars($form_data["login"]);
$device_model->password = htmlspecialchars($form_data["password"]);
......
// model save
$device_saved = $device_model->save();
// engineers
// device engineer model
$device_engineer_saved = TRUE;
foreach($engineers_data as $engineer_data) {
foreach($engineers_data as $engineer_data)
{
$device_engineer_model = new Device_engineer_Model();
$device_engineer_model->device_id = $device_model->id;
$device_engineer_model->user_id = $engineer_data;
$device_engineer_saved = $device_engineer_saved && $device_engineer_model->save();
}
// interface model
$iface_model = new Iface_Model();
// interface model
$iface_model->device_id = $device_model->id;
$iface_model->segment_id = $form_data["segment_id"];
$iface_model->MAC = htmlspecialchars($form_data["MAC"]);
......
// iface save
$iface_model_saved = $iface_model->save();
// ip address model
$ip_address_model = new Ip_address_Model();
// ip address model
$ip_address_model->iface_id = $iface_model->id;
$ip_address_model->vlan_iface_id = NULL;
$ip_address_model->subnet_id = $form_data['subnet_id'];
$ip_address_model->IP_address = $form_data['IP_address'];
$ip_address_model->dhcp = NULL;
// ip save
// ip address save
$ip_address_saved = $ip_address_model->save();
unset($form_data);
// was everything saved successfully?
if ($device_saved && $device_engineer_saved && $iface_model_saved && $ip_address_saved)
{
$this->session->set_flash('message', url_lang::lang('texts.Device is successfully saved.'));
url::redirect(url_lang::base().'devices/show/'.$device_model->id);
exit;
}
}
//----- end validate --------------------------------------------------
} // end of validation
$view = new View('template');
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->content = new View('form');
$view->content->form = $form->html();
......
$view->content->headline = url_lang::lang('texts.Create whole new device');
}
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.Add whole new device');
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
}
//----- end ADD WHOLE DEVICE---------------------------------------------------
//=============================================================================
function valid_ip($input) {
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.Add whole new device');
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
} // end of function add_whole
/**
* Checks validity of ip address.
* @param $input ip address to validate
* @return unknown_type
*/
function valid_ip($input)
{
//$method=$form->IP_address->method; // <FORM> method = POST, GET, ...
$ip=ip2long($this->input->post('IP_address')); // Submitted values
$subnet_id=$this->input->post('subnet_id');
if ($subnet_id==0) { // subnet was not selected
if ($ip > 0) // try to find a subnet matching to the ip
$ip = ip2long($this->input->post('IP_address')); // Submitted values
$subnet_id = $this->input->post('subnet_id');
// if subnet was not selected
if ($subnet_id == 0)
{
// try to find a subnet matching to the ip
if ($ip > 0)
$input->add_error('required', url_lang::lang('texts.Subnet not selected - trying to guess!'));
else
$input->add_error('required', url_lang::lang('texts.Invalid IP!'));
$input->add_error('required', url_lang::lang('texts.Invalid IP!'));
return false;
}
$subnet=$this->arr_net_by_id[$subnet_id];
$mask=$this->arr_mask_by_id[$subnet_id];
if ($ip>0) $this->check_ip($ip, $subnet, $mask, $input);
else $input->add_error('required', url_lang::lang('texts.IP address required!'));
else $input->add_error('required', url_lang::lang('texts.IP address required!'));
}
function check_ip($ip, $net, $mask, $input) {
/**
* Checks if ip address match subnet and mask.
* @param $ip
* @param $net
* @param $mask
* @param $input
* @return unknown_type
*/
function check_ip($ip, $net, $mask, $input)
{
$mask=0xffffffff<<(32-$mask) & 0xffffffff;
//printf(" ip=%lx, net=%lx, mask=%lx, AND=%lx", $ip, $net, $mask, $ip & $mask);

Také k dispozici: Unified diff