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;
}