#!/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