Ejemplo n.º 1
0
 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');
     }
     $suffix = '.search';
Ejemplo n.º 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);
            }
        }
    }
}