Revize 2154
Přidáno uživatelem Ondřej Fibich před asi 11 roky(ů)
freenetis/branches/1.1/application/vendors/axo_doc/axo_doc.xml | ||
---|---|---|
<axo usage_type="access" section="Private_phone_contacts_Controller" value="contacts" action="delete" own="true"></axo>
|
||
</method>
|
||
</object>
|
||
<object name="redirect" type="controller">
|
||
<object name="redirect" type="controller" comment-en="Manages redirections - activation, viewing and deleting" comment-cs="Spravuje přesměrování - aktivaci, zobrazení a mazání">
|
||
<method name="__construct"></method>
|
||
<method name="index"></method>
|
||
<method name="show_all">
|
||
<!-- show_all(
|
||
$limit_results = 50, $order_by = 'ip_address',
|
||
$order_by_direction = 'desc', $page_word = null, $page = 1)
|
||
{
|
||
// access rights
|
||
if (!$this->acl_check_view('Redirect_Controller', 'redirect'))
|
||
Controller::error(ACCESS);
|
||
|
||
if (is_numeric($this->input->post('record_per_page')))
|
||
$limit_results = (int) $this->input->post('record_per_page');
|
||
|
||
$allowed_order_type = array('ip_address', 'name', 'datetime', 'member_id');
|
||
|
||
if (!in_array(strtolower($order_by), $allowed_order_type))
|
||
$order_by = 'ip_address';
|
||
|
||
if (strtolower($order_by_direction) != 'asc')
|
||
{
|
||
$order_by_direction = 'desc';
|
||
}
|
||
|
||
$filter_form = new Filter_form('mip');
|
||
|
||
$filter_form->add('ip_address')
|
||
->type('network_address')
|
||
->class(array
|
||
(
|
||
Filter_form::OPER_IS => 'ip_address',
|
||
Filter_form::OPER_IS_NOT => 'ip_address',
|
||
Filter_form::OPER_NETWORK_IS_IN => 'cidr',
|
||
Filter_form::OPER_NETWORK_IS_NOT_IN => 'cidr',
|
||
));
|
||
|
||
$filter_form->add('member_name')
|
||
->type('combo')
|
||
->callback('json/member_name');
|
||
|
||
$filter_form->add('type')
|
||
->type('select')
|
||
->values(array
|
||
(
|
||
Message_Model::INTERRUPTED_MEMBERSHIP_MESSAGE => __('Membership interrupt'),
|
||
Message_Model::DEBTOR_MESSAGE => __('Debtor'),
|
||
Message_Model::PAYMENT_NOTICE_MESSAGE => __('Payment notice'),
|
||
Message_Model::UNALLOWED_CONNECTING_PLACE_MESSAGE => __('Unallowed connecting place'),
|
||
Message_Model::CONNECTION_TEST_EXPIRED => __('Connection test expired'),
|
||
Message_Model::USER_MESSAGE => __('User message')
|
||
));
|
||
|
||
$filter_form->add('datetime')
|
||
->type('date')
|
||
->label(__('Date and time'));
|
||
|
||
$filter_form->add('comment');
|
||
|
||
// model
|
||
$message_model = new Message_Model();
|
||
$total_redirections = $message_model->count_all_redirections($filter_form->as_sql());
|
||
|
||
if (($sql_offset = ($page - 1) * $limit_results) > $total_redirections)
|
||
$sql_offset = 0;
|
||
|
||
$redirections = $message_model->get_all_redirections(
|
||
$sql_offset, $limit_results, $order_by, $order_by_direction,
|
||
$filter_form->as_sql()
|
||
);
|
||
|
||
$headline = __('Activated redirections');
|
||
|
||
$grid = new Grid('redirect/show_all', null, array
|
||
(
|
||
'current' => $limit_results,
|
||
'selector_increace' => 50,
|
||
'selector_min' => 50,
|
||
'selector_max_multiplier'=> 10,
|
||
'base_url' => Config::get('lang').'/redirect/show_all/'
|
||
. $limit_results.'/'.$order_by.'/'.$order_by_direction,
|
||
'uri_segment' => 'page',
|
||
'total_items' => $total_redirections,
|
||
'items_per_page' => $limit_results,
|
||
'style' => 'classic',
|
||
'order_by' => $order_by,
|
||
'order_by_direction' => $order_by_direction,
|
||
'limit_results' => $limit_results,
|
||
//'url_array_ofset' => 1,
|
||
'filter' => $filter_form
|
||
));
|
||
|
||
$grid->order_callback_field('ip_address')
|
||
->label('IP address')
|
||
->callback('callback::ip_address_field');
|
||
|
||
$grid->order_callback_field('member_id')
|
||
->label('Member')
|
||
->callback('callback::member_field');
|
||
|
||
$grid->order_callback_field('message')
|
||
->label(__('Activated redirection').' '.help::hint('activated_redirection'))
|
||
->callback('callback::message_field');
|
||
|
||
$grid->order_field('datetime')
|
||
->label('Date and time');
|
||
|
||
$grid->order_field('comment');
|
||
|
||
$grid->callback_field('ip_address')
|
||
->label(__('Preview').' '.help::hint('redirection_preview'))
|
||
->callback('callback::redirection_preview_field');
|
||
|
||
$grid->datasource($redirections);
|
||
|
||
$view = new View('main');
|
||
$view->title = $headline;
|
||
$view->breadcrumbs = $headline;
|
||
$view->content = new View('show_all');
|
||
$view->content->headline = $headline;
|
||
$view->content->table = $grid;
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
/**
|
||
* Adds IP address (or including IP addreses of member, or including IP addresses in subnet)
|
||
* to junction table for redirection.
|
||
*
|
||
* @param integer $ip_address_id
|
||
*/
|
||
public -->
|
||
<axo usage_type="unknown" section="Redirect_Controller" value="redirect" action="view" own="false"></axo>
|
||
<method name="show_all" comment-en="Shows all activated redirections" comment-cs="Zobrazuje všechny aktivovaná přesměrování">
|
||
<axo usage_type="access" section="Redirect_Controller" value="redirect" action="view" own="false"></axo>
|
||
</method>
|
||
<method name="activate_to_ip_address">
|
||
<!-- activate_to_ip_address($ip_address_id = null)
|
||
{
|
||
// access rights
|
||
if (!$this->acl_check_edit('Redirect_Controller', 'redirect'))
|
||
Controller::error(ACCESS);
|
||
|
||
if (!isset($ip_address_id))
|
||
Controller::warning(PARAMETER);
|
||
|
||
// ip address
|
||
$ip = new Ip_address_Model($ip_address_id);
|
||
|
||
if (!$ip->id)
|
||
Controller::error(RECORD);
|
||
|
||
// load list of usable redirection message
|
||
$message_model = new Message_Model();
|
||
$messages = $message_model->find_all();
|
||
|
||
foreach($messages as $message)
|
||
{
|
||
// IP address can be manually redirected only to user message,
|
||
// interrupted membership message, debtor message, payment notice message
|
||
if (Message_Model::can_be_activate_directly($message->type) &&
|
||
trim($message->text) != '')
|
||
{
|
||
$message_array[$message->id] = __(''.$message->name);
|
||
}
|
||
}
|
||
// no redirection possible for ip address?
|
||
if (empty($message_array))
|
||
{
|
||
status::warning('No redirection is possible to set for this IP address.');
|
||
url::redirect('ip_addresses/show/'.$ip_address_id);
|
||
}
|
||
// form
|
||
$form = new Forge('redirect/activate_to_ip_address/'.$ip_address_id);
|
||
|
||
$form->group('Redirection of IP address');
|
||
|
||
$form->dropdown('message_id')
|
||
->label('Redirection')
|
||
->options($message_array);
|
||
|
||
$form->textarea('comment')
|
||
->label('Comment of admin shown to user');
|
||
|
||
$form->submit('Activate');
|
||
|
||
// validation
|
||
if ($form->validate())
|
||
{
|
||
$form_data = $form->as_array(FALSE);
|
||
$db = Database::instance();
|
||
// delete old redirection if present
|
||
$db->delete('messages_ip_addresses', array
|
||
(
|
||
'message_id' => $form_data['message_id'],
|
||
'ip_address_id' => $ip->id
|
||
));
|
||
// 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')
|
||
));
|
||
// set flash message
|
||
status::success('Redirection has been successfully set.');
|
||
|
||
$this->redirect(Path::instance()->previous());
|
||
}
|
||
|
||
if (Path::instance()->previous(0,1) == 'devices')
|
||
{
|
||
$device_name = $ip->iface->device->name;
|
||
|
||
if ($device_name == '')
|
||
{
|
||
$device_name = ORM::factory('enum_type')->get_value($device->type);
|
||
}
|
||
|
||
if ($ip->iface->name != '')
|
||
$iface_name = $ip->iface->name." (".$ip->iface->mac.")";
|
||
else
|
||
$iface_name = $ip->iface->mac;
|
||
|
||
// breadcrumbs menu
|
||
$breadcrumbs = breadcrumbs::add()
|
||
->link('members/show_all', 'Members',
|
||
$this->acl_check_view('Members_Controller','members'))
|
||
->disable_translation()
|
||
->link('members/show/' .
|
||
$iface->device->user->member->id,
|
||
'ID ' . $iface->device->user->member->id .
|
||
' - ' . $iface->device->user->member->name,
|
||
$this->acl_check_view(
|
||
'Members_Controller',
|
||
'members',
|
||
$iface->device->user->member->id)
|
||
)
|
||
->enable_translation()
|
||
->link('users/show_by_member/' .
|
||
$iface->device->user->member->id, 'Users',
|
||
$this->acl_check_view(
|
||
'Users_Controller', 'users',
|
||
$iface->device->user->member->id)
|
||
)
|
||
->disable_translation()
|
||
->link('users/show/' . $iface->device->user->id,
|
||
$iface->device->user->name .
|
||
' ' . $iface->device->user->surname .
|
||
' (' . $iface->device->user->login . ')',
|
||
$this->acl_check_view(
|
||
'Users_Controller', 'users',
|
||
$iface->device->user->member_id)
|
||
)
|
||
->enable_translation()
|
||
->link(
|
||
'devices/show_by_user/'.$iface->device->user_id,
|
||
'Devices', $this->acl_check_view(
|
||
'Devices_Controller',
|
||
'devices',
|
||
$iface->device->user->member_id
|
||
)
|
||
)
|
||
->link(
|
||
'devices/show/'.$iface->device_id,
|
||
$device_name, $this->acl_check_view(
|
||
'Devices_Controller', 'devices',
|
||
$iface->device->user->member_id
|
||
)
|
||
)
|
||
->link(
|
||
'devices/show_iface/'.$iface->id,
|
||
$iface_name,
|
||
$this->acl_check_view(
|
||
'Ifaces_Controller',
|
||
'iface',
|
||
$iface->device->user->member_id
|
||
)
|
||
)
|
||
->disable_translation()
|
||
->link(
|
||
'devices/show_ip_address/'.$ip->id,
|
||
$ip->ip_address,
|
||
$this->acl_check_view(
|
||
'Ip_addresses_Controller',
|
||
'ip_address',
|
||
$iface->device->user->member_id
|
||
)
|
||
);
|
||
}
|
||
else
|
||
{
|
||
|
||
$breadcrumbs = breadcrumbs::add()
|
||
->link('ip_addresses/show_all', 'IP addresses',
|
||
$this->acl_check_view('Ip_addresses_Controller', 'ip_address')
|
||
)->disable_translation()
|
||
->link('ip_addresses/show/' . $ip->id,
|
||
$ip->ip_address . ' (' . $ip->id . ')',
|
||
$this->acl_check_view('Ip_addresses_Controller', 'ip_address')
|
||
);
|
||
}
|
||
|
||
$breadcrumbs->enable_translation()->text('Redirection of IP address');
|
||
|
||
// view
|
||
$headline = __('Redirection of IP address');
|
||
$view = new View('main');
|
||
$view->title = $headline;
|
||
$view->breadcrumbs = $breadcrumbs->html();
|
||
$view->content = new View('form');
|
||
$view->content->headline = $headline;
|
||
$view->content->form = $form->html();
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
/**
|
||
* Deletes information from junction table for redirections.
|
||
*
|
||
* @param integer $ip_address_id IP address to cancel redirection
|
||
* @param integer $message_id Message to cancel redirection
|
||
* (multiple redirections for one IP address are possible)
|
||
* @param string $from Tells where return after setting this redirection
|
||
*/
|
||
public -->
|
||
<axo usage_type="unknown" section="Redirect_Controller" value="redirect" action="edit" own="false"></axo>
|
||
<axo usage_type="unknown" section="Members_Controller" value="members" action="view" own="false"></axo>
|
||
<axo usage_type="unknown" section="Members_Controller" value="members" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Users_Controller" value="users" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Users_Controller" value="users" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Devices_Controller" value="devices" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Devices_Controller" value="devices" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Ifaces_Controller" value="iface" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Ip_addresses_Controller" value="ip_address" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Ip_addresses_Controller" value="ip_address" action="view" own="false"></axo>
|
||
<axo usage_type="unknown" section="Ip_addresses_Controller" value="ip_address" action="view" own="false"></axo>
|
||
<method name="activate_to_ip_address" comment-en="Enables to activate a redirection to an IP address" comment-cs="Umožňuje aktivovat přesměrování na IP adresu">
|
||
<axo usage_type="access" section="Redirect_Controller" value="redirect" action="edit" own="false"></axo>
|
||
<axo usage_type="breadcrumbs" section="Members_Controller" value="members" action="view" own="false"></axo>
|
||
<axo usage_type="breadcrumbs" section="Members_Controller" value="members" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Users_Controller" value="users" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Users_Controller" value="users" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Devices_Controller" value="devices" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Devices_Controller" value="devices" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Ifaces_Controller" value="iface" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Ip_addresses_Controller" value="ip_address" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Ip_addresses_Controller" value="ip_address" action="view" own="false"></axo>
|
||
<axo usage_type="breadcrumbs" section="Ip_addresses_Controller" value="ip_address" action="view" own="false"></axo>
|
||
</method>
|
||
<method name="delete">
|
||
<!-- delete(
|
||
$ip_address_id = null, $message_id = null, $from = 'ip_address')
|
||
{
|
||
if (!$this->acl_check_delete('Redirect_Controller', 'redirect'))
|
||
Controller::error(ACCESS);
|
||
|
||
if (!isset($ip_address_id) || !isset($message_id))
|
||
Controller::warning(PARAMETER);
|
||
|
||
if (is_numeric($ip_address_id))
|
||
$array['ip_address_id'] = $ip_address_id;
|
||
|
||
if (is_numeric($message_id))
|
||
$array['message_id'] = $message_id;
|
||
|
||
if (isset($array) && !empty($array))
|
||
Database::instance()->delete('messages_ip_addresses', $array);
|
||
|
||
$ip = new Ip_address_Model($ip_address_id);
|
||
|
||
status::success('Redirection has been successfully canceled.');
|
||
|
||
if ($from == 'member')
|
||
{
|
||
if ($ip->iface_id)
|
||
{
|
||
$member_id = $ip->iface->device->user->member_id;
|
||
}
|
||
else
|
||
{
|
||
$member_id = $ip->member_id;
|
||
}
|
||
|
||
url::redirect('members/show/'.$member_id);
|
||
}
|
||
else
|
||
{
|
||
url::redirect('ip_addresses/show/'.$ip_address_id);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Adds all IP addresses of member to redirection.
|
||
*
|
||
* @author Jiri Svitak
|
||
* @param integer $member_id
|
||
*/
|
||
public -->
|
||
<axo usage_type="unknown" section="Redirect_Controller" value="redirect" action="delete" own="false"></axo>
|
||
<method name="delete" comment-en="Deletes member redirection" comment-cs="Zruší členské přesměrování">
|
||
<axo usage_type="access" section="Redirect_Controller" value="redirect" action="delete" own="false"></axo>
|
||
</method>
|
||
<method name="activate_to_member">
|
||
<!-- activate_to_member($member_id = null)
|
||
{
|
||
// access rights
|
||
if (!$this->acl_check_edit('Redirect_Controller', 'redirect'))
|
||
Controller::error(ACCESS);
|
||
|
||
if (!isset($member_id))
|
||
Controller::warning(PARAMETER);
|
||
|
||
// member
|
||
$member = new Member_Model($member_id);
|
||
|
||
if (!$member->id)
|
||
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)
|
||
{
|
||
// IP address can be manually redirected only to user message,
|
||
// interrupted membership message, debtor message, payment notice message
|
||
if (Message_Model::can_be_activate_directly($message->type) &&
|
||
trim($message->text) != '')
|
||
{
|
||
$message_array[$message->id] = __(''.$message->name);
|
||
}
|
||
}
|
||
}
|
||
// no redirection possible for this member?
|
||
if (empty($message_array))
|
||
{
|
||
status::warning('No redirection is possible to set for this IP address.');
|
||
url::redirect('members/show/'.$member_id);
|
||
}
|
||
// form
|
||
$form = new Forge('redirect/activate_to_member/'.$member_id);
|
||
|
||
$form->group('Redirection');
|
||
|
||
$form->dropdown('message_id')
|
||
->label('Message')
|
||
->options($message_array);
|
||
|
||
$form->textarea('comment')
|
||
->label('Comment of admin shown to user');
|
||
|
||
$form->submit('Activate');
|
||
|
||
// validation
|
||
if ($form->validate())
|
||
{
|
||
$form_data = $form->as_array(FALSE);
|
||
$db = Database::instance();
|
||
|
||
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
|
||
));
|
||
// 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')
|
||
));
|
||
}
|
||
// set flash message
|
||
status::success('Redirection has been successfully set.');
|
||
url::redirect('members/show/'.$member_id);
|
||
}
|
||
else
|
||
{
|
||
$headline = __('Activate redirection to member');
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = breadcrumbs::add()
|
||
->link('members/show_all', 'Members',
|
||
$this->acl_check_view('Members_Controller', 'members'))
|
||
->disable_translation()
|
||
->link('members/show/'.$member->id,
|
||
"ID $member->id - $member->name",
|
||
$this->acl_check_view(
|
||
'Members_Controller' ,'members', $member->id
|
||
)
|
||
)
|
||
->text($headline);
|
||
// view
|
||
$view = new View('main');
|
||
$view->title = $headline;
|
||
$view->breadcrumbs = $breadcrumbs->html();
|
||
$view->content = new View('form');
|
||
$view->content->headline = $headline;
|
||
$view->content->form = $form->html();
|
||
$view->render(TRUE);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Cancel given redirection to all IP addresses of given member.
|
||
*
|
||
* @author Jiri Svitak
|
||
* @param integer $member_id
|
||
* @param integer $message_id
|
||
*/
|
||
public -->
|
||
<axo usage_type="unknown" section="Redirect_Controller" value="redirect" action="edit" own="false"></axo>
|
||
<axo usage_type="unknown" section="Members_Controller" value="members" action="view" own="false"></axo>
|
||
<axo usage_type="unknown" section="Members_Controller" value="members" action="view" own="true"></axo>
|
||
<method name="activate_to_member" comment-en="Enables to activate a redirection to a member" comment-cs="Umožňuje aktivovat členovi přesměrování">
|
||
<axo usage_type="access" section="Redirect_Controller" value="redirect" action="edit" own="false"></axo>
|
||
<axo usage_type="breadcrumbs" section="Members_Controller" value="members" action="view" own="false"></axo>
|
||
<axo usage_type="breadcrumbs" section="Members_Controller" value="members" action="view" own="true"></axo>
|
||
</method>
|
||
<method name="delete_from_member">
|
||
<!-- delete_from_member($member_id = null, $message_id = null)
|
||
{
|
||
// access rights
|
||
if (!$this->acl_check_delete('Redirect_Controller', 'redirect'))
|
||
Controller::error(ACCESS);
|
||
|
||
if (!isset($member_id) || !isset($message_id))
|
||
Controller::warning(PARAMETER);
|
||
|
||
$db = Database::instance();
|
||
$ip_model = new Ip_address_Model();
|
||
$ips = $ip_model->get_ip_addresses_of_member($member_id);
|
||
|
||
foreach($ips as $ip)
|
||
{
|
||
$db->delete('messages_ip_addresses', array
|
||
(
|
||
'message_id' => $message_id,
|
||
'ip_address_id' => $ip->id
|
||
));
|
||
}
|
||
// set flash message
|
||
status::success('Redirection has been successfully canceled.');
|
||
url::redirect('members/show/'.$member_id);
|
||
}
|
||
|
||
/**
|
||
* Function returns redirection logo
|
||
*
|
||
* @author David Raska
|
||
*/
|
||
public -->
|
||
<axo usage_type="unknown" section="Redirect_Controller" value="redirect" action="delete" own="false"></axo>
|
||
<method name="delete_from_member" comment-en="Deletes all members redirections" comment-cs="Zruší všechny přesměrování člena">
|
||
<axo usage_type="access" section="Redirect_Controller" value="redirect" action="delete" own="false"></axo>
|
||
</method>
|
||
<method name="logo"></method>
|
||
<method name="logo" comment-en="Logo for redirection page" comment-cs="Logo pro stránku s přesměrováním"></method>
|
||
</object>
|
||
<object name="registration" type="controller">
|
||
<object name="registration" type="controller" comment-en="Registration of an applicant - this part of system is available to an unlogged user" comment-cs="Registrace žadatele o členství - tato část sytému je dostupná nepřihlášenému uživateli">
|
||
<method name="index"></method>
|
||
<method name="complete"></method>
|
||
</object>
|
||
<object name="requests" type="controller">
|
||
<object name="requests" type="controller" comment-en="Requests" comment-cs="Požadavky">
|
||
<method name="__construct"></method>
|
||
<method name="index"></method>
|
||
<method name="show_all">
|
||
<!-- show_all(
|
||
$limit_results = 100, $order_by = 'date',
|
||
$order_by_direction = 'ASC',
|
||
$page_word = null, $page = 1)
|
||
{
|
||
// access control
|
||
if (!$this->acl_check_view(get_class($this), 'request'))
|
||
Controller::error(ACCESS);
|
||
|
||
// gets new selector
|
||
if (is_numeric($this->input->post('record_per_page')))
|
||
$limit_results = (int) $this->input->post('record_per_page');
|
||
|
||
$filter_form = new Filter_form('r');
|
||
|
||
$filter_form->add('state')
|
||
->type('select')
|
||
->values(Vote_Model::get_states());
|
||
|
||
$filter_form->add('uname')
|
||
->table('u')
|
||
->callback('json/user_fullname')
|
||
->label('User');
|
||
|
||
$filter_form->add('description');
|
||
|
||
$filter_form->add('suggest_amount')
|
||
->type('number');
|
||
|
||
$filter_form->add('date')
|
||
->type('date');
|
||
|
||
$request_model = new Request_Model();
|
||
|
||
// hide grid on its first load (#442)
|
||
$hide_grid = Settings::get('grid_hide_on_first_load') && $filter_form->is_first_load();
|
||
|
||
if (!$hide_grid)
|
||
{
|
||
try
|
||
{
|
||
$total_requests = $request_model->count_all_requests(
|
||
$filter_form->as_sql()
|
||
);
|
||
|
||
if (($sql_offset = ($page - 1) * $limit_results) > $total_requests)
|
||
$sql_offset = 0;
|
||
|
||
$requests = $request_model->get_all_requests(
|
||
$sql_offset, (int) $limit_results, $order_by, $order_by_direction,
|
||
$filter_form->as_sql()
|
||
);
|
||
}
|
||
catch (Exception $e)
|
||
{
|
||
if ($filter_form->is_loaded_from_saved_query())
|
||
{
|
||
status::error('Invalid saved query', $e);
|
||
// disable default query (loop protection)
|
||
if ($filter_form->is_loaded_from_default_saved_query())
|
||
{
|
||
ORM::factory('filter_query')->remove_default($filter_form->get_base_url());
|
||
}
|
||
$this->redirect(url_lang::current());
|
||
}
|
||
throw $e;
|
||
}
|
||
|
||
$vote_model = new Vote_Model();
|
||
|
||
$items_to_vote = $vote_model->get_all_items_user_can_vote(
|
||
$this->user_id
|
||
);
|
||
|
||
$request_to_vote = array();
|
||
|
||
if (array_key_exists(Vote_Model::REQUEST, $items_to_vote))
|
||
$request_to_vote = $items_to_vote[Vote_Model::REQUEST];
|
||
}
|
||
|
||
// create grid
|
||
$grid = new Grid('requests/show_all', NULL, array
|
||
(
|
||
'use_paginator' => true,
|
||
'use_selector' => true,
|
||
'current' => $limit_results,
|
||
'selector_increace' => 100,
|
||
'selector_min' => 100,
|
||
'selector_max_multiplier' => 20,
|
||
'base_url' => Config::get('lang').'/requests/show_all/'
|
||
. $limit_results.'/'.$order_by.'/'.$order_by_direction ,
|
||
'uri_segment' => 'page',
|
||
'total_items' => isset($total_requests) ? $total_requests : 0,
|
||
'items_per_page' => $limit_results,
|
||
'style' => 'classic',
|
||
'order_by' => $order_by,
|
||
'order_by_direction' => $order_by_direction,
|
||
'limit_results' => $limit_results,
|
||
'filter' => $filter_form
|
||
));
|
||
|
||
if ($this->acl_check_new(get_class($this),'request'))
|
||
{
|
||
$grid->add_new_button(
|
||
'requests/add',
|
||
__('Add new request'),
|
||
array
|
||
(
|
||
'class' => 'popup_link'
|
||
)
|
||
);
|
||
}
|
||
|
||
$grid->order_field('id')
|
||
->class('center')
|
||
->label('ID');
|
||
|
||
$grid->order_link_field('user_id')
|
||
->link('users/show', 'uname')
|
||
->label('User');
|
||
|
||
$grid->order_callback_field('description')
|
||
->label(__('Description'))
|
||
->callback('callback::limited_text');
|
||
|
||
$grid->order_callback_field('suggest_amount')
|
||
->label(__('Suggest amount'))
|
||
->callback('callback::money');
|
||
|
||
$grid->order_field('date')
|
||
->label(__('Date'));
|
||
|
||
$grid->order_callback_field('approval_state')
|
||
->label(__('State'))
|
||
->help(help::hint('approval_state'))
|
||
->callback('callback::vote_state_field');
|
||
|
||
$grid->order_callback_field('comments_count')
|
||
->label(__('comments'))
|
||
->callback('callback::comments_field')
|
||
->class('center');
|
||
|
||
// user can vote -> show columns for form items
|
||
if (!$hide_grid && count($request_to_vote))
|
||
{
|
||
$grid->order_form_field('vote')
|
||
->label(__('Vote'))
|
||
->type('dropdown')
|
||
->options(array
|
||
(
|
||
NULL => '- '.__('Select vote').' -'
|
||
))
|
||
->callback(
|
||
'Votes_Controller::vote_form_field',
|
||
$request_to_vote,
|
||
Vote_Model::REQUEST
|
||
);
|
||
|
||
$grid->order_form_field('comment')
|
||
->label(__('Comment'))
|
||
->type('textarea')
|
||
->callback(
|
||
'Votes_Controller::comment_form_field',
|
||
$request_to_vote
|
||
);
|
||
}
|
||
|
||
$actions = $grid->grouped_action_field();
|
||
|
||
// access control
|
||
if ($this->acl_check_view(get_class($this),'request'))
|
||
{
|
||
$actions->add_action('id')
|
||
->icon_action('show')
|
||
->url('requests/show');
|
||
}
|
||
|
||
// access control
|
||
if ($this->acl_check_edit(get_class($this),'request'))
|
||
{
|
||
$actions->add_conditional_action('id')
|
||
->icon_action('edit')
|
||
->condition('is_item_new')
|
||
->url('requests/edit')
|
||
->class('popup_link');
|
||
}
|
||
|
||
// access control
|
||
if ($this->acl_check_delete(get_class($this),'request'))
|
||
{
|
||
$actions->add_conditional_action('id')
|
||
->icon_action('delete')
|
||
->condition('is_item_new')
|
||
->url('requests/delete')
|
||
->class('delete_link');
|
||
}
|
||
|
||
if (!$hide_grid)
|
||
$grid->datasource($requests);
|
||
|
||
// form is submited
|
||
if (isset ($_POST) && count ($_POST) > 1)
|
||
{
|
||
try
|
||
{
|
||
$vote_model = new Vote_Model();
|
||
|
||
$vote_model->transaction_start();
|
||
|
||
$request_ids = $_POST['ids'];
|
||
$votes = $_POST['vote'];
|
||
$comments = $_POST['comment'];
|
||
|
||
$approval_template_item_model = new Approval_template_item_Model();
|
||
|
||
// voting user
|
||
$user = new User_Model($this->user_id);
|
||
|
||
foreach ($request_ids as $request_id)
|
||
{
|
||
// user cannot vote about request
|
||
if (!in_array($request_id, $request_to_vote))
|
||
continue;
|
||
|
||
$request = $request_model->where('id', $request_id)->find();
|
||
|
||
if (!$request || !$request->id)
|
||
continue;
|
||
|
||
// finding aro group of logged user
|
||
$aro_group = $approval_template_item_model
|
||
->get_aro_group_by_approval_template_id_and_user_id(
|
||
$request->approval_template_id,
|
||
$this->user_id,
|
||
$request->suggest_amount
|
||
);
|
||
|
||
$new_vote = $votes[$request->id];
|
||
$new_comment = $comments[$request->id];
|
||
|
||
$vote = $vote_model->where(array
|
||
(
|
||
'user_id' => $this->user_id,
|
||
'type' => Vote_Model::REQUEST,
|
||
'fk_id' => $request->id
|
||
))->find();
|
||
|
||
// vote already exists
|
||
if ($vote && $vote->id)
|
||
{
|
||
if ($new_vote != '' && $new_vote == $vote->vote)
|
||
continue;
|
||
|
||
// new vote is not empty and different to old, change old
|
||
if ($new_vote != '')
|
||
{
|
||
$vote->vote = $new_vote;
|
||
$vote->comment = $new_comment;
|
||
$vote->time = date('Y-m-d H:i:s');
|
||
$vote->save_throwable();
|
||
|
||
$subject = mail_message::format('request_vote_update_subject');
|
||
$body = mail_message::format('request_vote_update', array
|
||
(
|
||
$user->name.' '.$user->surname,
|
||
$request->user->name.' '.$request->user->surname,
|
||
url_lang::base().'requests/show/'.$request->id
|
||
));
|
||
}
|
||
// new vote is empty, delete old
|
||
else
|
||
{
|
||
$vote->delete_throwable();
|
||
|
||
$subject = mail_message::format('request_vote_delete_subject');
|
||
$body = mail_message::format('request_vote_delete', array
|
||
(
|
||
$user->name.' '.$user->surname,
|
||
$request->user->name.' '.$request->user->surname,
|
||
url_lang::base().'requests/show/'.$request->id
|
||
));
|
||
}
|
||
|
||
// send message about adding vote to all watchers
|
||
Mail_message_Model::send_system_message_to_item_watchers(
|
||
$subject,
|
||
$body,
|
||
Vote_Model::REQUEST,
|
||
$request->id
|
||
);
|
||
}
|
||
// new vote is not empty
|
||
elseif ($new_vote != '')
|
||
{
|
||
// add new vote
|
||
Vote_Model::insert(
|
||
$this->user_id,
|
||
Vote_Model::REQUEST,
|
||
$request->id,
|
||
$new_vote,
|
||
$new_comment,
|
||
$aro_group->id
|
||
);
|
||
|
||
$subject = mail_message::format('request_vote_add_subject');
|
||
$body = mail_message::format('request_vote_add', array
|
||
(
|
||
$user->name.' '.$user->surname,
|
||
$request->user->name.' '.$request->user->surname,
|
||
url_lang::base().'requests/show/'.$request->id
|
||
));
|
||
|
||
// send message about adding vote to all watchers
|
||
Mail_message_Model::send_system_message_to_item_watchers(
|
||
$subject,
|
||
$body,
|
||
Vote_Model::REQUEST,
|
||
$request->id
|
||
);
|
||
}
|
||
|
||
// set up state of request
|
||
$request->state = Vote_Model::get_state($request);
|
||
|
||
$request->save_throwable();
|
||
|
||
switch ($request->state)
|
||
{
|
||
// request was approved
|
||
case Vote_Model::STATE_APPROVED:
|
||
|
||
$subject = mail_message::format('request_approve_subject');
|
||
$body = mail_message::format('request_approve', array
|
||
(
|
||
$request->user->name.' '.$request->user->surname,
|
||
url_lang::base().'requests/show/'.$request->id
|
||
));
|
||
|
||
// send messages about request approve to all watchers
|
||
Mail_message_Model::send_system_message_to_item_watchers(
|
||
$subject,
|
||
$body,
|
||
Vote_Model::REQUEST,
|
||
$request->id
|
||
);
|
||
|
||
break;
|
||
|
||
// request was rejected
|
||
case Vote_Model::STATE_REJECTED:
|
||
|
||
$subject = mail_message::format('request_reject_subject');
|
||
$body = mail_message::format('request_reject', array
|
||
(
|
||
$request->user->name.' '.$request->user->surname,
|
||
url_lang::base().'requests/show/'.$request->id
|
||
));
|
||
|
||
// send messages about request reject to all watchers
|
||
Mail_message_Model::send_system_message_to_item_watchers(
|
||
$subject,
|
||
$body,
|
||
Vote_Model::REQUEST,
|
||
$request->id
|
||
);
|
||
|
||
break;
|
||
}
|
||
|
||
// update state of approval template
|
||
Approval_template_Model::update_state(
|
||
$request->approval_template_id
|
||
);
|
||
}
|
||
|
||
$vote_model->transaction_commit();
|
||
status::success('Votes has been successfully updated.');
|
||
}
|
||
catch (Exception $e)
|
||
{
|
||
$vote_model->transaction_rollback();
|
||
}
|
||
|
||
url::redirect(url::base(TRUE).url::current(TRUE));
|
||
}
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = __('Requests');
|
||
$view->title = __('Requests');
|
||
$view->content = new View('show_all');
|
||
$view->content->headline = __('List of all requests');
|
||
$view->content->table = $grid;
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
/**
|
||
* Shows all requests of user
|
||
*
|
||
* @author Michal Kliment
|
||
* @param integer $user_id
|
||
*/
|
||
public -->
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="view" own="false"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="new" own="false"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="view" own="false"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="edit" own="false"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="delete" own="false"></axo>
|
||
<axo usage_type="access" section="Requests_Controller" value="request" action="view" own="false"></axo>
|
||
<axo usage_type="links" section="Requests_Controller" value="request" action="new" own="false"></axo>
|
||
<axo usage_type="grid-action" section="Requests_Controller" value="request" action="view" own="false"></axo>
|
||
<axo usage_type="grid-action" section="Requests_Controller" value="request" action="edit" own="false"></axo>
|
||
<axo usage_type="grid-action" section="Requests_Controller" value="request" action="delete" own="false"></axo>
|
||
</method>
|
||
<method name="show_by_user">
|
||
<!-- show_by_user($user_id = NULL)
|
||
{
|
||
if (!$user_id || !is_numeric ($user_id))
|
||
Controller::warning (PARAMETER);
|
||
|
||
$user = new User_Model($user_id);
|
||
|
||
if (!$user->id)
|
||
Controller::error(RECORD);
|
||
|
||
if (!$this->acl_check_view('Requests_Controller', 'request', $user->member_id))
|
||
Controller::error(ACCESS);
|
||
|
||
$request_model = new Request_Model();
|
||
|
||
$pending_requests = $request_model->get_all_requests_by_user(
|
||
$user->id, 'pending'
|
||
);
|
||
|
||
$approval_template_item_model = new Approval_template_item_Model();
|
||
|
||
$total_pending = array();
|
||
$total_pending['suggest_amount'] = 0;
|
||
|
||
foreach ($pending_requests as $pending_request)
|
||
{
|
||
$total_pending['suggest_amount'] += $pending_request->suggest_amount;
|
||
}
|
||
|
||
// create grid
|
||
$pending_requests_grid = new Grid(url_lang::base().'requests/rejected', '', array
|
||
(
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
'total_items' => count ($pending_requests)
|
||
));
|
||
|
||
if ($this->acl_check_new('Requests_Controller','request', $user->member_id))
|
||
{
|
||
$pending_requests_grid->add_new_button(
|
||
url_lang::base().'requests/add/'.$user->id,
|
||
__('Add new request'), array('class' => 'popup_link')
|
||
);
|
||
}
|
||
|
||
$pending_requests_grid->field('id')
|
||
->label(__('Id'));
|
||
|
||
$pending_requests_grid->callback_field('description')
|
||
->label(__('Description'))
|
||
->callback('callback::limited_text');
|
||
|
||
$pending_requests_grid->field('date')
|
||
->label(__('Date'));
|
||
|
||
$pending_requests_grid->callback_field('suggest_amount')
|
||
->label(__('Suggest amount'))
|
||
->callback('callback::money');
|
||
|
||
$pending_requests_grid->callback_field('approval_state')
|
||
->label(__('State'))
|
||
->help(help::hint('approval_state'))
|
||
->callback('callback::vote_state_field');
|
||
|
||
$pending_requests_grid->callback_field('comments_count')
|
||
->label(__('comments'))
|
||
->callback('callback::comments_field')
|
||
->class('center');
|
||
|
||
$actions = $pending_requests_grid->grouped_action_field();
|
||
|
||
// access control
|
||
if ($this->acl_check_view('Requests_Controller','request',$user->member_id))
|
||
{
|
||
$actions->add_action('id')
|
||
->icon_action('show')
|
||
->url('users/show_request');
|
||
}
|
||
|
||
// access control
|
||
if ($this->acl_check_edit('Requests_Controller','request',$user->member_id))
|
||
{
|
||
$actions->add_conditional_action('id')
|
||
->icon_action('edit')
|
||
->condition('is_item_new')
|
||
->url('requests/edit')
|
||
->class('popup_link');
|
||
}
|
||
|
||
// access control
|
||
if ($this->acl_check_delete('Requests_Controller','request',$user->member_id))
|
||
{
|
||
$actions->add_conditional_action('id')
|
||
->icon_action('delete')
|
||
->condition('is_item_new')
|
||
->url('requests/delete')
|
||
->class('delete_link');
|
||
}
|
||
|
||
$pending_requests_grid->datasource($pending_requests);
|
||
|
||
$approved_requests = $request_model->get_all_requests_by_user(
|
||
$user->id, 'approved'
|
||
);
|
||
|
||
$total_approved = array();
|
||
$total_approved['suggest_amount'] = 0;
|
||
|
||
foreach ($approved_requests as $approved_request)
|
||
{
|
||
$total_approved['suggest_amount'] += $approved_request->rating;
|
||
}
|
||
|
||
// create grid
|
||
$approved_requests_grid = new Grid('requests/rejected', '', array
|
||
(
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
'total_items' => count ($approved_requests)
|
||
));
|
||
|
||
$approved_requests_grid->field('id')
|
||
->label(__('Id'));
|
||
|
||
$approved_requests_grid->callback_field('description')
|
||
->label(__('Description'))
|
||
->callback('callback::limited_text');
|
||
|
||
$approved_requests_grid->field('date')
|
||
->label(__('Date'));
|
||
|
||
$approved_requests_grid->callback_field('suggest_amount')
|
||
->label(__('Suggest amount'))
|
||
->callback('callback::money');
|
||
|
||
$approved_requests_grid->callback_field('approval_state')
|
||
->label(__('State'))
|
||
->help(help::hint('approval_state'))
|
||
->callback('callback::vote_state_field');
|
||
|
||
$approved_requests_grid->callback_field('comments_count')
|
||
->label(__('comments'))
|
||
->callback('callback::comments_field');
|
||
|
||
$actions = $approved_requests_grid->grouped_action_field();
|
||
|
||
// access control
|
||
if ($this->acl_check_view('Requests_Controller', 'request', $user->member_id))
|
||
{
|
||
$actions->add_action('id')
|
||
->icon_action('show')
|
||
->url('users/show_request');
|
||
}
|
||
|
||
$approved_requests_grid->datasource($approved_requests);
|
||
|
||
$rejected_requests = $request_model->get_all_requests_by_user(
|
||
$user->id, 'rejected'
|
||
);
|
||
|
||
$total_rejected = array();
|
||
$total_rejected['suggest_amount'] = 0;
|
||
|
||
foreach ($rejected_requests as $rejected_request)
|
||
{
|
||
$total_rejected['suggest_amount'] += $rejected_request->suggest_amount;
|
||
}
|
||
|
||
// create grid
|
||
$rejected_requests_grid = new Grid('requests/rejected', '', array(
|
||
//'separator' => '',
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
'total_items' => count ($rejected_requests)
|
||
));
|
||
|
||
$rejected_requests_grid->field('id')
|
||
->label(__('Id'));
|
||
|
||
$rejected_requests_grid->callback_field('description')
|
||
->label(__('Description'))
|
||
->callback('callback::limited_text');
|
||
|
||
$rejected_requests_grid->field('date')
|
||
->label(__('Date'));
|
||
|
||
$rejected_requests_grid->callback_field('suggest_amount')
|
||
->label(__('Suggest amount'))
|
||
->callback('callback::money');
|
||
|
||
$rejected_requests_grid->callback_field('approval_state')
|
||
->label(__('State'))->help(help::hint('approval_state'))
|
||
->callback('callback::vote_state_field');
|
||
|
||
$rejected_requests_grid->callback_field('comments_count')
|
||
->label(__('comments'))
|
||
->callback('callback::comments_field');
|
||
|
||
$actions = $rejected_requests_grid->grouped_action_field();
|
||
|
||
// access control
|
||
if ($this->acl_check_view('Requests_Controller','request', $user->member_id))
|
||
{
|
||
$actions->add_action('id')
|
||
->icon_action('show')
|
||
->url('users/show_request');
|
||
}
|
||
|
||
$rejected_requests_grid->datasource($rejected_requests);
|
||
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = breadcrumbs::add()
|
||
->link('members/show_all', 'Members',
|
||
$this->acl_check_view('Members_Controller', 'members'))
|
||
->disable_translation()
|
||
->link('members/show/'.$user->member->id,
|
||
'ID ' . $user->member->id . ' - ' . $user->member->name,
|
||
$this->acl_check_view(
|
||
'Members_Controller', 'members',
|
||
$user->member->id
|
||
)
|
||
)->enable_translation()
|
||
->link('users/show_by_member/' . $user->member_id,
|
||
'Users',
|
||
$this->acl_check_view(
|
||
'Users_Controller', 'users',
|
||
$user->member_id
|
||
)
|
||
)->disable_translation()
|
||
->link('users/show/'.$user->id,
|
||
$user->name . ' ' . $user->surname .
|
||
' (' . $user->login . ')',
|
||
$this->acl_check_view(
|
||
'Users_Controller','users',
|
||
$user->member_id
|
||
)
|
||
)->enable_translation()
|
||
->text('Requests');
|
||
|
||
$view = new View('main');
|
||
$view->title = __('List of requests of user').' '.$user->name.' '.$user->surname;
|
||
$view->breadcrumbs = $breadcrumbs->html();
|
||
$view->content = new View('requests/show_by_user');
|
||
$view->content->headline = __('List of requests of user').' '.$user->name.' '.$user->surname;
|
||
$view->content->user = $user;
|
||
$view->content->pending_requests_grid = $pending_requests_grid;
|
||
$view->content->approved_requests_grid = $approved_requests_grid;
|
||
$view->content->rejected_requests_grid = $rejected_requests_grid;
|
||
$view->content->total_pending = $total_pending;
|
||
$view->content->total_approved = $total_approved;
|
||
$view->content->total_rejected = $total_rejected;
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
/**
|
||
* Shows request
|
||
*
|
||
* @author Michal Kliment
|
||
* @param integer $request_id
|
||
*/
|
||
public -->
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="new" own="true"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="edit" own="true"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="delete" own="true"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Requests_Controller" value="request" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Members_Controller" value="members" action="view" own="false"></axo>
|
||
<axo usage_type="unknown" section="Members_Controller" value="members" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Users_Controller" value="users" action="view" own="true"></axo>
|
||
<axo usage_type="unknown" section="Users_Controller" value="users" action="view" own="true"></axo>
|
||
<axo usage_type="access" section="Requests_Controller" value="request" action="view" own="true"></axo>
|
||
<axo usage_type="links" section="Requests_Controller" value="request" action="new" own="true"></axo>
|
||
<axo usage_type="grid-action" section="Requests_Controller" value="request" action="view" own="true"></axo>
|
||
<axo usage_type="grid-action" section="Requests_Controller" value="request" action="edit" own="true"></axo>
|
||
<axo usage_type="grid-action" section="Requests_Controller" value="request" action="delete" own="true"></axo>
|
||
<axo usage_type="grid-action" section="Requests_Controller" value="request" action="view" own="true"></axo>
|
||
<axo usage_type="grid-action" section="Requests_Controller" value="request" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Members_Controller" value="members" action="view" own="false"></axo>
|
||
<axo usage_type="breadcrumbs" section="Members_Controller" value="members" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Users_Controller" value="users" action="view" own="true"></axo>
|
||
<axo usage_type="breadcrumbs" section="Users_Controller" value="users" action="view" own="true"></axo>
|
||
</method>
|
||
<method name="show">
|
||
<!-- show($request_id = NULL)
|
||
{
|
||
// missing or bad parameter
|
||
if (!$request_id || !is_numeric($request_id))
|
||
Controller::warning (PARAMETER);
|
||
|
||
$request = new Request_Model($request_id);
|
||
|
||
// record doesn't exist
|
||
if (!$request->id)
|
||
Controller::error(RECORD);
|
||
|
||
// access control
|
||
if (!$this->acl_check_new('Requests_Controller', 'request', $request->user->member_id))
|
||
Controller::error(ACCESS);
|
||
|
||
$approval_template_item_model = new Approval_template_item_Model();
|
||
|
||
$aro_groups = $approval_template_item_model->get_aro_groups_by_approval_template_id(
|
||
$request->approval_template_id, $request->suggest_amount
|
||
);
|
||
|
||
$user_aro_group = $approval_template_item_model->get_aro_group_by_approval_template_id_and_user_id(
|
||
$request->approval_template_id, $this->session->get('user_id'),
|
||
$request->suggest_amount
|
||
);
|
||
|
||
$i = 0;
|
||
$vote_groups = array();
|
||
$vote_grids = array();
|
||
$total_votes = array();
|
||
$sums = array();
|
||
$agrees = array();
|
||
$percents = array();
|
||
$user_vote = NULL;
|
||
|
||
foreach ($aro_groups as $aro_group)
|
||
{
|
||
$vote_groups[$i] = $aro_group->name;
|
||
|
||
$vote_model = new Vote_Model();
|
||
$votes = $vote_model->select(
|
||
'votes.id', 'votes.user_id',
|
||
'CONCAT(users.name,\' \',users.surname) as uname',
|
||
'vote', 'votes.comment', 'time'
|
||
)->join('users','users.id', 'votes.user_id')
|
||
->where('votes.type', Vote_Model::REQUEST)
|
||
->where('fk_id', $request->id)
|
||
->where('aro_group_id', $aro_group->id)
|
||
->find_all();
|
||
|
||
$total_votes[$i] = count($votes);
|
||
$sums[$i] = 0;
|
||
$agrees[$i] = 0;
|
||
$user_vote = NULL;
|
||
|
||
foreach ($votes as $vote)
|
||
{
|
||
if ($this->user_id == $vote->user_id)
|
||
$user_vote = $vote->vote;
|
||
|
||
$sums[$i] += $vote->vote;
|
||
|
||
if ($vote->vote == 0)
|
||
{
|
||
$total_votes[$i];
|
||
continue;
|
||
}
|
||
|
||
if ($vote->vote == 1)
|
||
{
|
||
$agrees[$i]++;
|
||
continue;
|
||
}
|
||
}
|
||
|
||
// create grid
|
||
$vote_grids[$i] = new Grid('requests/show/'.$request->id, '', array
|
||
(
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
'selector_increace' => 200,
|
||
'selector_min' => 200,
|
||
'selector_max_multiplier' => 10,
|
||
'uri_segment' => 'page',
|
||
'style' => 'classic',
|
||
));
|
||
|
||
$vote_rights = $approval_template_item_model->check_user_vote_rights(
|
||
$request, $this->user_id
|
||
);
|
||
|
||
if ($user_aro_group &&
|
||
$user_aro_group->id == $aro_group->id &&
|
||
!$user_vote &&
|
||
$vote_rights)
|
||
{
|
||
$vote_grids[$i]->add_new_button(
|
||
url_lang::base().'votes/add/'.Vote_Model::REQUEST.'/'.$request->id,
|
||
__('Add vote'), array('class' => 'popup_link')
|
||
);
|
||
}
|
||
|
||
$vote_grids[$i]->callback_field('vote')
|
||
->label(__('Vote'))
|
||
->callback('callback::vote');
|
||
|
||
$vote_grids[$i]->link_field('user_id')
|
||
->link('users/show', 'uname')
|
||
->label('User');
|
||
|
||
$vote_grids[$i]->callback_field('comment');
|
||
|
||
$vote_grids[$i]->callback_field('time')
|
||
->label(__('Time'))
|
||
->callback('callback::datetime');
|
||
|
||
$actions = $vote_grids[$i]->grouped_action_field();
|
||
|
||
// user can change/delete vote
|
||
if ($request->state == Vote_Model::STATE_NEW || $request->state == Vote_Model::STATE_OPEN)
|
||
{
|
||
$actions->add_conditional_action()
|
||
->icon_action('edit')
|
||
->url('votes/edit')
|
||
->condition('is_own')
|
||
->class('popup_link');
|
||
|
||
$actions->add_conditional_action()
|
||
->icon_action('delete')
|
||
->url('votes/delete')
|
||
->condition('is_own')
|
||
->class('delete_link');
|
||
}
|
||
|
||
$vote_grids[$i]->datasource($votes);
|
||
|
||
$percents[$i] = ($total_votes[$i]) ? round($agrees[$i] / $total_votes[$i] * 100, 1) : 0;
|
||
$i++;
|
||
}
|
||
|
||
if ($this->acl_check_view(
|
||
'Comments_Controller', 'requests', $request->user->member_id
|
||
))
|
||
{
|
||
$comment_model = new Comment_Model();
|
||
$comments = $comment_model->get_all_comments_by_comments_thread(
|
||
$request->comments_thread_id
|
||
);
|
||
|
||
$comments_grid = new Grid('members', null, array
|
||
(
|
||
'separator' => '<br /><br />',
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
));
|
||
|
||
$url = ($request->comments_thread_id) ?
|
||
'comments/add/'.$request->comments_thread_id :
|
||
'comments_threads/add/request/'.$request->id;
|
||
|
||
$comments_grid->add_new_button(
|
||
$url, __('Add comment to request'),
|
||
array
|
||
(
|
||
'class' => 'popup_link'
|
||
)
|
||
);
|
||
|
||
$comments_grid->field('text')
|
||
->label(__('Text'));
|
||
|
||
$comments_grid->link_field('user_id')
|
||
->link('users/show', 'user_name')
|
||
->label('User');
|
||
|
||
$comments_grid->field('datetime')
|
||
->label(__('Time'));
|
||
|
||
$actions = $comments_grid->grouped_action_field();
|
||
|
||
$actions->add_conditional_action()
|
||
->icon_action('edit')
|
||
->url('comments/edit')
|
||
->condition('is_own')
|
||
->class('popup_link');
|
||
|
||
$actions->add_conditional_action()
|
||
->icon_action('delete')
|
||
->url('comments/delete')
|
||
->condition('is_own')
|
||
->class('delete_link');
|
||
|
||
$comments_grid->datasource($comments);
|
||
}
|
||
|
||
$breadcrumbs = breadcrumbs::add();
|
||
|
||
if (url_lang::current(1) == 'users')
|
||
{
|
||
$breadcrumbs
|
||
->link('members/show_all', 'Members',
|
||
$this->acl_check_view('Members_Controller', 'members'))
|
||
->disable_translation()
|
||
->link('members/show/'.$request->user->member->id,
|
||
'ID ' . $request->user->member->id . ' - ' .
|
||
$request->user->member->name,
|
||
$this->acl_check_view(
|
||
'Members_Controller', 'members',
|
||
$request->user->member->id
|
||
)
|
||
)->enable_translation()
|
||
->link('users/show_by_member/' . $request->user->member_id,
|
||
'Users',
|
Také k dispozici: Unified diff
Upravy:
- refs #563: dokumentace k AXO (controllery R)