| Foorum documentation | Contained in the Foorum distribution. |
Foorum::TheSchwartz::Worker::ResendActivation - resend activation email to unverified users everyday
# check bin/cron/TheSchwartz_client.pl and bin/cron/TheSchwartz_worker.pl for usage
After user registered, they don't verified the emails for some reasons. so there are lots of unverified users, that's not so wise to keep the data of those unverified users. This module is aim to resend the activation emails and remove unverfied data after half a year of the registration time.
Fayland Lam <fayland at gmail.com>
| Foorum documentation | Contained in the Foorum distribution. |
package Foorum::TheSchwartz::Worker::ResendActivation; use strict; use warnings; our $VERSION = '1.001000'; use base qw( TheSchwartz::Moosified::Worker ); use Foorum::SUtils qw/schema/; use Foorum::Logger qw/error_log/; use Foorum::XUtils qw/config base_path cache/; sub work { my $class = shift; my $job = shift; my $schema = schema(); my $config = config(); my $cache = cache(); my $base_path = base_path(); # resend the emails if user is not verified after 30 days of the registration time # but don't send it many times. my $rs = $schema->resultset('User')->search( { status => 'unverified', register_time => { '<', time() - 30 * 86400 } } ); my @all_user_ids; while ( my $user = $rs->next ) { # skip if it's sent within 30 days # YYY? that's not so smart, need redo later. my $cnt = $schema->resultset('ScheduledEmail')->count( { email_type => 'activation', to_email => $user->email, time => { '<', time() - 30 * 86400 } } ); next if ($cnt); # send activation code $schema->resultset('ScheduledEmail') ->send_activation( $user, 0, { lang => $user->lang } ); push @all_user_ids, $user->user_id; } # XXX? TODO, "remove unverfied data after half a year of the registration time." my $log_user_ids = join( ', ', @all_user_ids ); error_log( $schema, 'info', <<LOG); ResendActivation - $log_user_ids LOG $job->completed(); } 1; __END__