Added form plugin honeypot to webgui_newsletter. It can be used with:

<tmpl_var subscriptionForm_form>
<tmpl_var form_honeypot>
<tmpl_var form_honeypot_id>

It's used by default now.
This commit is contained in:
root 2018-10-23 03:07:37 +02:00
parent 4379770f2d
commit dd9150a1a8
5 changed files with 136 additions and 32 deletions

View file

@ -36,10 +36,11 @@ addListNameColumn( $session );
addRegistrationSteps( $session );
addConfirmationTemplateColumn( $session );
addSentToIndex( $session );
addUseHoneypotColumn( $session );
finish($session);
#----------------------------------------------------------------------------
#-------------------------------------------------------------------------------
sub addConfirmationTemplateColumn {
my $session = shift;
my $db = $session->db;
@ -65,7 +66,7 @@ sub addConfirmationTemplateColumn {
]
);
}
print "Done.\n";
}
@ -124,21 +125,21 @@ sub installSubscriberAspectTable {
$session->db->write(<<EOSQL);
create table if not exists assetAspectSubscriber (
assetId char(22) binary not null,
revisionDate bigint(20) not null,
subscriptionGroupId char(22) binary,
subscriptionEnabled tinyint(1) not null default 0,
alwaysConfirmSubscription tinyint(1) not null default 0,
allowAnonymousSubscription tinyint(1) not null default 0,
assetId char(22) binary not null,
revisionDate bigint(20) not null,
subscriptionGroupId char(22) binary,
subscriptionEnabled tinyint(1) not null default 0,
alwaysConfirmSubscription tinyint(1) not null default 0,
allowAnonymousSubscription tinyint(1) not null default 0,
confirmationRequiredTemplateId char(22) binary,
confirmationEmailTemplateId char(22) binary,
confirmationEmailSubject varchar(255),
noMutationEmailTemplateId char(22) binary,
noMutationEmailSubject varchar(255),
confirmationEmailTemplateId char(22) binary,
confirmationEmailSubject varchar(255),
noMutationEmailTemplateId char(22) binary,
noMutationEmailSubject varchar(255),
primary key( assetId, revisionDate )
);
EOSQL
$session->db->write(<<EOSQL2);
create table if not exists assetAspectSubscriber_log (
assetId char(22) binary not null,
@ -167,6 +168,7 @@ sub installNewsletterCollection {
create table if not exists NewsletterCollection (
assetId char(22) binary not null,
revisionDate bigint(20) not null,
useHoneypot tinyint(1) default 0,
primary key( assetId, revisionDate )
);
EOSQL
@ -181,7 +183,7 @@ sub addTemplateColumnToNewsletterCollection {
print "\tAdding view template column to NewletterCollection...";
my $hasColumn = $db->quickScalar( 'show columns from NewsletterCollection where Field=?', [ 'viewTemplateId' ] );
unless ( $hasColumn ) {
$db->write( 'alter table NewsletterCollection add column viewTemplateId char(22) binary not null default ?', [
'aYVYFpofaYvmRYoHwl3x4w'
@ -201,7 +203,7 @@ sub addRecentColumnToNewsletterCollection {
print "\tAdding recent issues column to NewletterCollection...";
my $hasColumn = $db->quickScalar( 'show columns from NewsletterCollection where Field=?', [ 'recentIssueCount' ] );
unless ( $hasColumn ) {
$db->write( 'alter table NewsletterCollection add column recentIssueCount int(3) not null default ?', [
1,
@ -260,7 +262,7 @@ sub installNewsletterInAdminConsole {
sub installNewsletterSettings {
my $session = shift;
my $setting = $session->setting;
print "\tInstalling newsletter setting slots...";
my %settings = (
@ -285,11 +287,11 @@ sub addPluginsToConfigFile {
my $config = $session->config;
print "\tAdding plugins to config file...";
$config->set( 'assets/WebGUI::Asset::Wobject::NewsletterCollection', {
category => 'basic',
} );
my @handlers = @{ $session->config->get('contentHandlers') };
if ( !scalar grep { $_ eq 'WebGUI::Content::NewsletterManager' } @handlers ) {
insert_after_string 'WebGUI::Content::Shop', 'WebGUI::Content::NewsletterManager', @handlers;
@ -301,7 +303,7 @@ sub addPluginsToConfigFile {
push @workflows, 'WebGUI::Workflow::Activity::SendQueuedMailings';
$session->config->set( 'workflowActivities/None', \@workflows );
}
print "Done.\n";
}
@ -343,43 +345,63 @@ sub addRegistrationSteps {
my $session = shift;
print "\tAdding MailingSubscribe Registration Step to config...";
my %steps = map { $_ => 1 } @{ $session->config->get( 'registrationSteps' ) || [] };
$steps{ 'WebGUI::Registration::Step::MailingSubscribe' } = 1;
$session->config->set( 'registrationSteps', [ keys %steps ] );
print "Done.\n";
}
}
#----------------------------------------------------------------------------
sub addUseHoneypotColumn {
my $session = shift;
my $db = $session->db;
print "\tAdding useHoneypot column...";
my @columns = $db->buildArray( 'show columns from NewsletterCollection' );
if ( ! grep { $_ eq 'useHoneypot' } @columns ) {
$db->write( 'alter table NewsletterCollection add column useHoneypot tinyint(1) default 0' );
$db->write( 'update NewsletterCollection set useHoneypot = 0 where useHoneypot is null' );
print "Done\n";
}
else {
print "Skipping\n";
}
}
#----------------------------------------------------------------------------
sub start {
my $webguiRoot = shift;
my $configFile = shift;
my $session = WebGUI::Session->open($webguiRoot,$configFile);
$session->user({userId=>3});
## If your script is adding or changing content you need these lines, otherwise leave them commented
#
# my $versionTag = WebGUI::VersionTag->getWorking($session);
# $versionTag->set({name => 'Name Your Tag'});
#
##
return $session;
}
#----------------------------------------------------------------------------
sub finish {
my $session = shift;
## If your script is adding or changing content you need these lines, otherwise leave them commented
#
# my $versionTag = WebGUI::VersionTag->getWorking($session);
# $versionTag->commit;
##
$session->var->end;
$session->close;
}