diff --git a/sbin/importSpecialState.pl b/sbin/importSpecialState.pl new file mode 100644 index 0000000..91a0158 --- /dev/null +++ b/sbin/importSpecialState.pl @@ -0,0 +1,139 @@ +#!/usr/bin/env perl + +$|++; # disable output buffering +our ($webguiRoot, $configFile, $state, $emailFile, $groupId ); + +BEGIN { + $webguiRoot = ".."; + unshift (@INC, $webguiRoot."/lib"); +} + +use strict; +use Pod::Usage; +use Getopt::Long; +use WebGUI::Session; +use WebGUI::User; +use WebGUI::User::SpecialState; + +# Get parameters here, including $help +GetOptions( + 'configFile=s' => \$configFile, + 'groupId=s' => \$groupId, + 'state=s' => \$state, + 'emailFile=s' => \$emailFile, +); + +my $session = start( $webguiRoot, $configFile ); + +open my $fh, "<$emailFile" || die "Cannot open email file [$emailFile]"; + +while ( my $email = <$fh> ) { + $email =~ s{\s}{}gxmsi; + + if ( $email !~ m/^[^@]+\@[^@]+$/ ) { + print "Skipping email address [$email] because it looks wrong.\n"; + next; + } + + print "Processing email address [$email]...\n"; + + my $user = WebGUI::User->newByEmail( $session, $email ); + if ( $user ) { + print "\tEmail already has account. Skipping.\n"; + } + else { + print "\tEmail has no account, creating special state $state.\n"; + $user = WebGUI::User::SpecialState->create( $session ); + $user->update( { email => $email } ); + $user->addSpecialState( $state ); + } + + print "\tAdding user to group $groupId\n"; + + $user->addToGroups( [ $groupId ] ); + +} +print "Done\n\n"; + +finish($session); + +#---------------------------------------------------------------------------- +# Your sub here + +#---------------------------------------------------------------------------- +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; +} + +__END__ + + +=head1 NAME + +utility - A template for WebGUI utility scripts + +=head1 SYNOPSIS + + utility --configFile config.conf ... + + utility --help + +=head1 DESCRIPTION + +This WebGUI utility script helps you... + +=head1 ARGUMENTS + +=head1 OPTIONS + +=over + +=item B<--configFile config.conf> + +The WebGUI config file to use. Only the file name needs to be specified, +since it will be looked up inside WebGUI's configuration directory. +This parameter is required. + +=item B<--help> + +Shows a short summary and usage + +=item B<--man> + +Shows this document + +=back + +=head1 AUTHOR + +Copyright 2001-2009 Plain Black Corporation. + +=cut + +#vim:ft=perl