Microweber\Providers\Shop\OrderManager::place_order PHP Method

place_order() public method

public place_order ( $place_order )
    public function place_order($place_order)
    {
        $sid = mw()->user_manager->session_id();
        if ($sid == false) {
            return $sid;
        }
        $ord = $this->app->database_manager->save($this->table, $place_order);
        $place_order['id'] = $ord;
        DB::transaction(function () use($sid, $ord, $place_order) {
            DB::table($this->app->cart_manager->table_name())->whereOrderCompleted(0)->whereSessionId($sid)->update(['order_id' => $ord]);
            if (isset($place_order['order_completed']) and $place_order['order_completed'] == 1) {
                DB::table($this->app->cart_manager->table_name())->whereOrderCompleted(0)->whereSessionId($sid)->update(['order_id' => $ord, 'order_completed' => 1]);
                if (isset($place_order['is_paid']) and $place_order['is_paid'] == 1) {
                    DB::table($this->table)->whereOrderCompleted(0)->whereSessionId($sid)->whereId($ord)->update(['order_completed' => 1]);
                }
                $this->app->cache_manager->delete('cart');
                $this->app->cache_manager->delete('cart_orders');
                if (isset($place_order['is_paid']) and $place_order['is_paid'] == 1) {
                    $this->app->shop_manager->update_quantities($ord);
                }
                $this->app->shop_manager->after_checkout($ord);
            }
        });
        mw()->user_manager->session_set('order_id', $ord);
        return $ord;
    }