Projekt

Obecné

Profil

<?php defined('SYSPATH') or die('No direct script access.');
/*
* This file is part of open source system FreeNetIS
* and it is released under GPLv3 licence.
*
* More info about licence can be found:
* http://www.gnu.org/licenses/gpl-3.0.html
*
* More info about project can be found:
* http://www.freenetis.org/
*
*/

/**
* Controller performs notifications actions.
* Informs user of system using redirection, SMS or email about some action or change.
*
* @package Controller
* @author Michal Kliment
*/
class Notifications_Controller extends Controller
{
/** activate notification */
const ACTIVATE = 1;
/** keep current settings */
const KEEP = 2;
/** deactivate notification */
const DEACTIVATE = 3;
/**
* Notification setting for member
*
* @author Michal Kliment
* @param integer $member_id
*/
public function member($member_id = NULL)
{
// bad parameter
if (!$member_id || !is_numeric($member_id))
Controller::warning(PARAMETER);
$member = new Member_Model($member_id);
// record doesn't exist
if (!$member->id)
Controller::error(RECORD);
// access control
if (!$this->acl_check_new('Messages_Controller', 'member', $member->id))
Controller::error(ACCESS);
$headline = __('Notification setting of member').' '.$member->name;
// gets all user messages
$messages = ORM::factory('message')->find_all();
$arr_messages = array();
foreach ($messages as $message)
{
if ($message->type == Message_Model::INTERRUPTED_MEMBERSHIP_MESSAGE ||
$message->type == Message_Model::DEBTOR_MESSAGE ||
$message->type == Message_Model::PAYMENT_NOTICE_MESSAGE ||
$message->type == Message_Model::UNALLOWED_CONNECTING_PLACE_MESSAGE)
{
$arr_messages[$message->id] = __($message->name);
}
else if ($message->type == Message_Model::USER_MESSAGE)
{
$arr_messages[$message->id] = $message->name;
}
}
$arr_messages = array
(
NULL => '----- '.__('select message').' -----'
) + $arr_messages;
$form = new Forge('notifications/member/'.$member->id);
$form->dropdown('message_id')
->label(__('Message').':')
->options($arr_messages)
->rules('required');
$form->textarea('comment');
$form->dropdown('redirection')
->options(array
(
self::ACTIVATE => __('Activate'),
self::KEEP => __('Without change'),
self::DEACTIVATE => __('Deactivate')
))
->selected(self::KEEP);
$form->dropdown('email')
->label(__('E-mail').':')
->options(array
(
self::ACTIVATE => __('Activate'),
self::KEEP => __('Without change')
))
->selected(self::KEEP)
->callback(array($this,'valid_email_or_sms'));
$form->dropdown('sms')
->label(__('SMS message').':')
->options(array
(
self::ACTIVATE => __('Activate'),
self::KEEP => __('Without change')
))
->selected(self::KEEP)
->callback(array($this,'valid_email_or_sms'));
$form->submit('Send');
// form is validate
if ($form->validate())
{
$form_data = $form->as_array();
// needed class
$message = new Message_Model($form_data['message_id']);
$ip_model = new Ip_address_Model();
$mia_model = new Messages_ip_addresses_Model();
$uc_model = new Users_contacts_Model();
// needed data
$user_id = $this->session->get('user_id');
$comment = $form_data['comment'];
$info_messages = array();
/* Redirection */
if ($form_data['redirection'] == self::ACTIVATE ||
$form_data['redirection'] == self::DEACTIVATE)
{
// stats vars
$deleted_redr = 0;
$added_redr = 0;

// get all redirection
$ips = $ip_model->get_ip_addresses_of_member($member->id);

// delete redirection of these IP address
foreach ($ips as $ip)
{
$mia_model->delete_redirection_of_ip_address(
$message->id, $ip->id
);
$deleted_redr++;
}

// set new redirection?
if ($form_data['redirection'] == self::ACTIVATE)
{
$added_redr = Message_Model::activate_redirection(
$message, $ips,
$user_id, $comment
);
}

// info messages
if ($added_redr)
{
$m = 'Redirection has been activated for %s IP addresses';
$info_messages[] = __($m, $added_redr).'.';
}
else
{
$m = 'Redirection has been deactivated for %s IP addresses';
$info_messages[] = __($m, $deleted_redr).'.';
}
}
/* Email */
if ($form_data['email'] == self::ACTIVATE)
{
// gets all contacts of member
$contacts = $uc_model->get_contacts_by_member_and_type(
$member->id, Contact_Model::TYPE_EMAIL,
$message->ignore_whitelist
);
// send email
$sent_emails = Message_Model::send_emails(
$message, $contacts, $comment
);

// info message
$m = 'E-mail has been sent for %s e-mail addresses';
$info_messages[] = __($m, $sent_emails).'.';
}
/* SMS messages */
if ($form_data['sms'] == self::ACTIVATE)
{
// gets all contacts of member
$contacts = $uc_model->get_contacts_by_member_and_type(
$member->id, Contact_Model::TYPE_PHONE,
$message->ignore_whitelist
);
// send email
$sent_sms = Message_Model::send_sms_messages(
$message, $contacts,
$user_id, $comment
);

// info message
$m = 'SMS message has been sent for %d phone numbers.';
$info_messages[] = __($m, $sent_sms);
}
// user notification
if (count($info_messages))
{
status::success(implode('<br />', $info_messages), FALSE);
}
// redirect
url::redirect('members/show/'.$member->id);
}
// 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
)
)
->enable_translation()
->text('Notification setting');
$view = new View('main');
$view->breadcrumbs = $breadcrumbs;
$view->title = $headline;
$view->content = new View('form');
$view->content->headline = $headline;
$view->content->form = $form;
$view->render(TRUE);
}
/**
* Notification setting to subnet
*
* @author Michal Kliment
* @param integer $subnet_id
*/
public function subnet($subnet_id = NULL)
{
// bad parameter
if (!$subnet_id || !is_numeric($subnet_id))
Controller::warning(PARAMETER);
$subnet = new Subnet_Model($subnet_id);
// record doesn't exist
if (!$subnet->id)
Controller::error(RECORD);
$headline = __('Notification setting of subnet').' '.$subnet->name;
// gets all user messages
$messages = ORM::factory('message')
->find_all();
$arr_messages = array();
foreach ($messages as $message)
{
if ($message->type == Message_Model::INTERRUPTED_MEMBERSHIP_MESSAGE ||
$message->type == Message_Model::DEBTOR_MESSAGE ||
$message->type == Message_Model::PAYMENT_NOTICE_MESSAGE ||
$message->type == Message_Model::UNALLOWED_CONNECTING_PLACE_MESSAGE)
{
$arr_messages[$message->id] = __($message->name);
}
else if ($message->type == Message_Model::USER_MESSAGE)
{
$arr_messages[$message->id] = $message->name;
}
}
$arr_messages = array
(
NULL => '----- '.__('select message').' -----'
) + $arr_messages;
$form = new Forge('notifications/subnet/'.$subnet->id);
$form->dropdown('message_id')
->label(__('Message').':')
->options($arr_messages)
->rules('required');
$form->textarea('comment');
$form->dropdown('redirection')
->options(array
(
self::ACTIVATE => __('Activate'),
self::KEEP => __('Without change'),
self::DEACTIVATE => __('Deactivate')
))
->selected(self::KEEP);
$form->dropdown('email')
->label(__('E-mail').':')
->options(array
(
self::ACTIVATE => __('Activate'),
self::KEEP => __('Without change')
))
->selected(self::KEEP)
->callback(array($this, 'valid_email_or_sms'));
$form->dropdown('sms')
->label(__('SMS message').':')
->options(array
(
self::ACTIVATE => __('Activate'),
self::KEEP => __('Without change')
))
->selected(self::KEEP)
->callback(array($this,'valid_email_or_sms'));
$form->submit('Send');
special::required_forge_style($form, ' *', 'required');
// for is validate
if ($form->validate())
{
$form_data = $form->as_array();
// needed class
$message = new Message_Model($form_data['message_id']);
$ip_model = new Ip_address_Model();
$mia_model = new Messages_ip_addresses_Model();
$uc_model = new Users_contacts_Model();
// needed data
$user_id = $this->session->get('user_id');
$comment = $form_data['comment'];
$info_messages = array();
/* Redirection */
if ($form_data['redirection'] == self::ACTIVATE ||
$form_data['redirection'] == self::DEACTIVATE)
{
// stats vars
$deleted_redr = 0;
$added_redr = 0;

// get all redirection
$ips = $ip_model->get_ip_addresses_of_subnet($subnet->id);

// delete redirection of these IP address
foreach ($ips as $ip)
{
$mia_model->delete_redirection_of_ip_address(
$message->id, $ip->id
);
$deleted_redr++;
}

// set new redirection?
if ($form_data['redirection'] == self::ACTIVATE)
{
$added_redr = Message_Model::activate_redirection(
$message, $ips,
$user_id, $comment
);
}

// info messages
if ($added_redr)
{
$m = 'Redirection has been activated for %s IP addresses';
$info_messages[] = __($m, $added_redr).'.';
}
else
{
$m = 'Redirection has been deactivated for %s IP addresses';
$info_messages[] = __($m, $deleted_redr).'.';
}
}
/* Email */
if ($form_data['email'] == self::ACTIVATE)
{
// gets all contacts of member
$contacts = $uc_model->get_contacts_by_subnet_and_type(
$subnet->id, Contact_Model::TYPE_EMAIL,
$message->ignore_whitelist
);
// send email
$sent_emails = Message_Model::send_emails(
$message, $contacts, $comment
);

// info message
$m = 'E-mail has been sent for %s e-mail addresses';
$info_messages[] = __($m, $sent_emails).'.';
}
/* SMS messages */
if ($form_data['sms'] == self::ACTIVATE)
{
// gets all contacts of member
$contacts = $uc_model->get_contacts_by_subnet_and_type(
$subnet->id, Contact_Model::TYPE_PHONE,
$message->ignore_whitelist
);
// send email
$sent_sms = Message_Model::send_sms_messages(
$message, $contacts,
$user_id, $comment
);

// info message
$m = 'SMS message has been sent for %d phone numbers.';
$info_messages[] = __($m, $sent_sms);
}
// user notification
if (count($info_messages))
{
status::success(implode('<br />', $info_messages), FALSE);
}
// redirect
url::redirect('subnets/show/'.$subnet->id);
}
// breadcrumbs
$subnet_text = $subnet->name." ($subnet->network_address/"
.network::netmask2cidr($subnet->netmask) .")";
$breadcrumbs = breadcrumbs::add()
->link('subnets/show_all', __('Subnets'),
$this->acl_check_view('Devices_Controller','subnet'))
->disable_translation()
->link('subnets/show/'.$subnet->id, $subnet_text,
$this->acl_check_view('Devices_Controller','subnet'))
->enable_translation()
->text('Notification setting')
->html();
$view = new View('main');
$view->breadcrumbs = $breadcrumbs;
$view->title = $headline;
$view->content = new View('form');
$view->content->headline = $headline;
$view->content->form = $form;
$view->render(TRUE);
}
/**
* Notification setting to cloud
*
* @author Michal Kliment
* @param integer $cloud_id
*/
public function cloud($cloud_id = NULL)
{
// bad parameter
if (!$cloud_id || !is_numeric($cloud_id))
Controller::warning(PARAMETER);
$cloud = new Cloud_Model($cloud_id);
// record doesn't exist
if (!$cloud->id)
Controller::error(RECORD);
$headline = __('Notification setting of cloud').' '.$cloud->name;
// gets all user messages
$messages = ORM::factory('message')->find_all();
$arr_messages = array();
foreach ($messages as $message)
{
if ($message->type == Message_Model::INTERRUPTED_MEMBERSHIP_MESSAGE ||
$message->type == Message_Model::DEBTOR_MESSAGE ||
$message->type == Message_Model::PAYMENT_NOTICE_MESSAGE ||
$message->type == Message_Model::UNALLOWED_CONNECTING_PLACE_MESSAGE)
{
$arr_messages[$message->id] = __($message->name);
}
else if ($message->type == Message_Model::USER_MESSAGE)
{
$arr_messages[$message->id] = $message->name;
}
}
$arr_messages = array
(
NULL => '----- '.__('select message').' -----'
) + $arr_messages;
$form = new Forge('notifications/cloud/'.$cloud->id);
$form->dropdown('message_id')
->label(__('Message').':')
->options($arr_messages)
->rules('required');
$form->textarea('comment');
$form->dropdown('redirection')
->options(array
(
self::ACTIVATE => __('Activate'),
self::KEEP => __('Without change'),
self::DEACTIVATE => __('Deactivate')
))
->selected(self::KEEP);
$form->dropdown('email')
->label(__('E-mail').':')
->options(array
(
self::ACTIVATE => __('Activate'),
self::KEEP => __('Without change')
))
->selected(self::KEEP)
->callback(array($this,'valid_email_or_sms'));
$form->dropdown('sms')
->label(__('SMS message').':')
->options(array
(
self::ACTIVATE => __('Activate'),
self::KEEP => __('Without change')
))
->selected(self::KEEP)
->callback(array($this,'valid_email_or_sms'));
$form->submit('Send');
// form is validate
if ($form->validate())
{
$form_data = $form->as_array();
// needed class
$message = new Message_Model($form_data['message_id']);
$ip_model = new Ip_address_Model();
$mia_model = new Messages_ip_addresses_Model();
$uc_model = new Users_contacts_Model();
// needed data
$user_id = $this->session->get('user_id');
$comment = $form_data['comment'];
$info_messages = array();
/* Redirection */
if ($form_data['redirection'] == self::ACTIVATE ||
$form_data['redirection'] == self::DEACTIVATE)
{
// stats vars
$deleted_redr = 0;
$added_redr = 0;

// for each subnet in cloud
foreach ($cloud->subnets as $subnet)
{
// get all redirection
$ips = $ip_model->get_ip_addresses_of_subnet($subnet->id);

// delete redirection of these IP address
foreach ($ips as $ip)
{
$mia_model->delete_redirection_of_ip_address(
$message->id, $ip->id
);
$deleted_redr++;
}

// set new redirection?
if ($form_data['redirection'] == self::ACTIVATE)
{
$added_redr += Message_Model::activate_redirection(
$message, $ips,
$user_id, $comment
);
}
}

// info messages
if ($added_redr)
{
$m = 'Redirection has been activated for %s IP addresses';
$info_messages[] = __($m, $added_redr).'.';
}
else
{
$m = 'Redirection has been deactivated for %s IP addresses';
$info_messages[] = __($m, $deleted_redr).'.';
}
}
/* Email */
if ($form_data['email'] == self::ACTIVATE)
{
// stat var
$sent_emails = 0;
// for each subnet in cloud
foreach ($cloud->subnets as $subnet)
{
// gets all contacts of member
$contacts = $uc_model->get_contacts_by_subnet_and_type(
$subnet->id, Contact_Model::TYPE_EMAIL,
$message->ignore_whitelist
);

// send email
$sent_emails += Message_Model::send_emails(
$message, $contacts, $comment
);
}

// info message
$m = 'E-mail has been sent for %s e-mail addresses';
$info_messages[] = __($m, $sent_emails).'.';
}
/* SMS messages */
if ($form_data['sms'] == self::ACTIVATE)
{
// stat var
$sent_sms = 0;
// for each subnet in cloud
foreach ($cloud->subnets as $subnet)
{
// gets all contacts of member
$contacts = $uc_model->get_contacts_by_subnet_and_type(
$subnet->id, Contact_Model::TYPE_PHONE,
$message->ignore_whitelist
);

// send email
$sent_sms += Message_Model::send_sms_messages(
$message, $contacts,
$user_id, $comment
);
}

// info message
$m = 'SMS message has been sent for %d phone numbers.';
$info_messages[] = __($m, $sent_sms);
}
// user notification
if (count($info_messages))
{
status::success(implode('<br />', $info_messages), FALSE);
}
// redirect
url::redirect('clouds/show/'.$cloud->id);
}
$name = $cloud->name . ' (' . $cloud_id . ')';
// breadcrumbs
$breadcrumbs = breadcrumbs::add()
->link('clouds/show_all', __('Clouds'),
$this->acl_check_view('Clouds_Controller','clouds'))
->disable_translation()
->link('clouds/show/'.$cloud->id, $name,
$this->acl_check_view('Clouds_Controller','clouds'))
->enable_translation()
->text(__('Notification setting'))
->html();
$view = new View('main');
$view->breadcrumbs = $breadcrumbs;
$view->title = $headline;
$view->content = new View('form');
$view->content->headline = $headline;
$view->content->form = $form;
$view->render(TRUE);
}
/**
* Shows members with at least one whitelisted IP address.
*
* @author Jiri Svitak
*/
public function show_whitelisted_members(
$limit_results = 100, $order_by = 'id', $order_by_direction = 'ASC',
$page_word = null, $page = 1)
{
// access rights
if (!$this->acl_check_view('Messages_controller','message'))
Controller::error(ACCESS);

// gets new selector
if (is_numeric($this->input->get('record_per_page')))
$limit_results = (int) $this->input->get('record_per_page');
// parameters control
$allowed_order_type = array
(
'id', 'registration', 'name', 'street','redirect', 'street_number',
'town', 'quarter', 'ZIP_code', 'qos_ceil', 'qos_rate', 'entrance_fee',
'debt_payment_rate', 'current_credit', 'entrance_date', 'comment',
'balance', 'type_name', 'items_count'
);
if (!in_array(strtolower($order_by), $allowed_order_type))
$order_by = 'id';
if (strtolower($order_by_direction) != 'desc')
$order_by_direction = 'asc';
$filter_form = new Filter_form('m');
$filter_form->add('member_name')
->type('combo')
->callback('json/member_name');
$filter_form->add('type')
->type('combo')
->values(ORM::factory('enum_type')->get_values(Enum_type_Model::MEMBER_TYPE_ID));
$filter_form->add('whitelisted')
->type('select')
->label(__('Whitelist'))
->values(array
(
Ip_address_Model::NO_WHITELIST => __('No whitelist'),
Ip_address_Model::PERNAMENT_WHITELIST => __('Permanent whitelist'),
Ip_address_Model::TEMPORARY_WHITELIST => __('Temporary whitelist')
));
$filter_form->add('balance')
->type('number');
// load members
$model_members = new Member_Model();
$total_members = $model_members->count_whitelisted_members($filter_form->as_sql());
if (($sql_offset = ($page - 1) * $limit_results) > $total_members)
$sql_offset = 0;
$query = $model_members->get_whitelisted_members(
$sql_offset, (int)$limit_results, $order_by,
$order_by_direction, $filter_form->as_sql()
);
// it creates grid to view all members
$headline = __('List of whitelisted members');
$grid = new Grid('members', null, array
(
'current' => $limit_results,
'selector_increace' => 50,
'selector_min' => 100,
'selector_max_multiplier' => 20,
'base_url' => Config::get('lang').'/members/show_all/'
. $limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page',
'total_items' => $total_members,
'items_per_page' => $limit_results,
'style' => 'classic',
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'limit_results' => $limit_results,
'filter' => $filter_form
));
// database columns - some are commented out because of lack of space
$grid->order_field('id')
->label('ID');
$grid->order_field('type');
$grid->order_field('name');
$grid->order_callback_field('whitelisted')
->label(__('Whitelist'))
->callback('callback::whitelisted_field');
$grid->order_callback_field('items_count')
->label(__('IP address count on the list'))
->callback('callback::items_count_field');
$grid->order_callback_field('balance')
->callback('callback::balance_field');
$actions = $grid->grouped_action_field();
$actions->add_action()
->icon_action('member')
->url('members/show')
->label('Show member');
$actions->add_action('aid')
->icon_action('transfer')
->url('transfers/show_by_account')
->label('Show transfers');
$grid->datasource($query);
$view = new View('main');
$view->title = $headline;
$view->breadcrumbs = $headline;
$view->content = new View('show_all');
$view->content->table = $grid;
$view->content->headline = $headline;
$view->render(TRUE);
}
/**
* Shows notification settings and enables their editing.
*
* @author Jiri Svitak
*/
public function settings()
{
// access control
if (!$this->acl_check_edit('Messages_Controller', 'message'))
Controller::error(ACCESS);
// creating of new forge
$this->form = new Forge('notifications/settings');
$this->form->group('General settings');
$this->form->input('payment_notice_boundary')
->label(__('Payment notice boundary')." (".
$this->settings->get('currency')."):&nbsp;".
help::hint('payment_notice_boundary'))
->value($this->settings->get('payment_notice_boundary'));
$this->form->input('debtor_boundary')
->label(__('Debtor boundary')." (".
$this->settings->get('currency')."):&nbsp;".
help::hint('debtor_boundary'))
->value($this->settings->get('debtor_boundary'));
$this->form->input('initial_immunity')
->label(__('Initial immunity').': '.
help::hint('initial_immunity'))
->rules('required|valid_numeric')
->value($this->settings->get('initial_immunity'));
$this->form->input('initial_debtor_immunity')
->label(__('Initial debtor immunity').': '.
help::hint('initial_debtor_immunity'))
->rules('required|valid_numeric')
->value($this->settings->get('initial_debtor_immunity'));
$this->form->group('Redirection');
$this->form->input('gateway')
->label(__('Gateway IP address').":")
->value($this->settings->get('gateway'));
$this->form->input('redirection_logo_url')
->label(__('Redirection logo URL').":")
->value($this->settings->get('redirection_logo_url'));
$this->form->input('self_cancel_text')
->label(__('Text for self cancel anchor').":&nbsp;".
help::hint('self_cancel_text'))
->value($this->settings->get('self_cancel_text'));
$this->form->group('E-mail');
$this->form->input('email_subject_prefix')
->label(__('E-mail subject prefix').':')
->value($this->settings->get('email_subject_prefix'));
$this->form->submit('submit')->value(__('Save'));
// form validate
if ($this->form->validate())
{
$form_data = $this->form->as_array();
$issaved = true;
foreach ($form_data as $name => $value)
{
$issaved = $issaved && Settings::set($name, $value);
}
if ($issaved)
{ // if all action were succesfull
status::success('Notification settings have been successfully updated.');
}
else
{ // if not
status::error('Notification settings have not been updated.');
}

url::redirect('notifications/settings');
}
// create view for this template
$view = new View('main');
$view->title = __('Notification settings');
$view->breadcrumbs = __('Notification settings');
$view->content = new View('form');
$view->content->form = $this->form->html();
$view->content->headline = __('Notification settings');
$view->render(TRUE);
}
/**
* Sets whitelist type to all IP addresses of member.
*
* @author Jiri Svitak
* @param integer $member_id
*/
public function set_whitelist($member_id = NULL)
{
// access rights
if (!$this->acl_check_edit('Messages_Controller', 'member'))
Controller::error(ACCESS);
if (!$member_id)
Controller::warning(PARAMETER);
$member = new Member_Model($member_id);
if (!$member || !$member->id)
Controller::error(RECORD);
$whitelist_array[Ip_address_Model::NO_WHITELIST] = __('No whitelist');
$whitelist_array[Ip_address_Model::PERNAMENT_WHITELIST] = __('Permanent whitelist');
$whitelist_array[Ip_address_Model::TEMPORARY_WHITELIST] = __('Temporary whitelist');
// form
$form = new Forge('notifications/set_whitelist/'.$member_id);
$form->dropdown('whitelist')
->options($whitelist_array);
$form->submit('Edit');
if ($form->validate())
{
if (!$this->acl_check_edit('Messages_Controller', 'member'))
Controller::error(ACCESS);
$form_data = $form->as_array();
$ip_model = new Ip_address_Model();
$ips = $ip_model->get_ip_addresses_of_member($member_id);
foreach($ips as $ip)
{
$ip = new Ip_address_Model($ip->id);
$ip->whitelisted = $form_data['whitelist'];
$ip->save();
}
$users_contacts_model = new Users_contacts_Model();
$users_contacts_model->set_whitelist_by_member_and_type(
$form_data['whitelist'], $member_id, Contact_Model::TYPE_EMAIL);
$users_contacts_model->set_whitelist_by_member_and_type(
$form_data['whitelist'], $member_id, Contact_Model::TYPE_PHONE);
// set flash message
status::success('Whitelist setting has been successfully set.');
url::redirect('members/show/'.$member_id);
}
else
{
$headline = __('Whitelist');
// 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);
}
}
/**
* Callback function to validate e-mail notification
*
* @author Michal Kliment
* @param type $input
*/
public function valid_email_or_sms ($input = NULL)
{
// validators cannot be accessed
if (empty($input) || !is_object($input))
{
self::error(PAGE);
}
$email = $input->value;
if ($email == self::ACTIVATE)
{
$message = new Message_Model($this->input->post('message_id'));
if ($message->type != Message_Model::DEBTOR_MESSAGE &&
$message->type != Message_Model::PAYMENT_NOTICE_MESSAGE &&
$message->type != Message_Model::USER_MESSAGE)
{
$input->add_error('required', __(
'It is not possible activate e-mail notification for this message.'
));
}
}
}
}
(45-45/76)