Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 619

Přidáno uživatelem Roman Ševčík před více než 14 roky(ů)

Opraveno mnoho menších byb. Dokončeno zakladní rozhraní pro VoIP. Aktuálně lze vytářet a upravovat VoIP účty a vytvářet převody na dobití kreditu.

Zobrazit rozdíly:

freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php
'registration form' => 'Registrační formulář',
'regular member' => 'Řádný člen',
'regular members' => 'Řádní členové',
'recharge voip credit' => 'Dobít VoIP kredit',
'recharging of voip credit' => 'Dobítí VoIP kreditu',
'remove' => 'Odebrat',
'remove broadcast ip address' => 'Odebrat IP adresu broadcastu',
'remove network ip address' => 'Odebrat IP adresu sítě',
freenetis/trunk/kohana/application/models/transfer.php
// special types of transfers
public static $deduct_member_fee = 1;
public static $deduct_entrance_fee = 2;
public static $deduct_voip_unnaccounted_fee = 3;
public static $deduct_voip_accounted_fee = 4;
// groups of transfers
public static $all_transfers = 1;
......
public static $inbound_and_outbound = 1;
public static $inbound = 2;
public static $outbound = 3;
/**
* Function gets all double-entry transfer. They are shown in day book.
freenetis/trunk/kohana/application/models/voip_sip.php
}
/**
* Function gets record by member.
* @param $user_id
* @return unknown_type
*/
public function cout_record_by_member($member_id)
{
$sips = self::$db->query("SELECT v.id
FROM voip_sips AS v
INNER JOIN users AS u ON v.user_id = u.id
WHERE u.member_id =$member_id"
);
return count($sips);
}
/**
* Function gets one record.
* @param $id
......
* @param $id
* @return unknown_type
*/
public function get_all_record_by_member_limited($id)
public function get_all_record_by_member_limited($member_id)
{
return self::$db->query("SELECT
id,
name,
user_id
FROM voip_sips WHERE user_id IN (SELECT user_id FROM users WHERE member_id='.$id.') ORDER BY name"
return self::$db->query("SELECT v.id, v.name, v.user_id
FROM voip_sips v
INNER JOIN users u ON v.user_id = u.id
WHERE u.member_id =$member_id"
);
}
freenetis/trunk/kohana/application/controllers/members.php
$voip_sip = new Voip_sip_Model();
$voip = $voip_sip->get_all_record_by_member_limited($member_id);
$voip = $voip_sip->get_all_record_by_member_limited($member_id);
$voip_grid = new Grid(url_lang::base().'members', null, array(
'separator' => '<br /><br />',
'use_paginator' => false,
......
'order_by_direction' => $order_by_direction,
'variables' => $member_id.'/'
));
//$voip_grid->order_field('id')->label('ID');
//$voip_grid->order_field('id')->label('ID');
$voip_grid->field('name')->label(url_lang::lang('texts.Number'));
$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);
$voip_grid->datasource($voip);
// view
$view = new View('main');
$view->title = url_lang::lang('texts.Display member');
freenetis/trunk/kohana/application/controllers/transfers.php
'filter' => $filter->view
));
if ($this->acl_check_view('Accounts_Controller', 'accounts'))
$grid->add_new_button(url_lang::base().'members/show/'.$account->member_id, url_lang::lang('texts.Back to the member'));
$grid->add_new_button(url_lang::base().'members/show/'.$account->member_id, url_lang::lang('texts.Back to the member'));
if ($this->acl_check_new('Accounts_Controller', 'transfers', $account->member_id))
{
$grid->add_new_button(url_lang::base().'transfers/add/'.$account_id, url_lang::lang('texts.Send money to other account'));
$voip_sip = new Voip_sip_Model();
if ($voip_sip->cout_record_by_member($this->session->get('member_id')) > 0)
$grid->add_new_button(url_lang::base().'transfers/add_voip/'.$account_id, url_lang::lang('texts.Recharge VoIP credit'));
}
if ($account->account_attribute_id == Account_attribute_Model::$credit)
{
if ($this->acl_check_edit('Accounts_Controller', 'transfers'))
......
$form->dropdown('oname')->label(url_lang::lang('texts.Origin account'))->options($arr_orig_accounts);
$form->dropdown('aname')->label(url_lang::lang('texts.Destination credit account').':')->options($arr_dst_accounts)->rules('required')->selected($operating->id);
$form->date('datetime')->label(url_lang::lang('texts.Date and time').':')->years(date('Y')-20, date('Y'))->rules('required');
$form->input('amount')->label(url_lang::lang('texts.Amount').':')->rules('required|valid_numeric')->callback(array($this, 'valid_amount'));
$form->input('amount')->label(url_lang::lang('texts.Amount').':')->rules('required|valid_numeric')->callback(array($this, 'valid_amount_to_send'));
$form->input('text')->label(url_lang::lang('texts.Text'))->rules('required');
$form->submit('submit')->value(url_lang::lang('texts.Send'));
special::required_forge_style($form, ' *', 'required');
......
$view->content->link_back = html::anchor(url_lang::base().'transfers/show_by_account/'.$origin_account, url_lang::lang('texts.Back to transfers of account'));
$view->render(TRUE);
}
/**
* Function adds VoIP transfers.
* @author Roman Sevcik
* @param $origin_account
* @return unknown_type
*/
function add_voip($origin_account = NULL)
{
$voip_sip = new Voip_sip_Model();
if ($voip_sip->cout_record_by_member($this->session->get('member_id')) < 1)
url::redirect(url_lang::base().'transfers/show_by_account/'.$origin_account);
if (isset($origin_account)) { // transfer from specific account ?
$this->origin = $origin_account; // save for callback function valid_amount_to_send
$origin_acc = new Account_Model($origin_account);
if ($origin_acc->id == 0)
Controller::error(RECORD);
if (!$this->acl_check_new('Accounts_Controller', 'transfers', $origin_acc->member_id)) // does the user have rights for this?
Controller::error(ACCESS);
$dst_account_model = new Account_Model(); // yes = create object of all accounts except the origin one
$dst_accounts = $dst_account_model->get_some_doubleentry_account_names($origin_account);
} else { // transfer from any (arbitrary) account
if (!$this->acl_check_new('Accounts_Controller', 'transfers')) // Does the user have the rights for this?
Controller::error(ACCESS);
$origin_acc = new Account_Model(); // yes = create object of all accounts
$dst_accounts = $origin_accounts = $origin_acc->get_some_doubleentry_account_names();
}
foreach ($dst_accounts as $dst_account) { // convert the object into array (used for HTML select list)
$arr_dst_accounts[$dst_account->id] =
"$dst_account->name, $dst_account->addr - ".url_lang::lang('texts.Account ID')." $dst_account->id - "
.url_lang::lang('texts.Member ID')." $dst_account->member_id - "
.url_lang::lang('texts.Account type'). " $dst_account->account_attribute_id";
}
asort($arr_dst_accounts);
if (!isset($origin_account)) // for transfer from any account, use the same array for origin account list
$arr_orig_accounts=$arr_dst_accounts;
else
$arr_orig_accounts[$origin_acc->id] =
"$origin_acc->name - ".url_lang::lang('texts.Account ID')." $origin_acc->name - "
.url_lang::lang('texts.Member ID')." $origin_acc->member_id";
// form
$form = new Forge(url_lang::base().'transfers/add_voip/'.$origin_account, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Transfer'));
$form->dropdown('oname')->label(url_lang::lang('texts.Origin account'))->options($arr_orig_accounts);
$form->date('datetime')->label(url_lang::lang('texts.Date and time').':')->years(date('Y')-20, date('Y'))->rules('required');
$form->input('amount')->label(url_lang::lang('texts.Amount').':')->rules('required|valid_numeric')->callback(array($this, 'valid_amount_to_send'));
$form->submit('submit')->value(url_lang::lang('texts.Send'));
special::required_forge_style($form, ' *', 'required');
if ($form->validate())
{
// default destination account
$operating = ORM::factory('account')->where('account_attribute_id', Account_attribute_Model::$operating)->find();
$text = url_lang::lang('texts.Recharging of VoIP credit');
$form_data = $form->as_array();
foreach($form_data as $key => $value)
{
$form_data[$key] = htmlspecialchars($value);
}
$transfer = new Transfer_Model();
$transfer->origin_id = $form_data['oname'];
$transfer->destination_id = $operating->id;
$transfer->user_id = $this->session->get('user_id');
$transfer->type = Transfer_Model::$deduct_voip_unnaccounted_fee;
$transfer->datetime = date('Y-m-d', $form_data['datetime']);
$transfer->creation_datetime = date('Y-m-d H:i:s', time());
$transfer->text = $text;
$transfer->amount = $form_data['amount'];
if ($transfer->save())
{
$this->session->set_flash('message', url_lang::lang('texts.Transfer has been successfully added'));
url::redirect(url_lang::base().'transfers/show_by_account/'.$origin_account);
}
}
$headline = url_lang::lang('texts.Add new transfer');
$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_by_account/'.$origin_account, url_lang::lang('texts.Back to transfers of account'));
$view->render(TRUE);
}
/**
* Function edits double-entry transfers. They should not be edited.
* Wrong transfer should be solved by new transfer.
......
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Basic information'));
$form->input('text')->label(url_lang::lang('texts.Text').':')->rules('required|length[3,50]')->value($transfer->text);
$form->input('amount')->label(url_lang::lang('texts.Amount').':')->rules('required')->value($transfer->amount)->callback(array($this, 'valid_amount'));
$form->input('amount')->label(url_lang::lang('texts.Amount').':')->rules('required')->value($transfer->amount)->callback(array($this, 'valid_amount'));
$form->submit('submit')->value(url_lang::lang('texts.Edit'));
special::required_forge_style($form, ' *', 'required');
if($form->validate())
......
$form->input('amount')->label(url_lang::lang('texts.Amount').':')->rules('required|valid_numeric')->callback(array($this, 'valid_amount'));
$form->input('text')->label(url_lang::lang('texts.Text'))->value(url_lang::lang('texts.Member fee payment by cash'))->rules('required');
$form->group('')->label(url_lang::lang('texts.Transfer fee'));
$form->input('transfer_fee')->label(url_lang::lang('texts.Amount').':')->value($transfer_fee)->rules('required|valid_numeric');
$form->input('transfer_fee')->label(url_lang::lang('texts.Amount').':')->value($transfer_fee)->rules('valid_numeric')->callback(array($this, 'valid_fee'));
$form->input('fee_text')->label(url_lang::lang('texts.Text').':')->value(url_lang::lang('texts.Transfer fee'));
$form->submit('submit')->value(url_lang::lang('texts.Add'));
special::required_forge_style($form, ' *', 'required');
......
$input->add_error('required', url_lang::lang('texts.Error - amount has to be positive.'));
}
}
/**
* Function validates amount of money in editing.
* @param $input
* @return unknown_type
*/
function valid_fee($input)
{
if ($input->value < 0)
{
$input->add_error('required', url_lang::lang('texts.Error - amount has to be positive.'));
}
}
/**
* Function validates number of months in function deduct_fees.

Také k dispozici: Unified diff