Дело было вечером, делать было нечего ... и тут я вспомнил про принудительных массовых сообщениях.
используя код из файлов multimsg.pl, calls.pm, pay_log.pl, я доработал функционал первого,
и мне интересно,
почему никто не попробовал дописать пол странички кода, ето ж интересно
код нуждается в напильнике и можна добавить дороботке (пр. сгупировать хард мсг в 1 событие,
при удалении которого удалятьс
я все от него зависищае;
или добавить время действия, по окончанию которого оно удалитьс
а )
я не стал доделывать т.к. нужно больше времени и затрагивать другие файлы, ковиряйтесь!
добавил 2 хука для доработки типа смс
прошу добавить в коробку
спасибки можно отправить в карму/usr/local/nodeny/web/multimsg.pl
# ------------------- NoDeny ------------------
# Copyright (с) Volik Stanislav, 2008..2013
# Update by Redmen, 2014
# ---------------------------------------------
use strict;
sub go
{
my($Url) = @_;
Adm->chk_privil_or_die('msg_create');
my @uids = ();
{
ref $ses::data or last;
ref $ses::data->{ids} or last;
foreach my $uid( @{$ses::data->{ids}} )
{
Adm->why_no_usr_access($uid) && next;
push @uids, int $uid;
}
}
my $usr_count = scalar @uids;
$usr_count or Error('Не выбран ни один клиент');
$Url->{_unikey} = $ses::unikey;
my $msg_types = [
# по умолчанию не показываем кредиты и временные изменения границ отключений т.к. у них будущее время
[ 'Стандартное' => 'default' ],
[ 'Принудилельное' => 'hard' ],
#<HOOK>msg_types
];
my $msg = ses::input('msg');
my @Info_block = ();
my $msg_type = ses::input_int('msg_type');
{
ses::input_int('category') && last;
my @type_select = ();
my $i = 0;
foreach my $type( @$msg_types )
{
push @type_select, v::radio(
name => 'msg_type',
value => $i,
checked => $i == $msg_type,
label => $type->[0],
);
$i == $msg_type or next;
!$msg_type && next;
}
continue
{
$i++;
}
push @Info_block, join(' ',@type_select);
push @Info_block, ( Center(v::submit("Отправить $usr_count сообщений")) );
$Url->{msg_type} = $msg_type if $msg_type;
}
my $info_block = join '<hr>', @Info_block;
if( $msg eq '' )
{
Show Center $Url->form(
_('[p][p][p][div h_center]',
Adm->chk_privil('SuperAdmin')? 'Отправить html-сообщение клиентам по фильтру:' :
'Сообщение клиентам по фильтру:',
join('<br>',@{$ses::data->{info}}),
v::input_ta('msg','',50,5),
$info_block,
)
);
return;
}
if( !Adm->chk_privil('SuperAdmin') && $msg =~ /[<>]/ )
{
Error('Теги разрешены только суперадмину');
}
if ($msg_type == 0) {
my $reason = join ',', '', @uids, '';
my $rows = Pay_to_DB(category=>488, reason=>$reason, comment=>$msg);
url->redirect( a=>'pay_log',
$rows<1? ( -made=>'Ошибка отправки сообщений', -error=>1 ) :
( -made=>'Многоадресное сообщение отправлено' )
);
} elsif ($msg_type == 1) {
my $rows = 0;
foreach my $uidm ( @uids ) {
Db->do_all(
[ "INSERT INTO pays SET category=482, creator='kernel', time=UNIX_TIMESTAMP(), comment=?, mid=?", $msg, $uidm ],
[ "UPDATE users SET state='off' WHERE id=?", $uidm]
);
$rows++;
}
url->redirect( a=>'pay_log',
$rows<1? ( -made=>'Ошибка отправки сообщений', -error=>1 ) :
( -made=>'Многоадресное сообщение отправлено' )
);
}
#<HOOK>types_action
}
1;