summaryrefslogtreecommitdiff
path: root/fs_selfservice
diff options
context:
space:
mode:
authormark <mark>2010-09-28 23:12:52 +0000
committermark <mark>2010-09-28 23:12:52 +0000
commite478bc4589a34d49ec01cfbc9a3be4d972d3c849 (patch)
tree26c4bff14f9598c790a0b2b022c99f1c22099383 /fs_selfservice
parent3ab325cb508826c43f0eddf6cfddc4dbffcf03fd (diff)
assorted drupal self-service fixes, RT#9380
Diffstat (limited to 'fs_selfservice')
-rw-r--r--fs_selfservice/drupal/admin.inc12
-rw-r--r--fs_selfservice/drupal/signup.inc64
2 files changed, 54 insertions, 22 deletions
diff --git a/fs_selfservice/drupal/admin.inc b/fs_selfservice/drupal/admin.inc
index 45d83d530..1fb792516 100644
--- a/fs_selfservice/drupal/admin.inc
+++ b/fs_selfservice/drupal/admin.inc
@@ -18,7 +18,11 @@ function freeside_admin_form() {
if($hostname) {
$freeside = new FreesideSelfService();
- $signup_info = $freeside->signup_info(); // no agent in this request
+ $signup_info = $freeside->signup_info(
+ array(
+ 'keys' => array('agent')
+ )
+ ); // no agent in this request
$agents = array();
foreach((array)$signup_info['agent'] as $a) {
@@ -38,6 +42,12 @@ function freeside_admin_form() {
'#title' => t('Enable debugging'),
'#default_value'=>variable_get('freeside_debug',0),
);
+
+ $form['freeside_redirect_after_signup'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Success page (URL or Drupal path)'),
+ '#default_value'=>variable_get('freeside_redirect_after_signup','/'),
+ );
}
return system_settings_form($form);
diff --git a/fs_selfservice/drupal/signup.inc b/fs_selfservice/drupal/signup.inc
index 13ed37999..9e9443a1b 100644
--- a/fs_selfservice/drupal/signup.inc
+++ b/fs_selfservice/drupal/signup.inc
@@ -7,30 +7,34 @@ function dkpr($var) {
/* "debug kpr": Krumo-print $var if debugging is on */
static $debug;
if(empty($debug)) $debug = variable_get('freeside_debug','');
- if($debug) kpr($var);
+ if($debug) {
+ kpr($var);
+ }
}
-function signup_info($packet) {
+function signup_info($keys) {
/* local cache, because transporting the entire signup_info
through XML-RPC is incredibly slow. If you change the config,
you can flush the local cache with the "Clear cached data"
button on the Drupal "Performance" menu. */
- if(1) { // change to 0 to disable local cache
- $cid = 'FS_signup'.serialize($packet);
- $info = cache_get($cid);
- if($info) {
- return($info->data);
- }
- else {
- $freeside = new FreesideSelfService();
- $info = $freeside->signup_info($packet);
- cache_set($cid, $info, 'cache', CACHE_TEMPORARY);
- return($info);
- }
+ $cid = 'FS_signup_info';
+ $info = cache_get($cid);
+ if($info) {
+ return($info->data);
}
else {
- $freeside = new FreesideSelfService();
- return $freeside->signup_info($packet);
+ $packet = array(
+ 'agentnum' => variable_get('freeside_agentnum',''),
+ 'promo_code' => '',
+ 'reg_code' => '',
+ 'keys' => $keys,
+ );
+
+ $freeside = new FreesideSelfService();
+ $freeside->clear_signup_cache();
+ $info = $freeside->signup_info($packet);
+ cache_set($cid, $info, 'cache', CACHE_TEMPORARY);
+ return($info);
}
}
@@ -44,6 +48,7 @@ function subextract($array, $key) {
}
function freeside_signup_form($form_state) {
+ dkpr($form_state);
$agentnum = variable_get('freeside_agentnum','');
if( !$agentnum || !(variable_get('freeside_hostname','')) ) {
@@ -52,12 +57,17 @@ function freeside_signup_form($form_state) {
}
$freeside = new FreesideSelfService();
- $packet = array(
- 'agentnum' => $agentnum,
- 'promo_code' => '',
- 'reg_code' => '',
+ $keys = array(
+ // all the signup_info that we need
+ 'part_referral',
+ 'refnum',
+ 'emailinvoiceonly',
+ 'payby',
+ 'payby_longname',
+ 'part_pkg',
+ 'default_pkgpart',
);
- $signup_info = signup_info($packet);
+ $signup_info = signup_info($keys);
dkpr($signup_info);
$form = array();
@@ -249,6 +259,7 @@ function freeside_signup_form($form_state) {
'#type' => 'password_confirm',
'#size' => 20,
'#required'=>1,
+ '#process'=> array('freeside_expand_password_confirm'),
),
);
$form['package']['pkgpart']['#default_value'] = $signup_info['default_pkgpart'];
@@ -260,6 +271,14 @@ function freeside_signup_form($form_state) {
return $form;
}
+/* workaround for silly Drupal behavior */
+function freeside_expand_password_confirm($element) {
+ $element = expand_password_confirm($element);
+ $element['pass1']['#attributes']['value'] = $element['#value']['pass1'];
+ $element['pass2']['#attributes']['value'] = $element['#value']['pass2'];
+ return $element;
+}
+
function freeside_signup_form_submit($form, &$form_state) {
$freeside = new FreesideSelfService();
$values = $form_state['values'];
@@ -278,6 +297,7 @@ function freeside_signup_form_submit($form, &$form_state) {
'night',
'fax',
'payby',
+ 'refnum',
'invoicing_list',
'pkgpart',
'username'
@@ -306,12 +326,14 @@ function freeside_signup_form_submit($form, &$form_state) {
dkpr($response);
error_log("[new_customer] received response from Freeside: $response");
$error = $response['error'];
+
if ( $error ) {
drupal_set_message(t("Signup error: $error"), 'error');
$form_state['redirect'] = FALSE;
}
else {
drupal_set_message(t("Signup successful!"),'status');
+ $form_state['redirect'] = variable_get('freeside_redirect_after_signup','/');
}
}