VUser-SquirrelMail
view release on metacpan or search on metacpan
lib/VUser/SquirrelMail/Prefs.pm view on Meta::CPAN
# Can be mysql, pgsql, none
db type = mysql
# Host where the DB is
db host = localhost
# The name of the squirrelmail database
db name = squirrelmail
# The name of the preferences table
prefs table = userprefs
# Username and password for the database.
# Note: This user required select, insert, update and delete perms on the
# SquirrelMail userprefs table.
db user = squirrelmail
db password = secret
# Location of SquirrelMail data files
data dir = /usr/local/squirrelmail/data
CONFIG
if (defined $opts->{file}) {
close $fh;
}
lib/VUser/SquirrelMail/Prefs.pm view on Meta::CPAN
# Semi-reasonable default if we don't know what the DB is.
$dsn .= "$db_name";
}
my $user = VUser::ExtLib::strip_ws($cfg{$csec}{'db user'});
my $pass = VUser::ExtLib::strip_ws($cfg{$csec}{'db password'});
$dbh = DBI->connect ($dsn, $user, $pass,
{ RaiseError => 1, AutoCommit => 0})
or die "Database error: ".DBI->errstr;
}
$eh->register_keyword('smprefs', 'Manage SquirrelMail user preferences');
# add
$eh->register_action('smprefs', 'add', 'Add a preference for the user');
$eh->register_option('smprefs', 'add', $meta{'username'}, 1);
$eh->register_option('smprefs', 'add', $meta{'option'}, 1);
$eh->register_option('smprefs', 'add', $meta{'value'}, 1);
$eh->register_task('smprefs', 'add', \&smprefs_add);
# mod
$eh->register_action('smprefs', 'mod', 'Change a user\'s preferences');
$eh->register_option('smprefs', 'mod', $meta{'username'}, 1);
$eh->register_option('smprefs', 'mod', $meta{'option'}, 1);
$eh->register_option('smprefs', 'mod', $meta{'value'}, 1);
$eh->register_task('smprefs', 'mod', \&smprefs_mod);
# del
$eh->register_action('smprefs', 'del', 'Delete a preference for a user');
$eh->register_option('smprefs', 'del', $meta{'username'}, 1);
$eh->register_option('smprefs', 'del', $meta{'option'}, 1);
$eh->register_task('smprefs', 'del', \&smprefs_del);
# show
$eh->register_action('smprefs', 'show', 'Show the preference/user combination');
$eh->register_option('smprefs', 'show', $meta{'username'}, 0);
$eh->register_option('smprefs', 'show', $meta{'option'}, 0);
$eh->register_task('smprefs', 'show', \&smprefs_show);
# delall: Delete all options
$eh->register_action('smprefs', 'delall', 'Delete all options for a user');
$eh->register_option('smprefs', 'delall', $meta{'username'}, 1);
$eh->register_task('smprefs', 'delall', \&smprefs_delall);
# Email
$eh->register_keyword('email');
$eh->register_action('email', 'del');
$eh->register_task('email', 'del', \&smprefs_delall);
}
sub unload {}
sub smprefs_add
{
my ($cfg, $opts, $action, $eh) = @_;
if (defined $dbh) {
my $table = VUser::ExtLib::strip_ws($cfg->{$csec}{'prefs table'});
my $sql = "Insert into $table set user = ?, prefkey = ?, prefval = ?";
my $sth = $dbh->prepare($sql)
or die "Database error: ".$dbh->errstr."\n";
$sth->execute($opts->{username},
$opts->{option},
$opts->{value})
or die "Database error: ".$sth->errstr."\n";
} else {
# File-based here
}
return undef;
}
sub smprefs_mod
{
my ($cfg, $opts, $action, $eh) = @_;
if (defined $dbh) {
} else {
# file-based here
}
return undef;
}
sub smprefs_show
{
my ($cfg, $opts, $action, $eh) = @_;
my $user = $opts->{username} if defined $opts->{username};
my $option = $opts->{option} if defined $opts->{option};
my $rs = VUser::ResultSet->new();
$rs->add_meta($meta{'username'});
$rs->add_meta($meta{'option'});
$rs->add_meta($meta{'value'});
if (defined $dbh) {
my $table = VUser::ExtLib::strip_ws($cfg->{$csec}{'prefs table'});
my $sql = "select user,prefkey, prefval from $table";
my @params = ();
if (defined $user and defined $option) {
$sql .= " where user = ? and prefkey = ?";
@params = ($user, $option);
} elsif (not defined $option) {
$sql .= " where user = ?";
@params = ($user);
} elsif (not defined $user) {
lib/VUser/SquirrelMail/Prefs.pm view on Meta::CPAN
while (@res = $sth->fetchrow_array) {
$rs->add_data([@res]);
}
} else {
# File based...
}
return $rs;
}
sub smprefs_del{}
sub smprefs_delall
{
my $cfg = shift;
my $opts = shift;
my $user = $opts->{username};
# The email extension uses 'account' instead of 'username'
$user = $opts->{account} if not $user;
if (defined $dbh) {
my $table = VUser::ExtLib::strip_ws($cfg->{$csec}{'prefs table'});
my $sql = "delete from $table where user = ?";
my $sth = $dbh->prepare($sql)
or die "Database error: ".$dbh->errstr."\n";
$sth->execute($opts->{username})
or die "Database error: ".$sth->errstr."\n";
} else {
# File-based here
}
return undef;
}
lib/VUser/SquirrelMail/Prefs.pm view on Meta::CPAN
# Can be mysql, pgsql, none
db type = mysql
# Host where the DB is
db host = localhost
# The name of the squirrelmail database
db name = squirrelmail
# The name of the preferences table
prefs table = userprefs
# Username and password for the database.
# Note: This user required select, insert, update and delete perms on the
# SquirrelMail userprefs table.
db user = squirrelmail
db password = secret
# Location of SquirrelMail data files
data dir = /usr/local/squirrelmail/data
=head1 AUTHOR
Randy Smith <perlstalker@vuser.org>
lib/VUser/SquirrelMail/Prefs/SQL.pm view on Meta::CPAN
$extlib = VUser::ExtLib::SQL->new(\%cfg,
{'dsn' => $dsn,
'user' => $user,
'password' => $pass,
'macros' => { 'u' => 'username',
'o' => 'option',
'v' => 'value'
}
});
# smprefs|add
$eh->register_task('smprefs', 'add', \&do_sql);
# smprefs|mod
$eh->register_task('smprefs', 'mod', \&do_sql);
# smprefs|del
$eh->register_task('smprefs', 'del', \&do_sql);
# smprefs|show
$eh->register_task('smprefs', 'show', \&smprefs_show);
# smprefs|delall
$eh->register_task('smprefs', 'delall', \&do_sql);
# email|del
$eh->register_task('email', 'del', \&email_del);
}
sub unload {};
sub do_sql {
my ( $cfg, $opts, $action, $eh ) = @_;
lib/VUser/SquirrelMail/Prefs/SQL.pm view on Meta::CPAN
if (not $sql) {
$log->log(LOG_WARN, "No query specified for $query. Skipping.");
return;
}
my $sth = $extlib->execute( $opts, $sql );
$sth->finish;
}
sub smprefs_show
{
my ($cfg, $opts, $action, $eh) = @_;
my $query;
if ($opts->{'username'} and $opts->{'option'}) {
$query = 'showuseropt_query';
} elsif ($opts->{'username'}) {
$query = 'showuser_query';
} elsif ($opts->{'option'}) {
$query = 'showopt_query';
lib/VUser/SquirrelMail/Prefs/SQL.pm view on Meta::CPAN
# The name of the squirrelmail database
db name = squirrelmail
# You may specify the DSN directly instead of having S::P::SQL guess it.
# 'dns' overrides the 'db type', 'db host' and 'db name' settings above
# dsn = dbi:mysql:localhost
# Username and password for the database.
# Note: This user required select, insert, update and delete perms on the
# SquirrelMail userprefs table.
db user = squirrelmail
db password = secret
## SQL Queries
# Here you define the queries used to add, modify and delete users and
# attributes. There are a few predefined macros that you can use in your
# SQL. The values will be quoted and escaped before being inserted into
# the SQL.
# %u => username
# %o => option
# %v => value
# %-option => This will be replaced by the value of --option passed in
# when vuser is run.
# Add a preference
addpref_query = Insert into userprefs set user = %u, prefkey = %o, prefval = %v
# Delete a preference
delpref_query = Delete from userprefs where user = %u, prefkey = %o
# Modify a preference
modpref_query = Update userprefs set prefkey = %v where user = %u, prefkey = %o
# Delete all preferences for a user
delallpref_query = Delete from userprefs where user = %u
# Show queries. These must return these columns in order
# user name, preference name, preference value
#
# Get a single option for a user
showuseropt_query = Select user,prefkey,prefval from userprefs where user = %u and prefkey = $o
# Get a single option for all users
showopt_query = Select user,prefkey,prefval from userprefs where prefkey = %o
# Get all options for a user
showuser_query = Select user,prefkey,prefval from userprefs where user = %u
# Get all options for all users
showall_query = Select user,prefkey,prefval from userprefs;
=head1 AUTHOR
Randy Smith <perlstalker@vuser.org>
=head1 LICENSE
This file is part of VUser-SquirrelMail.
VUser-SquirrelMail is free software; you can redistribute it and/or modify
( run in 0.752 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )