Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 322

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

Pridana moznost ukoncit clenstvi.

Zobrazit rozdíly:

freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php
'editing of member' => 'Úprava člena',
'editing of user' => 'Úprava uživatele',
'email' => 'E-mail',
'end membership' => 'Ukončit členství',
'engineer' => 'Technik',
'engineers' => 'Technici',
'entrance date' => 'Datum vstupu',
......
'ip addresses' => 'IP adresy',
'it is possible to deduct fees only in one year' => 'Členské příspěvky je možné strhávat jen v rámci jednoho roku.',
'language' => 'Jazyk',
'leaving date' => 'Datum vystoupení',
'list of all invoices' => 'Seznam všech faktur',
'list of all members' => 'Seznam všech členů',
'list of all transactions' => 'Seznam všech převodů',
freenetis/trunk/kohana/application/models/member.php
}
/**
* Gets list of all members from database.
* Function gets list of all members from database.
* @param $limit_from starting row
* @param $limit_results number of rows
* @param $order_by sorting column
......
*/
public function get_all_members($limit_from = 0, $limit_results = 50, $order_by = 'm.id', $order_by_direction = 'ASC', $filter_values = array())
{
// old version without filtering
//return self::$db->query('select m.id, m.registration, concat(u.surname,\' \',u.name) as name, ifnull(m.street,\'-\') as street,
// ifnull(m.street_number,\'-\') as street_number,ifnull(m.town,\'-\') as town from members m
// left join users u on m.id = u.member_id group by m.id order by name limit '.$min.','.$limit_results);
$where = '';
$phone = '';
$first = true;
foreach($filter_values as $key => $value)
{
......
if ($key == 'phone')
{
// joins table users to get phone number from user assigned to this member
$phone = ' JOIN users u ON m.id = u.member_id';
$where .= 'u.phone = \''.trim($value).'\'';
}
else
......
}
}
}
return self::$db->query('SELECT m.id, m.registration, m.name, m.street, m.street_number, m.town FROM members m '.$phone.' '.$where.' ORDER BY '.$order_by.' '.$order_by_direction.' LIMIT '.$limit_from.','.$limit_results);
return self::$db->query('
SELECT m.id, m.registration, m.name, m.street, m.street_number, m.town, u.phone
FROM members m
LEFT JOIN users u ON m.id = u.member_id
'.$where.'
ORDER BY '.$order_by.' '.$order_by_direction.'
LIMIT '.$limit_from.','.$limit_results
);
}
/**
......
}
/**
* Counts all members.
* to do - should be rewritten like get_all_members?
* Function counts all members.
* @param $filter_values
* @return unknown_type
*/
public function count_all_members($filter_values = array())
{
$where = '';
$phone = '';
$first = true;
foreach($filter_values as $key => $value)
{
......
}
}
}
$members = self::$db->query('select m.id from members m '.$phone.' '.$where);
return count($members);
return self::$db->query('SELECT COUNT(*) AS total
FROM members m
LEFT JOIN users u ON m.id = u.member_id
'.$where)->current()->total;
}
public function get_member($id)
......
'users.id', 'member_id',
'users.name', 'middle_name', 'surname',
'pre_title', 'post_title',
'login', 'email', 'users.type', 'phone', 'birthday')
'login', 'email', 'users.type', 'phone', 'birthday', 'leaving_date')
)->from('members')
->join('enum_types', 'members.type=enum_types.id', NULL, "LEFT")
->join('users', 'users.member_id = members.id', NULL, "LEFT")
freenetis/trunk/kohana/application/controllers/members.php
protected $user_id= false;
/**
* Redirects default member address to show_all function.
* Function redirects default member address to show_all function.
* @return unknown_type
*/
function index()
......
}
/**
* Shows list of all members.
* Function shows list of all members.
* @param $limit_results
* @param $order_by
* @param $order_by_direction
* @param $page_word
* @param $page
* @return unknown_type
*/
function show_all($limit_results = 500, $order_by = 'id', $order_by_direction = 'ASC', $page_word = null, $page = 1)
......
} // end of show function
/**
* Adds new member to database. Creates special user assigned to this member.
* Function adds new member to database. Creates user of type member assigned to this member.
* @return unknown_type
*/
function add()
{
if (!$this->acl_check_new(get_class($this),'members')) Controller::error(1);
if (!$this->acl_check_new(get_class($this),'members'))
Controller::error(1);
$enum_types=new Enum_type_Model();
$types=$enum_types->get_values(Enum_type_Model::id_type_of_member);
$types[0] = '----- '.url_lang::lang('texts.select type').' -----';
asort($types);
$enum_types=new Enum_type_Model();
$types=$enum_types->get_values(Enum_type_Model::id_type_of_member);
$types[0] = '----- '.url_lang::lang('texts.select type').' -----';
asort($types);
$form = new Forge(url_lang::base().'members/add', '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Basic information'));
$form->input('membername')->label(url_lang::lang('texts.Members first name and surname').':')->rules('length[3,60]');
$form->input('login')->label(url_lang::lang('texts.username').':')
->rules('required|length[3,50]')
->callback(array($this, 'valid_username'));
$form->input('pre_title')->label(url_lang::lang('texts.pre title').':')
->rules('length[3,40]');
$form->input('name')->label(url_lang::lang('texts.name').':')->rules('required|length[3,30]');
$form->input('middle_name')->label(url_lang::lang('texts.middle name').':')->rules('length[3,30]');
$form->input('surname')->label(url_lang::lang('texts.surname').':')->rules('required|length[3,60]');
$form->input('post_title')->label(url_lang::lang('texts.post title').':')->rules('length[3,30]');
$form->dropdown('type')->label(url_lang::lang('texts.Type').':')
->options($types)->rules('required');
$form->group('')->label(url_lang::lang('texts.Password'));
$form->password('passwd')->label(url_lang::lang('texts.password').':')->rules('required|length[3,50]')->class('required');
$form->password('confirm_password')->label(url_lang::lang('texts.confirm password').':')->rules('required|length[3,50]')->matches($form->passwd);
$form->group('')->label(url_lang::lang('texts.Contact information'));
$form->input('street')->label(url_lang::lang('texts.street').':')->rules('required|length[1,200]');
$form->input('street_number')->label(url_lang::lang('texts.street number').':')->rules('required|length[1,50]');
$form->input('town')->label(url_lang::lang('texts.town').':')->rules('required|length[3,200]');
$form->input('zip_code')->label(url_lang::lang('texts.zip code').':')->rules('required|length[5,10]');
$form->input('phone')->label(url_lang::lang('texts.phone').':')->rules('required|length[9,40]')->callback(array($this, 'valid_phone'));
$form->input('email')->label(url_lang::lang('texts.email').':')
->rules('length[3,50]|valid_email')
->callback(array($this, 'valid_email'));
$form->group('')->label(url_lang::lang('texts.Account information'));
// absolete
//if ($this->acl_check_new(get_class($this),'current_credit'))
// $form->input('current_credit')->label(url_lang::lang('texts.Current credit').':')->rules('valid_numeric');
$form->input('entrance_fee')->label(url_lang::lang('texts.Entrance fee').':')->rules('valid_numeric');
$form->input('entrance_fee_left')->label(url_lang::lang('texts.Entrance fee left').':')->rules('valid_numeric');
$form->input('debt_payment_rate')->label(url_lang::lang('texts.Debit payment rate').':')->rules('valid_numeric');
$form->group('')->label(url_lang::lang('texts.Additional information'));
$form->input('qos_ceil')->label(url_lang::lang('texts.qos ceil').':')->rules('valid_numeric');
$form->input('qos_rate')->label(url_lang::lang('texts.qos rate').':')->rules('valid_numeric');
$form->date('birthday')->label(url_lang::lang('texts.birthday').':')->years(date('Y')-100, date('Y'))->rules('required');
$form->date('entrance_date')->label(url_lang::lang('texts.Entrance date').':')->years(date('Y')-100, date('Y'))->rules('required');
$form->textarea('comment')->label(url_lang::lang('texts.Comment').':')->rules('length[0,250]');
if ($this->acl_check_new(get_class($this),'must_pay'))
$form->radio('must_pay_regular_fee')->label(url_lang::lang('texts.Must pay regular fee').':')->options(array('1'=>url_lang::lang('texts.Yes'),'0'=>url_lang::lang('texts.No')))->default(1);
$form->submit('submit')->value(url_lang::lang('texts.Add'));
special::required_forge_style($form, ' *', 'required');
if($form->validate())
{
$form_data = $form->as_array();
foreach($form_data as $key => $value)
{
$form_data[$key] = htmlspecialchars($value);
}
$user = new User_Model();
$member = new Member_Model();
$account = new Account_Model();
$enum = new Enum_type_Model();
$form = new Forge(url_lang::base().'members/add', '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Basic information'));
$form->input('membername')->label(url_lang::lang('texts.Members first name and surname').':')->rules('length[3,60]');
$form->input('login')->label(url_lang::lang('texts.username').':')
->rules('required|length[3,50]')
->callback(array($this, 'valid_username'));
$form->input('pre_title')->label(url_lang::lang('texts.pre title').':')
->rules('length[3,40]');
$form->input('name')->label(url_lang::lang('texts.name').':')->rules('required|length[3,30]');
$form->input('middle_name')->label(url_lang::lang('texts.middle name').':')->rules('length[3,30]');
$form->input('surname')->label(url_lang::lang('texts.surname').':')->rules('required|length[3,60]');
$form->input('post_title')->label(url_lang::lang('texts.post title').':')->rules('length[3,30]');
$form->dropdown('type')->label(url_lang::lang('texts.Type').':')
->options($types)->rules('required');
$form->group('')->label(url_lang::lang('texts.Password'));
$form->password('passwd')->label(url_lang::lang('texts.password').':')->rules('required|length[3,50]')->class('required');
$form->password('confirm_password')->label(url_lang::lang('texts.confirm password').':')->rules('required|length[3,50]')->matches($form->passwd);
$form->group('')->label(url_lang::lang('texts.Contact information'));
$form->input('street')->label(url_lang::lang('texts.street').':')->rules('required|length[1,200]');
$form->input('street_number')->label(url_lang::lang('texts.street number').':')->rules('required|length[1,50]');
$form->input('town')->label(url_lang::lang('texts.town').':')->rules('required|length[3,200]');
$form->input('zip_code')->label(url_lang::lang('texts.zip code').':')->rules('required|length[5,10]');
$form->input('phone')->label(url_lang::lang('texts.phone').':')->rules('required|length[9,40]')->callback(array($this, 'valid_phone'));
$form->input('email')->label(url_lang::lang('texts.email').':')
->rules('length[3,50]|valid_email')
->callback(array($this, 'valid_email'));
$form->group('')->label(url_lang::lang('texts.Account information'));
if ($this->acl_check_new(get_class($this),'current_credit'))
$form->input('current_credit')->label(url_lang::lang('texts.Current credit').':')->rules('valid_numeric');
$form->input('entrance_fee')->label(url_lang::lang('texts.Entrance fee').':')->rules('valid_numeric');
$form->input('entrance_fee_left')->label(url_lang::lang('texts.Entrance fee left').':')->rules('valid_numeric');
$form->input('debt_payment_rate')->label(url_lang::lang('texts.Debit payment rate').':')->rules('valid_numeric');
$form->group('')->label(url_lang::lang('texts.Additional information'));
$form->input('qos_ceil')->label(url_lang::lang('texts.qos ceil').':')->rules('valid_numeric');
$form->input('qos_rate')->label(url_lang::lang('texts.qos rate').':')->rules('valid_numeric');
$form->date('birthday')->label(url_lang::lang('texts.birthday').':')->years(date('Y')-100, date('Y'))->rules('required');
$form->date('entrance_date')->label(url_lang::lang('texts.Entrance date').':')->years(date('Y')-100, date('Y'))->rules('required');
$form->textarea('comment')->label(url_lang::lang('texts.Comment').':')->rules('length[0,250]');
//$account->type_id = $enum->get_type_id('credit');
$account->account_attribute_id = Account_attribute_Model::$credit;
$account->name = $form_data['surname'].' '.$form_data['name'];
//if ($this->acl_check_new(get_class($this),'current_credit'))
// $account->start_amount = $form_data['current_credit'];
$user->name = $form_data['name'];
$user->middle_name = $form_data['middle_name'];
$user->login = $form_data['login'];
$user->surname = $form_data['surname'];
$user->pre_title = $form_data['pre_title'];
$user->post_title = $form_data['post_title'];
$user->birthday = date("Y-m-d",$form_data['birthday']);
$user->phone = $form_data['phone'];
$user->email = $form_data['email'];
$user->password = sha1($form_data['passwd']);
$user->type = User_Model::$member;
$member->type = $form_data['type'];
$member->comment = $form_data['comment'];
$member->entrance_date = date("Y-m-d",$form_data['entrance_date']);
if ($form_data['membername'] == '')
$member->name = $form_data['name'].' '.$form_data['surname'];
else
$member->name = $form_data['membername'];
$member->street = $form_data['street'];
$member->street_number = $form_data['street_number'];
$member->town = $form_data['town'];
$member->ZIP_code = $form_data['zip_code'];
$member->qos_ceil = $form_data['qos_ceil'];
$member->qos_rate = $form_data['qos_rate'];
$member->entrance_fee = $form_data['entrance_fee'];
$member->entrance_fee_left = $form_data['entrance_fee_left'];
$member->debt_payment_rate = $form_data['debt_payment_rate'];
// current credit shouldn't be saved, it is always calculated from transfers
//if ($this->acl_check_new(get_class($this),'current_credit'))
// $member->current_credit = $form_data['current_credit'];
if ($this->acl_check_new(get_class($this),'must_pay'))
$form->radio('must_pay_regular_fee')->label(url_lang::lang('texts.Must pay regular fee').':')->options(array('1'=>url_lang::lang('texts.Yes'),'0'=>url_lang::lang('texts.No')))->default(1);
$member->must_pay_regular_fee = $form_data['must_pay_regular_fee'];
$form->submit('submit')->value(url_lang::lang('texts.Add'));
special::required_forge_style($form, ' *', 'required');
$member_saved = $member->save();
if($form->validate())
$user->member_id = $member->id;
$account->member_id = $member->id;
$user_saved = $user->save();
Controller::insert_phpgacl($user->id,$user->surname.' '.$user->name,$user->login,$form_data['type']);
unset($form_data);
if ($member_saved && $user_saved && $account->save())
{
$form_data = $form->as_array();
foreach($form_data as $key => $value)
{
$form_data[$key] = htmlspecialchars($value);
}
$user = new User_Model();
$member = new Member_Model();
$account = new Account_Model();
$enum = new Enum_type_Model();
//$account->type_id = $enum->get_type_id('credit');
$account->account_attribute_id = Account_attribute_Model::$credit;
$account->name = $form_data['surname'].' '.$form_data['name'];
//if ($this->acl_check_new(get_class($this),'current_credit'))
// $account->start_amount = $form_data['current_credit'];
$user->name = $form_data['name'];
$user->middle_name = $form_data['middle_name'];
$user->login = $form_data['login'];
$user->surname = $form_data['surname'];
$user->pre_title = $form_data['pre_title'];
$user->post_title = $form_data['post_title'];
$user->birthday = date("Y-m-d",$form_data['birthday']);
$user->phone = $form_data['phone'];
$user->email = $form_data['email'];
$user->password = sha1($form_data['passwd']);
$user->type = User_Model::$member;
$member->type = $form_data['type'];
$member->comment = $form_data['comment'];
$member->entrance_date = date("Y-m-d",$form_data['entrance_date']);
if ($form_data['membername'] == '')
$member->name = $form_data['name'].' '.$form_data['surname'];
else
$member->name = $form_data['membername'];
$member->street = $form_data['street'];
$member->street_number = $form_data['street_number'];
$member->town = $form_data['town'];
$member->ZIP_code = $form_data['zip_code'];
$member->qos_ceil = $form_data['qos_ceil'];
$member->qos_rate = $form_data['qos_rate'];
$member->entrance_fee = $form_data['entrance_fee'];
$member->entrance_fee_left = $form_data['entrance_fee_left'];
$member->debt_payment_rate = $form_data['debt_payment_rate'];
// current credit shouldn't be saved, it should be always calculated from money transfers
if ($this->acl_check_new(get_class($this),'current_credit'))
$member->current_credit = $form_data['current_credit'];
if ($this->acl_check_new(get_class($this),'must_pay'))
$member->must_pay_regular_fee = $form_data['must_pay_regular_fee'];
$member_saved = $member->save();
$user->member_id = $member->id;
$account->member_id = $member->id;
$user_saved = $user->save();
Controller::insert_phpgacl($user->id,$user->surname.' '.$user->name,$user->login,$form_data['type']);
unset($form_data);
if ($member_saved && $user_saved && $account->save())
{
$this->session->set_flash('message', url_lang::lang('texts.Member successfully added.'));
url::redirect(url_lang::base().'members/show/'.(int)$member->id);
}
else
{
$this->session->set_flash('message', url_lang::lang('texts.Error - cant add new member.'));
}
$this->session->set_flash('message', url_lang::lang('texts.Member successfully added.'));
url::redirect(url_lang::base().'members/show/'.(int)$member->id);
}
else
{
$view->form = new View('registration');
$view = new View('template');
$view->header = new View('base/header');
$view->content = new View('members_add');
$view->footer = new View('base/footer');
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.Add new member');
$view->header->other_styles = html::stylesheet('media/css/forms.css');
$view->content->form = $form->html();
$this->session->set_flash('message', url_lang::lang('texts.Error - cant add new member.'));
}
}
else
{
$view->form = new View('registration');
$view = new View('template');
$view->header = new View('base/header');
$view->content = new View('members_add');
$view->footer = new View('base/footer');
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.Add new member');
$view->header->other_styles = html::stylesheet('media/css/forms.css');
$view->content->form = $form->html();
$view->render(TRUE);
}
$view->render(TRUE);
}
} // end of add function
/**
* Creates form for editing member.
* Form for editing member.
* @param $member_id id of member to edit
* @return unknown_type
*/
......
->callback(array($this, 'valid_email'))->value($member_data->email);
$form->group('')->label(url_lang::lang('texts.Account information'));
if ($this->acl_check_edit(get_class($this),'currentcredit',$member_id))
$form->input('current_credit')->label(url_lang::lang('texts.Current credit').':')->rules('valid_numeric')->value($member_data->current_credit);
// current credit is absolete, now it is calculated from transfers
//if ($this->acl_check_edit(get_class($this),'currentcredit',$member_id))
// $form->input('current_credit')->label(url_lang::lang('texts.Current credit').':')->rules('valid_numeric')->value($member_data->current_credit);
if ($this->acl_check_edit(get_class($this),'en_fee',$member_id))
$form->input('entrance_fee')->label(url_lang::lang('texts.Entrance fee').':')->rules('valid_numeric')->value($member_data->entrance_fee);
if ($this->acl_check_edit(get_class($this),'en_fee_left',$member_id))
......
$form->date('birthday')->label(url_lang::lang('texts.birthday').':')->years(date('Y')-100, date('Y'))->rules('required')->value(strtotime($member_data->birthday));
if ($this->acl_check_edit(get_class($this),'entrance_date',$member_id))
$form->date('entrance_date')->label(url_lang::lang('texts.Entrance date').':')->years(date('Y')-100, date('Y'))->rules('required')->value(strtotime($member_data->entrance_date));
// to do - access rights
//if ($this->acl_check_edit(get_class($this),'leaving_date',$member_id))
//{
$form->checkbox('end_membership')->label(url_lang::lang('texts.End membership'))->value('0')->checked(false);
$form->date('leaving_date')->label(url_lang::lang('texts.Leaving date').':')->years(date('Y')-10, date('Y'))->value(strtotime(date('Y-m-d')));
//}
if ($this->acl_check_edit(get_class($this),'comment',$member_id))
$form->textarea('comment')->label(url_lang::lang('texts.Comment').':')->rules('length[0,250]')->value($member_data->comment);
if ($this->acl_check_edit(get_class($this),'must_pay',$member_id))
......
if ($this->acl_check_edit(get_class($this),'entrance_date',$member_id))
$member_data->entrance_date = date("Y-m-d",$form_data['entrance_date']);
// to do - access rights
//if ($this->acl_check_edit(get_class($this),'entrance_date',$member_id))
//{
if ($form_data['end_membership'] == 1)
$member_data->leaving_date = date("Y-m-d", $form_data['leaving_date']);
//}
if ($this->acl_check_edit(get_class($this),'name',$member_id))
$member_data->name = $form_data['membername'];
if ($this->acl_check_edit(get_class($this),'address',$member_id)) {
......
$member_data->entrance_fee_left = $form_data['entrance_fee_left'];
if ($this->acl_check_edit(get_class($this),'debit',$member_id))
$member_data->debt_payment_rate = $form_data['debt_payment_rate'];
if ($this->acl_check_edit(get_class($this),'currentcredit',$member_id))
$member_data->current_credit = $form_data['current_credit'];
// absolete
//if ($this->acl_check_edit(get_class($this),'currentcredit',$member_id))
// $member_data->current_credit = $form_data['current_credit'];
if ($this->acl_check_edit(get_class($this),'must_pay',$member_id))
$member_data->must_pay_regular_fee = $form_data['must_pay_regular_fee'];
$member_saved = $member_data->save();
$user_data->member_id = $member_data->id;
if ($this->acl_check_3D('freenetis', 'edit_own', 'edit_type'))
Controller::insert_phpgacl($user_data->id,$user_data->surname.' '.$user_data->name,$user_data->login,$form_data['type'], true);
......
$this->session->set_flash('message', url_lang::lang('texts.Error - cant update member.'));
}
url::redirect(url_lang::base().'members/show/'.(int)$member_id);
}
else
{
$view->form = new View('registration');
$view = new View('template');
$view->header = new View('base/header');
$view->content = new View('members_edit');
$view->footer = new View('base/footer');
freenetis/trunk/kohana/application/views/members_show.php
<td><?php echo $member_data->entrance_date ?></td>
</tr>
<?php } ?>
<?php // to do - access rights?>
<?php //if (($member_data->member_id == $_SESSION['member_id'] && $this->gacl_class->acl_check('freenetis', 'view_own', 'all', $_SESSION['username'],get_class($this),'entrance_date')) OR ($this->gacl_class->acl_check('freenetis', 'view_all', 'all', $_SESSION['username'],get_class($this),'entrance_date'))) { ?>
<tr>
<th><?php echo url_lang::lang('texts.Leaving date') ?></th>
<td><?php echo $member_data->leaving_date ?></td>
</tr>
<?php //} ?>
<?php if (($member_data->member_id == $_SESSION['member_id'] && $this->gacl_class->acl_check('freenetis', 'view_own', 'all', $_SESSION['username'],get_class($this),'comment')) OR ($this->gacl_class->acl_check('freenetis', 'view_all', 'all', $_SESSION['username'],get_class($this),'comment'))) { ?>
<tr>
<th><?php echo url_lang::lang('texts.Comment') ?></th>

Také k dispozici: Unified diff