Exemple #1
0
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&igrave; 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.");
    }
}