/** * отправляется запрос в базу локального сервера для окончательной проверки доступности для бронирования */ public function chekBookingBeforeSave(&$order, &$cart) { $db_local = JDatabase::getInstance(VipLocalApi::getDbConnectOptions()); $db = JFactory::getDBO(); $user = JFactory::getUser(); $adv_user = JSFactory::getUser(); $adv_user = JSFactory::getTable('usershop', 'jshop'); $adv_user->load($user->id); $order->country = $adv_user->country; $order->f_name = $adv_user->f_name; $order->l_name = $adv_user->l_name; $order->email = $adv_user->email; $order->phone = $adv_user->phone; // echo'<pre>';print_r($user);echo'</pre>';//die; // echo'<pre>';print_r($adv_user);echo'</pre>';//die; // echo'<pre>';print_r($order);echo'</pre>';die; $product_id_local = $cart->products[0]['ean']; $product_id = $cart->products[0]['product_id']; $category_id = $cart->products[0]['category_id']; $booking_date_info = $cart->products[0]['free_attributes_value']; //$date_from = '31-10-2015'; $date_from = str_replace('/', '-', $booking_date_info[0]->value); $date_to = str_replace('/', '-', $booking_date_info[1]->value); //проверяем только локальный сервер, так как на WuBook-е установлена нотификация каждого нового бронирования. $object_is_free_on_local = $this->chekBookingOnLocal($db_local, $product_id_local, $date_from, $date_to); //$object_is_free_on_local = true; //повторно проверяем по базе сайта, чтобы никто не забронил номер пока пользователь "копается" $object_is_free_on_site = $this->chekBookingOnSite($db, $product_id, $date_from, $date_to); if ($object_is_free_on_local == true && $object_is_free_on_site == true) { //заменяем разделитеть даты $date_from = str_replace('/', '-', $date_from); $date_to = str_replace('/', '-', $date_to); // echo'<pre>';print_r($product_id_local);echo'</pre>';//die; // echo'<pre>';print_r($date_from);echo'</pre>';//die; // echo'<pre>';print_r($date_to);echo'</pre>';//die; // echo'<pre>';print_r($order);echo'</pre>';die; // echo'<pre>';print_r($db_local);echo'</pre>';die; $k_zajav = VipLocalApi::addBookingOnLocalServer($db_local, $product_id_local, $date_from, $date_to, $order, VipLocalApi::ON_BOOKING_FROM_SITE_PRIM_PREFIX); //echo'<pre>';var_dump($k_zajav);echo'</pre>';die; $session = JFactory::getSession(); $session->set("k_zajav", $k_zajav); } else { $cart->clear(); $mainframe = JFactory::getApplication(); JError::raiseNotice(100, _JSHOP_OBJECT_IS_ALREADY_BOOKED); $contextfilter = "jshoping.list.front.product.cat." . $category_id; $date_from_ = $mainframe->getUserStateFromRequest($contextfilter . 'dfrom', 'dfrom', date('d/m/Y')); $date_to_ = $mainframe->getUserStateFromRequest($contextfilter . 'dto', 'dto', date('d/m/Y', time() + 60 * 60 * 24)); if ($date_from_ == '') { $date_from_ = date('d/m/Y'); } if ($date_to_ == '') { $date_to_ = date('d/m/Y', time() + 60 * 60 * 24); } $mainframe->redirect(SEFLink('index.php?option=com_jshopping&view=category&layout=category&task=view&category_id=' . $category_id . '&dfrom=' . $date_from_ . '&dto=' . $date_to_, 1, 1)); } }
/** * синхронизация бронирований с сайта на локальный сервер */ public static function synchronizeToLocalBase(&$db, &$db_local) { $rows = self::getUnsyncedBookings($db); $objects = self::getObjectsIds($db, 'product_id'); //echo'<pre>';print_r($objects);echo'</pre>';die; //echo'<pre>';print_r($rows);echo'</pre>';//die; /* foreach($rows as $key=>$row) { if($key < 12 || $key > 12) unset($rows[$key]); } */ //echo'<pre>';print_r($rows);echo'</pre>';die; //$answer = "rooms not available"; foreach ($rows as $key => $row) { //echo'<pre>';print_r($row);echo'</pre>';//die; $id = (int) $row->id; $product_id_local = isset($objects[$row->product_id]) ? $objects[$row->product_id]->product_ean : 0; //если ИД локального объекта найден то работаем дальше if ($product_id_local > 0) { $date_from = date('d-m-Y', $row->dfrom); $date_to = date('d-m-Y', $row->dto); $order = new stdClass(); $order->f_name = $row->fname; $order->l_name = $row->lname; $order->order_add_info = $row->notes; /* if($row->order_id == 2) { $mystring = 'abc'; $findme = self::ON_BOOKING_FROM_WUBOOK_PRIM_PREFIX; $pos = strpos($order->order_add_info, $findme); if ($pos === false) { $order->order_add_info = self::ON_BOOKING_FROM_WUBOOK_PRIM_PREFIX . $order->order_add_info; } } elseif($row->order_id == 1) { $findme = self::ON_BOOKING_FROM_LOCAL_PRIM_PREFIX; $pos = strpos($order->order_add_info, $findme); if ($pos === false) { $order->order_add_info = self::ON_BOOKING_FROM_LOCAL_PRIM_PREFIX . $order->order_add_info; } } */ if ($row->country == '' || $row->country == '--') { $row->country = 'BY'; } $order->country = self::getCountryIdFromCode2($db, $row->country); $order->phone = $row->phone; $order->email = $row->email; if (self::isObjectFreeOnThisDates($db_local, $product_id_local, $date_from, $date_to)) { $k_zajav = VipLocalApi::addBookingOnLocalServer($db_local, $product_id_local, $date_from, $date_to, $order); if ($k_zajav > 0) { self::setKZajav($db, $k_zajav, $row->id); } } else { MainApi::saveWuBookAnswer($db, $id, self::LOCAL_SERVER_ROOM_NOT_AVAILABLE); } } else { MainApi::saveWuBookAnswer($db, $id, self::OBJECT_NOT_FOUND_IN_SITE); } } echo 'synchronizeToLocalBase finished'; return true; }