Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 673

Přidáno uživatelem Jiří Sviták před asi 14 roky(ů)

Sprava presmerovani clena. Opravy chyb. Automaticke doplnovani nazvu zarizeni.

Zobrazit rozdíly:

freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php
'add new whole device for user' => 'Přidat nové celé zařízení pro uživatele',
'add new work' => 'Přidat novou práci',
'add new work report' => 'Přidat nový pracovní výkaz',
'add redirection to all ip addresses of member' => 'Přidat přesměrování všem IP adresám člena',
'add smokeping menu item' => 'Přidat položku menu smokepingu',
'add smokeping record' => 'Přidat záznam smokepingu',
'add voip account' => 'Přidat VoIP účet',
freenetis/trunk/kohana/application/models/device.php
return self::$db->query("SELECT
d.id, IFNULL(f.translated_term,e.value) as type, d.name,
CONCAT(u.name, ' ', u.surname) AS u_name,
i.mac, i.id AS iface_id, se.name AS segment_name, ip.ip_address, ip.id AS ip_address_id, su.name AS subnet_name
i.mac, i.id AS iface_id, se.name AS segment_name, ip.ip_address, ip.id AS ip_address_id,
su.name AS subnet_name, su.id AS subnet_id
FROM devices d
JOIN users u ON d.user_id = u.id
LEFT JOIN enum_types e ON d.type = e.id
freenetis/trunk/kohana/application/models/ip_address.php
*/
public function get_ip_addresses_of_member($member_id)
{
return self::$db->query("SELECT
ip.id, ip.ip_address
return self::$db->query("
SELECT ip.*
FROM ip_addresses ip
JOIN ifaces i ON i.id = ip.iface_id
JOIN devices d ON d.id = i.device_id
......
"); */
return self::$db->query("SELECT
q.id, q.ip_address, q.gateway, d.name AS device_name, m.name AS member_name, d.id AS did, m.id AS mid
FROM (SELECT
ip.id, ip.ip_address, ip.gateway, IFNULL(ic1.device_id, ic2.device_id) as device_id
q.ip_address_id, q.ip_address, q.gateway,
d.name AS device_name, d.id AS device_id,
m.name AS member_name, m.id AS member_id
FROM
(
SELECT
ip.id AS ip_address_id, ip.ip_address, ip.gateway, IFNULL(ic1.device_id, ic2.device_id) as device_id
FROM ip_addresses ip
LEFT JOIN ifaces ic1 ON ip.iface_id = ic1.id
LEFT JOIN vlan_ifaces vic ON ip.vlan_iface_id = vic.id
LEFT JOIN ifaces ic2 ON vic.iface_id = ic2.id
WHERE ip.subnet_id = $subnet_id) AS q
WHERE ip.subnet_id = $subnet_id
) AS q
LEFT JOIN devices d ON q.device_id = d.id
LEFT JOIN users u ON d.user_id = u.id
LEFT JOIN members m ON u.member_id = m.id
freenetis/trunk/kohana/application/controllers/members.php
echo $redirstr;
}
static function member_field($item, $name)
{
if ($item->member_id)
echo html::anchor(url_lang::base()."members/show/$item->member_id", $item->member_name);
else
echo '&nbsp';
}
/**
* Shows details of member.
* @param $member_id id of member to show
......
$user_grid->action_field('id') ->label(url_lang::lang('texts.Devices'))->url(url_lang::base().'devices/show_by_user')->action(url_lang::lang('texts.Show'));
if ($this->acl_check_edit('Users_Controller', 'work', $member_id))
$user_grid->action_field('id') ->label(url_lang::lang('texts.Works'))->url(url_lang::base().'works/show_by_user')->action(url_lang::lang('texts.Show'));
$user_grid->datasource($users);
$user_grid->datasource($users);
// membership interrupts
$mi_model = new Membership_interrupt_Model();
$mis = $mi_model->where('member_id', $member_id)->orderby('from')->find_all();
......
$mi_grid->action_field('id') ->label(url_lang::lang('texts.Membership interrupts'))->url(url_lang::base().'membership_interrupts/delete')->action(url_lang::lang('texts.Delete'));
$mi_grid->datasource($mis);
// active redirections of member
$db = new Database();
$messages = $db->query("
SELECT ip.ip_address, m.id, m.name, mip.ip_address_id, mip.message_id
FROM messages m
JOIN messages_ip_addresses mip ON mip.message_id = m.id
JOIN ip_addresses ip ON mip.ip_address_id = ip.id
JOIN ifaces i ON ip.iface_id = i.id
JOIN devices d ON i.device_id = d.id
JOIN users u ON d.user_id = u.id
WHERE u.member_id = '$member_id'
");
$redir_grid = new Grid(url_lang::base().'members', null, array(
'use_paginator' => false,
'use_selector' => false
));
if ($this->acl_check_new('Messages_Controller', 'member'))
$redir_grid->add_new_button(url_lang::base().'redirect/add_member/'.$member_id, url_lang::lang('texts.Add redirection to all ip addresses of member'));
$redir_grid->field('ip_address')->label(url_lang::lang('texts.IP address'));
$redir_grid->field('name')->label(url_lang::lang('texts.Message'));
if ($this->acl_check_delete('Messages_Controller', 'ip_address'))
$redir_grid->callback_field('redirection')->label(url_lang::lang('texts.Redirection'))->callback("Members_Controller::cancel_redirection");
$redir_grid->datasource($messages);
// billing
$billing = new Billing();
$has_driver = $billing->has_driver();
$b_account = $billing->get_account($member_id);
$voip_sip = new Voip_sip_Model();
$voip = $voip_sip->get_all_record_by_member_limited($member_id);
$voip_grid = new Grid(url_lang::base().'members', null, array(
......
$voip_grid->action_field('user_id')->label(url_lang::lang('texts.Account'))->url(url_lang::base().'voip/show')->action(url_lang::lang('texts.Show'));
$voip_grid->action_field('user_id')->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/show')->action(url_lang::lang('texts.Show'));
$voip_grid->datasource($voip);
if ($has_driver && ($b_account != null))
{
$voip_grid->add_new_button(url_lang::base().'voip_calls/show_by_member/'.$member_id, url_lang::lang('texts.List of all calls'));
if ($member_data->member_id != 1)
$voip_grid->add_new_button(url_lang::base().'transfers/add_voip/'.$account->id, url_lang::lang('texts.Recharge VoIP credit'));
}
// view
$view = new View('main');
$view->title = url_lang::lang('texts.Display member');
......
$view->content->billing_has_driver = $has_driver;
$view->content->billing_account = $b_account;
$view->content->mis = $mi_grid;
$view->content->redir_grid = $redir_grid;
foreach($member_data as $key=>$val)
{
// IE dont render TD border if content is NULL, so we must put nbsp into empty fields.
......
} // end of show function
/**
* Callback field for canceling redirection on member's profile.
* @author Jiri Svitak
* @param $item
* @param $name
*/
public static function cancel_redirection($item, $name)
{
echo html::anchor(url_lang::base()."redirect/delete/$item->ip_address_id/$item->message_id/member", url_lang::lang('texts.Cancel'));
}
/**
* Function adds new member to database. Creates user of type member assigned to this member.
* @return unknown_type
*/
freenetis/trunk/kohana/application/controllers/ifaces.php
$grid_ip_addresses->action_field('id')->label(url_lang::lang('texts.IP address')) ->url(url_lang::base().'ip_addresses/edit') ->action(url_lang::lang('texts.Edit'))->class('center');
if ($this->acl_check_delete('Devices_Controller','ip_address',$member_id))
$grid_ip_addresses->action_field('id')->label(url_lang::lang('texts.IP address')) ->url(url_lang::base().'ip_addresses/delete') ->action(url_lang::lang('texts.Delete'))->class('center')->script('onclick="return potvrd(\''.url_lang::lang('texts.Do you want to delete this ip address').'\');"');
if ($this->acl_check_new('Messages_Controller', 'ip_address'))
$grid_ip_addresses->action_field('id')->label(url_lang::lang('texts.IP address'))->url(url_lang::base().'redirect/add')->action(url_lang::lang('texts.Redirect'));
$grid_ip_addresses->datasource( $query );
// vlan interfaces
freenetis/trunk/kohana/application/controllers/web_interface.php
// if necessary update synchronization status in Freenetis
if (isset($synchronized))
{
// synchronization is necessary
if ($synchronized == 0)
{
}
}
// if central router has not set anything, then this method returns synchronization status of Freenetis
else
......
*/
function already_seen()
{
print_r($_POST);
die();
}
/**
......
*/
function redirect_content($ip_address = null)
{
//echo $ip_address;die();
// load contact information from database
$contact = '';
$contact_information = ORM::factory('message')->where(array('type' => Message_Model::$contact_information))->find();
......
// load message
$content = '';
$footer = '';
//
// special html page for unknown device message
if ($ip_address == 'unknown_device_message')
{
$message = ORM::factory('message')->where(array('type' => Message_Model::$unknown_device_message))->find();
$ip_address = server::remote_addr();
}
// special html page for cancel message
elseif ($ip_address == 'cancel_message')
{
$message = ORM::factory('message')->where(array('type' => Message_Model::$cancel_message))->find();
$ip_address = server::remote_addr();
}
// html page with current message for given IP address
else
{
$message = $this->db->query("
......
}
}
}
else
// no redirection set? this may happen, so redirection page will inform user that redirection has been already canceled
{
$message = ORM::factory('message')->where(array('type' => Message_Model::$cancel_message))->find();
$content = $message->text;
}
// replace contact and content
$contact = Redirect_Controller::replace($contact, $ip_address);
$content = Redirect_Controller::replace($content, $ip_address);
freenetis/trunk/kohana/application/controllers/subnets.php
static function subnet_field($item, $name)
{
echo html::anchor(url_lang::base()."subnets/show/$item->subnet_id", $item->subnet_name);
if ($item->subnet_id)
echo html::anchor(url_lang::base()."subnets/show/$item->subnet_id", $item->subnet_name);
else
echo '&nbsp';
}
/**
......
'use_paginator' => false,
'use_selector' => false
));
$grid->field('id')->label(url_lang::lang('texts.ID'));
$grid->field('ip_address')->label(url_lang::lang('texts.IP address'));
$grid->action_field('id')->label(url_lang::lang('texts.IP address'))->url(url_lang::base().'ip_addresses/show')->action(url_lang::lang('texts.Show'))->class('center');
$grid->field('device_name')->label(url_lang::lang('texts.Device'));
$grid->action_field('did')->label(url_lang::lang('texts.Device'))->url(url_lang::base().'devices/show')->action(url_lang::lang('texts.Show'))->class('center');
$grid->field('member_name')->label(url_lang::lang('texts.Member'));
$grid->action_field('mid')->label(url_lang::lang('texts.Member'))->url(url_lang::base().'members/show')->action(url_lang::lang('texts.Show'))->class('center');
$grid->field('ip_address_id')->label(url_lang::lang('texts.ID'));
//$grid->field('ip_address')->label(url_lang::lang('texts.IP address'));
$grid->callback_field('ip_address')->label(url_lang::lang('texts.IP address'))->callback('Ip_addresses_Controller::ip_address_field');
//$grid->field('device_name')->label(url_lang::lang('texts.Device'));
$grid->callback_field('device_name')->label(url_lang::lang('texts.Device'))->callback('Devices_Controller::device_field');
//$grid->field('member_name')->label(url_lang::lang('texts.Member'));
$grid->callback_field('member_name')->label(url_lang::lang('texts.Member'))->callback('Members_Controller::member_field');
$grid->datasource($ips);
$headline = url_lang::lang('texts.Subnet').' '.$subnet->name;
freenetis/trunk/kohana/application/controllers/redirect.php
$message_array[$message->id] = $message->name;
}
}
// no redirection possible for ip address?
if (empty($message_array))
{
$this->session->set_flash('message', url_lang::lang('texts.No redirection is possible to set for this IP address.'));
......
* @param $message_id
* @return unknown_type
*/
function delete($ip_address_id = null, $message_id = null)
function delete($ip_address_id, $message_id, $from = 'ip_address')
{
if (!isset($ip_address_id) && !isset($message_id))
{
Controller::warning(PARAMETER);
}
$array = array();
if (isset($ip_address_id))
$where = array();
if (is_numeric($ip_address_id))
$array['ip_address_id'] = $ip_address_id;
if (isset($message_id))
if (is_numeric($message_id))
$array['message_id'] = $message_id;
$db = new Database();
$db->delete('messages_ip_addresses', $array);
$ip = new Ip_address_Model($ip_address_id);
self::update($ip->ip_address);
$this->session->set_flash('message', url_lang::lang('texts.Redirection has been successfully canceled.'));
url::redirect(url_lang::base().'ip_addresses/show/'.$ip_address_id);
if ($from == 'member')
url::redirect(url_lang::base().'members/show/'.$ip->iface->device->user->member_id);
else
url::redirect(url_lang::base().'ip_addresses/show/'.$ip_address_id);
}
/**
* Adds all IP addresses of member to redirection.
* @author Jiri Svitak
* @param unknown_type $member_id
*/
function add_member($member_id = null)
{
// access rights
if (!$this->acl_check_edit('Messages_Controller', 'member'))
Controller::error(ACCESS);
if (!isset($member_id))
Controller::warning(PARAMETER);
// member
$member = new Member_Model($member_id);
if ($member->id == 0)
Controller::error(RECORD);
// load list of IP addresses belonging to member
$ip_model = new Ip_address_Model();
$ips = $ip_model->get_ip_addresses_of_member($member_id);
// load list of usable redirection message
$message_model = new Message_Model();
$messages = $message_model->find_all();
foreach($ips as $ip)
{
foreach($messages as $message)
{
// whitelisted IP addresses can be redirected only by redirections which ignore whitelist
if ($ip->whitelisted && !$message->ignore_whitelist)
continue;
// IP address can be manually redirected only to user message, interrupted membership message, debtor message, payment notice message
if ($message->type == Message_Model::$user_message ||
$message->type == Message_Model::$interrupted_membership_message ||
$message->type == Message_Model::$debtor_message ||
$message->type == Message_Model::$payment_notice_message)
{
$message_array[$message->id] = $message->name;
}
}
}
// no redirection possible for this member?
if (empty($message_array))
{
$this->session->set_flash('message', url_lang::lang('texts.No redirection is possible to set for this IP address.'));
url::redirect(url_lang::base().'members/show/'.$member_id);
}
// form
$form = new Forge(url_lang::base().'redirect/add_member/'.$member_id, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Redirection'));
$form->dropdown('message_id')->label(url_lang::lang('texts.Redirection').':')->options($message_array);
$form->textarea('comment')->label(url_lang::lang('texts.Comment of admin shown to user').':');
$form->submit('submit')->value(url_lang::lang('texts.Redirect'));
special::required_forge_style($form, ' *', 'required');
// validation
if ($form->validate())
{
$form_data = $form->as_array();
$db = new Database();
foreach($ips as $ip)
{
// delete old redirection if present
$db->delete('messages_ip_addresses', array('message_id' => $form_data['message_id'], 'ip_address_id' => $ip->id));
if (!$ip->whitelisted || $message->ignore_whitelist)
{
// database insert sets redirection for ip address
$db->insert('messages_ip_addresses', array('message_id' => $form_data['message_id'],
'ip_address_id' => $ip->id, 'user_id' => $this->session->get('user_id'),
'comment' => $form_data['comment'], 'datetime' => date('Y-m-d H:i:s')));
// generate html page
self::update($ip->ip_address);
}
}
// set flash message
$this->session->set_flash('message', url_lang::lang('texts.Redirection has been successfully set.'));
url::redirect(url_lang::base().'members/show/'.$member_id);
}
else
{
// view
$headline = url_lang::lang('texts.Redirection');
$view = new View('main');
$view->title = $headline;
$view->content = new View('form');
$view->content->headline = $headline;
$view->content->link_back = html::anchor(url_lang::base().'members/show/'.$member_id, url_lang::lang('texts.Back to the member'));
$view->content->form = $form->html();
$view->render(TRUE);
}
}
/**
* Updates static html file with redirection message.
* @param $ip_address
* @return unknown_type
......
{
$member_name = '???';
$variable_symbol = '???';
$current_credit = '???';
}
else
{
$member_name = $ip->iface->device->user->member->name;
$variable_symbol = $ip->iface->device->user->member->variable_symbol;
// current credit
$account_balance = ORM::factory('account_balance')->where('member_id', $ip->iface->device->user->member_id)->find();
$current_credit = $account_balance->balance;
}
// subnet name
$subnet_model = new Subnet_Model();
......
$text = str_replace('{member_name}', $member_name, $text);
// variable symbol of member
$text = str_replace('{variable_symbol}', $variable_symbol, $text);
// current credit
$text = str_replace('{current_credit}', $current_credit, $text);
return $text;
}
freenetis/trunk/kohana/application/controllers/ip_addresses.php
static function ip_address_field($item, $name)
{
echo html::anchor(url_lang::base()."ip_addresses/show/$item->ip_address_id", $item->ip_address);
if ($item->ip_address_id)
echo html::anchor(url_lang::base()."ip_addresses/show/$item->ip_address_id", $item->ip_address);
else
echo '&nbsp';
}
/**
......
'use_selector' => false
));
$grid->field('name')->label(url_lang::lang('texts.Redirection'));
// @todo access rights
$grid->callback_field('redirection')->label(url_lang::lang('texts.Redirection'))->callback("Ip_addresses_Controller::cancel_redirection");
if ($this->acl_check_delete('Messages_Controller', 'ip_address'))
$grid->callback_field('redirection')->label(url_lang::lang('texts.Redirection'))->callback("Ip_addresses_Controller::cancel_redirection");
$grid->datasource($messages);
$view = new View('main');
freenetis/trunk/kohana/application/controllers/devices.php
$grid->order_field('type')->label(url_lang::lang('texts.Type'));
//$grid->order_field('u_name')->label(url_lang::lang('texts.User'));
$grid->order_callback_field('mac')->label(url_lang::lang('texts.MAC address'))->callback('Ifaces_Controller::iface_field');
$grid->order_field('segment_name')->label(url_lang::lang('texts.Segment'));
//$grid->order_field('segment_name')->label(url_lang::lang('texts.Segment'));
$grid->order_callback_field('ip_address')->label(url_lang::lang('texts.IP address'))->callback('Ip_addresses_Controller::ip_address_field');
$grid->order_callback_field('subnet_name')->label(url_lang::lang('texts.Subnet'))->callback('Subnets_Controller::subnet_field');
if ($this->acl_check_view(get_class($this),'devices',$user->member_id))
$grid->action_field('id')->label(url_lang::lang('texts.Device'))->url(url_lang::base().'devices/show')->action(url_lang::lang('texts.Show'))->class('center');
//if ($this->acl_check_edit(get_class($this),'devices',$user->member_id))
......
$grid_ips->field('subnet_name')->label(url_lang::lang('texts.Subnet name'));
if ($this->acl_check_view('Devices_Controller', 'ip_address', $member_id))
$grid_ips->action_field('id')->label(url_lang::lang('texts.IP address'))->url(url_lang::base().'ip_addresses/show')->action(url_lang::lang('texts.Show'))->class('center');
// @todo access rights
if ($this->acl_check_new('Messages_Controller', 'ip_address'))
$grid_ips->action_field('id')->label(url_lang::lang('texts.IP address'))->url(url_lang::base().'redirect/add')->action(url_lang::lang('texts.Redirect'));
$grid_ips->datasource($ips);
......
if (!isset($user_id))
$user = new User_Model($device_model->user_id);
if (!$this->acl_check_new(get_class($this), 'devices', $user->member_id))
Controller::error(ACCESS);
$device_model->name = htmlspecialchars($form_data["name"]);
Controller::error(ACCESS);
if (htmlspecialchars($form_data["name"]) == '')
$device_model->name = $user->login.'_'.$types[htmlspecialchars($form_data["type"])];
else
$device_model->name = htmlspecialchars($form_data["name"]);
$device_model->trade_name = htmlspecialchars($form_data["trade_name"]);
$device_model->type = htmlspecialchars($form_data["type"]);
$device_model->PPPoE_logging_in = htmlspecialchars($form_data["PPPoE_logging_in"]);
......
* and new ip address assigned to this interface.
* @return unknown_type
*/
function add_whole($user_id = null){
function add_whole($user_id = null)
{
$user_model = new User_Model();
// if the device is added to given user, then only one user will be to select
$selected_segment = 0;
......
if(isset($user_id))
{
$user = new User_Model($user_id);
if ($user->id == 0)
Controller::error(RECORD);
if (!$this->acl_check_new('Devices_Controller', 'devices', $user->member_id))
Controller::error(ACCESS);
$selected = $user->id;
if ($user->id == 0)
Controller::error(RECORD);
if (!$this->acl_check_new('Devices_Controller', 'devices', $user->member_id))
Controller::error(ACCESS);
$selected = $user->id;
$selected_GPS = $user->member->address_point->GPS;
$selected_street_id = $user->member->address_point->street_id;
$selected_street_number = $user->member->address_point->street_number;
......
if ($found_engineer)
$selected_engineer = $found_engineer->id;
$arr_users[$user->id] = $user->surname.' '.$user->name.' - '.$user->login;
}else{
}
else
{
if (!$this->acl_check_new('Devices_Controller', 'devices'))
Controller::error(ACCESS);
$users = $user_model->select('id','name','surname','login')->orderby('id')->find_all();
......
$form_data = $form->as_array();
// device model
$device_model = new Device_Model();
$device_model = new Device_Model();
$device_model->user_id = $form_data["user_id"];
// access rights
if (!isset($user_id))
$user = new User_Model($device_model->user_id);
if (!$this->acl_check_new(get_class($this), 'devices', $user->member_id))
Controller::error(ACCESS);
$device_model->name = htmlspecialchars($form_data["name"]);
if (htmlspecialchars($form_data["name"]) == '')
$device_model->name = $user->login.'_'.$types[htmlspecialchars($form_data["type"])];
else
$device_model->name = htmlspecialchars($form_data["name"]);
$device_model->trade_name = htmlspecialchars($form_data["trade_name"]);
$device_model->type = htmlspecialchars($form_data["type"]);
$device_model->PPPoE_logging_in = htmlspecialchars($form_data["PPPoE_logging_in"]);
......
// going through interfaces
foreach($ifaces as $iface)
{
//print_r($iface);
//echo "<br>";
// ORM doesn't work in this case (1:0 relation), so number of wireless settings has to be detected manually
// only solution seems to be upgrading to higher version of kohana
$ws_count = $iface->count_ws_of_iface($iface->id);
......
{
// before deleting IP address it is necessary to delete redirection from junction table first
$db = new Database();
$db->delete('messages_ip_addresses')->where(array('ip_address_id' => $ip->id));
$db->delete('messages_ip_addresses', array('ip_address_id' => $ip->id));
// delete IP address
$ip->delete();
$deleted_ips++;
freenetis/trunk/kohana/application/views/members_show.php
<br class = "clear" />
<br />
<h3><?php echo url_lang::lang('texts.Active redirections')?></h3>
<?php echo $redir_grid ?>
<br />
<h3><?php echo url_lang::lang('texts.Users')?></h3>
<?php echo $users ?>
<br />
......
<h3><?php echo url_lang::lang('texts.VoIP')?></h3>
<?php echo $voip ?>
<br />
<h3><?php echo url_lang::lang('texts.Membership interrupts')?></h3>
<?php echo $mis ?>

Také k dispozici: Unified diff