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 )