Revize 954
Přidáno uživatelem Michal Kliment před více než 13 roky(ů)
freenetis/branches/subnets_assigning/application/i18n/cs_CZ/texts.php | ||
---|---|---|
'near number %s differs from price of services: %s\ncalculated price: %s\ninvoiced price: %s' => 'Poblíž čísla %s se odlišují ceny služeb: %s\nVypočtená cena: %s\nFakturovaná cena: %s',
|
||
'netmask' => 'Maska',
|
||
'network address' => 'Síťová adresa',
|
||
'network address does not match any address ranges' => 'Síťová adresa neodpovídá žádnému adresnímu rozsahu.',
|
||
'network address does not match the mask' => 'Síťová adresa neodpovídá zadané masce.',
|
||
'network settings' => 'Nastavení sítě',
|
||
'networks' => 'Síť',
|
||
... | ... | |
'other phones' => 'další telefony',
|
||
'out of peak' => 'Mimo špičku',
|
||
'outbound' => 'Odchozí',
|
||
'owner' => 'Vlastník',
|
||
'owner of account' => 'Vlastník účtu',
|
||
'owners of company telephones' => 'Vlastníci firemnch telefonů',
|
||
'page title' => 'Titulek stránky',
|
||
... | ... | |
'subject' => 'Předmět',
|
||
'submit' => 'Odeslat',
|
||
'subnet' => 'Podsíť',
|
||
'subnet has been successfully disabled' => 'Podsíť byla úspěšně zakázána.',
|
||
'subnet has been successfully enabled' => 'Podsíť byla úspěšně povolena.',
|
||
'subnet has been successfully saved' => 'Podsíť byla úspěšně uložena.',
|
||
'subnet has been successfully updated' => 'Podsíť byla úspěšně upravena.',
|
||
'subnet name' => 'Název podsítě',
|
freenetis/branches/subnets_assigning/application/helpers/callback.php | ||
---|---|---|
break;
|
||
}
|
||
|
||
echo html::anchor (
|
||
if (isset($args[0]) && $args[0] != '')
|
||
echo html::anchor (
|
||
url_lang::base().$args[0].$item->id, html::image(
|
||
array(
|
||
'src' => url::base().'media/images/'.$state.'.png', 'title' => url_lang::lang('texts.'.$state))
|
||
)
|
||
);
|
||
else
|
||
echo html::image(
|
||
array(
|
||
'src' => url::base().'media/images/'.$state.'.png', 'title' => url_lang::lang('texts.'.$state))
|
||
);
|
||
}
|
||
|
||
/**
|
freenetis/branches/subnets_assigning/application/models/subnet.php | ||
---|---|---|
<?php
|
||
class Subnet_Model extends ORM {
|
||
|
||
protected $has_many = array('ip_addresses');
|
||
protected $has_one = array('subnets_owner');
|
||
protected $has_many = array('ip_addresses','allowed_subnets');
|
||
protected $belongs_to = array('segment');
|
||
|
||
/**
|
||
... | ... | |
*/
|
||
public function get_all_subnets($limit_from = 0, $limit_results = 50, $order_by = 'id', $order_by_direction = 'ASC', $filter_values = array())
|
||
{
|
||
if ($order_by == "network_address")
|
||
if ($order_by == "cidr")
|
||
$order_by = 'inet_aton(network_address)';
|
||
$where = '';
|
||
foreach($filter_values as $key => $value)
|
||
... | ... | |
SELECT s.id AS subnet_id, s.redirect, s.name AS subnet_name,
|
||
CONCAT(network_address,'/', 32-log2((~inet_aton(netmask) & 0xffffffff) + 1)) AS cidr, network_address, netmask,
|
||
c.name AS cloud,
|
||
ROUND((SELECT COUNT(*) FROM ip_addresses WHERE subnet_id = s.id)/((~inet_aton(s.netmask) & 0xffffffff)-1)*100,1) AS used
|
||
ROUND((SELECT COUNT(*) FROM ip_addresses WHERE subnet_id = s.id)/((~inet_aton(s.netmask) & 0xffffffff)-1)*100,1) AS used,
|
||
m.id AS member_id, m.name AS member_name
|
||
FROM subnets s
|
||
LEFT JOIN clouds c ON s.cloud_id = c.id
|
||
LEFT JOIN subnets_owners so ON s.id = so.subnet_id
|
||
LEFT JOIN members m ON so.member_id = m.id
|
||
$where
|
||
ORDER BY $order_by $order_by_direction
|
||
LIMIT $limit_from, $limit_results
|
||
... | ... | |
ORDER BY net
|
||
", array($member_id));
|
||
}
|
||
|
||
/**
|
||
* Returns subnet by ip address without member's allowed subnets
|
||
*
|
||
* @author Michal Kliment
|
||
* @param integer $member_id
|
||
* @param string $ip_address
|
||
* @return MySQL Result object
|
||
*/
|
||
public function get_subnet_without_allowed_subnets_of_member_by_ip_address ($member_id, $ip_address)
|
||
{
|
||
return $this->db->query("
|
||
SELECT * FROM subnets s
|
||
WHERE inet_aton(netmask) & inet_aton(?) = inet_aton(network_address) AND s.id NOT IN (SELECT a.subnet_id FROM allowed_subnets a WHERE a.member_id = ?)
|
||
", array($ip_address, $member_id))->current();
|
||
}
|
||
}
|
||
|
||
?>
|
freenetis/branches/subnets_assigning/application/models/ip_address.php | ||
---|---|---|
WHERE ip.id = ip_address_id
|
||
");
|
||
}
|
||
|
||
/**
|
||
* Counts all ip addresses by member and subnet
|
||
*
|
||
* @author Michal Kliment
|
||
* @param integer $member_id
|
||
* @param integer $subnet_id
|
||
* @return integer
|
||
*/
|
||
public function count_all_ip_addresses_by_member_and_subnet ($member_id, $subnet_id)
|
||
{
|
||
return $this->db->query("
|
||
SELECT COUNT(*) AS count FROM
|
||
(
|
||
SELECT ip.subnet_id, IFNULL(i1.device_id, i2.device_id) AS device_id FROM ip_addresses ip
|
||
LEFT JOIN ifaces i1 ON ip.iface_id = i1.id
|
||
LEFT JOIN vlan_ifaces vi ON ip.vlan_iface_id = vi.id
|
||
LEFT JOIN ifaces i2 ON vi.iface_id = i2.id
|
||
) AS ip
|
||
JOIN devices d ON ip.device_id = d.id
|
||
JOIN users u ON d.user_id = u.id
|
||
WHERE u.member_id = ? AND ip.subnet_id = ?
|
||
", array($member_id, $subnet_id))->current()->count;
|
||
}
|
||
}
|
||
|
||
?>
|
freenetis/branches/subnets_assigning/application/models/subnets_owner.php | ||
---|---|---|
|
||
class Subnets_owner_Model extends ORM
|
||
{
|
||
protected $belongs_to = array('member');
|
||
|
||
/**
|
||
* Returns all subnets with set owner to redirect
|
||
*
|
freenetis/branches/subnets_assigning/application/models/allowed_subnet.php | ||
---|---|---|
}
|
||
|
||
/**
|
||
* Counts all disabled and allowed subnets of member
|
||
*
|
||
* @author Michal Kliment
|
||
* @param integer $member_id
|
||
* @return integer
|
||
*/
|
||
public function count_all_disabled_allowed_subnets_by_member ($member_id)
|
||
{
|
||
return $this->db->query("
|
||
SELECT COUNT(*) AS count
|
||
FROM allowed_subnets a
|
||
WHERE a.member_id = ? AND enabled = 0
|
||
", array($member_id))->current()->count;
|
||
}
|
||
|
||
/**
|
||
* Checks if record exists and return its ID
|
||
*
|
||
* @author Michal Kliment
|
||
... | ... | |
|
||
return ($result && $result->current() && $result->current()->id) ? $result->current()->id : 0;
|
||
}
|
||
|
||
/**
|
||
* Returns allowed subnet by member and ip address
|
||
*
|
||
* @author Michal Kliment
|
||
* @param integer $member_id
|
||
* @param string $ip_address
|
||
* @return MySQL Result object
|
||
*/
|
||
public function get_allowed_subnet_by_member_and_ip_address ($member_id, $ip_address)
|
||
{
|
||
return $this->db->query("
|
||
SELECT a.* FROM subnets s
|
||
JOIN allowed_subnets a ON a.subnet_id = s.id
|
||
WHERE inet_aton(s.netmask) & inet_aton(?) = inet_aton(s.network_address) AND a.member_id = ?
|
||
", array ($ip_address, $member_id))->current();
|
||
}
|
||
}
|
||
|
||
?>
|
freenetis/branches/subnets_assigning/application/models/member.php | ||
---|---|---|
JOIN members m ON q.member_id = m.id
|
||
", array ($ip_address,$ip_address,$ip_address,$ip_address))->current();
|
||
}
|
||
|
||
/**
|
||
* Returns all members to dropdown
|
||
*
|
||
* @author Michal Kliment
|
||
* @return MySQL Iterator object
|
||
*/
|
||
public function get_all_members_to_dropdown ()
|
||
{
|
||
return $this->db->query("
|
||
SELECT m.id, CONCAT(u.surname,' ',u.name, ' (ID ',m.id,')') AS name FROM members m
|
||
JOIN users u ON u.member_id = m.id AND u.type = ".User_Model::$member."
|
||
ORDER BY name
|
||
");
|
||
}
|
||
}
|
||
|
||
?>
|
freenetis/branches/subnets_assigning/application/controllers/subnets.php | ||
---|---|---|
|
||
$grid->order_callback_field('subnet_name')->label(url_lang::lang('texts.Name'))->callback('callback::subnet_field');
|
||
$grid->order_field('cidr')->label(url_lang::lang('texts.Network address'));
|
||
$grid->order_callback_field('member_id')->label(url_lang::lang('texts.Owner').' '.help::hint('subnet_owner'))->callback('callback::member_field');
|
||
$grid->order_field('redirect')->label(url_lang::lang('texts.Redir'))->bool(array(url_lang::lang('texts.No'),url_lang::lang('texts.Yes')))->class('center');
|
||
$grid->order_callback_field('used')->label(url_lang::lang('texts.Used'))->callback('callback::used_field')->class('center')->help(help::hint('subnet_used_ips'));
|
||
|
||
... | ... | |
$grid->datasource( $query );
|
||
$headline = url_lang::lang('texts.Subnets list');
|
||
$view = new View('main');
|
||
$view->breadcrumbs = url_lang::lang('texts.Subnets');
|
||
$view->title = $headline;
|
||
$view->content = new View('show_all');
|
||
$view->content->table = $grid;
|
||
... | ... | |
//$grid->field('device_name')->label(url_lang::lang('texts.Device'));
|
||
$grid->callback_field('device_name')->label(url_lang::lang('texts.Device'))->callback('callback::device_field');
|
||
//$grid->field('member_name')->label(url_lang::lang('texts.Member'));
|
||
$grid->callback_field('member_name')->label(url_lang::lang('texts.Member'))->callback('callback::member_field');
|
||
$grid->callback_field('member_name')->label(url_lang::lang('texts.Member'))->callback('callback::member_field', ($subnet->subnets_owner->member->id) ? html::anchor (url_lang::base().'members/show/'.$subnet->subnets_owner->member->id, $subnet->subnets_owner->member->name) : '');
|
||
$grid->datasource($ip_addresses);
|
||
|
||
$breadcrumbs[] = ($this->acl_check_view('Devices_Controller','subnet')) ? html::anchor(url_lang::base().'subnets/show_all', url_lang::lang('texts.Subnets')) : url_lang::lang('texts.Subnets');
|
||
$breadcrumbs[] = $subnet->name." ($subnet->network_address/". network::netmask2cidr($subnet->netmask) .")";
|
||
|
||
$headline = url_lang::lang('texts.Subnet').' '.$subnet->name;
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ',$breadcrumbs);
|
||
$view->title = $headline;
|
||
$view->content = new View('subnets_show');
|
||
$view->content->subnet = $subnet;
|
||
$view->content->owner_id = $subnet->subnets_owner->member->id;
|
||
$view->content->owner = $subnet->subnets_owner->member->name;
|
||
$view->content->area = $area;
|
||
$view->content->grid = $grid;
|
||
$view->content->link_back = html::anchor(url_lang::base().'subnets/show_all', url_lang::lang('texts.Back to all subnets'));
|
||
... | ... | |
Controller::error(ACCESS);
|
||
|
||
$redirect[0] = url_lang::lang('texts.No');
|
||
$redirect[1] = url_lang::lang('texts.Yes');
|
||
$redirect[1] = url_lang::lang('texts.Yes');
|
||
|
||
$arr_members = arr::merge (array(NULL => '----- '.url_lang::lang('texts.Select member').' -----'), arr::from_objects(ORM::factory('member')->get_all_members_to_dropdown()));
|
||
|
||
$form = new Forge(url::base().url::current(TRUE), '', 'POST', array('id' => 'article_form'));
|
||
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
$form->group('')->label(url_lang::lang('texts.Basic data'));
|
||
... | ... | |
if ($this->acl_check_new('Devices_Controller', 'redirect'))
|
||
$form->dropdown('redirect')->label(url_lang::lang('texts.Redirection enabled'))->options($redirect)->selected(0);
|
||
|
||
$form->dropdown('owner_id')->label(url_lang::lang('texts.Owner').' '.help::hint('subnet_owner'))->options($arr_members);
|
||
|
||
//clouds (prirazeni subnetu k oblasti)
|
||
if (isset($cloud_id)){
|
||
$cloud = new Cloud_Model($cloud_id);
|
||
... | ... | |
if ($this->acl_check_new('Devices_Controller', 'redirect'))
|
||
$subnet->redirect = $form_data['redirect'];
|
||
$subnet->cloud_id = $form_data['cloud'];
|
||
|
||
unset($form_data);
|
||
|
||
if ($subnet->save())
|
||
{
|
||
$this->session->set_flash('message', url_lang::lang('texts.Subnet has been successfully saved.'));
|
||
if ($form_data['owner_id'])
|
||
{
|
||
$subnets_owner = new Subnets_owner_Model();
|
||
$subnets_owner->subnet_id = $subnet->id;
|
||
$subnets_owner->member_id = $form_data['owner_id'];
|
||
$subnets_owner->redirect = 0;
|
||
|
||
if ($subnets_owner->save())
|
||
{
|
||
$this->session->set_flash('message', url_lang::lang('texts.Subnet has been successfully saved.'));
|
||
Allowed_subnets_Controller::update_enabled($form_data['owner_id'], array($subnet->id));
|
||
}
|
||
}
|
||
else
|
||
$this->session->set_flash('message', url_lang::lang('texts.Subnet has been successfully saved.'));
|
||
}
|
||
// for popup adding
|
||
if ($this->popup)
|
||
... | ... | |
url::redirect(url_lang::base().'subnets/show/'.$subnet->id);
|
||
|
||
}
|
||
|
||
$breadcrumbs[] = ($this->acl_check_view('Devices_Controller','subnet')) ? html::anchor(url_lang::base().'subnets/show_all', url_lang::lang('texts.Subnets')) : url_lang::lang('texts.Subnets');
|
||
$breadcrumbs[] = url_lang::lang('texts.Add new');
|
||
|
||
$headline = url_lang::lang('texts.Add new subnet');
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ',$breadcrumbs);
|
||
$view->title = $headline;
|
||
$view->content = new View('form');
|
||
$view->content->form = $form->html();
|
||
$view->content->link_back = html::anchor(url_lang::base().'subnets/show_all/', url_lang::lang('texts.Back to all subnets'));
|
||
//$view->content->link_back = html::anchor(url_lang::base().'subnets/show_all/', url_lang::lang('texts.Back to all subnets'));
|
||
$view->content->headline = $headline;
|
||
$view->render(TRUE);
|
||
} // end of add
|
||
... | ... | |
Controller::error(ACCESS);
|
||
|
||
$redirect[0] = url_lang::lang('texts.No');
|
||
$redirect[1] = url_lang::lang('texts.Yes');
|
||
$redirect[1] = url_lang::lang('texts.Yes');
|
||
|
||
$arr_members = arr::merge (array(NULL => '----- '.url_lang::lang('texts.Select member').' -----'), arr::from_objects(ORM::factory('member')->get_all_members_to_dropdown()));
|
||
|
||
$this->form = $form = new Forge(url_lang::base()."subnets/edit/".$subnet_id, '', 'POST', array('id' => 'article_form'));
|
||
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
$form->group('')->label(url_lang::lang('texts.Basic data'));
|
||
... | ... | |
$form->input('OSPF_area_id')->label(url_lang::lang('texts.OSPF area ID').':')->rules('valid_digit')->value($subnet->OSPF_area_id);
|
||
if ($this->acl_check_edit('Devices_Controller', 'redirect'))
|
||
$form->dropdown('redirect')->label(url_lang::lang('texts.Redirection enabled'))->options($redirect)->selected($subnet->redirect);
|
||
|
||
$form->dropdown('owner_id')->label(url_lang::lang('texts.Owner').' '.help::hint('subnet_owner'))->options($arr_members)->selected($subnet->subnets_owner->member->id);
|
||
|
||
$cloud_model = new Cloud_Model();
|
||
$all_clouds = $cloud_model->get_all_clouds();
|
||
... | ... | |
}
|
||
|
||
$subnet = new Subnet_Model($subnet_id);
|
||
|
||
if ($subnet->subnets_owner->member->id != $form_data['owner_id'])
|
||
{
|
||
if ($form_data['owner_id'])
|
||
{
|
||
$subnet->subnets_owner->subnet_id = $subnet->id;
|
||
$subnet->subnets_owner->member_id = $form_data['owner_id'];
|
||
$subnet->subnets_owner->redirect = 0;
|
||
|
||
$subnet->subnets_owner->save();
|
||
|
||
Allowed_subnets_Controller::update_enabled($form_data['owner_id'], array($subnet->id));
|
||
}
|
||
|
||
if ($subnet->subnets_owner->member->id && !ORM::factory('ip_address')->count_all_ip_addresses_by_member_and_subnet ($subnet->subnets_owner->member->id, $subnet->id))
|
||
Allowed_subnets_Controller::update_enabled($subnet->subnets_owner->member->id, NULL, NULL, array($subnet->id));
|
||
|
||
}
|
||
|
||
$subnet->name = $form_data['name'];
|
||
$subnet->network_address = $form_data['network_address'];
|
||
$subnet->netmask = $form_data['netmask'];
|
||
... | ... | |
if ($this->acl_check_edit('Devices_Controller', 'redirect'))
|
||
$subnet->redirect = $form_data['redirect'];
|
||
$subnet->cloud_id = $form_data['cloud'];
|
||
|
||
unset($form_data);
|
||
|
||
if ($subnet->save())
|
||
{
|
||
$this->session->set_flash('message', url_lang::lang('texts.Subnet has been successfully updated.'));
|
||
url::redirect(url_lang::base().'subnets/show/'.$subnet_id);
|
||
|
||
|
||
$this->session->set_flash('message', url_lang::lang('texts.Subnet has been successfully updated.'));
|
||
}
|
||
|
||
url::redirect(url_lang::base().'subnets/show/'.$subnet_id);
|
||
|
||
}
|
||
|
||
$breadcrumbs[] = ($this->acl_check_view('Devices_Controller','subnet')) ? html::anchor(url_lang::base().'subnets/show_all', url_lang::lang('texts.Subnets')) : url_lang::lang('texts.Subnets');
|
||
$breadcrumbs[] = ($this->acl_check_view('Devices_Controller','subnet')) ? html::anchor(url_lang::base().'subnets/show/'.$subnet->id, $subnet->name." ($subnet->network_address/". network::netmask2cidr($subnet->netmask) .")") : $subnet->name." ($subnet->network_address/". network::netmask2cidr($subnet->netmask) .")";
|
||
$breadcrumbs[] = url_lang::lang('texts.Edit');
|
||
|
||
$headline = url_lang::lang('texts.Edit subnet').' - '.$subnet->name;
|
||
$view = new View('main');
|
||
$view->title = $headline;
|
||
$view->title = $headline;
|
||
$view->breadcrumbs = implode(' » ',$breadcrumbs);
|
||
$view->content = new View('form');
|
||
$view->content->form = $form->html();
|
||
$view->content->link_back = html::anchor(url_lang::base().'subnets/show_all', url_lang::lang('texts.Back to all subnets'));
|
||
//$view->content->link_back = html::anchor(url_lang::base().'subnets/show_all', url_lang::lang('texts.Back to all subnets'));
|
||
$view->content->headline = $headline;
|
||
$view->render(TRUE);
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
/**
|
||
... | ... | |
}
|
||
else
|
||
{
|
||
if ($subnet->subnets_owner->id)
|
||
$subnet->subnets_owner->delete();
|
||
|
||
foreach ($subnet->allowed_subnets as $allowed_subnet)
|
||
{
|
||
$member_id = $allowed_subnet->member_id;
|
||
$allowed_subnet->delete();
|
||
Allowed_subnets_Controller::update_enabled($member_id);
|
||
}
|
||
|
||
if ($subnet->delete())
|
||
$this->session->set_flash('message', url_lang::lang('texts.Subnet has been successfully deleted.'));
|
||
else
|
freenetis/branches/subnets_assigning/application/controllers/allowed_subnets.php | ||
---|---|---|
Controller::error(RECORD);
|
||
|
||
// finds all allowed subnets of member
|
||
$allowed_subnets = ORM::factory('allowed_subnet')->get_all_allowed_subnets_by_member ($member->id);
|
||
$allowed_subnet_model = new Allowed_subnet_Model();
|
||
$allowed_subnets = $allowed_subnet_model->get_all_allowed_subnets_by_member ($member->id);
|
||
|
||
$grid = new Grid(url_lang::base().'members', null, array(
|
||
'separator' => '<br /><br />',
|
||
... | ... | |
|
||
$grid->field('id')->label('ID');
|
||
$grid->callback_field('subnet_name')->label(url_lang::lang('texts.Subnet'))->callback('callback::subnet_field');
|
||
$grid->callback_field('enabled')->label(url_lang::lang('texts.Enabled'))->callback('callback::enabled_field', 'allowed_subnets/change/')->class('center');
|
||
$grid->callback_field('enabled')->label(url_lang::lang('texts.Enabled'))->callback('callback::enabled_field', ($allowed_subnet_model->count_all_disabled_allowed_subnets_by_member($member->id) ? 'allowed_subnets/change/' : ''))->class('center');
|
||
$grid->action_field ('id')->label(url_lang::lang('texts.Delete'))->url(url_lang::base().'allowed_subnets/delete')->action(url_lang::lang('texts.Delete'))->class('delete_link');
|
||
|
||
$grid->datasource($allowed_subnets);
|
||
... | ... | |
if (!$member->id)
|
||
Controller::error(RECORD);
|
||
|
||
$subnet_model = new Subnet_Model();
|
||
|
||
// finds all subnets without allowed subnets of member
|
||
$subnets = ORM::factory('subnet')->get_all_subnets_without_allowed_subnets_of_member ($member->id);
|
||
$arr_subnets = arr::from_objects($subnets);
|
||
$subnets = $subnet_model->get_all_subnets_without_allowed_subnets_of_member ($member->id);
|
||
$arr_subnets = arr::merge(array(NULL => '----- '.url_lang::lang('texts.select subnet').' -----'), arr::from_objects($subnets));
|
||
|
||
// selected subnet
|
||
$current_subnet = $subnet_model->get_subnet_without_allowed_subnets_of_member_by_ip_address ($member->id, server::remote_addr());
|
||
$selected = ($current_subnet && $current_subnet->id) ? $current_subnet->id : 0;
|
||
|
||
$form = new Forge(url::base().url::current(TRUE), '', 'POST', array('id' => 'article_form'));
|
||
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
|
||
$form->dropdown('subnet_id')->label(url_lang::lang('texts.Subnet').':')->rules('required')->options($arr_subnets)->add_button('subnets');
|
||
$form->dropdown('subnet_id')->label(url_lang::lang('texts.Subnet').':')->rules('required')->options($arr_subnets)->selected($selected)->add_button('subnets');
|
||
|
||
$form->submit('submit')->value(url_lang::lang('texts.Add'));
|
||
special::required_forge_style($form, ' *', 'required');
|
||
... | ... | |
|
||
$allowed_subnet->enabled = !$allowed_subnet->enabled;
|
||
$allowed_subnet->save();
|
||
self::update_enabled($allowed_subnet->member_id);
|
||
|
||
url::redirect(url_lang::base().'allowed_subnets/show_by_member/'.$allowed_subnet->member_id);
|
||
if ($allowed_subnet->enabled)
|
||
{
|
||
$this->session->set_flash('message', url_lang::lang('texts.Subnet has been successfully enabled.'));
|
||
self::update_enabled($allowed_subnet->member_id);
|
||
}
|
||
else
|
||
{
|
||
$this->session->set_flash('message', url_lang::lang('texts.Subnet has been successfully disabled.'));
|
||
self::update_enabled($allowed_subnet->member_id, NULL, array($allowed_subnet->subnet_id));
|
||
}
|
||
|
||
url::redirect(Path::instance()->previous()->current());
|
||
}
|
||
|
||
/**
|
||
... | ... | |
*
|
||
* @author Michal Kliment
|
||
* @param integer $member_id
|
||
* @param string | array $to_enabled
|
||
* @param string | array $to_enable
|
||
* @return void
|
||
*/
|
||
public static function update_enabled ($member_id, $to_enabled = array())
|
||
public static function update_enabled ($member_id, $to_enable = array(), $to_disable = array(), $to_remove = array())
|
||
{
|
||
// bad parameter
|
||
if (!$member_id)
|
||
... | ... | |
return;
|
||
|
||
// to_enabled must be array
|
||
if (!is_array($to_enabled))
|
||
$to_enabled = array($to_enabled);
|
||
if (!is_array($to_enable))
|
||
$to_enable = array($to_enable);
|
||
|
||
if (!is_array($to_disable))
|
||
$to_disable = array($to_disable);
|
||
|
||
// finds all allowed subnet of member
|
||
$allowed_subnet_model = new Allowed_subnet_Model();
|
||
$allowed_subnets = $allowed_subnet_model->where('member_id', $member->id)->orderby(array('enabled' => 'desc', 'last_update' => 'desc'))->find_all();
|
||
... | ... | |
// to_enabled have the hightest priority
|
||
foreach ($allowed_subnets as $allowed_subnet)
|
||
{
|
||
if (!in_array($allowed_subnet->subnet_id, $to_enabled))
|
||
if (in_array($allowed_subnet->subnet_id, $to_remove))
|
||
{
|
||
$allowed_subnet->delete();
|
||
continue;
|
||
}
|
||
|
||
if (!in_array($allowed_subnet->subnet_id, $to_enable) && !in_array($allowed_subnet->subnet_id, $to_disable))
|
||
$arr_subnets[] = $allowed_subnet->subnet_id;
|
||
}
|
||
|
||
$arr_subnets = arr::merge ($to_enabled, $arr_subnets);
|
||
$arr_subnets = arr::merge ($to_enable, $arr_subnets, $to_disable);
|
||
|
||
// maximum count of allowed subnets (0 = unlimited)
|
||
$max_enabled = ($member->allowed_subnets_count->count) ? $member->allowed_subnets_count->count : count($arr_subnets);
|
||
... | ... | |
$enabled = 0;
|
||
foreach ($arr_subnets as $subnet)
|
||
{
|
||
if (!$subnet)
|
||
continue;
|
||
|
||
if ($aid = $allowed_subnet_model->exists ($member->id, $subnet))
|
||
$allowed_subnet_model->where('id',$aid)->find();
|
||
else
|
freenetis/branches/subnets_assigning/application/controllers/redirect.php | ||
---|---|---|
* @param $subnet_id
|
||
* @return unknown_type
|
||
*/
|
||
function subnet($subnet_id)
|
||
function subnet($subnet_id = NULL)
|
||
{
|
||
// access rights
|
||
if (!$this->acl_check_edit('Members_Controller', 'redirect'))
|
||
Controller::error(ACCESS);
|
||
if (!isset($subnet_id))
|
||
Controller::warning(PARAMETER);
|
||
$subnet = new Member_Model($subnet_id);
|
||
$subnet = new Subnet_Model($subnet_id);
|
||
if ($subnet->id == 0)
|
||
Controller::error(RECORD);
|
||
$array[0] = url_lang::lang('texts.No');
|
||
... | ... | |
else
|
||
{
|
||
// view
|
||
|
||
$breadcrumbs[] = ($this->acl_check_view('Devices_Controller','subnet')) ? html::anchor(url_lang::base().'subnets/show_all', url_lang::lang('texts.Subnets')) : url_lang::lang('texts.Subnets');
|
||
$breadcrumbs[] = ($this->acl_check_view('Devices_Controller','subnet')) ? html::anchor(url_lang::base().'subnets/show/'.$subnet->id, $subnet->name." ($subnet->network_address/". network::netmask2cidr($subnet->netmask) .")") : $subnet->name." ($subnet->network_address/". network::netmask2cidr($subnet->netmask) .")";
|
||
$breadcrumbs[] = url_lang::lang('texts.Redirection');
|
||
|
||
$headline = url_lang::lang('texts.Redirection');
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ',$breadcrumbs);
|
||
$view->title = $headline;
|
||
$view->content = new View('form');
|
||
$view->content->headline = $headline;
|
||
$view->content->link_back = html::anchor(url_lang::base().'subnets/show/'.$subnet_id, url_lang::lang('texts.Back to the subnet'));
|
||
//$view->content->link_back = html::anchor(url_lang::base().'subnets/show/'.$subnet_id, url_lang::lang('texts.Back to the subnet'));
|
||
$view->content->form = $form->html();
|
||
$view->render(TRUE);
|
||
}
|
freenetis/branches/subnets_assigning/application/libraries/MY_Controller.php | ||
---|---|---|
// boolean variable if user has active voip number (for menu rendering)
|
||
$this->user_has_voip = (bool) ORM::factory('voip_sip')->where('user_id',$this->user_id)->find_all()->count();
|
||
|
||
// ip address span
|
||
$this->ip_address_span = server::remote_addr();
|
||
if (($ptr_record = dns::get_ptr_record(server::remote_addr())) != '')
|
||
$this->ip_address_span .= ' <i>('.$ptr_record.')</i>';
|
||
|
||
// toggle button between allowed subnets
|
||
$allowed_subnet_model = new Allowed_subnet_Model();
|
||
$allowed_subnet = $allowed_subnet_model->get_allowed_subnet_by_member_and_ip_address ($this->session->get('member_id'), server::remote_addr());
|
||
if ($allowed_subnet && $allowed_subnet->id)
|
||
{
|
||
if ($allowed_subnet_model->count_all_disabled_allowed_subnets_by_member($this->session->get('member_id')))
|
||
$this->ip_address_span .= ' '.html::anchor (url_lang::base().'allowed_subnets/change/'.$allowed_subnet->id, html::image (array('src' => url::base().'media/images/'.(($allowed_subnet->enabled) ? 'active' : 'inactive').'.png')));
|
||
else
|
||
$this->ip_address_span .= ' '.html::image (array('src' => url::base().'media/images/'.(($allowed_subnet->enabled) ? 'active' : 'inactive').'.png'));
|
||
}
|
||
|
||
// updates paths
|
||
$this->update_paths();
|
||
}
|
freenetis/branches/subnets_assigning/application/views/main.php | ||
---|---|---|
<tr>
|
||
<td class="orange"><?php echo url_lang::lang('texts.IP address').':' ?></td>
|
||
<td class="bold">
|
||
<?php echo server::remote_addr() ?><?php echo ($ptr_record = dns::get_ptr_record(server::remote_addr()))!='' ? ' <i>('.$ptr_record.')</i>' : '' ?>
|
||
<?php echo $this->ip_address_span ?>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
... | ... | |
<div id="content">
|
||
<div id="content-padd">
|
||
<?php echo (isset($breadcrumbs)) ? "<span class='breadcrumbs'>$breadcrumbs</span><br /><br />" : '' ?>
|
||
<?php $message = $this->session->get_once('message');
|
||
echo empty($message) ? '' : '<div class="message">'.$message.'</div>'; ?>
|
||
<?php echo $content ?>
|
||
</div>
|
||
</div>
|
freenetis/branches/subnets_assigning/application/views/subnets_show.php | ||
---|---|---|
if (isset($submenu))
|
||
echo '<div class="submenu">'.$submenu.'</div>';
|
||
|
||
$links[] = $link_back;
|
||
//$links[] = $link_back;
|
||
if ($this->acl_check_edit('Devices_Controller', 'subnet'))
|
||
$links[] = html::anchor(url_lang::base().'subnets/edit/'.$subnet->id, url_lang::lang('texts.Edit'));
|
||
if ($this->acl_check_edit('Devices_Controller', 'redirect'))
|
||
... | ... | |
<th><?php echo url_lang::lang('texts.Netmask') ?></th>
|
||
<td><?php echo $subnet->netmask ?></td>
|
||
</tr>
|
||
<?php if ($owner_id): ?>
|
||
<tr>
|
||
<th><?php echo url_lang::lang('texts.Owner') ?> <?php echo help::hint('subnet_owner') ?></th>
|
||
<td><?php echo html::anchor (url_lang::base().'members/show/'.$owner_id, $owner) ?></td>
|
||
</tr>
|
||
<?php endif ?>
|
||
<tr>
|
||
<th><?php echo url_lang::lang('texts.OSPF area ID') ?></th>
|
||
<td><?php echo $subnet->OSPF_area_id ?></td>
|
||
</tr>
|
Také k dispozici: Unified diff
Dodelana logika pro prirazovani podsiti k clenum. Pridani tlacitka pro prepinani mezi povolenymi podisitemi v hlavicce. Zbyva dodelat automaticky prepinani pri pridavani zarizeni/ip adres, pristupove prava a moznost toto vse vypnout :-)