adding export to read mailbox status information, RT#15987
authorivan <ivan>
Sun, 15 Jan 2012 03:54:30 +0000 (03:54 +0000)
committerivan <ivan>
Sun, 15 Jan 2012 03:54:30 +0000 (03:54 +0000)
FS/FS/part_export/acct_sql_status.pm [new file with mode: 0644]

diff --git a/FS/FS/part_export/acct_sql_status.pm b/FS/FS/part_export/acct_sql_status.pm
new file mode 100644 (file)
index 0000000..5be619e
--- /dev/null
@@ -0,0 +1,84 @@
+package FS::part_export_acct_sql_status;
+use base qw( FS::part_export::sql_Common );
+
+use strict;
+use warnings;
+use vars qw( %info );
+
+my $options = __PACKAGE__->sql_options;
+delete $options->{$_} for qw( table schema static primary_key );
+
+%info = (
+  'svc'      => 'svc_acct',
+  'options'  => $options,
+  'nodomain' => '',
+  'notes'    => <<END
+Read mailbox status information (vacation and spam settings) from an SQL
+database, tables "vacation" and "users" respectively.
+END
+);
+
+sub rebless { shift; }
+
+#don't want to inherit these from sql_Common
+sub _export_insert    {}
+sub _export_replace   {}
+sub _export_delete    {}
+sub _export_suspend   {}
+sub _export_unsuspend {}
+
+sub export_getstatus {
+  my($self, $svc_acct, $htmlref, $hashref) = @_;
+
+  my $dbh = DBI->connect( map $self->option($_), qw(datasrc username password) )
+    or do { $hashref->{'error'} = "can't connect: ".  $DBI::errstr; return; };
+
+  ###
+  #vacation settings
+  ###
+
+  my $vsth = $dbh->prepare('SELECT * FROM vacation WHERE email = ?')
+    or do { $hashref->{'error'} = "can't prepare: ". $dbh->errstr; return; };
+  $vsth->execute( $svc_acct->email )
+    or do { $hashref->{'error'} = "can't execute: ". $vsth->errstr; return; };
+
+  my $vrow = $vsth->fetchrow_hashref;
+  if ( $vrow ) {
+    $hashref->{'vacation_active'}  = $vrow->{'active'};
+    $hashref->{'vacation_subject'} = $vrow->{'subject'};
+    $hashref->{'vacation_body'}    = $vrow->{'body'};
+#what about these?
+#| cache   | text         | NO   |     | NULL                |       |
+#| domain  | varchar(255) | NO   |     | NULL                |       |
+#and disabling "Sender e-mail address for auto-reply message:", no place for it
+  }
+
+  ###
+  #spam settings
+  ###
+
+  my $ssth = $dbh->prepare('SELECT * FROM users WHERE address = ?')
+    or do { $hashref->{'error'} = "can't prepare: ". $dbh->errstr; return; };
+  $ssth->execute( $svc_acct->email )
+    or do { $hashref->{'error'} = "can't execute: ". $ssth->errstr; return; };
+
+  my $srow = $ssth->fetchrow_hashref;
+  if ( $srow ) {
+    $hashref->{'spam_tag_level'}     = $srow->{'spam_tag_level'};
+    $hashref->{'spam_tag2_level'}    = $srow->{'spam_tag2_level'};
+    $hashref->{'spam_kill_level'}    = $srow->{'spam_kill_level'};
+    $hashref->{'bypass_spam_checks'} = $srow->{'bypass_spam_checks'};
+    $hashref->{'spam_tag2_level'}    = $srow->{'spam_tag2_level'};
+  }
+
+  ###
+  # spam allow/deny list
+  ###
+
+  #my $lsth = $dbh->prepare('SELECT * FROM 
+
+  #htmlref not implemented/used for this status export
+
+}
+
+1;