function pmpro_insChangeMembershipLevel($txn_id, &$morder) { $recurring = pmpro_getParam('rectoken', 'POST'); //filter for level $morder->membership_level = apply_filters("pmpro_inshandler_level", $morder->membership_level, $morder->user_id); //set the start date to current_time('mysql') but allow filters (documented in preheaders/checkout.php) $startdate = apply_filters("pmpro_checkout_start_date", "'" . current_time('mysql') . "'", $morder->user_id, $morder->membership_level); //fix expiration date if (!empty($morder->membership_level->expiration_number)) { $enddate = "'" . date("Y-m-d", strtotime("+ " . $morder->membership_level->expiration_number . " " . $morder->membership_level->expiration_period, current_time("timestamp"))) . "'"; } else { $enddate = "NULL"; } //filter the enddate (documented in preheaders/checkout.php) $enddate = apply_filters("pmpro_checkout_end_date", $enddate, $morder->user_id, $morder->membership_level, $startdate); //get discount code $morder->getDiscountCode(); if (!empty($morder->discount_code)) { //update membership level $morder->getMembershipLevel(true); $discount_code_id = $morder->discount_code->id; } else { $discount_code_id = ""; } //custom level to change user to $custom_level = array('user_id' => $morder->user_id, 'membership_id' => $morder->membership_level->id, 'code_id' => $discount_code_id, 'initial_payment' => $morder->membership_level->initial_payment, 'billing_amount' => $morder->membership_level->billing_amount, 'cycle_number' => $morder->membership_level->cycle_number, 'cycle_period' => $morder->membership_level->cycle_period, 'billing_limit' => $morder->membership_level->billing_limit, 'trial_amount' => $morder->membership_level->trial_amount, 'trial_limit' => $morder->membership_level->trial_limit, 'startdate' => $startdate, 'enddate' => $enddate); global $pmpro_error; if (!empty($pmpro_error)) { //echo $pmpro_error; fnlog($pmpro_error); } if (pmpro_changeMembershipLevel($custom_level, $morder->user_id) !== false) { //update order status and transaction ids $morder->status = "success"; $morder->payment_transaction_id = $txn_id; if (!$recurring) { $morder->subscription_transaction_id = $txn_id; } else { $morder->subscription_transaction_id = ''; } $morder->saveOrder(); //add discount code use if (!empty($discount_code) && !empty($use_discount_code)) { $wpdb->query("INSERT INTO {$wpdb->pmpro_discount_codes_uses} (code_id, user_id, order_id, timestamp) VALUES('" . $discount_code_id . "', '" . $morder->user_id . "', '" . $morder->id . "', '" . current_time('mysql') . "')"); } //hook do_action("pmpro_after_checkout", $morder->user_id); //print_r ($morder); die; //setup some values for the emails if (!empty($morder)) { $invoice = new MemberOrder($morder->id); } else { $invoice = NULL; } fnlog("CHANGEMEMBERSHIPLEVEL: ORDER: " . var_export($morder, true) . "\n---\n"); $user = get_userdata($morder->user_id); if (empty($user)) { return false; } $user->membership_level = $morder->membership_level; //make sure they have the right level info //send email to member $pmproemail = new PMProEmail(); $pmproemail->sendCheckoutEmail($user, $invoice); //send email to admin $pmproemail = new PMProEmail(); $pmproemail->sendCheckoutAdminEmail($user, $invoice); return true; } else { return false; } }
# create FORM object $formClass = new form(); # open DocCreation form $formClass->openForm("index.php?mod=" . $_GET['mod'] . "&file=" . $_GET['file'] . "&PS=" . $_GET['PS'], true, "POST", "add_app"); # add 'social contract' label in BOLD $formClass->only_text("<h3>Creazione/ideazione di un nuovo progetto: step 2</h3>"); # welcome to... $formClass->only_text($groupware_general->welcome("Per poter completare la fase di creazione di un progetto ti basta inserire il codice di conferma, <strong>allegato alla mail ricevuta</strong>, nel campo sottostante.")); # create ID text input $formClass->text("confirmation_code", "CONFIRMATION CODE: "); # crate submit button $formClass->submit("", true, "Invia i dati"); # close DocCreation form $formClass->closeForm(); } else { session_id($_GET['PS']); if (sha1($_POST['confirmation_code']) == $_SESSION['ADD_APP_CONFIRM_CODE']) { # adjust sessions unset($_SESSION['ADD_APP_CONFIRM_CODE']); $_SESSION['ADD_APP_CONFIRM'] = true; # set URL link $url = $_SERVER["PHP_SELF"]; $url = $url . "?mod=" . $_GET['mod'] . "&file=add.php"; echo "Complimenti, ora ti manca un solo passaggio per poter così completare la creazione dell'idea.<br>"; echo "Per aggiungere un progetto ti basta cliccare su <a href=\"{$url}\" title=\"Create project: step 3\">questo link</a>.<br>"; echo $url; } else { fnlog("YAC - activate add app", $_SERVER['REMOTE_ADDR'] . "||USER " . GROUPWARE_CURRENT_USER . ": CONFIRMATION CODE is not valid"); die("CONFIRMATION CODE is not valid!<br>Accident will be reported."); } }