use strict;
use vars qw($cache);
+use subs qw(_cache);
use Digest::MD5 qw(md5_hex);
use Date::Format;
use Business::CreditCard;
-use Cache::SharedMemoryCache; #store in db?
use FS::CGI qw(small_custview); #doh
use FS::Conf;
use FS::Record qw(qsearch qsearchs);
use FS::Msgcat qw(gettext);
+use FS::ClientAPI_SessionCache;
use FS::svc_acct;
use FS::svc_domain;
use FS::svc_external;
use subs qw(_provision);
-#store in db?
-my $cache = new Cache::SharedMemoryCache( {
- 'namespace' => 'FS::ClientAPI::MyAccount',
-} );
+sub _cache {
+ $cache ||= new FS::ClientAPI_SessionCache( {
+ 'namespace' => 'FS::ClientAPI::MyAccount',
+ } );
+}
#false laziness w/FS::ClientAPI::passwd::passwd
sub login {
my $session_id;
do {
$session_id = md5_hex(md5_hex(time(). {}. rand(). $$))
- } until ( ! defined $cache->get($session_id) ); #just in case
+ } until ( ! defined _cache->get($session_id) ); #just in case
- $cache->set( $session_id, $session, '1 hour' );
+ _cache->set( $session_id, $session, '1 hour' );
return { 'error' => '',
'session_id' => $session_id,
sub logout {
my $p = shift;
if ( $p->{'session_id'} ) {
- $cache->remove($p->{'session_id'});
+ _cache->remove($p->{'session_id'});
return { 'error' => '' };
} else {
return { 'error' => "Can't resume session" }; #better error message
}
$return{'invoicing_list'} =
- join(', ', grep { $_ ne 'POST' } $cust_main->invoicing_list );
+ join(', ', grep { $_ !~ /^(POST|FAX)$/ } $cust_main->invoicing_list );
$return{'postal_invoicing'} =
0 < ( grep { $_ eq 'POST' } $cust_main->invoicing_list );
sub edit_info {
my $p = shift;
- my $session = $cache->get($p->{'session_id'})
+ my $session = _cache->get($p->{'session_id'})
or return { 'error' => "Can't resume session" }; #better error message
my $custnum = $session->{'custnum'}
sub payment_info {
my $p = shift;
- my $session = $cache->get($p->{'session_id'})
+ my $session = _cache->get($p->{'session_id'})
or return { 'error' => "Can't resume session" }; #better error message
##
my $p = shift;
- my $session = $cache->get($p->{'session_id'})
+ my $session = _cache->get($p->{'session_id'})
or return { 'error' => "Can't resume session" }; #better error message
my %return;
sub invoice {
my $p = shift;
- my $session = $cache->get($p->{'session_id'})
+ my $session = _cache->get($p->{'session_id'})
or return { 'error' => "Can't resume session" }; #better error message
my $custnum = $session->{'custnum'};
sub list_invoices {
my $p = shift;
- my $session = $cache->get($p->{'session_id'})
+ my $session = _cache->get($p->{'session_id'})
or return { 'error' => "Can't resume session" }; #better error message
my $custnum = $session->{'custnum'};
sub cancel {
my $p = shift;
- my $session = $cache->get($p->{'session_id'})
+ my $session = _cache->get($p->{'session_id'})
or return { 'error' => "Can't resume session" }; #better error message
my $custnum = $session->{'custnum'};
sub cancel_pkg {
my $p = shift;
- my $session = $cache->get($p->{'session_id'})
+ my $session = _cache->get($p->{'session_id'})
or return { 'error' => "Can't resume session" }; #better error message
my $custnum = $session->{'custnum'};
if ( $p->{'session_id'} ) {
$context = 'customer';
- $session = $cache->get($p->{'session_id'})
+ $session = _cache->get($p->{'session_id'})
or return { 'error' => "Can't resume session" }; #better error message
$custnum = $session->{'custnum'};
} elsif ( $p->{'agent_session_id'} ) {
$context = 'agent';
- my $agent_cache = new Cache::SharedMemoryCache( {
+ my $agent_cache = new FS::ClientAPI_SessionCache( {
'namespace' => 'FS::ClientAPI::Agent',
} );
$session = $agent_cache->get($p->{'agent_session_id'})
}
-
1;