X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fbanned_pay.pm;h=b93f67bbe714095585726dffae53c6dc6cf6185f;hb=72deba42ac5847c2a6bdeea20157035b8f9df7ae;hp=337965324d1849b71e8f91d816d4667a13527e79;hpb=b5c4237a34aef94976bc343c8d9e138664fc3984;p=freeside.git diff --git a/FS/FS/banned_pay.pm b/FS/FS/banned_pay.pm index 337965324..b93f67bbe 100644 --- a/FS/FS/banned_pay.pm +++ b/FS/FS/banned_pay.pm @@ -2,6 +2,7 @@ package FS::banned_pay; use strict; use base qw( FS::otaker_Mixin FS::Record ); +use Digest::MD5 qw(md5_base64); use FS::Record qw( qsearch qsearchs ); use FS::UID qw( getotaker ); use FS::CurrentUser; @@ -42,8 +43,12 @@ supported: =item _date - specified as a UNIX timestamp; see L. Also see L and L for conversion functions. +=item end_date - optional end date, also specified as a UNIX timestamp. + =item usernum - order taker (assigned automatically, see L) +=item bantype - Ban type: "" or null (regular ban), "warn" (warning) + =item reason - reason (text) =back @@ -110,6 +115,8 @@ sub check { || $self->ut_enum('payby', [ 'CARD', 'CHEK' ] ) || $self->ut_text('payinfo') || $self->ut_numbern('_date') + || $self->ut_numbern('end_date') + || $self->ut_enum('bantype', [ '', 'warn' ] ) || $self->ut_textn('reason') ; return $error if $error; @@ -121,6 +128,31 @@ sub check { $self->SUPER::check; } +=back + +=head1 CLASS METHODS + +=item ban_search OPTION => VALUE ... + +Takes two parameters: payby and payinfo, and searches for an (un-expired) ban +matching those items. + +Returns the ban, or false if no ban was found. + +=cut + +sub ban_search { + my( $class, %opt ) = @_; + qsearchs({ + 'table' => 'banned_pay', + 'hashref' => { + 'payby' => $opt{payby}, + 'payinfo' => md5_base64($opt{payinfo}), + }, + 'extra_sql' => 'AND ( end_date IS NULL OR end_date >= '. time. ' ) ', + }); +} + # Used by FS::Upgrade to migrate to a new database. sub _upgrade_data { # class method my ($class, %opts) = @_;