diff options
-rw-r--r-- | fs_selfservice/wordpress/README.txt | 10 | ||||
-rw-r--r-- | fs_selfservice/wordpress/example_selfservice.php | 2 | ||||
-rw-r--r-- | fs_selfservice/wordpress/process_login.php | 2 | ||||
-rw-r--r-- | fs_selfservice/wordpress/services_new.php | 113 |
4 files changed, 125 insertions, 2 deletions
diff --git a/fs_selfservice/wordpress/README.txt b/fs_selfservice/wordpress/README.txt index f068e82de..47c381deb 100644 --- a/fs_selfservice/wordpress/README.txt +++ b/fs_selfservice/wordpress/README.txt @@ -29,6 +29,16 @@ Freeside services to turn on the daemon ("etc/init.d/freeside restart", or "service freeside restart") +Freeside self-service: + +If you are using signup or additional package order with the API-provided +package selection HTML (as in the services_new.php example), make sure the +regular Freeside self-service is installed on the same server as the wordpress +site. Make sure the Freeside configuration setting +"selfservice_server-base_url" is correct and matches the hostname used to +access the site, including https:// if using (which you certainly should!). + + Firewall/network configuration: Allow the Wordpress machine to connect to port 8080 on the Freeside machine. diff --git a/fs_selfservice/wordpress/example_selfservice.php b/fs_selfservice/wordpress/example_selfservice.php index 6e5049cd4..d753f2d55 100644 --- a/fs_selfservice/wordpress/example_selfservice.php +++ b/fs_selfservice/wordpress/example_selfservice.php @@ -59,7 +59,7 @@ get_header(); <br> <p><a href="view_invoice.php?invnum=<?php echo $max_invnum ?>">View my Bill</a></p> <p><a href="change_bill.php">Change Bill Deliver Options</a></p> - +<p><a href="services_new.php">Order a new service</a></p> <p><a href="process_logout.php">Logout</a></p> diff --git a/fs_selfservice/wordpress/process_login.php b/fs_selfservice/wordpress/process_login.php index c1080ce8f..a4c2fff41 100644 --- a/fs_selfservice/wordpress/process_login.php +++ b/fs_selfservice/wordpress/process_login.php @@ -15,7 +15,7 @@ if ( $response['custnum'] || $response['svcnum'] ) { get_header(); ?> - <?php include('elements/error.php'); ?> + <?php include(dirname(__FILE__).'/elements/error.php'); ?> <FORM NAME="SelectCustomerForm" ACTION="process_select_cust.php" METHOD=POST> <INPUT TYPE="hidden" NAME="action" VALUE="switch_cust"> diff --git a/fs_selfservice/wordpress/services_new.php b/fs_selfservice/wordpress/services_new.php new file mode 100644 index 000000000..8ed64104a --- /dev/null +++ b/fs_selfservice/wordpress/services_new.php @@ -0,0 +1,113 @@ +<?php + +require( dirname( __FILE__ ) . '/wp-blog-header.php' ); + +$freeside = new FreesideSelfService(); + +if ( isset($_POST['pkgpart_svcpart']) && $_POST['pkgpart_svcpart'] ) { + + $results = array(); + + $params = array( 'custnum', 'pkgpart' ); + + $matches = array(); + if ( preg_match( '/^(\d+)_(\d+)$/', $_POST['pkgpart_svcpart'], $matches ) ) { + $_POST['pkgpart'] = $matches[1]; + $_POST['svcpart'] = $matches[2]; + $params[] = 'svcpart'; + $svcdb = $_POST['svcdb']; + if ( $svcdb == 'svc_acct' ) { $params[] = 'domsvc'; } + } else { + $svcdb = 'svc_acct'; + } + + if ( $svcdb == 'svc_acct' ) { + + array_push($params, 'username', '_password', '_password2', 'sec_phrase', 'popnum' ); + + if ( strlen($_POST['_password']) == 0 ) { + $results['error'] = 'Empty password'; + } + if ( $_POST['_password'] != $_POST['_password2'] ) { + $results['error'] = 'Passwords do not match'; + $_POST['_password'] = ''; + $_POST['_password2'] = ''; + } + + } elseif ( $svcdb == 'svc_phone' ) { + + array_push($params, 'phonenum', 'sip_password', 'pin', 'phone_name' ); + + } else { + die("$svcdb not handled on process_order_pkg yet"); + } + + if ( ! $results['error'] ) { + $order_pkg = array( + 'session_id' => $_COOKIE['freeside_session_id'], + ); + + foreach ( $params AS $param ) { + $order_pkg[$param] = $_POST[$param]; + } + + $results = $freeside->order_pkg($order_pkg); + + } + + if ( isset($results['error']) && $results['error'] ) { + $_REQUEST['freeside_error'] = $results['error']; + } else { + #$pkgnum = $results['pkgnum']; + #wp_redirect("services.php"); # #pkgnum ? + #wp_redirect("service_order_success.php"); # #pkgnum ? + wp_redirect("example_selfservice.php"); # #pkgnum ? + die(); + } + +} + +$pkgselect = $freeside->mason_comp( [ + 'session_id' => $_COOKIE['freeside_session_id'], + 'comp' => '/edit/cust_main/first_pkg/select-part_pkg.html', + 'args' => [ 'password_verify', 1, + 'onchange' , 'enable_order_pkg()', + #'relurls' , 1, + 'empty_label' , 'Select package', + 'form_name' , 'OrderPkgForm', + 'pkgpart_svcpart', $_POST['pkgpart_svcpart'], + 'username' , $_POST['username'], + 'password' , $_POST['_password'], + 'password2' , $_POST['_password2'], + 'popnum' , $_POST['popnum'], + 'saved_domsvc' , $_POST['domsvc'], + ], +]); + +get_header(); + +?> + +<h3>Order a new service</h3> + +<SCRIPT TYPE="text/javascript"> +function enable_order_pkg () { + if ( document.OrderPkgForm.pkgpart_svcpart.selectedIndex > 0 ) { + document.OrderPkgForm.submit.disabled = false; + } else { + document.OrderPkgForm.submit.disabled = true; + } +} +</SCRIPT> + +<?php include(dirname(__FILE__).'/elements/error.php'); ?> + +<FORM NAME="OrderPkgForm" ACTION="services_new.php" METHOD=POST> + +<?php echo $pkgselect['output']; ?> + +<BR> +<INPUT NAME="submit" TYPE="submit" VALUE="Purchase" <?php if ( ! $_POST['pkgpart_svcpart'] ) { echo 'DISABLED'; } ?>> +</FORM> + +<?php get_footer(); ?> |