示例#1
0
 function subscriptionRedirect()
 {
     global $current_user;
     if (wp_verify_nonce($_POST['chargify_signup_noncename'], plugin_basename(__FILE__)) && is_numeric($_POST["submit"])) {
         if (!is_email($_POST["chargifySignupEmail"]) || !strlen($_POST["chargifySignupFirst"]) || !strlen($_POST["chargifySignupLast"])) {
             $_POST["chargify_signup_error"] = array('ERROR' => "All fields are required. Please enter a name and valid email address");
             return 0;
         }
         $d = get_option("chargify");
         $user_login = sanitize_user($_POST["chargifySignupEmail"]);
         $user_email = apply_filters('user_registration_email', $_POST["chargifySignupEmail"]);
         if ((username_exists($user_login) || email_exists($user_email)) && !$current_user->ID) {
             echo "User exists";
         } else {
             $user_pass = wp_generate_password();
             $return_url = $_REQUEST['return_url'];
             $trans = array();
             $trans["user_login"] = $user_login;
             $trans["user_email"] = $user_email;
             $trans["user_pass"] = $user_pass;
             $trans["return_url"] = $return_url;
             _log("user already logged in");
             //current user already logged in...
             if ($current_user->ID) {
                 $trans['existing_user'] = true;
             }
             set_transient("chargify-" . md5($user_email . $_POST['submit'] . time()), $trans);
             $opt = array("api_key" => $d["chargifyApiKey"], "test_api_key" => $d["chargifyTestApiKey"], "domain" => $d["chargifyDomain"], "test_domain" => $d["chargifyTestDomain"], "test_mode" => $d["chargifyMode"] == 'test' ? TRUE : FALSE);
             $connector = new ChargifyConnector($opt);
             $product = $connector->getProductByID($_POST['submit']);
             $pubpage = array_shift($product->public_signup_pages);
             if (is_array($pubpage)) {
                 $uri = '?first_name=' . urlencode($_POST["chargifySignupFirst"]) . '&last_name=' . urlencode($_POST["chargifySignupLast"]) . '&email=' . urlencode($_POST["chargifySignupEmail"]) . '&organization=' . urlencode($_POST["chargifySignupOrganization"]) . '&phone=' . urlencode($_POST["chargifySignupPhone"]) . '&reference=' . urlencode(md5($user_email . $_POST['submit'] . time()));
                 header("Location: " . $pubpage['url'] . $uri);
                 exit;
                 /*
                 					if($d["chargifyMode"] == 'test')
                 					{
                 						header("Location: https://".$d["chargifyTestDomain"].".chargify.com/h/".$_POST["submit"]."/subscriptions/new".$uri);
                 						exit;
                 					}
                 					else
                 					{
                 						header("Location: https://".$d["chargifyDomain"].".chargify.com/h/".$_POST["submit"]."/subscriptions/new".$uri);
                 						exit;
                 					}
                 */
             }
         }
     }
     if (function_exists('json_decode') && $_SERVER["CONTENT_TYPE"] === 'application/json') {
         global $wpdb;
         $sub_ids = json_decode(file_get_contents('php://input'));
         if ($sub_ids !== NULL && is_array($sub_ids)) {
             $d = get_option('chargify');
             $opt = array("api_key" => $d["chargifyApiKey"], "test_api_key" => $d["chargifyTestApiKey"], "domain" => $d["chargifyDomain"], "test_domain" => $d["chargifyTestDomain"], "test_mode" => $d["chargifyMode"] == 'test' ? TRUE : FALSE);
             $connector = new ChargifyConnector($opt);
             foreach ($sub_ids as $id) {
                 $sub = $connector->getSubscriptionsBySubscriptionId($id);
                 if ($sub->getStatus() == 'canceled') {
                     $cur = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->usermeta} WHERE meta_key = 'chargify_custid' AND meta_value = %s", $sub->getCustomer()->getId()));
                     if ($cur && $cur->user_id) {
                         delete_user_meta($cur->user_id, 'chargify_level');
                     }
                 }
             }
         }
     }
 }