Add basic logging.

This commit is contained in:
Martin Kamerbeek 2010-05-21 18:09:08 +02:00
parent c0669627fa
commit d4c9973c1e
2 changed files with 72 additions and 23 deletions

View file

@ -3,6 +3,7 @@ package WebGUI::AssetAspect::Subscriber;
use strict; use strict;
use warnings; use warnings;
use Class::C3; use Class::C3;
use Carp;
use WebGUI::Asset::Template; use WebGUI::Asset::Template;
use WebGUI::Macro; use WebGUI::Macro;
@ -282,33 +283,76 @@ sub sendNoMutationEmail {
return; return;
} }
sub logConfirmation {
my $self = shift;
my $code = shift || return;
my $session = $self->session;
my $db = $session->db;
$db->write(
' update assetAspectSubscriber_log set '
.' confirmationIp=?, confirmationDate=?, confirmed=? where code=? and assetId=?',
[
$session->env->getIp,
time(),
1,
$code,
$self->getId,
]
);
return;
};
sub logRequest {
my $self = shift;
my $type = shift || croak 'No type passed to logrequest';
my $user = shift || croak 'No user passed to logRequest';
my $code = shift;
my $session = $self->session;
my $db = $session->db;
$db->write(
' insert into assetAspectSubscriber_log set '
.' assetId=?, requestIp=?, requestDate=?, code=?, confirmed=?, anonymous=?, type=?, userId=?, email=?',
[
$self->getId,
$session->env->getIp,
time(),
$code,
0,
$self->session->user->isVisitor,
$type,
$user->getId,
$user->get('email'),
]
);
return;
};
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
sub subscribe { sub subscribe {
my $self = shift; my $self = shift;
my $user = shift || $self->session->user; my $user = shift || $self->session->user;
my $requireConfirm = shift // $self->get('alwaysConfirmSubscription'); my $requireConfirm = shift // $self->get('alwaysConfirmSubscription');
my $session = $self->session; my $session = $self->session;
my $db = $self->session->db;
if ( $requireConfirm ) { if ( $requireConfirm ) {
if ( $user->isInGroup( $self->getSubscriptionGroup->getId ) ) { if ( $user->isInGroup( $self->getSubscriptionGroup->getId ) ) {
$self->sendNoMutationEmail( $user, 'subscribe' ); $self->sendNoMutationEmail( $user, 'subscribe' );
$self->logRequest( 'already_subscribed', $user );
} }
else { else {
my $code = $self->session->id->generate; my $code = $self->session->id->generate;
$self->logRequest( 'subscribe', $user, $code );
$db->write( 'replace into NewsletterCollection_subscriptions set assetId=?, userId=?, code=?, confirmed=?', [
$self->getId,
$user->getId,
$code,
0,
] );
$self->sendSubscriptionConfirmation( $user, $code ); $self->sendSubscriptionConfirmation( $user, $code );
} }
} }
else { else {
$self->getSubscriptionGroup->addUsers( [ $user->getId ] ); $self->getSubscriptionGroup->addUsers( [ $user->getId ] );
$self->logRequest( 'subscribe', $user );
} }
return; return;
@ -320,6 +364,7 @@ sub unsubscribe {
my $user = shift || $self->session->user; my $user = shift || $self->session->user;
$self->getSubscriptionGroup->deleteUsers( [ $user->getId ] ); $self->getSubscriptionGroup->deleteUsers( [ $user->getId ] );
$self->logRequest( 'unsubscribe', $user );
return; return;
} }
@ -332,16 +377,15 @@ sub www_confirmSubscription {
my $code = $form->get('code'); my $code = $form->get('code');
return unless $code; return unless $code;
my $userId = $db->quickScalar( 'select userId from NewsletterCollection_subscriptions where confirmed=? and code=?', [ my $userId = $db->quickScalar( 'select userId from assetAspectSubscriber_log where confirmed=? and code=?', [
0, 0,
$code, $code,
] ); ] );
# $db->write( 'update NewsletterCollection_subscriptions set confirmed=1, code=NULL where code=?', [
# $code
# ] );
if ( $userId ) { if ( $userId ) {
$self->getSubscriptionGroup->addUsers( [ $userId ] ); $self->getSubscriptionGroup->addUsers( [ $userId ] );
$self->logConfirmation( $code );
} }
else { else {
return $self->processStyle( 'Verkeerde code' ); return $self->processStyle( 'Verkeerde code' );

View file

@ -68,6 +68,22 @@ sub installSubscriberAspectTable {
primary key( assetId, revisionDate ) primary key( assetId, revisionDate )
); );
EOSQL EOSQL
$session->db->write(<<EOSQL2);
create table if not exists assetAspectSubscriber_log (
assetId char(22) binary not null,
requestIp char(15) not null,
requestDate bigint(20) not null,
confirmationIp char(15),
confirmationDate bigint(20),
userId char(22) binary not null,
email varchar(255) not null,
type char(30) not null,
anonymous tinyint(1) not null,
confirmed tinyint(1) default 0,
code char(22) default null
);
EOSQL2
print "Done.\n"; print "Done.\n";
} }
@ -85,17 +101,6 @@ sub installNewsletterCollection {
); );
EOSQL EOSQL
$session->db->write(<<EOSQL2);
create table if not exists NewsletterCollection_subscriptions (
assetId char(22) binary not null,
userId char(22) binary not null,
confirmed tinyint(1) default 0,
code char(22) default null,
creationDate timestamp default CURRENT_TIMESTAMP,
primary key( assetId, userId )
);
EOSQL2
print "Done.\n"; print "Done.\n";
} }