discourse-legacysite-perl/site/glist/lib/GList/Plugins/SubscribersMod.pm
2024-06-17 21:49:12 +10:00

104 lines
3.6 KiB
Perl

# ==================================================================
# GList::Plugins::SubscribersMod - Auto Generated Program Module
#
# GList::Plugins::SubscribersMod
# Author : Virginia Lo
# Version : 1
# Updated : Wed Jun 4 12:24:28 2008
#
# ==================================================================
#
package GList::Plugins::SubscribersMod;
# ==================================================================
use strict;
use GT::Base;
use GT::Plugins qw/STOP CONTINUE/;
use GList qw/$IN $DB $CFG/;
# Inherit from base class for debug and error methods
@GList::Plugins::SubscribersMod::ISA = qw(GT::Base);
# Your code begins here.
# PLUGIN HOOKS
# ===================================================================
sub lst_sub_modify {
# -----------------------------------------------------------------------------
# This subroutine will be called whenever the hook 'lst_sub_modify' is run. You
# should call GT::Plugins->action(STOP) if you don't want the regular
# 'lst_sub_modify' code to run, otherwise the code will continue as normal.
#
my (@args) = @_;
# Do something useful here
GT::Plugins->action(STOP);
my $sub_id = $IN->param('subid');
my $old_data = $DB->table('Lists', 'Subscribers')->select({ sub_id => $sub_id }, [ 'lst_title', 'sub_email as new_email', 'sub_name as new_name', 'sub_validated as new_validated', 'sub_bounced as new_bounced', 'sub_list_id_fk', 'Subscribers.*'])->fetchrow_hashref;
return lst_subscribers(GList::language('LST_INVALID')) if (!$old_data);
my $cols = $DB->table('Subscribers')->cols;
foreach (keys %$cols) {
next if ($_ eq 'sub_created' or $_ eq 'sub_id' or $_ eq 'sub_user_id_fk' or $_ eq 'sub_list_id_fk' or $_ eq 'sub_val_code');
my $key = $_;
$key =~ s/sub_/new_/g;
$old_data->{$key} ||= $old_data->{$_};
delete $old_data->{$_};
}
my $info = GList::check_owner('Lists', 'lst', $old_data->{sub_list_id_fk});
return lst_subscribers($info) if (ref $info ne 'HASH');
return ('lst_sub_modify.html', $old_data) if ($IN->param('form'));
my $new_email = $IN->param('new_email');
my $name = $IN->param('new_name');
my $validated = ($IN->param('new_validated')) ? '1' : '0';
my $bounced = $IN->param('new_bounced') || 0;
if ($new_email !~ /^(?:(?:.+\@.+\..+)|\s*)$/ or $new_email =~ /\s/) { # check email address
return ('lst_sub_modify.html', { msg => GList::language('LST_IPT_INVALID_EMAIL'), %$info });
}
require GT::SQL::Condition;
if ($DB->table('Subscribers')->count( GT::SQL::Condition->new(
sub_email => '=' => $new_email,
sub_list_id_fk => '=' => $old_data->{sub_list_id_fk},
sub_id => '<>'=> $sub_id,
)) == 1 ) {
return ('lst_sub_modify.html', { msg => GList::language('LST_IPT_DUPLICATE_EMAIL'), %$info });
}
else {
my $update = {
sub_email => $new_email,
sub_name => $name,
sub_validated => $validated,
sub_bounced => $bounced,
};
foreach (keys %$cols) {
my $key = $_;
$key =~ s/sub_/new_/g;
if ($IN->param($key)) {
$update->{$_} ||= $IN->param($key);
}
}
#use Data::Dumper; print $IN->header . "<pre>".Dumper($old_data,$update)."</pre>";
$DB->table('Subscribers')->update({
%$update
}, { sub_id => $sub_id });
}
require GList::List;
return GList::List::lst_subscribers(GList::language('LST_SUB_MODIFIED', $old_data->{new_email}));
return @args;
}
# Always end with a 1.
1;