Example #1
0
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $suffix = '';
    if ($mode == 'update') {
        if (!empty($_REQUEST['update_duration'])) {
            if (!empty($auth['user_id'])) {
                $condition = db_quote("AND user_id = ?i", $auth['user_id']);
            } elseif (!empty($auth['order_ids'])) {
                $condition = db_quote("AND FIND_IN_SET(order_id, ?s)", implode(',', $auth['order_ids']));
            } else {
                return array(CONTROLLER_STATUS_DENIED);
            }
            $negative = false;
            foreach ($_REQUEST['update_duration'] as $id => $duration) {
                if ($duration > 0) {
                    $subscription_data = db_get_row("SELECT timestamp, plan_id FROM ?:recurring_subscriptions WHERE subscription_id = ?i AND status = 'A' {$condition}", $id);
                    $_data = array('end_timestamp' => fn_get_period_date($subscription_data['timestamp'], $duration), 'duration' => $duration);
                    db_query("UPDATE ?:recurring_subscriptions SET ?u WHERE subscription_id = ?i", $_data, $id);
                    fn_change_subscription_dates($id, $subscription_data['plan_id'], $subscription_data['timestamp'], $duration);
                } else {
                    $negative = true;
                }
            }
            if ($negative) {
                fn_set_notification('E', fn_get_lang_var('error'), 'rb_duration_did_not_null');
            }
        }
        $suffix = empty($_REQUEST['subscription_id']) ? '.search' : '.view&subscription_id=' . $_REQUEST['subscription_id'];
    }
    if ($mode == 'unsubscribe') {
        if (!empty($_REQUEST['subscription_id'])) {
            fn_change_recurring_subscription_status($_REQUEST['subscription_id'], 'U');
Example #2
0
function fn_recurring_billing_place_order($order_id, $action, &$order_status, $cart)
{
    $order_info = fn_get_order_info($order_id);
    $subscription_products = array();
    $products = $order_info['items'];
    fn_set_hook('order_products_post', $products);
    foreach ($products as $prod) {
        if (!empty($prod['extra']['recurring_subscription_id'])) {
            $order_ids = db_get_field("SELECT order_ids FROM ?:recurring_subscriptions WHERE subscription_id = ?i", $prod['extra']['recurring_subscription_id']);
            $_data = array('order_ids' => $order_ids . ',' . $order_id, 'last_timestamp' => $order_info['timestamp']);
            db_query("UPDATE ?:recurring_subscriptions SET ?u WHERE subscription_id = ?i", $_data, $prod['extra']['recurring_subscription_id']);
            break;
        } elseif (!empty($prod['extra']['recurring_plan_id'])) {
            $subscription_products[$prod['extra']['recurring_plan_id']][$prod['extra']['recurring_duration']][$prod['product_id']] = $prod['subtotal'];
        }
    }
    if (Registry::get('addons.recurring_billing.rb_initial_order_status') != '' && (!empty($_data) || !empty($subscription_products)) && (empty($cart['order_id']) || $action != 'save') && !empty($cart['recurring_subscription_id'])) {
        $order_status = Registry::get('addons.recurring_billing.rb_initial_order_status');
    }
    if (!empty($subscription_products)) {
        foreach ($subscription_products as $plan_id => $duration_group) {
            foreach ($duration_group as $duration => $products) {
                $price = 0;
                foreach ($products as $item) {
                    $price += $item;
                }
                $data = array('plan_id' => $plan_id, 'order_id' => $order_id, 'order_ids' => $order_id, 'user_id' => $order_info['user_id'], 'firstname' => $order_info['firstname'], 'lastname' => $order_info['lastname'], 'email' => $order_info['email'], 'timestamp' => $order_info['timestamp'], 'last_timestamp' => $order_info['timestamp'], 'end_timestamp' => fn_get_period_date($order_info['timestamp'], $duration), 'product_ids' => implode(',', array_keys($products)), 'price' => $price, 'duration' => $duration, 'orig_duration' => $duration);
                $subscription_id = db_query("INSERT INTO ?:recurring_subscriptions ?e", $data);
                fn_change_subscription_dates($subscription_id, $plan_id, $order_info['timestamp'], $duration);
            }
        }
    }
}