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 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(
url_lang::base().'notifications/member/'.$member->id, '',
'POST', array('id' => 'article_form')
);
$form->dropdown('message_id')
->label(__('Message').":")
->options($arr_messages)
->rules('required');
$form->textarea('comment')
->label(__('Comment').':');
$form->dropdown('redirection')
->label(__('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'));
$form->submit('submit')
->value(__('Send'));
special::required_forge_style($form, ' *', 'required');
// for is validate
if ($form->validate())
{
$form_data = $form->as_array();
$message = new Message_Model($form_data['message_id']);
$info_messages = array();
// redirection
switch ($form_data['redirection'])
{
case self::ACTIVATE:
case self::DEACTIVATE:
$messages_ip_addresses_model = new Messages_ip_addresses_Model();
$deleted_redirections = 0;
$added_redirections = 0;
// finds all ip addresses of subnet
$ip_addresses = ORM::factory('ip_address')
->get_ip_addresses_of_member($member->id);
foreach ($ip_addresses as $ip_address)
{
// allways deletes all redirection of ip address
$deleted_redirections += $messages_ip_addresses_model
->delete_redirection_of_ip_address($message->id, $ip_address->id);
// activation => adds new redirection to ip address
if ($form_data['redirection'] == self::ACTIVATE)
{
$added_redirections += $messages_ip_addresses_model
->add_redirection_to_ip_address(
$message->id, $ip_address->id,
$form_data['comment']);
}
}
if ($added_redirections)
$info_messages[] = __('Redirection has been activated for %s IP addresses', $added_redirections).'.';
else
$info_messages[] = __('Redirection has been deactivated for %s IP addresses', $deleted_redirections).'.';
break;
}
// e-mail
switch ($form_data['email'])
{
case self::ACTIVATE:
$sent_emails = 0;
$email_queue_model = new Email_queue_Model();
$users_contacts_model = new Users_contacts_Model();
// gets all e-mails of subnet
$contacts = $users_contacts_model
->get_contacts_by_member_and_type(
$member->id, Contact_Model::TYPE_EMAIL,
$message->ignore_whitelist
);
$name = $message->name;
if ($message->type)
$name = __($message->name);
foreach ($contacts as $contact)
{
$text = $message->email_text;
foreach ($contact as $key => $value)
{
if ($key != 'email_text')
$text = str_replace('{'.$key.'}', $value, $text);
}
$email_queue_model->clear();
$email_queue_model->from = Settings::get('email_default_email');
$email_queue_model->to = $contact->value;
$email_queue_model->subject = Settings::get('email_subject_prefix').": ".$name;
$email_queue_model->body = $text;
$email_queue_model->state = Email_queue_Model::STATE_NEW;
// sends e-mail
if ($email_queue_model->save())
$sent_emails++;
}
$info_messages[] = __('E-mail has been sent for %s e-mail addresses', $sent_emails).'.';
break;
}
status::success(implode("<br />", $info_messages), FALSE);
url::redirect(url_lang::base().'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
)
)
->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(
url_lang::base().'notifications/subnet/'.$subnet->id, '',
'POST', array('id' => 'article_form')
);
$form->dropdown('message_id')
->label(__('Message').":")
->options($arr_messages)
->rules('required');
$form->textarea('comment')
->label(__('Comment').':');
$form->dropdown('redirection')
->label(__('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'));
$form->submit('submit')
->value(__('Send'));
special::required_forge_style($form, ' *', 'required');
// for is validate
if ($form->validate())
{
$form_data = $form->as_array();
$message = new Message_Model($form_data['message_id']);
$info_messages = array();
// redirection
switch ($form_data['redirection'])
{
case self::ACTIVATE:
case self::DEACTIVATE:
$messages_ip_addresses_model = new Messages_ip_addresses_Model();
$deleted_redirections = 0;
$added_redirections = 0;
// finds all ip addresses of subnet
$ip_addresses = ORM::factory('ip_address')
->get_ip_addresses_of_subnet($subnet->id);
foreach ($ip_addresses as $ip_address)
{
// allways deletes all redirection of ip address
$deleted_redirections += $messages_ip_addresses_model
->delete_redirection_of_ip_address($message->id, $ip_address->id);
// activation => adds new redirection to ip address
if ($form_data['redirection'] == self::ACTIVATE)
{
$added_redirections += $messages_ip_addresses_model
->add_redirection_to_ip_address(
$message->id, $ip_address->id,
$form_data['comment']);
}
}
if ($added_redirections)
$info_messages[] = __('Redirection has been activated for %s IP addresses', $added_redirections).'.';
else
$info_messages[] = __('Redirection has been deactivated for %s IP addresses', $deleted_redirections).'.';
break;
}
// e-mail
switch ($form_data['email'])
{
case self::ACTIVATE:
$sent_emails = 0;
$email_queue_model = new Email_queue_Model();
$users_contacts_model = new Users_contacts_Model();
// gets all e-mails of subnet
$contacts = $users_contacts_model
->get_contacts_by_subnet_and_type(
$subnet->id, Contact_Model::TYPE_EMAIL,
$message->ignore_whitelist
);
foreach ($contacts as $contact)
{
$text = $message->email_text;
foreach ($contact as $key => $value)
{
if ($key != 'email_text')
$text = str_replace('{'.$key.'}', $value, $text);
}
$email_queue_model->clear();
$email_queue_model->from = Settings::get('email_default_email');
$email_queue_model->to = $contact->value;
$email_queue_model->subject = Settings::get('email_subject_prefix').": ".$message->name;
$email_queue_model->body = $text;
$email_queue_model->state = Email_queue_Model::STATE_NEW;
// sends e-mail
if ($email_queue_model->save())
$sent_emails++;
}
$info_messages[] = __('E-mail has been sent for %s e-mail addresses', $sent_emails).'.';
break;
}
status::success(implode("<br />", $info_messages), FALSE);
url::redirect(url_lang::base().'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(
url_lang::base().'notifications/cloud/'.$cloud->id, '',
'POST', array('id' => 'article_form')
);
$form->dropdown('message_id')
->label(__('Message').":")
->options($arr_messages)
->rules('required');
$form->textarea('comment')
->label(__('Comment').':');
$form->dropdown('redirection')
->label(__('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'));
$form->submit('submit')
->value(__('Send'));
special::required_forge_style($form, ' *', 'required');
// form is validate
if ($form->validate())
{
$form_data = $form->as_array();
$message = new Message_Model($form_data['message_id']);
$info_messages = array();
// redirection
switch ($form_data['redirection'])
{
case self::ACTIVATE:
case self::DEACTIVATE:
$messages_ip_addresses_model = new Messages_ip_addresses_Model();
$deleted_redirections = 0;
$added_redirections = 0;
// for each subnet of cloud
foreach ($cloud->subnets as $subnet)
{
// gets all ip addresses of subnet
$ip_addresses = ORM::factory('ip_address')
->get_ip_addresses_of_subnet($subnet->id);
foreach ($ip_addresses as $ip_address)
{
// allways deletes redirection of ip address
$deleted_redirections += $messages_ip_addresses_model
->delete_redirection_of_ip_address($message->id, $ip_address->id);
// activation => adds new redirection to ip address
if ($form_data['redirection'] == self::ACTIVATE)
{
$added_redirections += $messages_ip_addresses_model
->add_redirection_to_ip_address(
$message->id, $ip_address->id,
$form_data['comment']);
}
}
}
if ($added_redirections)
$info_messages[] = __('Redirection has been activated for %s IP addresses', $added_redirections).'.';
else
$info_messages[] = __('Redirection has been deactivated for %s IP addresses', $deleted_redirections).'.';
break;
}
// e-mail
switch ($form_data['email'])
{
case self::ACTIVATE:
$sent_emails = 0;
$email_queue_model = new Email_queue_Model();
$users_contacts_model = new Users_contacts_Model();
// for each subnet of cloud
foreach ($cloud->subnets as $subnet)
{
// gets all e-mails of subnet
$contacts = $users_contacts_model
->get_contacts_by_subnet_and_type(
$subnet->id, Contact_Model::TYPE_EMAIL,
$message->ignore_whitelist
);
foreach ($contacts as $contact)
{
$text = $message->email_text;
foreach ($contact as $key => $value)
{
if ($key != 'email_text')
$text = str_replace('{'.$key.'}', $value, $text);
}
$email_queue_model->clear();
$email_queue_model->from = Settings::get('email_default_email');
$email_queue_model->to = $contact->value;
$email_queue_model->subject = Settings::get('email_subject_prefix').": ".$message->name;
$email_queue_model->body = $text;
$email_queue_model->state = Email_queue_Model::STATE_NEW;
// send e-mail
if ($email_queue_model->save())
$sent_emails++;
}
}
$info_messages[] = __('E-mail has been sent for %s e-mail addresses', $sent_emails).'.';
break;
}
status::success(implode("<br />", $info_messages), FALSE);
url::redirect(url_lang::base().'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::$permanent_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(url_lang::base().'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')
->label(__('Type'));
$grid->order_field('name')
->label(__('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')
->label(__('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(
url_lang::base().'notifications/settings', '',
'POST', array('id' => 'article_form')
);
$this->form->set_attr('class', 'form_class')
->set_attr('method', 'post');
$this->form->group('')
->label(__('Notification settings'));
$this->form->input('gateway')
->label(__('Gateway IP address').":")
->value($this->settings->get('gateway'));
$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('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->input('email_subject_prefix')
->label(__('E-mail subject prefix').':')
->value($this->settings->get('email_subject_prefix'));
$this->form->submit('submit')->value(__('Save'));
special::required_forge_style($this->form, ' *', 'required');
// form validate
if ($this->form->validate())
{
$form_data = $this->form->as_array();
$config_model = new Config_Model();
$issaved = true;
foreach ($form_data as $name => $value)
{
$value = addslashes($value);
// check if variable exists
if ($config_model->check_exist_variable($name))
// update of variable
$issaved = $issaved && $config_model->update_variable($name,$value);
else
// insert new variable
$issaved = $issaved && $config_model->insert_variable($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(url_lang::base().'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::$permanent_whitelist] = __('Permanent whitelist');
$whitelist_array[Ip_address_Model::$temporary_whitelist] = __('Temporary whitelist');
// form
$form = new Forge(
url_lang::base().'notifications/set_whitelist/'.$member_id, '',
'POST', array('id' => 'article_form')
);
$form->set_attr('class', 'form_class')
->set_attr('method', 'post');
$form->dropdown('whitelist')
->label(__('Whitelist').':')
->options($whitelist_array);
$form->submit('submit')
->value(__('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);
// set flash message
status::success('Whitelist setting has been successfully set.');
url::redirect(url_lang::base().'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 ($input)
{
$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/75)