Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 473

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

Upravy ve strhavani clenskych prispevku, je mozne strzenou castku pro dany rok prepocitat. To znamena, ze pro kazdy rok bude jeden strhavaci prevod.

Zobrazit rozdíly:

freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php
'voip number interval must be in format xxxxxxxxx-xxxxxxxxx' => 'Rozsah VoIP čísel musí být ve formátu xxxxxxxxx-xxxxxxxxx',
'voip number must be 9 characters long' => 'VoIP číslo musí obsahovat 9 znaků',
'voip number must be a number' => 'VoIP číslo musí být číslo',
'warning' => 'Varování',
'website after redirection' => 'Webová stránka po přesměrování',
'work' => 'Práce',
'work confirmation' => 'Potvrzení práce',
freenetis/trunk/kohana/application/models/transfer.php
)->current();
}
/**
* Function gets dependent transfers of transfer that is member fee payment.
* @param $transfer_id
* @return unknown_type
*/
public function get_dependent_transfers($transfer_id)
{
return self::$db->query("SELECT dt.*
......
");
}
/**
* Finding deducting fee.
* @param $year
* @param $origin_credit_account
* @return unknown_type
*/
public function get_deduct_transfer($year, $origin_credit_account)
{
return self::$db->query("SELECT * FROM transfers
WHERE type = ".Transfer_Model::$deduct_member_fee." AND datetime LIKE '%".$year."%'
AND origin_id = ".$origin_credit_account
)->current();
}
}
?>
freenetis/trunk/kohana/application/controllers/transfers.php
{
if (!$this->acl_check_view('Accounts_Controller', 'transfers'))
Controller::error(ACCESS);
if (isset($transfer_id))
if (!isset($transfer_id))
Controller::warning(PARAMETER);
$account_model = new Account_Model();
$transfer_model = new Transfer_Model();
$transfer = $transfer_model->get_transfer($transfer_id);
if (!is_object($transfer))
Controller::error(RECORD);
// transfers dependent on this transfer, if this transfer is member fee payment
$dependent_transfers = $transfer_model->get_dependent_transfers($transfer->id);
$bt = null;
// bank transfer is only assigned to transfer from member fees account to account of association
if ($transfer->oa_id == $account_model->get_member_fees_account()->id)
{
$account_model = new Account_Model();
$transfer_model = new Transfer_Model();
$transfer = $transfer_model->get_transfer($transfer_id);
//$previous = null;
// previous transfer is identified transfer from member fees account to account of association
/*
if (isset($transfer->previous_transfer_id))
{
$previous_transfer_model = new Transfer_Model();
$previous = $previous_transfer_model->get_transfer($transfer->previous_transfer_id);
}
*/
$dependent_transfers = $transfer_model->get_dependent_transfers($transfer->id);
$bt = null;
// bank transfer is only assigned to transfer from member fees account to account of association
if ($transfer->oa_id == $account_model->get_member_fees_account()->id)
{
$bt_model = new Bank_transfer_Model();
$bt = $bt_model->get_bank_transfer($transfer_id);
}
$headline = url_lang::lang('texts.Detail of transfer number').' '.$transfer->id;
$view = new View('main');
$view->title = $headline;
$view->content = new View('transfers/show');
$view->content->headline = $headline;
$view->content->transfer = $transfer;
//$view->content->previous = $previous;
$view->content->dependent_transfers = $dependent_transfers;
$view->content->bt = $bt;
$view->content->message = $this->session->get_once('message');
$view->render(TRUE);
$bt_model = new Bank_transfer_Model();
$bt = $bt_model->get_bank_transfer($transfer_id);
}
else
{
Controller::warning(PARAMETER);
}
$headline = url_lang::lang('texts.Detail of transfer number').' '.$transfer->id;
$view = new View('main');
$view->title = $headline;
$view->content = new View('transfers/show');
$view->content->headline = $headline;
$view->content->transfer = $transfer;
$view->content->dependent_transfers = $dependent_transfers;
$view->content->bt = $bt;
$view->content->message = $this->session->get_once('message');
$view->render(TRUE);
}
/**
......
// it goes through all credit accounts and it creates their outbound transfers to operating account
foreach($credit_accounts as $ca)
{
// clears transfer model
$transfer->clear();
// starting month
$start = $month;
// finishing month
......
$total_months = $finish - $start + 1 - $interrupted;
// if deducting interval is between entrance and leaving date, transfer will be generated
if ($e_okay && $l_okay && $total_months > 0)
{
{
// trying to find existing transfer of given year
$existing = $transfer->get_deduct_transfer($year, $ca->id);
if (is_object($existing))
$transfer = new Transfer_Model($existing->id);
else
$transfer = new Transfer_Model();
$transfer->origin_id = $ca->id;
$transfer->destination_id = $oa->id;
$trasnfer->type = Transfer_Model::$deduct_member_fee;
$transfer->user_id = $this->session->get('user_id');
$transfer->type = Transfer_Model::$deduct_member_fee;
$transfer->datetime = $datetime;
$transfer->creation_datetime = $creation_datetime;
$transfer->text = $text;
......
*/
function edit_deducted_fees()
{
// access rights
if (!$this->acl_check_new('Accounts_Controller', 'transfers'))
Controller::error(ACCESS);
// content of dropdown for months
for ($i = 1; $i <= 12; $i++)
$arr_months[$i] = $i;
// content of dropdown for years
$year_from = date('Y') - 20;
for ($i = 1; $i <= 20; $i++)
$arr_years[$i] = $year_from + $i;
$form = new Forge(url_lang::base().'transfers/deduct_fees', '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->dropdown('year')->label(url_lang::lang('texts.Year').':')->rules('required')->options($arr_years)->selected(20);
$form->dropdown('month')->label(url_lang::lang('texts.Month from').':')->rules('required')->options($arr_months)->selected(1);
$form->dropdown('months')->label(url_lang::lang('texts.Number of months').':')->rules('required')->options($arr_months)->selected(1)->callback(array($this, 'valid_months'));
$form->input('fee')->label(url_lang::lang('texts.Monthly member fee').':')->rules('required|valid_numeric');
$form->input('text')->label(url_lang::lang('texts.Text').':');
$form->submit('submit')->value(url_lang::lang('texts.Deduct'));
special::required_forge_style($form, ' *', 'required');
// form validation
if ($form->validate())
{
$form_data = $form->as_array();
foreach($form_data as $key => $value)
{
$form_data[$key] = htmlspecialchars($value);
}
$year = $arr_years[$form_data['year']];
$month = $form_data['month'];
$months = $form_data['months'];
$fee = $form_data['fee'];
$text = $form_data['text'];
// all transfers should have the same date and time of creation
$creation_datetime = date('Y-m-d H:i:s');
// and all transfers should have the same date of deduct start
$datetime = date('Y-m-d H:i:s', mktime(0, 0, 0, $month, 1, $year));
// database models
$transfer = new Transfer_Model();
$member_model = new Member_Model();
$account_model = new Account_Model();
$mi_model = new Membership_interrupt_Model();
// it gets ids and member ids of all credit accounts
//$credit_accounts = $account_model->get_accounts_of_regular_members();
// finding transfer of given year
// it gets id of operating account, the only destination account
$oa = ORM::factory('account')->find_by_account_attribute_id(Account_attribute_Model::$operating);
// it supposes that everything will be ok, if a transfer couldn't be created, it sets to false
$save_successful = true;
// it is suppossed that thousands of transfers will be generated, transaction processing required
$db = new Database();
$db->query("BEGIN;");
// it goes through all credit accounts and it creates their outbound transfers to operating account
foreach($credit_accounts as $ca)
{
// clears transfer model
$transfer->clear();
// starting month
$start = $month;
// finishing month
$finish = $month + $months - 1;
// member fee info includes entrance date, leaving date and member type
$member_fee_info = $member_model->get_fee_information($ca->id);
// for every account it gets entrance year and month of its owning member
$entrance = date_parse($member_fee_info->entrance_date);
// entrance date is rounded
$entrance = date_parse(date::round_month($entrance['day'], $entrance['month'], $entrance['year']));
$e_year = $entrance['year'];
$e_month = $entrance['month'];
$e_day = $entrance['day'];
// fee is deducted only if membership exists before upper date of deducting interval
$e_okay = ($e_year < $year) || ($e_year == $year && $e_month <= $finish);
// if member entered association after start of deducting interval
if ($e_year == $year && $e_month > $start)
{
$start = $e_month;
}
// for every account it gets leaving year and month of its owning member
$leaving_date = date_parse($member_fee_info->leaving_date);
// if leaving date was set
if ($leaving_date['year'] != '0')
{
// leaving date is rounded
$leaving_date = date_parse(date::round_month($leaving_date['day'], $leaving_date['month'], $leaving_date['year']));
$l_year = $leaving_date['year'];
$l_month = $leaving_date['month'];
$l_day = $leaving_date['day'];
// fee is deducted only if membership exists before upper date of deducting interval
$l_okay = ($l_year > $year) || ($l_year == $year && $l_month > $start);
// if member left before end of deducting interval
if ($l_year == $year && $l_month <= $finish)
{
// leaving month is not included in deduction
$finish = $l_month - 1;
}
}
else
{
$l_okay = true;
}
// for every member it searches interrupts of membership
$mis = $mi_model->get_mi($ca->member_id);
// defualt number of months with interrupted membership
$interrupted = 0;
foreach ($mis as $mi)
{
$from = date_parse($mi->from);
$from = date_parse(date::round_month($from['day'], $from['month'], $from['year']));
$to = date_parse($mi->to);
$to = date_parse(date::round_month($to['day'], $to['month'], $to['year']));
// membership was interrupted before starting month and interrupt lasted after finishing one
if ((($from['year'] < $year) || ($from['year'] == $year && $from['month'] <= $start))
&& (($to['year'] > $year) || ($to['year'] == $year && $to['month'] >= $finish)))
{
// all months will be interrupted, no fee is deducted
$interrupted += $finish - $start;
}
// membership was interrupted before starting month,
// but interrupt ended after starting one and before finishing one
else if ((($from['year'] < $year) || ($from['year'] == $year && $from['month'] < $start))
&& ($to['year'] == $year && $to['month'] >= $start)
&& ($to['year'] == $year && $to['month'] < $finish))
{
$interrupted += $to['month'] - $start;
}
// membership was interrupted after starting month and before finishing month,
// and interrupt ended after finishing month
else if (($from['year'] == $year && $from['month'] > $start)
&& ($from['year'] == $year && $from['month'] <= $finish)
&& (($to['year'] > $year) || ($to['year'] == $year && $to['month'] > $finish)))
{
$interrupted += $finish - $from['month'];
}
// membership was interrupted after starting month and before finishing month
else if (($from['year'] == $year && $from['month'] >= $start)
&& ($to['year'] == $year && $to['month'] <= $finish))
{
$interrupted += $to['month'] - $from['month'];
}
}
// total months to deduct fees
$total_months = $finish - $start + 1 - $interrupted;
// if deducting interval is between entrance and leaving date, transfer will be generated
if ($e_okay && $l_okay && $total_months > 0)
{
$transfer->origin_id = $ca->id;
$transfer->destination_id = $oa->id;
$transfer->user_id = $this->session->get('user_id');
$transfer->type = Transfer_Model::$deduct_member_fee;
$transfer->datetime = $datetime;
$transfer->creation_datetime = $creation_datetime;
$transfer->text = $text;
$transfer->amount = $total_months * $fee;
// money transfer is saved and checked
if (!$transfer->save())
$save_successful = false;
}
}
// end of transaction processing
if ($save_successful)
{
$db->query("COMMIT;");
$this->session->set_flash('message', url_lang::lang('texts.Fees have been successfully deducted.'));
}
else
{
$db->query("ROLLBACK;");
$this->session->set_flash('message', url_lang::lang('texts.Error - some fees have not been deducted.'));
}
url::redirect(url_lang::base().'transfers/show_all');
}
else
{
$headline = url_lang::lang('texts.Deduction of member fees');
$view = new View('main');
$view->title = $headline;
$view->content = new View('form');
$view->content->headline = $headline;
$view->content->form = $form->html();
$view->content->link_back = html::anchor(url_lang::base().'transfers/show_all',url_lang::lang('texts.Back to day book'));
$view->render(TRUE);
}
}
/**
......
{
if (!isset($member_id))
Controller::warning(PARAMETER);
$member = new Member_Model($member_id);
if ($member->id == 0)
Controller::error(RECORD);
if (!$this->acl_check_new('Accounts_Controller', 'transfers', $member_id))
Controller::error(ACCESS);
$credit = ORM::factory('account')->find_by_member_id_and_account_attribute_id(
freenetis/trunk/kohana/application/controllers/redirect.php
$view->render(TRUE);
}
}
/**
* IP address has not been found in database.
* @param $ip_address
* @return unknown_type
*/
function ip_unknown($ip_address = NULL)
{
$view = new View('main');
$view->title = url_lang::lang('texts.Unknown IP address');
$view->content = new View('redirect/ip_unknown');
$view->content->ip_address = $ip_address;
$view->render(TRUE);
}
/**
* Function provides complete information about your IP address, if it is found in database.
* @param $ip_address
* @return unknown_type
*/
function ip_info($ip_address = NULL)
{
if (!$ip_address)
$ip_address = server::remote_addr();
$ip_address_model = new Ip_address_Model();
$this_ip = $ip_address_model->where('ip_address',$ip_address)->find();
$device_name = '';
$device_type = '';
$engineer_names = '';
$mac = '';
$user_name = '';
$count_engineers = 0;
if ($this_ip->id)
{
$mac = $this_ip->iface->mac;
$device_name = $this_ip->iface->device->name;
$enum_type_model = new Enum_type_Model();
$device_type = $enum_type_model->get_value($this_ip->iface->device->type);
$device_engineer_model = new Device_engineer_Model();
$engineers = $device_engineer_model->where('device_id',$this_ip->iface->device->id)->find_all();
$arr_engineers = array();
foreach ($engineers as $engineer) $arr_engineers[] = $engineer->user->name.' '.$engineer->user->surname;
$count_engineers = count($arr_engineers);
$engineer_names = implode(', ',$arr_engineers);
$user_name = $this_ip->iface->device->user->name.' '.$this_ip->iface->device->user->surname;
}
$ip = ip2long($ip_address);
$subnet_model = new Subnet_Model();
$subnets = $subnet_model
->select("id","name","network_address as net_str",
"inet_aton(network_address) as net",
"32-log2((~inet_aton(netmask) & 0xffffffff) + 1) as mask")
->find_all();
$arr_subnets = Array();
foreach($subnets as $subnet)
{
$mask=0xffffffff<<(32-$subnet->mask) & 0xffffffff;
if(($ip & $mask)==$subnet->net) $arr_subnets[] = $subnet;
}
if (count($arr_subnets) == 0)
{
$this->session->set_flash('message', url_lang::lang('texts.Your IP address has not been found in database.'));
url::redirect(url_lang::base().'members/show/'.$this->session->get('member_id'));
}
$subnet = $arr_subnets[0];
$arr_ip = explode('.', $subnet->net_str);
$arr_ip[3]++;
$gateway_ip = implode('.',$arr_ip);
$ap = $ip_address_model->where('ip_address',$gateway_ip)->find();
if ($ap->iface_id!=NULL)
{
$segment_name = $ap->iface->segment->name;
$gateway_name = $ap->iface->device->name;
$device_id = $ap->iface->device->id;
$vlan_iface_name = '';
}
else if ($ap->vlan_iface_id!=NULL)
{
//$segment_name = $ap->vlan_iface->iface->segment->name;
$segment_name = '';
$gateway_name = $ap->vlan_iface->iface->device->name;
$device_id = $ap->vlan_iface->iface->device->id;
$vlan_iface_name = $ap->vlan_iface->name;
}
$device_admin_model = new Device_admin_Model();
$device_admins = $device_admin_model->where('device_id',$device_id)->find_all();
$admins = Array();
$contact_model = new Contact_Model();
$contacts = array();
foreach($device_admins as $device_admin)
{
$admins[] = $device_admin->user;
$contacts[$device_admin->user->id] = $contact_model->where('user_id',$device_admin->user->id)->find_all();
}
$contact_type_names = Array();
$enum_type_model = new Enum_type_Model();
$translation_model = new Translation_Model();
$contact_types = $enum_type_model->where('type_id',Enum_type_Model::$contact_type_id)->find_all();
foreach ($contact_types as $contact_type)
{
$contact_type_names[$contact_type->id] = $translation_model->get_translation($contact_type->value);
}
$view = new View('main');
$view->title = url_lang::lang('texts.Information');
$view->content = new View('redirect/ip_info');
$view->content->ip_address = $ip_address;
$view->content->mac = $mac;
$view->content->user_name = $user_name;
$view->content->count_engineers = $count_engineers;
$view->content->engineer_names = $engineer_names;
$view->content->device_name = $device_name;
$view->content->device_type = $device_type;
$view->content->subnet_name = $subnet->name;
$view->content->segment_name = $segment_name;
$view->content->gateway_name = $gateway_name;
$view->content->gateway_ip = $gateway_ip;
$view->content->vlan_iface_name = $vlan_iface_name;
$view->content->admins = $admins;
$view->content->contacts = $contacts;
$view->content->contact_types = $contact_type_names;
$view->render(TRUE);
}
}
?>
freenetis/trunk/kohana/application/libraries/MY_Controller.php
// database connection
if(!$this->test_db())
{
$this->error(DATABASE);
// this error message does not work
//$this->error(DATABASE);
echo url_lang::lang('states.Failed to connect to database');
die();
}
// database upgrade goes here
......
switch ($type)
{
case $this->ICON_ERROR:
$view->title = 'Error';
$view->title = url_lang::lang('texts.Error');
$view->content->icon = html::image(array('src' => 'media/images/states/error.png', 'width' => '100', 'height' => '100', 'alt' => 'Image', 'class' => 'noborder'));
break;
case $this->ICON_GOOD:
$view->title = 'Good';
$view->title = url_lang::lang('texts.Good');
$view->content->icon = html::image(array('src' => 'media/images/states/good.png', 'width' => '100', 'height' => '100', 'alt' => 'Image', 'class' => 'noborder'));
break;
case $this->ICON_HELP:
$view->title = 'Help';
$view->title = url_lang::lang('texts.Help');
$view->content->icon = html::image(array('src' => 'media/images/states/help.png', 'width' => '100', 'height' => '100', 'alt' => 'Image', 'class' => 'noborder'));
break;
case $this->ICON_INFO:
$view->title = 'Info';
$view->title = url_lang::lang('texts.Info');
$view->content->icon = html::image(array('src' => 'media/images/states/info.png', 'width' => '100', 'height' => '100', 'alt' => 'Image', 'class' => 'noborder'));
break;
case $this->ICON_WARNING:
$view->title = 'Warning';
$view->title = url_lang::lang('texts.Warning');
$view->content->icon = html::image(array('src' => 'media/images/states/warning.png', 'width' => '100', 'height' => '100', 'alt' => 'Image', 'class' => 'noborder'));
break;
}
freenetis/trunk/kohana/application/views/devices_show.php
<?php
echo ($message = $this->session->get('message')) ? '<div class="message">'.$message.'</div>' : '';
if ($this->acl_check_view(get_class($this),'devices',$device->user->id))
$links = array();
if ($this->acl_check_view(get_class($this), 'devices', $device->user->member_id))
$links[] = html::anchor(url_lang::base().'devices/show_by_user/'.$device->user->id, url_lang::lang('texts.Back to devices of user'));
if($this->acl_check_edit(get_class($this),'devices'))
if($this->acl_check_edit(get_class($this), 'devices'))
$links[] = html::anchor(url_lang::base().'devices/edit/'.$device->id, url_lang::lang('texts.Edit'));
echo implode(' | ', $links)
?>
<br />

Také k dispozici: Unified diff