Initial commit
This commit is contained in:
72
local/Beds24/Beds24.php
Normal file
72
local/Beds24/Beds24.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Beds24;
|
||||
|
||||
use Beds24\Model\Beds24ProductInfoQuery;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Thelia\Install\Database;
|
||||
use Thelia\Module\BaseModule;
|
||||
|
||||
class Beds24 extends BaseModule
|
||||
{
|
||||
/** @var string */
|
||||
const DOMAIN_NAME = 'beds24';
|
||||
|
||||
public function postActivation(ConnectionInterface $con = null)
|
||||
{
|
||||
/*try {
|
||||
Beds24ProductInfoQuery::create()->findOne();
|
||||
} catch (\Exception $ex) {*/
|
||||
$database = new Database($con->getWrappedConnection());
|
||||
$database->insertSql(null, array(__DIR__ . '/Config/thelia.sql'));
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la remise en fnction du nombre de jours achetés
|
||||
*
|
||||
* @param \DateTime $dateDebut
|
||||
* @param \DateTime $dateFin
|
||||
* @return float
|
||||
*/
|
||||
public static function getRemiseDuree(\DateTime $dateDebut, \DateTime $dateFin, &$nombreDeJours)
|
||||
{
|
||||
$nombreDeJours = round(($dateFin->getTimeStamp() - $dateDebut->getTimeStamp()) / 86400);
|
||||
|
||||
if ($nombreDeJours >= 7) {
|
||||
return 0.09;
|
||||
}
|
||||
|
||||
if ($nombreDeJours >= 6) {
|
||||
return 0.08;
|
||||
}
|
||||
|
||||
if ($nombreDeJours >= 5) {
|
||||
return 0.07;
|
||||
}
|
||||
|
||||
if ($nombreDeJours >= 4) {
|
||||
return 0.06;
|
||||
}
|
||||
|
||||
if ($nombreDeJours >= 3) {
|
||||
return 0.05;
|
||||
}
|
||||
|
||||
if ($nombreDeJours >= 2) {
|
||||
return 0.03;
|
||||
}
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
21
local/Beds24/Beds24/Beds24Exception.php
Normal file
21
local/Beds24/Beds24/Beds24Exception.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 24/06/2019 21:31
|
||||
*/
|
||||
|
||||
namespace Beds24\Beds24;
|
||||
|
||||
class Beds24Exception extends \Exception
|
||||
{
|
||||
|
||||
}
|
||||
89
local/Beds24/Beds24/Beds24FormFieldsTrait.php
Normal file
89
local/Beds24/Beds24/Beds24FormFieldsTrait.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 21/06/2019 10:33
|
||||
*/
|
||||
namespace Beds24\Beds24;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||
use Thelia\Core\HttpFoundation\Request;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
|
||||
/**
|
||||
* PayZen Embedded payment module configuration form
|
||||
*
|
||||
* @author Franck Allimant <franck@cqfdev.fr>
|
||||
*/
|
||||
trait Beds24FormFieldsTrait
|
||||
{
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param FormBuilderInterface $formBuilder
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function addFieldsToForm(Request $request, FormBuilderInterface $formBuilder)
|
||||
{
|
||||
$searchParameters = new Beds24\SearchParameters($request);
|
||||
|
||||
$formBuilder
|
||||
// -- Username and passwords -------------------------------------------------------------------------------
|
||||
->add(
|
||||
'start_date',
|
||||
'text',
|
||||
[
|
||||
'constraints' => [new NotBlank()],
|
||||
'required' => true,
|
||||
'label' => Translator::getInstance()->trans('Date d\'arrivée', [], Beds24::DOMAIN_NAME),
|
||||
'data' => $searchParameters->getStartDate()->format("Y-m-d"),
|
||||
'label_attr' => [
|
||||
'placeholder' => Translator::getInstance()->trans('Votre date d\'arrivée', [], Beds24::DOMAIN_NAME),
|
||||
]
|
||||
]
|
||||
)
|
||||
->add(
|
||||
'end_date',
|
||||
'text',
|
||||
[
|
||||
'constraints' => [new NotBlank()],
|
||||
'required' => true,
|
||||
'label' => Translator::getInstance()->trans('Date de départ', [], Beds24::DOMAIN_NAME),
|
||||
'data' => $searchParameters->getEndDate()->format("Y-m-d"),
|
||||
'label_attr' => [
|
||||
'placeholder' => Translator::getInstance()->trans('Votre date de départ', [], Beds24::DOMAIN_NAME),
|
||||
]
|
||||
]
|
||||
)
|
||||
->add(
|
||||
'adults',
|
||||
'text',
|
||||
[
|
||||
'constraints' => [new NotBlank()],
|
||||
'required' => true,
|
||||
'data' => $searchParameters->getAdultCount(),
|
||||
'label' => Translator::getInstance()->trans('Nombre d\'adultes', [], Beds24::DOMAIN_NAME)
|
||||
]
|
||||
)
|
||||
->add(
|
||||
'children',
|
||||
'text',
|
||||
[
|
||||
'constraints' => [new NotBlank()],
|
||||
'required' => true,
|
||||
'data' => $searchParameters->getChildCount(),
|
||||
'label' => Translator::getInstance()->trans('Nombre d\'enfants', [], Beds24::DOMAIN_NAME)
|
||||
]
|
||||
)
|
||||
;
|
||||
}
|
||||
}
|
||||
302
local/Beds24/Beds24/Beds24Request.php
Normal file
302
local/Beds24/Beds24/Beds24Request.php
Normal file
@@ -0,0 +1,302 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 13/06/2019 17:00
|
||||
*/
|
||||
|
||||
namespace Beds24\Beds24;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Beds24\Model\Beds24BookingOrderProduct;
|
||||
use Doctrine\Common\Cache\Cache;
|
||||
use Doctrine\Common\Cache\FilesystemCache;
|
||||
use Thelia\Log\Tlog;
|
||||
use Thelia\Model\CustomerTitleQuery;
|
||||
use Thelia\Model\Lang;
|
||||
|
||||
class Beds24Request
|
||||
{
|
||||
/** @var Cache */
|
||||
protected $cacheDriver;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$cacheDir = THELIA_CACHE_DIR . "beds24";
|
||||
|
||||
$this->cacheDriver = new FilesystemCache($cacheDir);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear the request cache
|
||||
*/
|
||||
public function clearCache()
|
||||
{
|
||||
$this->cacheDriver->deleteAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DateTime $startDate
|
||||
* @param \DateTime $endDate
|
||||
* @param null $roomId
|
||||
* @param int $numAdults
|
||||
* @param int $numChildren
|
||||
* @param bool $ignoreAvail
|
||||
* @return array
|
||||
* @throws Beds24Exception
|
||||
*/
|
||||
public function getAvailabilities(\DateTime $startDate, \DateTime $endDate, $roomId = null, $numAdults = 2, $numChildren = 0, $ignoreAvail = false)
|
||||
{
|
||||
$requestParameters = [
|
||||
"checkIn" => $startDate->format("Ymd"),
|
||||
"checkOut" => $endDate->format("Ymd"),
|
||||
"numAdult" => $numAdults,
|
||||
"numChild" => $numChildren,
|
||||
'ignoreAvail' => $ignoreAvail
|
||||
];
|
||||
|
||||
if (empty($roomId)) {
|
||||
$requestParameters["ownerId"] = $this->getOwnerId();
|
||||
} else {
|
||||
$requestParameters["roomId"] = $roomId;
|
||||
}
|
||||
|
||||
$result = $this->send("getAvailabilities", $requestParameters);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $roomId
|
||||
* @return array
|
||||
*/
|
||||
public function getRoomDescription($roomId, $twoLetterslangCode)
|
||||
{
|
||||
$requestParameters = [
|
||||
"roomId" => $roomId,
|
||||
"lang" => $twoLetterslangCode,
|
||||
];
|
||||
|
||||
$result = $this->send("getDescription", $requestParameters);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Beds24BookingOrderProduct $booking
|
||||
* @return array
|
||||
* @throws Beds24Exception
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
public function setBooking(Beds24BookingOrderProduct $booking)
|
||||
{
|
||||
$customer = $booking->getOrder()->getCustomer();
|
||||
|
||||
$address = $customer->getDefaultAddress();
|
||||
|
||||
$locale = Lang::getDefaultLanguage()->getLocale();
|
||||
|
||||
if (null !== $title = CustomerTitleQuery::create()->findPk($customer->getTitleId())) {
|
||||
$titleStr = $title->setLocale($locale)->getShort();
|
||||
} else {
|
||||
$titleStr = "NA";
|
||||
}
|
||||
|
||||
// The "last night" is thez leaving day minus 1 day
|
||||
/** @var \DateTime $endDate */
|
||||
$lastNight = $booking->getEndDate();
|
||||
$lastNight->sub(new \DateInterval("P1D"));
|
||||
|
||||
$requestParameters = [
|
||||
"roomId" => $booking->getRoomId(),
|
||||
"roomQty" => 1,
|
||||
"firstNight" => $booking->getStartDate()->format("Ymd"),
|
||||
"lastNight" => $lastNight->format("Ymd"),
|
||||
"numAdult" => $booking->getAdults(),
|
||||
"numChild" => $booking->getChildren(),
|
||||
|
||||
"guestTitle"=> $titleStr,
|
||||
"guestFirstName"=> $customer->getFirstname(),
|
||||
"guestName"=> $customer->getLastname(),
|
||||
"guestEmail"=> $customer->getEmail(),
|
||||
"guestPhone"=> $address->getPhone(),
|
||||
"guestMobile"=> $address->getCellphone(),
|
||||
"guestAddress"=> $address->getAddress1(),
|
||||
"guestCity"=> $address->getCity(),
|
||||
"guestPostcode"=> $address->getZipcode(),
|
||||
"guestCountry"=> $address->getCountry()->setLocale($locale)->getTitle(),
|
||||
|
||||
// "notifyGuest" => true,
|
||||
// "notifyHost" => true
|
||||
];
|
||||
|
||||
$result = $this->send("setBooking", $requestParameters, $this->getPropertyId($booking->getRoomId()), false);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Beds24BookingOrderProduct $booking
|
||||
* @return array
|
||||
* @throws Beds24Exception
|
||||
*/
|
||||
public function cancelBooking(Beds24BookingOrderProduct $booking)
|
||||
{
|
||||
$requestParameters = [
|
||||
"bookId" => $booking->getBeds24BookingId(),
|
||||
"status" => 0
|
||||
];
|
||||
|
||||
$result = $this->send("setBooking", $requestParameters, $this->getPropertyId($booking->getRoomId()), false);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param int $roomId
|
||||
* @return int the room's property ID
|
||||
* @throws Beds24Exception
|
||||
*/
|
||||
public function getPropertyId($roomId)
|
||||
{
|
||||
$properties = $this->send("getProperties");
|
||||
|
||||
if (! $this->hasError($properties)) {
|
||||
foreach ($properties['getProperties'] as $property) {
|
||||
$propertyId = $property['propId'];
|
||||
|
||||
foreach ($property['roomTypes'] as $room) {
|
||||
if ($room['roomId'] == $roomId) {
|
||||
return $propertyId;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new Beds24Exception("Failed to find property ID for room ID $roomId");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
* @throws Beds24Exception
|
||||
*/
|
||||
public function getOwnerId()
|
||||
{
|
||||
$properties = $this->send("getProperties");
|
||||
|
||||
if (! $this->hasError($properties)) {
|
||||
foreach ($properties['getProperties'] as $property) {
|
||||
return $property['ownerId'];
|
||||
}
|
||||
}
|
||||
|
||||
throw new Beds24Exception("Failed to find Beds 24 owner ID");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array a list of (name, propeId) couples.
|
||||
* @throws Beds24Exception
|
||||
*/
|
||||
public function getPropertyList()
|
||||
{
|
||||
$result = [];
|
||||
|
||||
$properties = $this->send("getProperties");
|
||||
|
||||
if (! $this->hasError($properties)) {
|
||||
foreach ($properties['getProperties'] as $property) {
|
||||
$result[] = [
|
||||
'name' => $property['name'],
|
||||
'id' => $property['propId']
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function hasError($result)
|
||||
{
|
||||
return isset($result['error']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform Beds24 query, and cache the result for 2 hours.
|
||||
*
|
||||
* @param $serviceName
|
||||
* @param [] $requestParameters
|
||||
* @param bool $propId
|
||||
* @param bool $usecache
|
||||
* @return array
|
||||
* @throws Beds24Exception
|
||||
*/
|
||||
protected function send($serviceName, $requestParameters = [], $propId = false, $usecache = false)
|
||||
{
|
||||
// Add authentication
|
||||
$requestParameters['authentication'] = [
|
||||
'apiKey' => Beds24::getConfigValue('api_key')
|
||||
];
|
||||
|
||||
// Add property key if required
|
||||
if (! empty($propId)) {
|
||||
$propKey = Beds24::getConfigValue('prop_key_' . $propId);
|
||||
|
||||
if (empty($propKey)) {
|
||||
throw new Beds24Exception("propKey for property ID $propId is not defined. Please check module configuration.");
|
||||
}
|
||||
|
||||
$requestParameters['authentication']['propKey'] = $propKey;
|
||||
}
|
||||
|
||||
$json = json_encode($requestParameters);
|
||||
|
||||
$requestHash = hash("md5", $serviceName . $json);
|
||||
|
||||
if ((! $usecache) || (false === $result = $this->cacheDriver->fetch($requestHash))) {
|
||||
$url = "https://api.beds24.com/json/$serviceName";
|
||||
|
||||
$ch = curl_init();
|
||||
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
;
|
||||
if ($usecache) {
|
||||
$this->cacheDriver->save($requestHash, $result, 7200 /* 2 hours */);
|
||||
}
|
||||
|
||||
curl_close($ch);
|
||||
} else {
|
||||
$ch = false;
|
||||
}
|
||||
|
||||
if (false !== $result) {
|
||||
$resultArray = json_decode($result, true);
|
||||
} else {
|
||||
$resultArray = [
|
||||
'error' => 'Request to Beds24 failed: ' . curl_error($ch),
|
||||
'errorCode' => curl_errno($ch)
|
||||
];
|
||||
}
|
||||
|
||||
// Log error, if any.
|
||||
if (isset($resultArray['error'])) {
|
||||
Tlog::getInstance()->error("Beds24 request $serviceName failed: " . $resultArray['error'] . ", code: " . $resultArray['errorCode']);
|
||||
}
|
||||
|
||||
return ($resultArray);
|
||||
}
|
||||
}
|
||||
115
local/Beds24/Beds24/SearchParameters.php
Normal file
115
local/Beds24/Beds24/SearchParameters.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 19/06/2019 17:34
|
||||
*/
|
||||
|
||||
namespace Beds24\Beds24;
|
||||
|
||||
use Thelia\Core\HttpFoundation\Request;
|
||||
use Thelia\Core\HttpFoundation\Session\Session;
|
||||
|
||||
class SearchParameters
|
||||
{
|
||||
const SESSION_VAR_NAME = 'beds24.search-parameters';
|
||||
|
||||
/** @var Session */
|
||||
protected $session;
|
||||
|
||||
/**
|
||||
* SearchParameters constructor.
|
||||
* @param Request|\Symfony\Component\HttpFoundation\Request $request
|
||||
*/
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->session = $request->getSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DateTime $startDate
|
||||
* @param \DateTime $endDate
|
||||
* @param int $adultCount
|
||||
* @param int $childCount
|
||||
* @return SearchParameters
|
||||
*/
|
||||
public function setSearchParameters(\DateTime $startDate, \DateTime $endDate, $adultCount, $childCount)
|
||||
{
|
||||
$this->session->set(self::SESSION_VAR_NAME, [
|
||||
'start_date' => $startDate,
|
||||
'end_date' => $endDate,
|
||||
'adultCount' => $adultCount,
|
||||
'childCount' => $childCount
|
||||
]);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getSearchParameters()
|
||||
{
|
||||
if (! $this->session->has(self::SESSION_VAR_NAME)) {
|
||||
// Set default values
|
||||
// $startDate = new \DateTime("next monday");
|
||||
// $endDate = new \DateTime("next monday + 4 days");
|
||||
$startDate = new \DateTime("today");
|
||||
$endDate = new \DateTime("today + 1 days");
|
||||
|
||||
$this->setSearchParameters($startDate, $endDate, 1, 0);
|
||||
}
|
||||
|
||||
return $this->session->get(self::SESSION_VAR_NAME);
|
||||
}
|
||||
|
||||
public function clearSearchParameters()
|
||||
{
|
||||
$this->session->remove(self::SESSION_VAR_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DateTime()
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getStartDate()
|
||||
{
|
||||
return $this->getSearchParameters()['start_date'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DateTime()
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getEndDate()
|
||||
{
|
||||
return $this->getSearchParameters()['end_date'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getAdultCount()
|
||||
{
|
||||
return $this->getSearchParameters()['adultCount'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function getChildCount()
|
||||
{
|
||||
return $this->getSearchParameters()['childCount'];
|
||||
}
|
||||
}
|
||||
47
local/Beds24/Config/config.xml
Normal file
47
local/Beds24/Config/config.xml
Normal file
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<config xmlns="http://thelia.net/schema/dic/config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
|
||||
|
||||
<loops>
|
||||
<loop name="beds24.availability" class="Beds24\Loop\RoomAvailability" />
|
||||
<loop name="beds24.description" class="Beds24\Loop\RoomDescription" />
|
||||
<loop name="beds24.cart-item-booking-data" class="Beds24\Loop\BookingInfo" />
|
||||
<loop name="beds24.order-product-booking-data" class="Beds24\Loop\OrderProductBooking" />
|
||||
</loops>
|
||||
|
||||
<forms>
|
||||
<form name="beds24.form.configuration" class="Beds24\Form\ConfigurationForm" />
|
||||
<form name="beds24.form.search" class="Beds24\Form\SearchForm" />
|
||||
</forms>
|
||||
|
||||
<services>
|
||||
<service id="beds24.listener" class="Beds24\EventListeners\ProductFormExtent">
|
||||
<tag name="kernel.event_subscriber"/>
|
||||
</service>
|
||||
<service id="beds24.loop_extent" class="Beds24\EventListeners\ProductLoopExtent">
|
||||
<tag name="kernel.event_subscriber"/>
|
||||
</service>
|
||||
<service id="beds24.coart_order" class="Beds24\EventListeners\CartOrderListener">
|
||||
<argument type="service" id="request_stack"/>
|
||||
<argument type="service" id="thelia.translator"/>
|
||||
<tag name="kernel.event_subscriber"/>
|
||||
</service>
|
||||
</services>
|
||||
|
||||
<hooks>
|
||||
<hook id="beds24.backhook" class="Beds24\Hook\BackHookManager">
|
||||
<tag name="hook.event_listener" event="module.configuration" type="back" method="onModuleConfiguration" />
|
||||
<tag name="hook.event_listener" event="product.modification.form-right.bottom" type="back" method="onProductEditRightColumnBottom" />
|
||||
<tag name="hook.event_listener" event="order-edit.cart-bottom" type="back" method="onOrderEditCartBottom" />
|
||||
</hook>
|
||||
|
||||
<hook id="beds24.fronthook" class="Beds24\Hook\FrontHookManager">
|
||||
<tag name="hook.event_listener" event="home.body" type="front" method="onHomeBody" />
|
||||
<tag name="hook.event_listener" event="home.javascript-initialization" type="front" method="onHomeJavascriptInitialization" />
|
||||
<tag name="hook.event_listener" event="product.details-top" type="front" method="onProductDetailsTop" />
|
||||
<tag name="hook.event_listener" event="product.javascript-initialization" type="front" method="onProductJavascriptInitialization" />
|
||||
</hook>
|
||||
</hooks>
|
||||
</config>
|
||||
30
local/Beds24/Config/module.xml
Normal file
30
local/Beds24/Config/module.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module xmlns="http://thelia.net/schema/dic/module"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://thelia.net/schema/dic/module http://thelia.net/schema/dic/module/module-2_2.xsd">
|
||||
<fullnamespace>Beds24\Beds24</fullnamespace>
|
||||
<descriptive locale="en_US">
|
||||
<title>Beds24 interface</title>
|
||||
</descriptive>
|
||||
<descriptive locale="fr_FR">
|
||||
<title>Interface avec le service Beds24</title>
|
||||
</descriptive>
|
||||
<languages>
|
||||
<language>en_US</language>
|
||||
<language>fr_FR</language>
|
||||
</languages>
|
||||
<version>1.0.0</version>
|
||||
<authors>
|
||||
<author>
|
||||
<name>Franck Allimant</name>
|
||||
<company>CQFDev</company>
|
||||
<email>thelia@cqfdev.fr</email>
|
||||
<website>www.cqfdev.fr</website>
|
||||
</author>
|
||||
</authors>
|
||||
<type>classic</type>
|
||||
<thelia>2.3.4</thelia>
|
||||
<stability>other</stability>
|
||||
<mandatory>0</mandatory>
|
||||
<hidden>0</hidden>
|
||||
</module>
|
||||
27
local/Beds24/Config/routing.xml
Normal file
27
local/Beds24/Config/routing.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<routes xmlns="http://symfony.com/schema/routing"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
|
||||
|
||||
<route id="beds24.configure" path="/admin/beds24/configure">
|
||||
<default key="_controller">Beds24\Controller\Back\ConfigurationController::configure</default>
|
||||
</route>
|
||||
|
||||
<route id="beds24.clear_cache" path="/admin/beds24/clear-cache">
|
||||
<default key="_controller">Beds24\Controller\Back\ConfigurationController::clearCache</default>
|
||||
</route>
|
||||
|
||||
<route id="beds24.notification" path="/beds24/notify">
|
||||
<default key="_controller">Beds24\Controller\Front\NotificationController::notify</default>
|
||||
</route>
|
||||
|
||||
<route id="beds24.search" path="/search-availabilities">
|
||||
<default key="_controller">Beds24\Controller\Front\SearchController::searchAll</default>
|
||||
</route>
|
||||
|
||||
<route id="beds24.search_product" path="/search-availability/{productId}">
|
||||
<default key="_controller">Beds24\Controller\Front\SearchController::searchProduct</default>
|
||||
<requirement key="productId">\d+</requirement>
|
||||
</route>
|
||||
</routes>
|
||||
51
local/Beds24/Config/schema.xml
Normal file
51
local/Beds24/Config/schema.xml
Normal file
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<database defaultIdMethod="native" name="thelia"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="../../../../core/vendor/propel/propel/resources/xsd/database.xsd" >
|
||||
|
||||
<table name="beds24_product_info" namespace="Beds24\Model">
|
||||
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
||||
<column name="room_id" type="INTEGER" required="true" />
|
||||
<column name="product_id" type="INTEGER" required="true" />
|
||||
|
||||
<foreign-key foreignTable="product" name="fk_beds24_pi_product_id" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||
<reference foreign="id" local="product_id" />
|
||||
</foreign-key>
|
||||
<behavior name="timestampable" />
|
||||
</table>
|
||||
|
||||
<table name="beds24_booking_info" namespace="Beds24\Model">
|
||||
<column name="id" autoIncrement="true" primaryKey="true" required="true" type="INTEGER" />
|
||||
<column name="cart_item_id" required="true" type="INTEGER" />
|
||||
<column name="room_id" required="true" type="INTEGER" />
|
||||
<column name="start_date" required="true" type="DATE" />
|
||||
<column name="end_date" required="true" type="DATE" />
|
||||
<column name="adults" required="true" type="INTEGER" size="2" />
|
||||
<column name="children" required="true" type="INTEGER" size="2" />
|
||||
|
||||
<foreign-key foreignTable="cart_item" name="fk_beds24_booking_info_cart_item" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||
<reference foreign="id" local="cart_item_id" />
|
||||
</foreign-key>
|
||||
</table>
|
||||
<table name="beds24_booking_order_product" namespace="Beds24\Model">
|
||||
<column name="id" autoIncrement="true" primaryKey="true" required="true" type="INTEGER" />
|
||||
<column name="order_id" required="true" type="INTEGER" />
|
||||
<column name="order_product_id" required="true" type="INTEGER" />
|
||||
<column name="room_id" required="true" type="INTEGER" />
|
||||
<column name="start_date" required="true" type="DATE" />
|
||||
<column name="end_date" required="true" type="DATE" />
|
||||
<column name="adults" required="true" type="INTEGER" size="2" />
|
||||
<column name="children" required="true" type="INTEGER" size="2" />
|
||||
<column name="beds_24_booking_id" required="true" type="VARCHAR" size="128" />
|
||||
|
||||
<foreign-key foreignTable="order_product" name="fk_beds24_booking_order_product" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||
<reference foreign="id" local="order_product_id" />
|
||||
</foreign-key>
|
||||
|
||||
<foreign-key foreignTable="order" name="fk_beds24_booking_order_product_order" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||
<reference foreign="id" local="order_id" />
|
||||
</foreign-key>
|
||||
</table>
|
||||
|
||||
<external-schema filename="local/config/schema.xml" referenceOnly="true" />
|
||||
</database>
|
||||
79
local/Beds24/Config/thelia.sql
Normal file
79
local/Beds24/Config/thelia.sql
Normal file
@@ -0,0 +1,79 @@
|
||||
|
||||
# This is a fix for InnoDB in MySQL >= 4.1.x
|
||||
# It "suspends judgement" for fkey relationships until are tables are set.
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- beds24_product_info
|
||||
-- ---------------------------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `beds24_product_info`
|
||||
(
|
||||
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`room_id` INTEGER NOT NULL,
|
||||
`product_id` INTEGER NOT NULL,
|
||||
`created_at` DATETIME,
|
||||
`updated_at` DATETIME,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `FI_beds24_pi_product_id` (`product_id`),
|
||||
CONSTRAINT `fk_beds24_pi_product_id`
|
||||
FOREIGN KEY (`product_id`)
|
||||
REFERENCES `product` (`id`)
|
||||
ON UPDATE RESTRICT
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- beds24_booking_info
|
||||
-- ---------------------------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `beds24_booking_info`
|
||||
(
|
||||
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`cart_item_id` INTEGER NOT NULL,
|
||||
`room_id` INTEGER NOT NULL,
|
||||
`start_date` DATE NOT NULL,
|
||||
`end_date` DATE NOT NULL,
|
||||
`adults` INTEGER(2) NOT NULL,
|
||||
`children` INTEGER(2) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `FI_beds24_booking_info_cart_item` (`cart_item_id`),
|
||||
CONSTRAINT `fk_beds24_booking_info_cart_item`
|
||||
FOREIGN KEY (`cart_item_id`)
|
||||
REFERENCES `cart_item` (`id`)
|
||||
ON UPDATE RESTRICT
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- beds24_booking_order_product
|
||||
-- ---------------------------------------------------------------------
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `beds24_booking_order_product`
|
||||
(
|
||||
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`order_id` INTEGER NOT NULL,
|
||||
`order_product_id` INTEGER NOT NULL,
|
||||
`room_id` INTEGER NOT NULL,
|
||||
`start_date` DATE NOT NULL,
|
||||
`end_date` DATE NOT NULL,
|
||||
`adults` INTEGER(2) NOT NULL,
|
||||
`children` INTEGER(2) NOT NULL,
|
||||
`beds_24_booking_id` VARCHAR(128) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `FI_beds24_booking_order_product` (`order_product_id`),
|
||||
INDEX `FI_beds24_booking_order_product_order` (`order_id`),
|
||||
CONSTRAINT `fk_beds24_booking_order_product`
|
||||
FOREIGN KEY (`order_product_id`)
|
||||
REFERENCES `order_product` (`id`)
|
||||
ON UPDATE RESTRICT
|
||||
ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_beds24_booking_order_product_order`
|
||||
FOREIGN KEY (`order_id`)
|
||||
REFERENCES `order` (`id`)
|
||||
ON UPDATE RESTRICT
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
# This restores the fkey checks, after having unset them earlier
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
79
local/Beds24/Controller/Back/ConfigurationController.php
Normal file
79
local/Beds24/Controller/Back/ConfigurationController.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* */
|
||||
/* Copyright (c) CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Beds24\Controller\Back;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Thelia\Controller\Admin\BaseAdminController;
|
||||
use Thelia\Core\Security\AccessManager;
|
||||
use Thelia\Core\Security\Resource\AdminResources;
|
||||
use Thelia\Form\Exception\FormValidationException;
|
||||
use Thelia\Tools\URL;
|
||||
|
||||
/**
|
||||
* @author Franck Allimant <franck@cqfdev.fr>
|
||||
*/
|
||||
class ConfigurationController extends BaseAdminController
|
||||
{
|
||||
public function clearCache()
|
||||
{
|
||||
if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'Beds24', AccessManager::UPDATE)) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
(new Beds24\Beds24Request())->clearCache();
|
||||
|
||||
return $this->generateRedirect(URL::getInstance()->absoluteUrl('/admin/module/Beds24'));
|
||||
}
|
||||
|
||||
public function configure()
|
||||
{
|
||||
if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'Beds24', AccessManager::UPDATE)) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
$configurationForm = $this->createForm('beds24.form.configuration');
|
||||
|
||||
try {
|
||||
$form = $this->validateForm($configurationForm, "POST");
|
||||
|
||||
// Get the form field values
|
||||
$data = $form->getData();
|
||||
|
||||
foreach ($data as $name => $value) {
|
||||
if (is_array($value)) {
|
||||
$value = implode(';', $value);
|
||||
}
|
||||
|
||||
Beds24::setConfigValue($name, $value);
|
||||
}
|
||||
|
||||
if ($this->getRequest()->get('save_mode') == 'stay') {
|
||||
$url = '/admin/module/Beds24';
|
||||
} else {
|
||||
$url = '/admin/modules';
|
||||
}
|
||||
|
||||
return $this->generateRedirect(URL::getInstance()->absoluteUrl($url));
|
||||
} catch (FormValidationException $ex) {
|
||||
$error_msg = $this->createStandardFormValidationErrorMessage($ex);
|
||||
} catch (\Exception $ex) {
|
||||
$error_msg = $ex->getMessage();
|
||||
}
|
||||
|
||||
$this->setupFormErrorContext(
|
||||
$this->getTranslator()->trans("Configuration du franco", [], Beds24::DOMAIN_NAME),
|
||||
$error_msg,
|
||||
$configurationForm,
|
||||
$ex
|
||||
);
|
||||
|
||||
return $this->generateRedirect(URL::getInstance()->absoluteUrl('/admin/module/Beds24'));
|
||||
}
|
||||
}
|
||||
53
local/Beds24/Controller/Front/NotificationController.php
Normal file
53
local/Beds24/Controller/Front/NotificationController.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 17/06/2019 13:03
|
||||
*/
|
||||
namespace Beds24\Controller\Front;
|
||||
|
||||
use Beds24\Beds24\Beds24Request;
|
||||
use Beds24\Model\Beds24BookingOrderProductQuery;
|
||||
use Thelia\Controller\Front\BaseFrontController;
|
||||
use Thelia\Core\HttpFoundation\Response;
|
||||
|
||||
/**
|
||||
* @author Franck Allimant <franck@cqfdev.fr>
|
||||
*/
|
||||
class NotificationController extends BaseFrontController
|
||||
{
|
||||
/**
|
||||
* @return Response
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
public function notify()
|
||||
{
|
||||
// Clear request cache
|
||||
$api = new Beds24Request();
|
||||
|
||||
$api->clearCache();
|
||||
|
||||
// Update booking, if required.
|
||||
$bookId = $this->getRequest()->get('bookId');
|
||||
|
||||
if (! empty($bookId)) {
|
||||
if (null !== $bookingInfo = Beds24BookingOrderProductQuery::create()->findOneByBeds24BookingId($bookId)) {
|
||||
$status = $this->getRequest()->get('status');
|
||||
|
||||
if ($status === 'cancel') {
|
||||
$bookingInfo->setBeds24BookingId('')->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new Response('Cache cleared', 200);
|
||||
}
|
||||
}
|
||||
93
local/Beds24/Controller/Front/SearchController.php
Normal file
93
local/Beds24/Controller/Front/SearchController.php
Normal file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 17/06/2019 13:03
|
||||
*/
|
||||
namespace Beds24\Controller\Front;
|
||||
|
||||
use Beds24\Beds24\Beds24Request;
|
||||
use Beds24\Beds24\SearchParameters;
|
||||
use Beds24\Model\Base\Beds24ProductInfoQuery;
|
||||
use Thelia\Controller\Front\BaseFrontController;
|
||||
use Thelia\Log\Tlog;
|
||||
|
||||
/**
|
||||
* @author Franck Allimant <franck@cqfdev.fr>
|
||||
*/
|
||||
class SearchController extends BaseFrontController
|
||||
{
|
||||
public function searchAll()
|
||||
{
|
||||
return $this->search("ajax/home-search-results");
|
||||
}
|
||||
|
||||
public function searchProduct($productId)
|
||||
{
|
||||
return $this->search("ajax/product-search-results", $productId);
|
||||
}
|
||||
|
||||
public function search($resultTemplate, $productId = null)
|
||||
{
|
||||
$searchForm = $this->createForm('beds24.form.search');
|
||||
|
||||
try {
|
||||
$form = $this->validateForm($searchForm, "POST");
|
||||
|
||||
// Get the form field values
|
||||
$data = $form->getData();
|
||||
|
||||
$startDate = \DateTime::createFromFormat("Y-m-d", $data['start_date']);
|
||||
$endDate = \DateTime::createFromFormat("Y-m-d", $data['end_date']);
|
||||
|
||||
$searchParameters = new SearchParameters($this->getRequest());
|
||||
|
||||
$searchParameters->setSearchParameters(
|
||||
$startDate,
|
||||
$endDate,
|
||||
intval($data['adults']),
|
||||
intval($data['children'])
|
||||
);
|
||||
|
||||
$roomId = null;
|
||||
|
||||
if (null !== $productId) {
|
||||
if (null !== $productInfo = Beds24ProductInfoQuery::create()->findOneByProductId($productId)) {
|
||||
$roomId = $productInfo->getRoomId();
|
||||
}
|
||||
}
|
||||
|
||||
return $this->render(
|
||||
$resultTemplate,
|
||||
[
|
||||
'startDate' => $searchParameters->getStartDate()->format("Y-m-d"),
|
||||
'endDate' => $searchParameters->getEndDate()->format("Y-m-d"),
|
||||
'adultCount' => $searchParameters->getAdultCount(),
|
||||
'childCount' => $searchParameters->getChildCount(),
|
||||
'product_id' => $productId,
|
||||
'room_id' => $roomId,
|
||||
'error' => ''
|
||||
]
|
||||
);
|
||||
|
||||
} catch (\Exception $ex) {
|
||||
Tlog::getInstance()->addError($ex->getMessage(), $ex);
|
||||
|
||||
return $this->render(
|
||||
$resultTemplate,
|
||||
[
|
||||
'product_id' => $productId,
|
||||
'error' => $ex->getMessage()
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
400
local/Beds24/EventListeners/CartOrderListener.php
Normal file
400
local/Beds24/EventListeners/CartOrderListener.php
Normal file
@@ -0,0 +1,400 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 21/06/2019 11:01
|
||||
*/
|
||||
namespace Beds24\EventListeners;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Beds24\Model\Beds24BookingInfo;
|
||||
use Beds24\Model\Beds24BookingInfoQuery;
|
||||
use Beds24\Model\Beds24BookingOrderProduct;
|
||||
use Beds24\Model\Beds24BookingOrderProductQuery;
|
||||
use Beds24\Model\Beds24ProductInfoQuery;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
use Thelia\Core\Event\Cart\CartEvent;
|
||||
use Thelia\Core\Event\Cart\CartItemDuplicationItem;
|
||||
use Thelia\Core\Event\Order\OrderEvent;
|
||||
use Thelia\Core\Event\TheliaEvents;
|
||||
use Thelia\Core\HttpFoundation\Session\Session;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
use Thelia\Exception\TheliaProcessException;
|
||||
use Thelia\Model\CartItem;
|
||||
use Thelia\Model\CartItemQuery;
|
||||
use Thelia\Model\Country;
|
||||
use Thelia\Model\OrderProduct;
|
||||
use Thelia\Model\OrderProductAttributeCombination;
|
||||
use Thelia\Model\OrderProductQuery;
|
||||
use Thelia\Model\ProductQuery;
|
||||
use Thelia\TaxEngine\Calculator;
|
||||
use Thelia\Tools\DateTimeFormat;
|
||||
|
||||
class CartOrderListener implements EventSubscriberInterface
|
||||
{
|
||||
/** @var RequestStack */
|
||||
protected $requestStack;
|
||||
|
||||
/** @var Translator */
|
||||
protected $translator;
|
||||
|
||||
/**
|
||||
* EventManager constructor.
|
||||
* @param RequestStack $requestStack
|
||||
* @param Translator $translator
|
||||
*/
|
||||
public function __construct(RequestStack $requestStack, Translator $translator)
|
||||
{
|
||||
$this->requestStack = $requestStack;
|
||||
$this->translator = $translator;
|
||||
}
|
||||
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return [
|
||||
TheliaEvents::CART_ADDITEM => [ ['addToCart', 10], [ 'preAddToCart', 255 ]],
|
||||
TheliaEvents::CART_ITEM_DUPLICATE => ['cartDuplicateItem', 130 ],
|
||||
TheliaEvents::ORDER_PAY => ['checkAvailability', 150 ],
|
||||
TheliaEvents::ORDER_BEFORE_PAYMENT => ['createOrder', 130 ],
|
||||
TheliaEvents::CART_FINDITEM => array("findCartItem", 140),
|
||||
TheliaEvents::ORDER_UPDATE_STATUS => array("updateBooking", 128),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check availability before putting a property in the cart
|
||||
*
|
||||
* @param CartEvent $event
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function preAddToCart(CartEvent $event)
|
||||
{
|
||||
$bookingData = (new Beds24\SearchParameters($this->requestStack->getCurrentRequest()))->getSearchParameters();
|
||||
|
||||
// Vérifier que l'hébergement est libre pour le produit courant
|
||||
if (null !== $productInfo = Beds24ProductInfoQuery::create()->findOneByProductId($event->getProduct())) {
|
||||
$locale = $this->requestStack->getCurrentRequest()->getSession()->getLang()->getLocale();
|
||||
|
||||
$this->checkRoomAvailability(
|
||||
$productInfo->getRoomId(),
|
||||
$productInfo->getProduct()->setLocale($locale)->getTitle(),
|
||||
$bookingData['start_date'],
|
||||
$bookingData['end_date'],
|
||||
$bookingData['adultCount'],
|
||||
$bookingData['childCount']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check availability of cart booking before allowing order creation and payment
|
||||
*
|
||||
* @param OrderEvent $event
|
||||
* @param $eventName
|
||||
* @param EventDispatcherInterface $dispatcher
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
public function checkAvailability(OrderEvent $event, $eventName, EventDispatcherInterface $dispatcher)
|
||||
{
|
||||
$request = $this->requestStack->getCurrentRequest();
|
||||
/** @var Session $session */
|
||||
$session = $request->getSession();
|
||||
$cartItems = $session->getSessionCart($dispatcher)->getCartItems();
|
||||
|
||||
/** @var CartItem $cartItem */
|
||||
foreach ($cartItems as $cartItem) {
|
||||
if (null !== $bookingInfo = Beds24BookingInfoQuery::create()->findOneByCartItemId($cartItem->getId())) {
|
||||
$this->checkRoomAvailability(
|
||||
$bookingInfo->getRoomId(),
|
||||
$cartItem->getProduct()->getTitle(),
|
||||
$bookingInfo->getStartDate(),
|
||||
$bookingInfo->getEndDate(),
|
||||
$bookingInfo->getAdults(),
|
||||
$bookingInfo->getChildren()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $roomId
|
||||
* @param \DateTime $startDate
|
||||
* @param \DateTime $endDate
|
||||
* @param int $adults
|
||||
* @param int $children
|
||||
*/
|
||||
protected function checkRoomAvailability($roomId, $productTitle, \DateTime $startDate, \DateTime $endDate, $adults, $children)
|
||||
{
|
||||
$availability = (new Beds24\Beds24Request())
|
||||
->getAvailabilities(
|
||||
$startDate,
|
||||
$endDate,
|
||||
$roomId,
|
||||
$adults,
|
||||
$children
|
||||
);
|
||||
|
||||
if (! isset($availability[$roomId]['price'])) {
|
||||
$dateFormat = DateTimeFormat::getInstance($this->requestStack->getCurrentRequest())->getFormat('date');
|
||||
|
||||
throw new TheliaProcessException(
|
||||
Translator::getInstance()->trans(
|
||||
"Nous sommes désolés, l'hébergement %name n'est plus disponible du %deb au %fin. Merci de le retirer de votre panier pour continuer.",
|
||||
[
|
||||
'%name' => $productTitle,
|
||||
'%deb' => $startDate->format($dateFormat),
|
||||
'%fin' => $endDate->format($dateFormat)
|
||||
],
|
||||
Beds24::DOMAIN_NAME
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param CartEvent $event
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function addToCart(CartEvent $event)
|
||||
{
|
||||
$cartItem = $event->getCartItem();
|
||||
|
||||
$bookingData = (new Beds24\SearchParameters($this->requestStack->getCurrentRequest()))->getSearchParameters();
|
||||
|
||||
if (null !== $productInfo = Beds24ProductInfoQuery::create()->findOneByProductId($cartItem->getProductId())) {
|
||||
if (Beds24BookingInfoQuery::create()->filterByCartItemId($cartItem->getId())->count() === 0) {
|
||||
(new Beds24BookingInfo())
|
||||
->setCartItemId($cartItem->getId())
|
||||
->setRoomId($productInfo->getRoomId())
|
||||
->setAdults($bookingData['adultCount'])
|
||||
->setChildren($bookingData['childCount'])
|
||||
->setStartDate($bookingData['start_date'])
|
||||
->setEndDate($bookingData['end_date'])
|
||||
->save();
|
||||
}
|
||||
|
||||
// Mettre à jour le prix dans le panier
|
||||
$availability = (new Beds24\Beds24Request())
|
||||
->getAvailabilities(
|
||||
$bookingData['start_date'],
|
||||
$bookingData['end_date'],
|
||||
$productInfo->getRoomId(),
|
||||
$bookingData['adultCount'],
|
||||
$bookingData['childCount']
|
||||
);
|
||||
|
||||
if (isset($availability[$productInfo->getRoomId()]['price'])) {
|
||||
$price = (float)$availability[$productInfo->getRoomId()]['price'];
|
||||
|
||||
// Appliquer la remise sur la durée
|
||||
$remise = Beds24::getRemiseDuree($bookingData['start_date'], $bookingData['end_date'], $toto);
|
||||
|
||||
$price = round($price * (1 - $remise), 2);
|
||||
|
||||
$untaxedPrice = (new Calculator())
|
||||
->load(
|
||||
ProductQuery::create()->findPk($cartItem->getProductId()),
|
||||
Country::getShopLocation()
|
||||
)
|
||||
->getUntaxedPrice($price);
|
||||
|
||||
$cartItem
|
||||
->setPrice($untaxedPrice)
|
||||
->setPromoPrice($untaxedPrice)
|
||||
->save()
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CartItemDuplicationItem $event
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
public function cartDuplicateItem(CartItemDuplicationItem $event)
|
||||
{
|
||||
if (null !== $bookingInfo = Beds24BookingInfoQuery::create()->findOneByCartItemId($event->getOldItem()->getId())) {
|
||||
$bookingInfo
|
||||
->setCartItemId($event->getNewItem()->getId())
|
||||
->save();
|
||||
|
||||
// Rétablir le prix
|
||||
$event->getNewItem()
|
||||
->setPrice($event->getOldItem()->getPrice())
|
||||
->setPromoPrice($event->getOldItem()->getPromoPrice())
|
||||
->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param OrderEvent $event
|
||||
*
|
||||
* @throws \Thelia\Exception\TheliaProcessException
|
||||
* @param $eventName
|
||||
* @param EventDispatcherInterface $dispatcher
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function createOrder(OrderEvent $event, $eventName, EventDispatcherInterface $dispatcher)
|
||||
{
|
||||
$orderProducts = OrderProductQuery::create()->filterByOrderId($event->getOrder()->getId());
|
||||
|
||||
/** @var OrderProduct $orderProduct */
|
||||
foreach ($orderProducts as $orderProduct) {
|
||||
if (null !== $bookingInfo = Beds24BookingInfoQuery::create()->findOneByCartItemId($orderProduct->getCartItemId())) {
|
||||
$this->addAttributeCombination(
|
||||
$orderProduct->getId(),
|
||||
Translator::getInstance()->trans("Date d'arrivée", [], Beds24::DOMAIN_NAME),
|
||||
$bookingInfo->getStartDate("d/m/Y")
|
||||
)->addAttributeCombination(
|
||||
$orderProduct->getId(),
|
||||
Translator::getInstance()->trans("Date de départ", [], Beds24::DOMAIN_NAME),
|
||||
$bookingInfo->getEndDate("d/m/Y")
|
||||
)->addAttributeCombination(
|
||||
$orderProduct->getId(),
|
||||
Translator::getInstance()->trans("Adultes", [], Beds24::DOMAIN_NAME),
|
||||
$bookingInfo->getAdults()
|
||||
)->addAttributeCombination(
|
||||
$orderProduct->getId(),
|
||||
Translator::getInstance()->trans("Children", [], Beds24::DOMAIN_NAME),
|
||||
$bookingInfo->getChildren()
|
||||
);
|
||||
|
||||
// Save room booking info
|
||||
$cartItem = CartItemQuery::create()->findPk($orderProduct->getCartItemId());
|
||||
|
||||
if (null !== $productInfo = Beds24ProductInfoQuery::create()->findOneByProductId($cartItem->getProductId())) {
|
||||
(new Beds24BookingOrderProduct())
|
||||
->setOrderId($event->getOrder()->getId())
|
||||
->setOrderProductId($orderProduct->getId())
|
||||
->setRoomId($productInfo->getRoomId())
|
||||
->setStartDate($bookingInfo->getStartDate())
|
||||
->setEndDate($bookingInfo->getEndDate())
|
||||
->setChildren($bookingInfo->getChildren())
|
||||
->setAdults($bookingInfo->getAdults())
|
||||
->save()
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function updateBooking(OrderEvent $event)
|
||||
{
|
||||
if ($event->getOrder()->isPaid(true)) {
|
||||
// Validate Booking
|
||||
$this->createOrCancelBookingsForOrder($event->getOrder()->getId(), true);
|
||||
} elseif ($event->getOrder()->isCancelled() || $event->getOrder()->isRefunded()) {
|
||||
// Cancel booking
|
||||
$this->createOrCancelBookingsForOrder($event->getOrder()->getId(), false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $orderId
|
||||
* @param bool $create
|
||||
* @throws Beds24\Beds24Exception
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
protected function createOrCancelBookingsForOrder($orderId, $create)
|
||||
{
|
||||
$bookings = Beds24BookingOrderProductQuery::create()->findByOrderId($orderId);
|
||||
|
||||
$api = new Beds24\Beds24Request();
|
||||
|
||||
/** @var Beds24BookingOrderProduct $booking */
|
||||
foreach ($bookings as $booking) {
|
||||
if ($create) {
|
||||
$result = $api->setBooking($booking);
|
||||
|
||||
if ($api->hasError($result)) {
|
||||
throw new TheliaProcessException("Failed to create booking (" . $result['error'] . "). Please contact us.");
|
||||
}
|
||||
|
||||
$beds24BookingId = $result['bookId'];
|
||||
} else {
|
||||
if (! empty($booking->getBeds24BookingId())) {
|
||||
$result = $api->cancelBooking($booking);
|
||||
|
||||
if ($api->hasError($result)) {
|
||||
throw new TheliaProcessException("Failed to cancel booking (" . $result['error'] . "). Please contact us.");
|
||||
}
|
||||
}
|
||||
|
||||
$beds24BookingId = '';
|
||||
}
|
||||
|
||||
$booking->clearAllReferences();
|
||||
|
||||
$booking
|
||||
->setBeds24BookingId($beds24BookingId)
|
||||
->save()
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $orderProductId
|
||||
* @param $title
|
||||
* @param $value
|
||||
* @return CartOrderListener
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
protected function addAttributeCombination($orderProductId, $title, $value)
|
||||
{
|
||||
(new OrderProductAttributeCombination())
|
||||
->setOrderProductId($orderProductId)
|
||||
->setAttributeTitle($title)
|
||||
->setAttributeAvTitle($value)
|
||||
->save();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a specific record in CartItem table using the current CartEvent
|
||||
* @param CartEvent $event
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function findCartItem(CartEvent $event)
|
||||
{
|
||||
$bookingData = (new Beds24\SearchParameters($this->requestStack->getCurrentRequest()))->getSearchParameters();
|
||||
|
||||
$cartItems = CartItemQuery::create()
|
||||
->filterByCartId($event->getCart()->getId())
|
||||
->filterByProductId($event->getProduct())
|
||||
->filterByProductSaleElementsId($event->getProductSaleElementsId())
|
||||
->find()
|
||||
;
|
||||
|
||||
/** @var CartItem $cartItem */
|
||||
foreach ($cartItems as $cartItem) {
|
||||
// Check if all dynamic attributes values are the same.
|
||||
if (null !== $cartBookingInfo = Beds24BookingInfoQuery::create()->findOneByCartItemId($cartItem->getId())) {
|
||||
if (
|
||||
$cartBookingInfo->getChildren() == $bookingData['childCount']
|
||||
&&
|
||||
$cartBookingInfo->getAdults() == $bookingData['adultCount']
|
||||
&&
|
||||
$cartBookingInfo->getStartDate('Y-m-d') == $bookingData['start_date']
|
||||
&&
|
||||
$cartBookingInfo->getEndDate('Y-m-d') == $bookingData['end_date']
|
||||
) {
|
||||
$event->setCartItem($cartItem);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We did the job.
|
||||
$event->stopPropagation();
|
||||
}
|
||||
}
|
||||
122
local/Beds24/EventListeners/ProductFormExtent.php
Normal file
122
local/Beds24/EventListeners/ProductFormExtent.php
Normal file
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* */
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/* */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Beds24\EventListeners;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Beds24\Model\Beds24ProductInfo;
|
||||
use Beds24\Model\Beds24ProductInfoQuery;
|
||||
use Beds24\Model\Map\Beds24ProductInfoTableMap;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Thelia\Core\Event\Loop\LoopExtendsBuildModelCriteriaEvent;
|
||||
use Thelia\Core\Event\Loop\LoopExtendsParseResultsEvent;
|
||||
use Thelia\Core\Event\Product\ProductEvent;
|
||||
use Thelia\Core\Event\TheliaEvents;
|
||||
use Thelia\Core\Event\TheliaFormEvent;
|
||||
use Thelia\Core\Template\Element\LoopResultRow;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
use Thelia\Model\Map\ProductTableMap;
|
||||
use Thelia\Model\Product;
|
||||
|
||||
class ProductFormExtent implements EventSubscriberInterface
|
||||
{
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return [
|
||||
TheliaEvents::FORM_BEFORE_BUILD . ".thelia_product_modification" => ['addFieldToForm', 128],
|
||||
TheliaEvents::PRODUCT_UPDATE => ['processSubmit', 100],
|
||||
|
||||
TheliaEvents::getLoopExtendsEvent(TheliaEvents::LOOP_EXTENDS_BUILD_MODEL_CRITERIA, 'product') => ['productLoopBuildModelCriteria', 128],
|
||||
TheliaEvents::getLoopExtendsEvent(TheliaEvents::LOOP_EXTENDS_PARSE_RESULTS, 'product') => ['productLoopParseResults', 128],
|
||||
];
|
||||
}
|
||||
|
||||
public function productLoopBuildModelCriteria(LoopExtendsBuildModelCriteriaEvent $event)
|
||||
{
|
||||
$search = $event->getModelCriteria();
|
||||
|
||||
$search->addJoin(ProductTableMap::ID, Beds24ProductInfoTableMap::PRODUCT_ID, Criteria::LEFT_JOIN);
|
||||
|
||||
$search->withColumn(Beds24ProductInfoTableMap::ROOM_ID, 'room_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param LoopExtendsParseResultsEvent $event
|
||||
* @param $eventName
|
||||
* @param EventDispatcherInterface $dispatcher
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
public function productLoopParseResults(LoopExtendsParseResultsEvent $event, $eventName, EventDispatcherInterface $dispatcher)
|
||||
{
|
||||
$results = $event->getLoopResult();
|
||||
|
||||
/** @var LoopResultRow $result */
|
||||
foreach ($results as $result) {
|
||||
/** @var Product $model */
|
||||
$model = $result->model;
|
||||
|
||||
$result->set('ROOM_ID', $model->getVirtualColumn('room_id'));
|
||||
}
|
||||
}
|
||||
|
||||
public function addFieldToForm(TheliaFormEvent $event)
|
||||
{
|
||||
$event->getForm()->getFormBuilder()->add(
|
||||
'room_id',
|
||||
'text',
|
||||
[
|
||||
'required' => false,
|
||||
'label' => Translator::getInstance()->trans(
|
||||
'Room ID Beds24',
|
||||
[],
|
||||
Beds24::DOMAIN_NAME
|
||||
),
|
||||
'label_attr' => [
|
||||
'help' => Translator::getInstance()->trans(
|
||||
'Indiquez le ROOM ID Beds24 associé à ce produit, ou laissez ce champ vide.',
|
||||
[ ],
|
||||
Beds24::DOMAIN_NAME
|
||||
)
|
||||
]
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ProductEvent $event
|
||||
* @param $eventName
|
||||
* @param EventDispatcherInterface $dispatcher
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
public function processSubmit(ProductEvent $event, $eventName, EventDispatcherInterface $dispatcher)
|
||||
{
|
||||
// Utilise le principe NON DOCUMENTE qui dit que si une form bindée à un event trouve
|
||||
// un champ absent de l'event, elle le rend accessible à travers une méthode magique.
|
||||
// (cf. ActionEvent::bindForm())
|
||||
|
||||
$productId = $event->getProduct()->getId();
|
||||
|
||||
if (null === $room = Beds24ProductInfoQuery::create()->filterByProductId($productId)->findOne()) {
|
||||
$room = (new Beds24ProductInfo())->setProductId($productId);
|
||||
}
|
||||
|
||||
$roomId = trim($event->room_id);
|
||||
|
||||
if (! empty($roomId)) {
|
||||
$room->setRoomId($roomId)->save();
|
||||
} else {
|
||||
$room->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
76
local/Beds24/EventListeners/ProductLoopExtent.php
Normal file
76
local/Beds24/EventListeners/ProductLoopExtent.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 20/06/2019 19:14
|
||||
*/
|
||||
namespace Beds24\EventListeners;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Beds24\Model\Map\Beds24ProductInfoTableMap;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Thelia\Core\Event\Loop\LoopExtendsArgDefinitionsEvent;
|
||||
use Thelia\Core\Event\Loop\LoopExtendsBuildModelCriteriaEvent;
|
||||
use Thelia\Core\Event\Loop\LoopExtendsParseResultsEvent;
|
||||
use Thelia\Core\Event\TheliaEvents;
|
||||
use Thelia\Core\Template\Element\LoopResultRow;
|
||||
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||
use Thelia\Model\Map\ProductTableMap;
|
||||
use Thelia\Model\ProductQuery;
|
||||
|
||||
class ProductLoopExtent implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* Add a new parameter for loop lang
|
||||
* you can now call the loop with this argument
|
||||
*/
|
||||
public function productArgDefinitions(LoopExtendsArgDefinitionsEvent $event)
|
||||
{
|
||||
$event->getArgumentCollection()
|
||||
->addArgument(Argument::createIntTypeArgument('room_id'));
|
||||
}
|
||||
|
||||
public function productBuildModelCriteria(LoopExtendsBuildModelCriteriaEvent $event)
|
||||
{
|
||||
/** @var ProductQuery $query */
|
||||
$query = $event->getModelCriteria();
|
||||
|
||||
$query->addJoin(ProductTableMap::ID, Beds24ProductInfoTableMap::PRODUCT_ID, Criteria::LEFT_JOIN);
|
||||
$query->withColumn(Beds24ProductInfoTableMap::ROOM_ID, 'room_id');
|
||||
|
||||
if (null !== $roomId = $event->getLoop()->getRoomId()) {
|
||||
$query->add(Beds24ProductInfoTableMap::ROOM_ID, $roomId);
|
||||
}
|
||||
}
|
||||
|
||||
public function productParseResults(LoopExtendsParseResultsEvent $event)
|
||||
{
|
||||
$loopResult = $event->getLoopResult();
|
||||
|
||||
/** @var LoopResultRow $row */
|
||||
foreach ($loopResult as $row) {
|
||||
$row->set('ROOM_ID', $row->model->getVirtualColumn('room_id'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return [
|
||||
TheliaEvents::getLoopExtendsEvent(TheliaEvents::LOOP_EXTENDS_BUILD_MODEL_CRITERIA, 'product') => ['productBuildModelCriteria', 128],
|
||||
TheliaEvents::getLoopExtendsEvent(TheliaEvents::LOOP_EXTENDS_ARG_DEFINITIONS, 'product') => ['productArgDefinitions', 128],
|
||||
TheliaEvents::getLoopExtendsEvent(TheliaEvents::LOOP_EXTENDS_PARSE_RESULTS, 'product') => ['productParseResults', 128],
|
||||
];
|
||||
}
|
||||
}
|
||||
80
local/Beds24/Form/ConfigurationForm.php
Normal file
80
local/Beds24/Form/ConfigurationForm.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* */
|
||||
/* Thelia 2 PayZen Embedded payment module */
|
||||
/* */
|
||||
/* Copyright (c) Lyra Networks */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/* */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Beds24\Form;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Symfony\Component\Validator\Constraints\Callback;
|
||||
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
use Thelia\Form\BaseForm;
|
||||
|
||||
/**
|
||||
* PayZen Embedded payment module configuration form
|
||||
*
|
||||
* @author Franck Allimant <franck@cqfdev.fr>
|
||||
*/
|
||||
class ConfigurationForm extends BaseForm
|
||||
{
|
||||
/**
|
||||
* @return void|null
|
||||
* @throws Beds24\Beds24Exception
|
||||
*/
|
||||
protected function buildForm()
|
||||
{
|
||||
$this->formBuilder
|
||||
// -- Username and passwords -------------------------------------------------------------------------------
|
||||
->add(
|
||||
'api_key',
|
||||
'text',
|
||||
[
|
||||
'constraints' => [new NotBlank()],
|
||||
'required' => true,
|
||||
'label' => $this->trans('Beds24 API Key '),
|
||||
'label_attr' => [
|
||||
'help' => $this->trans('You\'ll find this key in your Beds24 account SETTINGS >> ACCOUNT >> ACCOUNT ACCESS.')
|
||||
]
|
||||
]
|
||||
)
|
||||
;
|
||||
|
||||
$api = new Beds24\Beds24Request();
|
||||
|
||||
$properties = $api->getPropertyList();
|
||||
|
||||
if (! $api->hasError($properties)) {
|
||||
foreach ($properties as $property) {
|
||||
$this->formBuilder->add(
|
||||
'prop_key_' . $property['id'],
|
||||
'text',
|
||||
[
|
||||
'constraints' => [new NotBlank()],
|
||||
'required' => true,
|
||||
'label' => $this->trans('Key for property ' . $property['name'] . ' - ' . $property['id']),
|
||||
'label_attr' => [
|
||||
]
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function trans($string, $args = [])
|
||||
{
|
||||
return $this->translator->trans($string, $args, Beds24::DOMAIN_NAME);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'beds24_configuration_form';
|
||||
}
|
||||
}
|
||||
40
local/Beds24/Form/SearchForm.php
Normal file
40
local/Beds24/Form/SearchForm.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* */
|
||||
/* Thelia 2 PayZen Embedded payment module */
|
||||
/* */
|
||||
/* Copyright (c) Lyra Networks */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/* */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Beds24\Form;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Thelia\Form\BaseForm;
|
||||
|
||||
/**
|
||||
* PayZen Embedded payment module configuration form
|
||||
*
|
||||
* @author Franck Allimant <franck@cqfdev.fr>
|
||||
*/
|
||||
class SearchForm extends BaseForm
|
||||
{
|
||||
use Beds24\Beds24FormFieldsTrait;
|
||||
|
||||
/**
|
||||
* @return void|null
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function buildForm()
|
||||
{
|
||||
$this->addFieldsToForm($this->getRequest(), $this->formBuilder);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'beds24_search_form';
|
||||
}
|
||||
}
|
||||
91
local/Beds24/Hook/BackHookManager.php
Normal file
91
local/Beds24/Hook/BackHookManager.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Beds24\Hook;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Beds24\Model\Beds24ProductInfoQuery;
|
||||
use Thelia\Core\Event\Hook\HookRenderEvent;
|
||||
use Thelia\Core\Hook\BaseHook;
|
||||
|
||||
/**
|
||||
* Class HookManager
|
||||
*
|
||||
* @package Cheque\Hook
|
||||
* @author Franck Allimant <franck@cqfdev.fr>
|
||||
*/
|
||||
class BackHookManager extends BaseHook {
|
||||
|
||||
public function onProductEditRightColumnBottom(HookRenderEvent $event)
|
||||
{
|
||||
if (null !== $room = Beds24ProductInfoQuery::create()->findOneByProductId($event->getArgument('product_id'))) {
|
||||
$roomId = $room->getRoomId();
|
||||
} else {
|
||||
$roomId = '';
|
||||
}
|
||||
|
||||
$event->add(
|
||||
$this->render(
|
||||
"product-edit.html",
|
||||
[
|
||||
'room_id' => $roomId
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function onOrderEditCartBottom(HookRenderEvent $event)
|
||||
{
|
||||
$event->add(
|
||||
$this->render(
|
||||
"order-edit.html",
|
||||
$event->getArguments()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param HookRenderEvent $event
|
||||
* @throws Beds24\Beds24Exception
|
||||
*/
|
||||
public function onModuleConfiguration(HookRenderEvent $event)
|
||||
{
|
||||
$args = [
|
||||
'api_key' => Beds24::getConfigValue('api_key'),
|
||||
];
|
||||
|
||||
$api = new Beds24\Beds24Request();
|
||||
|
||||
$properties = $api->getPropertyList();
|
||||
|
||||
if ($api->hasError($properties)) {
|
||||
foreach ($properties as &$property) {
|
||||
$varName = 'prop_key_' . $property['id'];
|
||||
|
||||
$property['key'] = Beds24::getConfigValue($varName);
|
||||
}
|
||||
|
||||
$args['properties'] = $properties;
|
||||
} else {
|
||||
$args['properties'] = false;
|
||||
}
|
||||
|
||||
$event->add(
|
||||
$this->render(
|
||||
"module-configuration.html",
|
||||
$args
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
69
local/Beds24/Hook/FrontHookManager.php
Normal file
69
local/Beds24/Hook/FrontHookManager.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Beds24\Hook;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Beds24\Model\Beds24ProductInfoQuery;
|
||||
use Thelia\Core\Event\Hook\HookRenderEvent;
|
||||
use Thelia\Core\Hook\BaseHook;
|
||||
|
||||
/**
|
||||
* Class HookManager
|
||||
*
|
||||
* @package Cheque\Hook
|
||||
* @author Franck Allimant <franck@cqfdev.fr>
|
||||
*/
|
||||
class FrontHookManager extends BaseHook {
|
||||
|
||||
public function onHomeBody(HookRenderEvent $event)
|
||||
{
|
||||
$event->add(
|
||||
$this->render(
|
||||
"hook/home-body.html"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function onHomeJavascriptInitialization(HookRenderEvent $event)
|
||||
{
|
||||
$event->add(
|
||||
$this->render(
|
||||
"hook/search.js.html"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function onProductDetailsTop(HookRenderEvent $event)
|
||||
{
|
||||
if (null !== Beds24ProductInfoQuery::create()->findOneByProductId($event->getArgument('product'))) {
|
||||
$event->add(
|
||||
$this->render(
|
||||
"hook/product.details-top.html",
|
||||
$event->getArguments()
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function onProductJavascriptInitialization(HookRenderEvent $event)
|
||||
{
|
||||
if (null !== Beds24ProductInfoQuery::create()->findOneByProductId($event->getArgument('product'))) {
|
||||
$event->add(
|
||||
$this->render(
|
||||
"/hook/product.javascript-initialization.js.html",
|
||||
$event->getArguments()
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
4
local/Beds24/I18n/en_US.php
Normal file
4
local/Beds24/I18n/en_US.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
return array(
|
||||
// 'an english string' => 'The displayed english string',
|
||||
);
|
||||
4
local/Beds24/I18n/fr_FR.php
Normal file
4
local/Beds24/I18n/fr_FR.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
return array(
|
||||
// 'an english string' => 'La traduction française de la chaine',
|
||||
);
|
||||
72
local/Beds24/Loop/BookingInfo.php
Normal file
72
local/Beds24/Loop/BookingInfo.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 13/06/2019 16:01
|
||||
*/
|
||||
namespace Beds24\Loop;
|
||||
|
||||
use Beds24\Model\Beds24BookingInfo;
|
||||
use Beds24\Model\Beds24BookingInfoQuery;
|
||||
use Thelia\Core\Template\Element\BaseLoop;
|
||||
use Thelia\Core\Template\Element\LoopResult;
|
||||
use Thelia\Core\Template\Element\LoopResultRow;
|
||||
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
|
||||
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
||||
|
||||
|
||||
/**
|
||||
* @method int getCartItem()
|
||||
*/
|
||||
class BookingInfo extends BaseLoop implements PropelSearchLoopInterface
|
||||
{
|
||||
/**
|
||||
* @return \Thelia\Core\Template\Loop\Argument\ArgumentCollection
|
||||
*/
|
||||
protected function getArgDefinitions()
|
||||
{
|
||||
return new ArgumentCollection(
|
||||
Argument::createIntTypeArgument('cart_item_id', null, true)
|
||||
);
|
||||
}
|
||||
|
||||
public function buildModelCriteria()
|
||||
{
|
||||
return Beds24BookingInfoQuery::create()
|
||||
->filterByCartItemId($this->getCartItemId())
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param LoopResult $loopResult
|
||||
* @return LoopResult
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
public function parseResults(LoopResult $loopResult)
|
||||
{
|
||||
/** @var Beds24BookingInfo $item */
|
||||
foreach ($loopResult->getResultDataCollection() as $item) {
|
||||
$loopResultRow = new LoopResultRow($item);
|
||||
|
||||
$loopResultRow
|
||||
->set('START_DATE', $item->getStartDate())
|
||||
->set('END_DATE', $item->getEndDate())
|
||||
->set('NUM_ADULTS', $item->getAdults())
|
||||
->set('NUM_CHILDREN', $item->getChildren())
|
||||
;
|
||||
|
||||
$loopResult->addRow($loopResultRow);
|
||||
}
|
||||
|
||||
return $loopResult;
|
||||
}
|
||||
}
|
||||
86
local/Beds24/Loop/OrderProductBooking.php
Normal file
86
local/Beds24/Loop/OrderProductBooking.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 13/06/2019 16:01
|
||||
*/
|
||||
namespace Beds24\Loop;
|
||||
|
||||
use Beds24\Model\Beds24BookingOrderProduct;
|
||||
use Beds24\Model\Beds24BookingOrderProductQuery;
|
||||
use Thelia\Core\Template\Element\BaseLoop;
|
||||
use Thelia\Core\Template\Element\LoopResult;
|
||||
use Thelia\Core\Template\Element\LoopResultRow;
|
||||
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
|
||||
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
||||
|
||||
|
||||
/**
|
||||
* @method int getCartItem()
|
||||
* @method getOrderProductId()
|
||||
* @method getOrderId()
|
||||
*/
|
||||
class OrderProductBooking extends BaseLoop implements PropelSearchLoopInterface
|
||||
{
|
||||
/**
|
||||
* @return \Thelia\Core\Template\Loop\Argument\ArgumentCollection
|
||||
*/
|
||||
protected function getArgDefinitions()
|
||||
{
|
||||
return new ArgumentCollection(
|
||||
Argument::createIntTypeArgument('order_id'),
|
||||
Argument::createIntTypeArgument('order_product_id')
|
||||
);
|
||||
}
|
||||
|
||||
public function buildModelCriteria()
|
||||
{
|
||||
$query = Beds24BookingOrderProductQuery::create();
|
||||
|
||||
if (null !== $id = $this->getOrderId()) {
|
||||
$query->filterByOrderId($id);
|
||||
}
|
||||
|
||||
if (null !== $id = $this->getOrderProductId()) {
|
||||
$query->filterByOrderProductId($id);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param LoopResult $loopResult
|
||||
* @return LoopResult
|
||||
* @throws \Propel\Runtime\Exception\PropelException
|
||||
*/
|
||||
public function parseResults(LoopResult $loopResult)
|
||||
{
|
||||
/** @var Beds24BookingOrderProduct $item */
|
||||
foreach ($loopResult->getResultDataCollection() as $item) {
|
||||
$loopResultRow = new LoopResultRow($item);
|
||||
|
||||
$loopResultRow
|
||||
->set('BEDS24_BOOKING_ID', $item->getBeds24BookingId())
|
||||
->set('ORDER_ID', $item->getOrderId())
|
||||
->set('ORDER_PRODUCT_ID', $item->getOrderProductId())
|
||||
->set('START_DATE', $item->getStartDate())
|
||||
->set('END_DATE', $item->getEndDate())
|
||||
->set('NUM_ADULTS', $item->getAdults())
|
||||
->set('NUM_CHILDREN', $item->getChildren())
|
||||
;
|
||||
|
||||
$loopResult->addRow($loopResultRow);
|
||||
}
|
||||
|
||||
return $loopResult;
|
||||
}
|
||||
}
|
||||
178
local/Beds24/Loop/RoomAvailability.php
Normal file
178
local/Beds24/Loop/RoomAvailability.php
Normal file
@@ -0,0 +1,178 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 13/06/2019 16:01
|
||||
*/
|
||||
namespace Beds24\Loop;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Beds24\Beds24\Beds24Request;
|
||||
use Beds24\Beds24\SearchParameters;
|
||||
use Beds24\Model\Base\Beds24ProductInfoQuery;
|
||||
use Thelia\Core\Template\Element\ArraySearchLoopInterface;
|
||||
use Thelia\Core\Template\Element\BaseLoop;
|
||||
use Thelia\Core\Template\Element\LoopResult;
|
||||
use Thelia\Core\Template\Element\LoopResultRow;
|
||||
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
||||
|
||||
|
||||
/**
|
||||
* @method string getRoomId()
|
||||
* @method int getAdults()
|
||||
* @method int getChildren()
|
||||
* @method bool getIgnoreAvailability()
|
||||
* @method bool getUseSavedSearchCriteria()
|
||||
* @method string getStartDate()
|
||||
* @method string getEndDate()
|
||||
* @method int getProductId()
|
||||
*/
|
||||
class RoomAvailability extends BaseLoop implements ArraySearchLoopInterface
|
||||
{
|
||||
/**
|
||||
* @return \Thelia\Core\Template\Loop\Argument\ArgumentCollection
|
||||
*/
|
||||
protected function getArgDefinitions()
|
||||
{
|
||||
return new ArgumentCollection(
|
||||
Argument::createAnyTypeArgument('start_date'),
|
||||
Argument::createAnyTypeArgument('end_date'),
|
||||
Argument::createIntTypeArgument('adults', 2),
|
||||
Argument::createIntTypeArgument('children', 0),
|
||||
Argument::createBooleanTypeArgument('ignore_availability', false),
|
||||
Argument::createIntTypeArgument('room_id'),
|
||||
Argument::createIntTypeArgument('product_id'),
|
||||
Argument::createBooleanTypeArgument('use_saved_search_criteria', false)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function buildArray()
|
||||
{
|
||||
if ($this->getUseSavedSearchCriteria()) {
|
||||
$searchData = new SearchParameters($this->requestStack->getCurrentRequest());
|
||||
|
||||
$adults = $searchData->getAdultCount();
|
||||
$children = $searchData->getChildCount();
|
||||
$dateDebut = $searchData->getStartDate();
|
||||
$dateFin = $searchData->getEndDate();
|
||||
} else {
|
||||
$adults = $this->getAdults();
|
||||
$children = $this->getChildren();
|
||||
|
||||
if (false === $dateDebut = \DateTime::createFromFormat('Y-m-d', $this->getStartDate())) {
|
||||
throw new \InvalidArgumentException("Date de début incorrecte : ".$this->getStartDate());
|
||||
}
|
||||
|
||||
if (false === $dateFin = \DateTime::createFromFormat('Y-m-d', $this->getEndDate())) {
|
||||
throw new \InvalidArgumentException("Date de fin incorrecte : ".$this->getEndDate());
|
||||
}
|
||||
}
|
||||
|
||||
$roomId = $this->getRoomId();
|
||||
|
||||
// Si un ID produit est fourni, trouver le Room ID associée (on écrase celui fourni !)
|
||||
if (null !== $productId = $this->getProductId()) {
|
||||
if (null === $roomInfo = Beds24ProductInfoQuery::create()->findOneByProductId($productId)) {
|
||||
return [];
|
||||
} else {
|
||||
$roomId = $roomInfo->getRoomId();
|
||||
}
|
||||
}
|
||||
|
||||
$api = new Beds24Request();
|
||||
|
||||
$ignoreAvailability =$this->getIgnoreAvailability();
|
||||
|
||||
$responseArray = $api->getAvailabilities(
|
||||
$dateDebut,
|
||||
$dateFin,
|
||||
$roomId,
|
||||
$adults,
|
||||
$children,
|
||||
$ignoreAvailability
|
||||
);
|
||||
|
||||
if ($api->hasError($responseArray)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$resultItemBase = [
|
||||
'checkIn' => $responseArray['checkIn'],
|
||||
'lastNight' => $responseArray['lastNight'],
|
||||
'checkOut' => $responseArray['checkOut'],
|
||||
'numAdult' => isset($responseArray['numAdult']) ? $responseArray['numAdult'] : 0,
|
||||
'numChildren' => isset($responseArray['numChild']) ? $responseArray['numChild'] : 0
|
||||
];
|
||||
|
||||
$result = [];
|
||||
|
||||
foreach ($responseArray as $item) {
|
||||
if (is_array($item) && isset($item['roomId'])) {
|
||||
if (intval($item['price']) > 0 || $ignoreAvailability) {
|
||||
// Find the related product
|
||||
if (null !== $productInfo = Beds24ProductInfoQuery::create()->findOneByRoomId($item['roomId'])) {
|
||||
$resultItem = $resultItemBase;
|
||||
|
||||
$resultItem['productId'] = $productInfo->getProductId();
|
||||
|
||||
foreach ($item as $var => $value) {
|
||||
$resultItem[$var] = $value;
|
||||
}
|
||||
|
||||
$result[] = $resultItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// print_r($result);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function parseResults(LoopResult $loopResult)
|
||||
{
|
||||
foreach ($loopResult->getResultDataCollection() as $item) {
|
||||
$loopResultRow = new LoopResultRow($item);
|
||||
|
||||
$checkIn = \DateTime::createFromFormat("Ymd", $item['checkIn']);
|
||||
$checkOut = \DateTime::createFromFormat("Ymd", $item['checkOut']);
|
||||
$remise = Beds24::getRemiseDuree($checkIn, $checkOut, $nbJours);
|
||||
$prixRemise = round($item['price'] * (1 - $remise), 2);
|
||||
|
||||
$loopResultRow
|
||||
->set('ROOM_ID', $item['roomId'])
|
||||
->set('PRODUCT_ID', $item['productId'])
|
||||
->set('PROP_ID', $item['propId'])
|
||||
->set('ROOMS_AVAIL', $item['roomsavail'])
|
||||
->set('PRICE', $item['price'])
|
||||
->set('PRICE_REMISE', $prixRemise)
|
||||
->set('REMISE', $remise * 100)
|
||||
->set('NB_JOURS', $nbJours)
|
||||
->set('CHECK_IN', $checkIn)
|
||||
->set('CHECK_OUT', $checkOut)
|
||||
->set('LAST_NIGHT', \DateTime::createFromFormat("Ymd", $item['lastNight']))
|
||||
->set('NUM_ADULTS', $item['numAdult'])
|
||||
->set('NUM_CHILDREN', $item['numChildren'])
|
||||
;
|
||||
|
||||
$loopResult->addRow($loopResultRow);
|
||||
}
|
||||
|
||||
return $loopResult;
|
||||
}
|
||||
}
|
||||
112
local/Beds24/Loop/RoomDescription.php
Normal file
112
local/Beds24/Loop/RoomDescription.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* Copyright (c) Franck Allimant, CQFDev */
|
||||
/* email : thelia@cqfdev.fr */
|
||||
/* web : http://www.cqfdev.fr */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
/**
|
||||
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||
* Date: 13/06/2019 16:01
|
||||
*/
|
||||
namespace Beds24\Loop;
|
||||
|
||||
use Beds24\Beds24;
|
||||
use Beds24\Beds24\Beds24Request;
|
||||
use Beds24\Model\Base\Beds24ProductInfoQuery;
|
||||
use Thelia\Core\HttpFoundation\Session\Session;
|
||||
use Thelia\Core\Template\Element\ArraySearchLoopInterface;
|
||||
use Thelia\Core\Template\Element\BaseLoop;
|
||||
use Thelia\Core\Template\Element\LoopResult;
|
||||
use Thelia\Core\Template\Element\LoopResultRow;
|
||||
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
||||
|
||||
|
||||
/**
|
||||
* @method string getRoomId()
|
||||
* @method int getProductId()
|
||||
*/
|
||||
class RoomDescription extends BaseLoop implements ArraySearchLoopInterface
|
||||
{
|
||||
/**
|
||||
* @return \Thelia\Core\Template\Loop\Argument\ArgumentCollection
|
||||
*/
|
||||
protected function getArgDefinitions()
|
||||
{
|
||||
return new ArgumentCollection(
|
||||
Argument::createIntTypeArgument('room_id'),
|
||||
Argument::createIntTypeArgument('product_id')
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public function buildArray()
|
||||
{
|
||||
$roomId = $this->getRoomId();
|
||||
|
||||
// Si un ID produit est fourni, trouver le Room ID associée (on écrase celui fourni !)
|
||||
if (null !== $productId = $this->getProductId()) {
|
||||
if (null === $roomInfo = Beds24ProductInfoQuery::create()->findOneByProductId($productId)) {
|
||||
return [];
|
||||
} else {
|
||||
$roomId = $roomInfo->getRoomId();
|
||||
}
|
||||
}
|
||||
|
||||
/** @var Session $session */
|
||||
$session = $this->requestStack->getCurrentRequest()->getSession();
|
||||
|
||||
$api = new Beds24Request();
|
||||
|
||||
$responseArray = $api->getRoomDescription($roomId, $session->getLang()->getCode());
|
||||
|
||||
if ($api->hasError($responseArray)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$result = [];
|
||||
/*
|
||||
foreach ($responseArray as $item) {
|
||||
}
|
||||
*/
|
||||
// print_r($result);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function parseResults(LoopResult $loopResult)
|
||||
{
|
||||
foreach ($loopResult->getResultDataCollection() as $item) {
|
||||
$loopResultRow = new LoopResultRow($item);
|
||||
|
||||
$checkIn = \DateTime::createFromFormat("Ymd", $item['checkIn']);
|
||||
$checkOut = \DateTime::createFromFormat("Ymd", $item['checkOut']);
|
||||
$remise = Beds24::getRemiseDuree($checkIn, $checkOut, $nbJours);
|
||||
$prixRemise = round($item['price'] * (1 - $remise), 2);
|
||||
|
||||
$loopResultRow
|
||||
->set('ROOM_ID', $item['roomId'])
|
||||
->set('PRODUCT_ID', $item['productId'])
|
||||
->set('PROP_ID', $item['propId'])
|
||||
->set('ROOMS_AVAIL', $item['roomsavail'])
|
||||
->set('PRICE', $item['price'])
|
||||
->set('PRICE_REMISE', $prixRemise)
|
||||
->set('REMISE', $remise * 100)
|
||||
->set('NB_JOURS', $nbJours)
|
||||
->set('CHECK_IN', $checkIn)
|
||||
->set('CHECK_OUT', $checkOut)
|
||||
->set('LAST_NIGHT', \DateTime::createFromFormat("Ymd", $item['lastNight']))
|
||||
->set('NUM_ADULTS', $item['numAdult'])
|
||||
->set('NUM_CHILDREN', $item['numChildren'])
|
||||
;
|
||||
|
||||
$loopResult->addRow($loopResultRow);
|
||||
}
|
||||
|
||||
return $loopResult;
|
||||
}
|
||||
}
|
||||
1511
local/Beds24/Model/Base/Beds24BookingInfo.php
Normal file
1511
local/Beds24/Model/Base/Beds24BookingInfo.php
Normal file
File diff suppressed because it is too large
Load Diff
703
local/Beds24/Model/Base/Beds24BookingInfoQuery.php
Normal file
703
local/Beds24/Model/Base/Beds24BookingInfoQuery.php
Normal file
@@ -0,0 +1,703 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model\Base;
|
||||
|
||||
use \Exception;
|
||||
use \PDO;
|
||||
use Beds24\Model\Beds24BookingInfo as ChildBeds24BookingInfo;
|
||||
use Beds24\Model\Beds24BookingInfoQuery as ChildBeds24BookingInfoQuery;
|
||||
use Beds24\Model\Map\Beds24BookingInfoTableMap;
|
||||
use Propel\Runtime\Propel;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||
use Propel\Runtime\ActiveQuery\ModelJoin;
|
||||
use Propel\Runtime\Collection\Collection;
|
||||
use Propel\Runtime\Collection\ObjectCollection;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Propel\Runtime\Exception\PropelException;
|
||||
use Thelia\Model\CartItem;
|
||||
|
||||
/**
|
||||
* Base class that represents a query for the 'beds24_booking_info' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* @method ChildBeds24BookingInfoQuery orderById($order = Criteria::ASC) Order by the id column
|
||||
* @method ChildBeds24BookingInfoQuery orderByCartItemId($order = Criteria::ASC) Order by the cart_item_id column
|
||||
* @method ChildBeds24BookingInfoQuery orderByRoomId($order = Criteria::ASC) Order by the room_id column
|
||||
* @method ChildBeds24BookingInfoQuery orderByStartDate($order = Criteria::ASC) Order by the start_date column
|
||||
* @method ChildBeds24BookingInfoQuery orderByEndDate($order = Criteria::ASC) Order by the end_date column
|
||||
* @method ChildBeds24BookingInfoQuery orderByAdults($order = Criteria::ASC) Order by the adults column
|
||||
* @method ChildBeds24BookingInfoQuery orderByChildren($order = Criteria::ASC) Order by the children column
|
||||
*
|
||||
* @method ChildBeds24BookingInfoQuery groupById() Group by the id column
|
||||
* @method ChildBeds24BookingInfoQuery groupByCartItemId() Group by the cart_item_id column
|
||||
* @method ChildBeds24BookingInfoQuery groupByRoomId() Group by the room_id column
|
||||
* @method ChildBeds24BookingInfoQuery groupByStartDate() Group by the start_date column
|
||||
* @method ChildBeds24BookingInfoQuery groupByEndDate() Group by the end_date column
|
||||
* @method ChildBeds24BookingInfoQuery groupByAdults() Group by the adults column
|
||||
* @method ChildBeds24BookingInfoQuery groupByChildren() Group by the children column
|
||||
*
|
||||
* @method ChildBeds24BookingInfoQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||
* @method ChildBeds24BookingInfoQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||
* @method ChildBeds24BookingInfoQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||
*
|
||||
* @method ChildBeds24BookingInfoQuery leftJoinCartItem($relationAlias = null) Adds a LEFT JOIN clause to the query using the CartItem relation
|
||||
* @method ChildBeds24BookingInfoQuery rightJoinCartItem($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CartItem relation
|
||||
* @method ChildBeds24BookingInfoQuery innerJoinCartItem($relationAlias = null) Adds a INNER JOIN clause to the query using the CartItem relation
|
||||
*
|
||||
* @method ChildBeds24BookingInfo findOne(ConnectionInterface $con = null) Return the first ChildBeds24BookingInfo matching the query
|
||||
* @method ChildBeds24BookingInfo findOneOrCreate(ConnectionInterface $con = null) Return the first ChildBeds24BookingInfo matching the query, or a new ChildBeds24BookingInfo object populated from the query conditions when no match is found
|
||||
*
|
||||
* @method ChildBeds24BookingInfo findOneById(int $id) Return the first ChildBeds24BookingInfo filtered by the id column
|
||||
* @method ChildBeds24BookingInfo findOneByCartItemId(int $cart_item_id) Return the first ChildBeds24BookingInfo filtered by the cart_item_id column
|
||||
* @method ChildBeds24BookingInfo findOneByRoomId(int $room_id) Return the first ChildBeds24BookingInfo filtered by the room_id column
|
||||
* @method ChildBeds24BookingInfo findOneByStartDate(string $start_date) Return the first ChildBeds24BookingInfo filtered by the start_date column
|
||||
* @method ChildBeds24BookingInfo findOneByEndDate(string $end_date) Return the first ChildBeds24BookingInfo filtered by the end_date column
|
||||
* @method ChildBeds24BookingInfo findOneByAdults(int $adults) Return the first ChildBeds24BookingInfo filtered by the adults column
|
||||
* @method ChildBeds24BookingInfo findOneByChildren(int $children) Return the first ChildBeds24BookingInfo filtered by the children column
|
||||
*
|
||||
* @method array findById(int $id) Return ChildBeds24BookingInfo objects filtered by the id column
|
||||
* @method array findByCartItemId(int $cart_item_id) Return ChildBeds24BookingInfo objects filtered by the cart_item_id column
|
||||
* @method array findByRoomId(int $room_id) Return ChildBeds24BookingInfo objects filtered by the room_id column
|
||||
* @method array findByStartDate(string $start_date) Return ChildBeds24BookingInfo objects filtered by the start_date column
|
||||
* @method array findByEndDate(string $end_date) Return ChildBeds24BookingInfo objects filtered by the end_date column
|
||||
* @method array findByAdults(int $adults) Return ChildBeds24BookingInfo objects filtered by the adults column
|
||||
* @method array findByChildren(int $children) Return ChildBeds24BookingInfo objects filtered by the children column
|
||||
*
|
||||
*/
|
||||
abstract class Beds24BookingInfoQuery extends ModelCriteria
|
||||
{
|
||||
|
||||
/**
|
||||
* Initializes internal state of \Beds24\Model\Base\Beds24BookingInfoQuery object.
|
||||
*
|
||||
* @param string $dbName The database name
|
||||
* @param string $modelName The phpName of a model, e.g. 'Book'
|
||||
* @param string $modelAlias The alias for the model in this query, e.g. 'b'
|
||||
*/
|
||||
public function __construct($dbName = 'thelia', $modelName = '\\Beds24\\Model\\Beds24BookingInfo', $modelAlias = null)
|
||||
{
|
||||
parent::__construct($dbName, $modelName, $modelAlias);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new ChildBeds24BookingInfoQuery object.
|
||||
*
|
||||
* @param string $modelAlias The alias of a model in the query
|
||||
* @param Criteria $criteria Optional Criteria to build the query from
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery
|
||||
*/
|
||||
public static function create($modelAlias = null, $criteria = null)
|
||||
{
|
||||
if ($criteria instanceof \Beds24\Model\Beds24BookingInfoQuery) {
|
||||
return $criteria;
|
||||
}
|
||||
$query = new \Beds24\Model\Beds24BookingInfoQuery();
|
||||
if (null !== $modelAlias) {
|
||||
$query->setModelAlias($modelAlias);
|
||||
}
|
||||
if ($criteria instanceof Criteria) {
|
||||
$query->mergeWith($criteria);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key.
|
||||
* Propel uses the instance pool to skip the database if the object exists.
|
||||
* Go fast if the query is untouched.
|
||||
*
|
||||
* <code>
|
||||
* $obj = $c->findPk(12, $con);
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con an optional connection object
|
||||
*
|
||||
* @return ChildBeds24BookingInfo|array|mixed the result, formatted by the current formatter
|
||||
*/
|
||||
public function findPk($key, $con = null)
|
||||
{
|
||||
if ($key === null) {
|
||||
return null;
|
||||
}
|
||||
if ((null !== ($obj = Beds24BookingInfoTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||
// the object is already in the instance pool
|
||||
return $obj;
|
||||
}
|
||||
if ($con === null) {
|
||||
$con = Propel::getServiceContainer()->getReadConnection(Beds24BookingInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
$this->basePreSelect($con);
|
||||
if ($this->formatter || $this->modelAlias || $this->with || $this->select
|
||||
|| $this->selectColumns || $this->asColumns || $this->selectModifiers
|
||||
|| $this->map || $this->having || $this->joins) {
|
||||
return $this->findPkComplex($key, $con);
|
||||
} else {
|
||||
return $this->findPkSimple($key, $con);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key using raw SQL to go fast.
|
||||
* Bypass doSelect() and the object formatter by using generated code.
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con A connection object
|
||||
*
|
||||
* @return ChildBeds24BookingInfo A model object, or null if the key is not found
|
||||
*/
|
||||
protected function findPkSimple($key, $con)
|
||||
{
|
||||
$sql = 'SELECT ID, CART_ITEM_ID, ROOM_ID, START_DATE, END_DATE, ADULTS, CHILDREN FROM beds24_booking_info WHERE ID = :p0';
|
||||
try {
|
||||
$stmt = $con->prepare($sql);
|
||||
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
} catch (Exception $e) {
|
||||
Propel::log($e->getMessage(), Propel::LOG_ERR);
|
||||
throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
|
||||
}
|
||||
$obj = null;
|
||||
if ($row = $stmt->fetch(\PDO::FETCH_NUM)) {
|
||||
$obj = new ChildBeds24BookingInfo();
|
||||
$obj->hydrate($row);
|
||||
Beds24BookingInfoTableMap::addInstanceToPool($obj, (string) $key);
|
||||
}
|
||||
$stmt->closeCursor();
|
||||
|
||||
return $obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key.
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con A connection object
|
||||
*
|
||||
* @return ChildBeds24BookingInfo|array|mixed the result, formatted by the current formatter
|
||||
*/
|
||||
protected function findPkComplex($key, $con)
|
||||
{
|
||||
// As the query uses a PK condition, no limit(1) is necessary.
|
||||
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||
$dataFetcher = $criteria
|
||||
->filterByPrimaryKey($key)
|
||||
->doSelect($con);
|
||||
|
||||
return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find objects by primary key
|
||||
* <code>
|
||||
* $objs = $c->findPks(array(12, 56, 832), $con);
|
||||
* </code>
|
||||
* @param array $keys Primary keys to use for the query
|
||||
* @param ConnectionInterface $con an optional connection object
|
||||
*
|
||||
* @return ObjectCollection|array|mixed the list of results, formatted by the current formatter
|
||||
*/
|
||||
public function findPks($keys, $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getReadConnection($this->getDbName());
|
||||
}
|
||||
$this->basePreSelect($con);
|
||||
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||
$dataFetcher = $criteria
|
||||
->filterByPrimaryKeys($keys)
|
||||
->doSelect($con);
|
||||
|
||||
return $criteria->getFormatter()->init($criteria)->format($dataFetcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by primary key
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByPrimaryKey($key)
|
||||
{
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingInfoTableMap::ID, $key, Criteria::EQUAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by a list of primary keys
|
||||
*
|
||||
* @param array $keys The list of primary key to use for the query
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByPrimaryKeys($keys)
|
||||
{
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingInfoTableMap::ID, $keys, Criteria::IN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterById(1234); // WHERE id = 1234
|
||||
* $query->filterById(array(12, 34)); // WHERE id IN (12, 34)
|
||||
* $query->filterById(array('min' => 12)); // WHERE id > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $id The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterById($id = null, $comparison = null)
|
||||
{
|
||||
if (is_array($id)) {
|
||||
$useMinMax = false;
|
||||
if (isset($id['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($id['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingInfoTableMap::ID, $id, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the cart_item_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByCartItemId(1234); // WHERE cart_item_id = 1234
|
||||
* $query->filterByCartItemId(array(12, 34)); // WHERE cart_item_id IN (12, 34)
|
||||
* $query->filterByCartItemId(array('min' => 12)); // WHERE cart_item_id > 12
|
||||
* </code>
|
||||
*
|
||||
* @see filterByCartItem()
|
||||
*
|
||||
* @param mixed $cartItemId The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByCartItemId($cartItemId = null, $comparison = null)
|
||||
{
|
||||
if (is_array($cartItemId)) {
|
||||
$useMinMax = false;
|
||||
if (isset($cartItemId['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::CART_ITEM_ID, $cartItemId['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($cartItemId['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::CART_ITEM_ID, $cartItemId['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingInfoTableMap::CART_ITEM_ID, $cartItemId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the room_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByRoomId(1234); // WHERE room_id = 1234
|
||||
* $query->filterByRoomId(array(12, 34)); // WHERE room_id IN (12, 34)
|
||||
* $query->filterByRoomId(array('min' => 12)); // WHERE room_id > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $roomId The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByRoomId($roomId = null, $comparison = null)
|
||||
{
|
||||
if (is_array($roomId)) {
|
||||
$useMinMax = false;
|
||||
if (isset($roomId['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::ROOM_ID, $roomId['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($roomId['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::ROOM_ID, $roomId['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingInfoTableMap::ROOM_ID, $roomId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the start_date column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByStartDate('2011-03-14'); // WHERE start_date = '2011-03-14'
|
||||
* $query->filterByStartDate('now'); // WHERE start_date = '2011-03-14'
|
||||
* $query->filterByStartDate(array('max' => 'yesterday')); // WHERE start_date > '2011-03-13'
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $startDate The value to use as filter.
|
||||
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||
* Empty strings are treated as NULL.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByStartDate($startDate = null, $comparison = null)
|
||||
{
|
||||
if (is_array($startDate)) {
|
||||
$useMinMax = false;
|
||||
if (isset($startDate['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::START_DATE, $startDate['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($startDate['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::START_DATE, $startDate['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingInfoTableMap::START_DATE, $startDate, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the end_date column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByEndDate('2011-03-14'); // WHERE end_date = '2011-03-14'
|
||||
* $query->filterByEndDate('now'); // WHERE end_date = '2011-03-14'
|
||||
* $query->filterByEndDate(array('max' => 'yesterday')); // WHERE end_date > '2011-03-13'
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $endDate The value to use as filter.
|
||||
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||
* Empty strings are treated as NULL.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByEndDate($endDate = null, $comparison = null)
|
||||
{
|
||||
if (is_array($endDate)) {
|
||||
$useMinMax = false;
|
||||
if (isset($endDate['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::END_DATE, $endDate['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($endDate['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::END_DATE, $endDate['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingInfoTableMap::END_DATE, $endDate, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the adults column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByAdults(1234); // WHERE adults = 1234
|
||||
* $query->filterByAdults(array(12, 34)); // WHERE adults IN (12, 34)
|
||||
* $query->filterByAdults(array('min' => 12)); // WHERE adults > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $adults The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByAdults($adults = null, $comparison = null)
|
||||
{
|
||||
if (is_array($adults)) {
|
||||
$useMinMax = false;
|
||||
if (isset($adults['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::ADULTS, $adults['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($adults['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::ADULTS, $adults['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingInfoTableMap::ADULTS, $adults, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the children column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByChildren(1234); // WHERE children = 1234
|
||||
* $query->filterByChildren(array(12, 34)); // WHERE children IN (12, 34)
|
||||
* $query->filterByChildren(array('min' => 12)); // WHERE children > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $children The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByChildren($children = null, $comparison = null)
|
||||
{
|
||||
if (is_array($children)) {
|
||||
$useMinMax = false;
|
||||
if (isset($children['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::CHILDREN, $children['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($children['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::CHILDREN, $children['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingInfoTableMap::CHILDREN, $children, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by a related \Thelia\Model\CartItem object
|
||||
*
|
||||
* @param \Thelia\Model\CartItem|ObjectCollection $cartItem The related object(s) to use as filter
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByCartItem($cartItem, $comparison = null)
|
||||
{
|
||||
if ($cartItem instanceof \Thelia\Model\CartItem) {
|
||||
return $this
|
||||
->addUsingAlias(Beds24BookingInfoTableMap::CART_ITEM_ID, $cartItem->getId(), $comparison);
|
||||
} elseif ($cartItem instanceof ObjectCollection) {
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
|
||||
return $this
|
||||
->addUsingAlias(Beds24BookingInfoTableMap::CART_ITEM_ID, $cartItem->toKeyValue('PrimaryKey', 'Id'), $comparison);
|
||||
} else {
|
||||
throw new PropelException('filterByCartItem() only accepts arguments of type \Thelia\Model\CartItem or Collection');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a JOIN clause to the query using the CartItem relation
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function joinCartItem($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||
{
|
||||
$tableMap = $this->getTableMap();
|
||||
$relationMap = $tableMap->getRelation('CartItem');
|
||||
|
||||
// create a ModelJoin object for this join
|
||||
$join = new ModelJoin();
|
||||
$join->setJoinType($joinType);
|
||||
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
|
||||
if ($previousJoin = $this->getPreviousJoin()) {
|
||||
$join->setPreviousJoin($previousJoin);
|
||||
}
|
||||
|
||||
// add the ModelJoin to the current object
|
||||
if ($relationAlias) {
|
||||
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
|
||||
$this->addJoinObject($join, $relationAlias);
|
||||
} else {
|
||||
$this->addJoinObject($join, 'CartItem');
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the CartItem relation CartItem object
|
||||
*
|
||||
* @see useQuery()
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation,
|
||||
* to be used as main alias in the secondary query
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return \Thelia\Model\CartItemQuery A secondary query class using the current class as primary query
|
||||
*/
|
||||
public function useCartItemQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||
{
|
||||
return $this
|
||||
->joinCartItem($relationAlias, $joinType)
|
||||
->useQuery($relationAlias ? $relationAlias : 'CartItem', '\Thelia\Model\CartItemQuery');
|
||||
}
|
||||
|
||||
/**
|
||||
* Exclude object from result
|
||||
*
|
||||
* @param ChildBeds24BookingInfo $beds24BookingInfo Object to remove from the list of results
|
||||
*
|
||||
* @return ChildBeds24BookingInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function prune($beds24BookingInfo = null)
|
||||
{
|
||||
if ($beds24BookingInfo) {
|
||||
$this->addUsingAlias(Beds24BookingInfoTableMap::ID, $beds24BookingInfo->getId(), Criteria::NOT_EQUAL);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all rows from the beds24_booking_info table.
|
||||
*
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
*/
|
||||
public function doDeleteAll(ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24BookingInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->beginTransaction();
|
||||
$affectedRows += parent::doDeleteAll($con);
|
||||
// Because this db requires some delete cascade/set null emulation, we have to
|
||||
// clear the cached instance *after* the emulation has happened (since
|
||||
// instances get re-added by the select statement contained therein).
|
||||
Beds24BookingInfoTableMap::clearInstancePool();
|
||||
Beds24BookingInfoTableMap::clearRelatedInstancePool();
|
||||
|
||||
$con->commit();
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return $affectedRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a DELETE on the database, given a ChildBeds24BookingInfo or Criteria object OR a primary key value.
|
||||
*
|
||||
* @param mixed $values Criteria or ChildBeds24BookingInfo object or primary key or array of primary keys
|
||||
* which is used to create the DELETE statement
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||
* if supported by native driver or if emulated using Propel.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public function delete(ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24BookingInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
$criteria = $this;
|
||||
|
||||
// Set the correct dbName
|
||||
$criteria->setDbName(Beds24BookingInfoTableMap::DATABASE_NAME);
|
||||
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->beginTransaction();
|
||||
|
||||
|
||||
Beds24BookingInfoTableMap::removeInstanceFromPool($criteria);
|
||||
|
||||
$affectedRows += ModelCriteria::delete($con);
|
||||
Beds24BookingInfoTableMap::clearRelatedInstancePool();
|
||||
$con->commit();
|
||||
|
||||
return $affectedRows;
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
} // Beds24BookingInfoQuery
|
||||
1704
local/Beds24/Model/Base/Beds24BookingOrderProduct.php
Normal file
1704
local/Beds24/Model/Base/Beds24BookingOrderProduct.php
Normal file
File diff suppressed because it is too large
Load Diff
863
local/Beds24/Model/Base/Beds24BookingOrderProductQuery.php
Normal file
863
local/Beds24/Model/Base/Beds24BookingOrderProductQuery.php
Normal file
@@ -0,0 +1,863 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model\Base;
|
||||
|
||||
use \Exception;
|
||||
use \PDO;
|
||||
use Beds24\Model\Beds24BookingOrderProduct as ChildBeds24BookingOrderProduct;
|
||||
use Beds24\Model\Beds24BookingOrderProductQuery as ChildBeds24BookingOrderProductQuery;
|
||||
use Beds24\Model\Map\Beds24BookingOrderProductTableMap;
|
||||
use Propel\Runtime\Propel;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||
use Propel\Runtime\ActiveQuery\ModelJoin;
|
||||
use Propel\Runtime\Collection\Collection;
|
||||
use Propel\Runtime\Collection\ObjectCollection;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Propel\Runtime\Exception\PropelException;
|
||||
use Thelia\Model\Order;
|
||||
use Thelia\Model\OrderProduct;
|
||||
|
||||
/**
|
||||
* Base class that represents a query for the 'beds24_booking_order_product' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* @method ChildBeds24BookingOrderProductQuery orderById($order = Criteria::ASC) Order by the id column
|
||||
* @method ChildBeds24BookingOrderProductQuery orderByOrderId($order = Criteria::ASC) Order by the order_id column
|
||||
* @method ChildBeds24BookingOrderProductQuery orderByOrderProductId($order = Criteria::ASC) Order by the order_product_id column
|
||||
* @method ChildBeds24BookingOrderProductQuery orderByRoomId($order = Criteria::ASC) Order by the room_id column
|
||||
* @method ChildBeds24BookingOrderProductQuery orderByStartDate($order = Criteria::ASC) Order by the start_date column
|
||||
* @method ChildBeds24BookingOrderProductQuery orderByEndDate($order = Criteria::ASC) Order by the end_date column
|
||||
* @method ChildBeds24BookingOrderProductQuery orderByAdults($order = Criteria::ASC) Order by the adults column
|
||||
* @method ChildBeds24BookingOrderProductQuery orderByChildren($order = Criteria::ASC) Order by the children column
|
||||
* @method ChildBeds24BookingOrderProductQuery orderByBeds24BookingId($order = Criteria::ASC) Order by the beds_24_booking_id column
|
||||
*
|
||||
* @method ChildBeds24BookingOrderProductQuery groupById() Group by the id column
|
||||
* @method ChildBeds24BookingOrderProductQuery groupByOrderId() Group by the order_id column
|
||||
* @method ChildBeds24BookingOrderProductQuery groupByOrderProductId() Group by the order_product_id column
|
||||
* @method ChildBeds24BookingOrderProductQuery groupByRoomId() Group by the room_id column
|
||||
* @method ChildBeds24BookingOrderProductQuery groupByStartDate() Group by the start_date column
|
||||
* @method ChildBeds24BookingOrderProductQuery groupByEndDate() Group by the end_date column
|
||||
* @method ChildBeds24BookingOrderProductQuery groupByAdults() Group by the adults column
|
||||
* @method ChildBeds24BookingOrderProductQuery groupByChildren() Group by the children column
|
||||
* @method ChildBeds24BookingOrderProductQuery groupByBeds24BookingId() Group by the beds_24_booking_id column
|
||||
*
|
||||
* @method ChildBeds24BookingOrderProductQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||
* @method ChildBeds24BookingOrderProductQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||
* @method ChildBeds24BookingOrderProductQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||
*
|
||||
* @method ChildBeds24BookingOrderProductQuery leftJoinOrderProduct($relationAlias = null) Adds a LEFT JOIN clause to the query using the OrderProduct relation
|
||||
* @method ChildBeds24BookingOrderProductQuery rightJoinOrderProduct($relationAlias = null) Adds a RIGHT JOIN clause to the query using the OrderProduct relation
|
||||
* @method ChildBeds24BookingOrderProductQuery innerJoinOrderProduct($relationAlias = null) Adds a INNER JOIN clause to the query using the OrderProduct relation
|
||||
*
|
||||
* @method ChildBeds24BookingOrderProductQuery leftJoinOrder($relationAlias = null) Adds a LEFT JOIN clause to the query using the Order relation
|
||||
* @method ChildBeds24BookingOrderProductQuery rightJoinOrder($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Order relation
|
||||
* @method ChildBeds24BookingOrderProductQuery innerJoinOrder($relationAlias = null) Adds a INNER JOIN clause to the query using the Order relation
|
||||
*
|
||||
* @method ChildBeds24BookingOrderProduct findOne(ConnectionInterface $con = null) Return the first ChildBeds24BookingOrderProduct matching the query
|
||||
* @method ChildBeds24BookingOrderProduct findOneOrCreate(ConnectionInterface $con = null) Return the first ChildBeds24BookingOrderProduct matching the query, or a new ChildBeds24BookingOrderProduct object populated from the query conditions when no match is found
|
||||
*
|
||||
* @method ChildBeds24BookingOrderProduct findOneById(int $id) Return the first ChildBeds24BookingOrderProduct filtered by the id column
|
||||
* @method ChildBeds24BookingOrderProduct findOneByOrderId(int $order_id) Return the first ChildBeds24BookingOrderProduct filtered by the order_id column
|
||||
* @method ChildBeds24BookingOrderProduct findOneByOrderProductId(int $order_product_id) Return the first ChildBeds24BookingOrderProduct filtered by the order_product_id column
|
||||
* @method ChildBeds24BookingOrderProduct findOneByRoomId(int $room_id) Return the first ChildBeds24BookingOrderProduct filtered by the room_id column
|
||||
* @method ChildBeds24BookingOrderProduct findOneByStartDate(string $start_date) Return the first ChildBeds24BookingOrderProduct filtered by the start_date column
|
||||
* @method ChildBeds24BookingOrderProduct findOneByEndDate(string $end_date) Return the first ChildBeds24BookingOrderProduct filtered by the end_date column
|
||||
* @method ChildBeds24BookingOrderProduct findOneByAdults(int $adults) Return the first ChildBeds24BookingOrderProduct filtered by the adults column
|
||||
* @method ChildBeds24BookingOrderProduct findOneByChildren(int $children) Return the first ChildBeds24BookingOrderProduct filtered by the children column
|
||||
* @method ChildBeds24BookingOrderProduct findOneByBeds24BookingId(string $beds_24_booking_id) Return the first ChildBeds24BookingOrderProduct filtered by the beds_24_booking_id column
|
||||
*
|
||||
* @method array findById(int $id) Return ChildBeds24BookingOrderProduct objects filtered by the id column
|
||||
* @method array findByOrderId(int $order_id) Return ChildBeds24BookingOrderProduct objects filtered by the order_id column
|
||||
* @method array findByOrderProductId(int $order_product_id) Return ChildBeds24BookingOrderProduct objects filtered by the order_product_id column
|
||||
* @method array findByRoomId(int $room_id) Return ChildBeds24BookingOrderProduct objects filtered by the room_id column
|
||||
* @method array findByStartDate(string $start_date) Return ChildBeds24BookingOrderProduct objects filtered by the start_date column
|
||||
* @method array findByEndDate(string $end_date) Return ChildBeds24BookingOrderProduct objects filtered by the end_date column
|
||||
* @method array findByAdults(int $adults) Return ChildBeds24BookingOrderProduct objects filtered by the adults column
|
||||
* @method array findByChildren(int $children) Return ChildBeds24BookingOrderProduct objects filtered by the children column
|
||||
* @method array findByBeds24BookingId(string $beds_24_booking_id) Return ChildBeds24BookingOrderProduct objects filtered by the beds_24_booking_id column
|
||||
*
|
||||
*/
|
||||
abstract class Beds24BookingOrderProductQuery extends ModelCriteria
|
||||
{
|
||||
|
||||
/**
|
||||
* Initializes internal state of \Beds24\Model\Base\Beds24BookingOrderProductQuery object.
|
||||
*
|
||||
* @param string $dbName The database name
|
||||
* @param string $modelName The phpName of a model, e.g. 'Book'
|
||||
* @param string $modelAlias The alias for the model in this query, e.g. 'b'
|
||||
*/
|
||||
public function __construct($dbName = 'thelia', $modelName = '\\Beds24\\Model\\Beds24BookingOrderProduct', $modelAlias = null)
|
||||
{
|
||||
parent::__construct($dbName, $modelName, $modelAlias);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new ChildBeds24BookingOrderProductQuery object.
|
||||
*
|
||||
* @param string $modelAlias The alias of a model in the query
|
||||
* @param Criteria $criteria Optional Criteria to build the query from
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery
|
||||
*/
|
||||
public static function create($modelAlias = null, $criteria = null)
|
||||
{
|
||||
if ($criteria instanceof \Beds24\Model\Beds24BookingOrderProductQuery) {
|
||||
return $criteria;
|
||||
}
|
||||
$query = new \Beds24\Model\Beds24BookingOrderProductQuery();
|
||||
if (null !== $modelAlias) {
|
||||
$query->setModelAlias($modelAlias);
|
||||
}
|
||||
if ($criteria instanceof Criteria) {
|
||||
$query->mergeWith($criteria);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key.
|
||||
* Propel uses the instance pool to skip the database if the object exists.
|
||||
* Go fast if the query is untouched.
|
||||
*
|
||||
* <code>
|
||||
* $obj = $c->findPk(12, $con);
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con an optional connection object
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProduct|array|mixed the result, formatted by the current formatter
|
||||
*/
|
||||
public function findPk($key, $con = null)
|
||||
{
|
||||
if ($key === null) {
|
||||
return null;
|
||||
}
|
||||
if ((null !== ($obj = Beds24BookingOrderProductTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||
// the object is already in the instance pool
|
||||
return $obj;
|
||||
}
|
||||
if ($con === null) {
|
||||
$con = Propel::getServiceContainer()->getReadConnection(Beds24BookingOrderProductTableMap::DATABASE_NAME);
|
||||
}
|
||||
$this->basePreSelect($con);
|
||||
if ($this->formatter || $this->modelAlias || $this->with || $this->select
|
||||
|| $this->selectColumns || $this->asColumns || $this->selectModifiers
|
||||
|| $this->map || $this->having || $this->joins) {
|
||||
return $this->findPkComplex($key, $con);
|
||||
} else {
|
||||
return $this->findPkSimple($key, $con);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key using raw SQL to go fast.
|
||||
* Bypass doSelect() and the object formatter by using generated code.
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con A connection object
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProduct A model object, or null if the key is not found
|
||||
*/
|
||||
protected function findPkSimple($key, $con)
|
||||
{
|
||||
$sql = 'SELECT ID, ORDER_ID, ORDER_PRODUCT_ID, ROOM_ID, START_DATE, END_DATE, ADULTS, CHILDREN, BEDS_24_BOOKING_ID FROM beds24_booking_order_product WHERE ID = :p0';
|
||||
try {
|
||||
$stmt = $con->prepare($sql);
|
||||
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
} catch (Exception $e) {
|
||||
Propel::log($e->getMessage(), Propel::LOG_ERR);
|
||||
throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
|
||||
}
|
||||
$obj = null;
|
||||
if ($row = $stmt->fetch(\PDO::FETCH_NUM)) {
|
||||
$obj = new ChildBeds24BookingOrderProduct();
|
||||
$obj->hydrate($row);
|
||||
Beds24BookingOrderProductTableMap::addInstanceToPool($obj, (string) $key);
|
||||
}
|
||||
$stmt->closeCursor();
|
||||
|
||||
return $obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key.
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con A connection object
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProduct|array|mixed the result, formatted by the current formatter
|
||||
*/
|
||||
protected function findPkComplex($key, $con)
|
||||
{
|
||||
// As the query uses a PK condition, no limit(1) is necessary.
|
||||
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||
$dataFetcher = $criteria
|
||||
->filterByPrimaryKey($key)
|
||||
->doSelect($con);
|
||||
|
||||
return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find objects by primary key
|
||||
* <code>
|
||||
* $objs = $c->findPks(array(12, 56, 832), $con);
|
||||
* </code>
|
||||
* @param array $keys Primary keys to use for the query
|
||||
* @param ConnectionInterface $con an optional connection object
|
||||
*
|
||||
* @return ObjectCollection|array|mixed the list of results, formatted by the current formatter
|
||||
*/
|
||||
public function findPks($keys, $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getReadConnection($this->getDbName());
|
||||
}
|
||||
$this->basePreSelect($con);
|
||||
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||
$dataFetcher = $criteria
|
||||
->filterByPrimaryKeys($keys)
|
||||
->doSelect($con);
|
||||
|
||||
return $criteria->getFormatter()->init($criteria)->format($dataFetcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by primary key
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByPrimaryKey($key)
|
||||
{
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::ID, $key, Criteria::EQUAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by a list of primary keys
|
||||
*
|
||||
* @param array $keys The list of primary key to use for the query
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByPrimaryKeys($keys)
|
||||
{
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::ID, $keys, Criteria::IN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterById(1234); // WHERE id = 1234
|
||||
* $query->filterById(array(12, 34)); // WHERE id IN (12, 34)
|
||||
* $query->filterById(array('min' => 12)); // WHERE id > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $id The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterById($id = null, $comparison = null)
|
||||
{
|
||||
if (is_array($id)) {
|
||||
$useMinMax = false;
|
||||
if (isset($id['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($id['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::ID, $id, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the order_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByOrderId(1234); // WHERE order_id = 1234
|
||||
* $query->filterByOrderId(array(12, 34)); // WHERE order_id IN (12, 34)
|
||||
* $query->filterByOrderId(array('min' => 12)); // WHERE order_id > 12
|
||||
* </code>
|
||||
*
|
||||
* @see filterByOrder()
|
||||
*
|
||||
* @param mixed $orderId The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByOrderId($orderId = null, $comparison = null)
|
||||
{
|
||||
if (is_array($orderId)) {
|
||||
$useMinMax = false;
|
||||
if (isset($orderId['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_ID, $orderId['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($orderId['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_ID, $orderId['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_ID, $orderId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the order_product_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByOrderProductId(1234); // WHERE order_product_id = 1234
|
||||
* $query->filterByOrderProductId(array(12, 34)); // WHERE order_product_id IN (12, 34)
|
||||
* $query->filterByOrderProductId(array('min' => 12)); // WHERE order_product_id > 12
|
||||
* </code>
|
||||
*
|
||||
* @see filterByOrderProduct()
|
||||
*
|
||||
* @param mixed $orderProductId The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByOrderProductId($orderProductId = null, $comparison = null)
|
||||
{
|
||||
if (is_array($orderProductId)) {
|
||||
$useMinMax = false;
|
||||
if (isset($orderProductId['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_PRODUCT_ID, $orderProductId['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($orderProductId['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_PRODUCT_ID, $orderProductId['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_PRODUCT_ID, $orderProductId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the room_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByRoomId(1234); // WHERE room_id = 1234
|
||||
* $query->filterByRoomId(array(12, 34)); // WHERE room_id IN (12, 34)
|
||||
* $query->filterByRoomId(array('min' => 12)); // WHERE room_id > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $roomId The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByRoomId($roomId = null, $comparison = null)
|
||||
{
|
||||
if (is_array($roomId)) {
|
||||
$useMinMax = false;
|
||||
if (isset($roomId['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ROOM_ID, $roomId['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($roomId['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ROOM_ID, $roomId['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::ROOM_ID, $roomId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the start_date column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByStartDate('2011-03-14'); // WHERE start_date = '2011-03-14'
|
||||
* $query->filterByStartDate('now'); // WHERE start_date = '2011-03-14'
|
||||
* $query->filterByStartDate(array('max' => 'yesterday')); // WHERE start_date > '2011-03-13'
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $startDate The value to use as filter.
|
||||
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||
* Empty strings are treated as NULL.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByStartDate($startDate = null, $comparison = null)
|
||||
{
|
||||
if (is_array($startDate)) {
|
||||
$useMinMax = false;
|
||||
if (isset($startDate['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::START_DATE, $startDate['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($startDate['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::START_DATE, $startDate['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::START_DATE, $startDate, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the end_date column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByEndDate('2011-03-14'); // WHERE end_date = '2011-03-14'
|
||||
* $query->filterByEndDate('now'); // WHERE end_date = '2011-03-14'
|
||||
* $query->filterByEndDate(array('max' => 'yesterday')); // WHERE end_date > '2011-03-13'
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $endDate The value to use as filter.
|
||||
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||
* Empty strings are treated as NULL.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByEndDate($endDate = null, $comparison = null)
|
||||
{
|
||||
if (is_array($endDate)) {
|
||||
$useMinMax = false;
|
||||
if (isset($endDate['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::END_DATE, $endDate['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($endDate['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::END_DATE, $endDate['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::END_DATE, $endDate, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the adults column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByAdults(1234); // WHERE adults = 1234
|
||||
* $query->filterByAdults(array(12, 34)); // WHERE adults IN (12, 34)
|
||||
* $query->filterByAdults(array('min' => 12)); // WHERE adults > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $adults The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByAdults($adults = null, $comparison = null)
|
||||
{
|
||||
if (is_array($adults)) {
|
||||
$useMinMax = false;
|
||||
if (isset($adults['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ADULTS, $adults['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($adults['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ADULTS, $adults['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::ADULTS, $adults, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the children column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByChildren(1234); // WHERE children = 1234
|
||||
* $query->filterByChildren(array(12, 34)); // WHERE children IN (12, 34)
|
||||
* $query->filterByChildren(array('min' => 12)); // WHERE children > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $children The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByChildren($children = null, $comparison = null)
|
||||
{
|
||||
if (is_array($children)) {
|
||||
$useMinMax = false;
|
||||
if (isset($children['min'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::CHILDREN, $children['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($children['max'])) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::CHILDREN, $children['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::CHILDREN, $children, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the beds_24_booking_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByBeds24BookingId('fooValue'); // WHERE beds_24_booking_id = 'fooValue'
|
||||
* $query->filterByBeds24BookingId('%fooValue%'); // WHERE beds_24_booking_id LIKE '%fooValue%'
|
||||
* </code>
|
||||
*
|
||||
* @param string $beds24BookingId The value to use as filter.
|
||||
* Accepts wildcards (* and % trigger a LIKE)
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByBeds24BookingId($beds24BookingId = null, $comparison = null)
|
||||
{
|
||||
if (null === $comparison) {
|
||||
if (is_array($beds24BookingId)) {
|
||||
$comparison = Criteria::IN;
|
||||
} elseif (preg_match('/[\%\*]/', $beds24BookingId)) {
|
||||
$beds24BookingId = str_replace('*', '%', $beds24BookingId);
|
||||
$comparison = Criteria::LIKE;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24BookingOrderProductTableMap::BEDS_24_BOOKING_ID, $beds24BookingId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by a related \Thelia\Model\OrderProduct object
|
||||
*
|
||||
* @param \Thelia\Model\OrderProduct|ObjectCollection $orderProduct The related object(s) to use as filter
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByOrderProduct($orderProduct, $comparison = null)
|
||||
{
|
||||
if ($orderProduct instanceof \Thelia\Model\OrderProduct) {
|
||||
return $this
|
||||
->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_PRODUCT_ID, $orderProduct->getId(), $comparison);
|
||||
} elseif ($orderProduct instanceof ObjectCollection) {
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
|
||||
return $this
|
||||
->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_PRODUCT_ID, $orderProduct->toKeyValue('PrimaryKey', 'Id'), $comparison);
|
||||
} else {
|
||||
throw new PropelException('filterByOrderProduct() only accepts arguments of type \Thelia\Model\OrderProduct or Collection');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a JOIN clause to the query using the OrderProduct relation
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function joinOrderProduct($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||
{
|
||||
$tableMap = $this->getTableMap();
|
||||
$relationMap = $tableMap->getRelation('OrderProduct');
|
||||
|
||||
// create a ModelJoin object for this join
|
||||
$join = new ModelJoin();
|
||||
$join->setJoinType($joinType);
|
||||
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
|
||||
if ($previousJoin = $this->getPreviousJoin()) {
|
||||
$join->setPreviousJoin($previousJoin);
|
||||
}
|
||||
|
||||
// add the ModelJoin to the current object
|
||||
if ($relationAlias) {
|
||||
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
|
||||
$this->addJoinObject($join, $relationAlias);
|
||||
} else {
|
||||
$this->addJoinObject($join, 'OrderProduct');
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the OrderProduct relation OrderProduct object
|
||||
*
|
||||
* @see useQuery()
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation,
|
||||
* to be used as main alias in the secondary query
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return \Thelia\Model\OrderProductQuery A secondary query class using the current class as primary query
|
||||
*/
|
||||
public function useOrderProductQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||
{
|
||||
return $this
|
||||
->joinOrderProduct($relationAlias, $joinType)
|
||||
->useQuery($relationAlias ? $relationAlias : 'OrderProduct', '\Thelia\Model\OrderProductQuery');
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by a related \Thelia\Model\Order object
|
||||
*
|
||||
* @param \Thelia\Model\Order|ObjectCollection $order The related object(s) to use as filter
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByOrder($order, $comparison = null)
|
||||
{
|
||||
if ($order instanceof \Thelia\Model\Order) {
|
||||
return $this
|
||||
->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_ID, $order->getId(), $comparison);
|
||||
} elseif ($order instanceof ObjectCollection) {
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
|
||||
return $this
|
||||
->addUsingAlias(Beds24BookingOrderProductTableMap::ORDER_ID, $order->toKeyValue('PrimaryKey', 'Id'), $comparison);
|
||||
} else {
|
||||
throw new PropelException('filterByOrder() only accepts arguments of type \Thelia\Model\Order or Collection');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a JOIN clause to the query using the Order relation
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function joinOrder($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||
{
|
||||
$tableMap = $this->getTableMap();
|
||||
$relationMap = $tableMap->getRelation('Order');
|
||||
|
||||
// create a ModelJoin object for this join
|
||||
$join = new ModelJoin();
|
||||
$join->setJoinType($joinType);
|
||||
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
|
||||
if ($previousJoin = $this->getPreviousJoin()) {
|
||||
$join->setPreviousJoin($previousJoin);
|
||||
}
|
||||
|
||||
// add the ModelJoin to the current object
|
||||
if ($relationAlias) {
|
||||
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
|
||||
$this->addJoinObject($join, $relationAlias);
|
||||
} else {
|
||||
$this->addJoinObject($join, 'Order');
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the Order relation Order object
|
||||
*
|
||||
* @see useQuery()
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation,
|
||||
* to be used as main alias in the secondary query
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return \Thelia\Model\OrderQuery A secondary query class using the current class as primary query
|
||||
*/
|
||||
public function useOrderQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||
{
|
||||
return $this
|
||||
->joinOrder($relationAlias, $joinType)
|
||||
->useQuery($relationAlias ? $relationAlias : 'Order', '\Thelia\Model\OrderQuery');
|
||||
}
|
||||
|
||||
/**
|
||||
* Exclude object from result
|
||||
*
|
||||
* @param ChildBeds24BookingOrderProduct $beds24BookingOrderProduct Object to remove from the list of results
|
||||
*
|
||||
* @return ChildBeds24BookingOrderProductQuery The current query, for fluid interface
|
||||
*/
|
||||
public function prune($beds24BookingOrderProduct = null)
|
||||
{
|
||||
if ($beds24BookingOrderProduct) {
|
||||
$this->addUsingAlias(Beds24BookingOrderProductTableMap::ID, $beds24BookingOrderProduct->getId(), Criteria::NOT_EQUAL);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all rows from the beds24_booking_order_product table.
|
||||
*
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
*/
|
||||
public function doDeleteAll(ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24BookingOrderProductTableMap::DATABASE_NAME);
|
||||
}
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->beginTransaction();
|
||||
$affectedRows += parent::doDeleteAll($con);
|
||||
// Because this db requires some delete cascade/set null emulation, we have to
|
||||
// clear the cached instance *after* the emulation has happened (since
|
||||
// instances get re-added by the select statement contained therein).
|
||||
Beds24BookingOrderProductTableMap::clearInstancePool();
|
||||
Beds24BookingOrderProductTableMap::clearRelatedInstancePool();
|
||||
|
||||
$con->commit();
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return $affectedRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a DELETE on the database, given a ChildBeds24BookingOrderProduct or Criteria object OR a primary key value.
|
||||
*
|
||||
* @param mixed $values Criteria or ChildBeds24BookingOrderProduct object or primary key or array of primary keys
|
||||
* which is used to create the DELETE statement
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||
* if supported by native driver or if emulated using Propel.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public function delete(ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24BookingOrderProductTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
$criteria = $this;
|
||||
|
||||
// Set the correct dbName
|
||||
$criteria->setDbName(Beds24BookingOrderProductTableMap::DATABASE_NAME);
|
||||
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->beginTransaction();
|
||||
|
||||
|
||||
Beds24BookingOrderProductTableMap::removeInstanceFromPool($criteria);
|
||||
|
||||
$affectedRows += ModelCriteria::delete($con);
|
||||
Beds24BookingOrderProductTableMap::clearRelatedInstancePool();
|
||||
$con->commit();
|
||||
|
||||
return $affectedRows;
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
} // Beds24BookingOrderProductQuery
|
||||
1421
local/Beds24/Model/Base/Beds24ProductInfo.php
Normal file
1421
local/Beds24/Model/Base/Beds24ProductInfo.php
Normal file
File diff suppressed because it is too large
Load Diff
679
local/Beds24/Model/Base/Beds24ProductInfoQuery.php
Normal file
679
local/Beds24/Model/Base/Beds24ProductInfoQuery.php
Normal file
@@ -0,0 +1,679 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model\Base;
|
||||
|
||||
use \Exception;
|
||||
use \PDO;
|
||||
use Beds24\Model\Beds24ProductInfo as ChildBeds24ProductInfo;
|
||||
use Beds24\Model\Beds24ProductInfoQuery as ChildBeds24ProductInfoQuery;
|
||||
use Beds24\Model\Map\Beds24ProductInfoTableMap;
|
||||
use Propel\Runtime\Propel;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||
use Propel\Runtime\ActiveQuery\ModelJoin;
|
||||
use Propel\Runtime\Collection\Collection;
|
||||
use Propel\Runtime\Collection\ObjectCollection;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Propel\Runtime\Exception\PropelException;
|
||||
use Thelia\Model\Product;
|
||||
|
||||
/**
|
||||
* Base class that represents a query for the 'beds24_product_info' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* @method ChildBeds24ProductInfoQuery orderById($order = Criteria::ASC) Order by the id column
|
||||
* @method ChildBeds24ProductInfoQuery orderByRoomId($order = Criteria::ASC) Order by the room_id column
|
||||
* @method ChildBeds24ProductInfoQuery orderByProductId($order = Criteria::ASC) Order by the product_id column
|
||||
* @method ChildBeds24ProductInfoQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
|
||||
* @method ChildBeds24ProductInfoQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
|
||||
*
|
||||
* @method ChildBeds24ProductInfoQuery groupById() Group by the id column
|
||||
* @method ChildBeds24ProductInfoQuery groupByRoomId() Group by the room_id column
|
||||
* @method ChildBeds24ProductInfoQuery groupByProductId() Group by the product_id column
|
||||
* @method ChildBeds24ProductInfoQuery groupByCreatedAt() Group by the created_at column
|
||||
* @method ChildBeds24ProductInfoQuery groupByUpdatedAt() Group by the updated_at column
|
||||
*
|
||||
* @method ChildBeds24ProductInfoQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||
* @method ChildBeds24ProductInfoQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||
* @method ChildBeds24ProductInfoQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||
*
|
||||
* @method ChildBeds24ProductInfoQuery leftJoinProduct($relationAlias = null) Adds a LEFT JOIN clause to the query using the Product relation
|
||||
* @method ChildBeds24ProductInfoQuery rightJoinProduct($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Product relation
|
||||
* @method ChildBeds24ProductInfoQuery innerJoinProduct($relationAlias = null) Adds a INNER JOIN clause to the query using the Product relation
|
||||
*
|
||||
* @method ChildBeds24ProductInfo findOne(ConnectionInterface $con = null) Return the first ChildBeds24ProductInfo matching the query
|
||||
* @method ChildBeds24ProductInfo findOneOrCreate(ConnectionInterface $con = null) Return the first ChildBeds24ProductInfo matching the query, or a new ChildBeds24ProductInfo object populated from the query conditions when no match is found
|
||||
*
|
||||
* @method ChildBeds24ProductInfo findOneById(int $id) Return the first ChildBeds24ProductInfo filtered by the id column
|
||||
* @method ChildBeds24ProductInfo findOneByRoomId(int $room_id) Return the first ChildBeds24ProductInfo filtered by the room_id column
|
||||
* @method ChildBeds24ProductInfo findOneByProductId(int $product_id) Return the first ChildBeds24ProductInfo filtered by the product_id column
|
||||
* @method ChildBeds24ProductInfo findOneByCreatedAt(string $created_at) Return the first ChildBeds24ProductInfo filtered by the created_at column
|
||||
* @method ChildBeds24ProductInfo findOneByUpdatedAt(string $updated_at) Return the first ChildBeds24ProductInfo filtered by the updated_at column
|
||||
*
|
||||
* @method array findById(int $id) Return ChildBeds24ProductInfo objects filtered by the id column
|
||||
* @method array findByRoomId(int $room_id) Return ChildBeds24ProductInfo objects filtered by the room_id column
|
||||
* @method array findByProductId(int $product_id) Return ChildBeds24ProductInfo objects filtered by the product_id column
|
||||
* @method array findByCreatedAt(string $created_at) Return ChildBeds24ProductInfo objects filtered by the created_at column
|
||||
* @method array findByUpdatedAt(string $updated_at) Return ChildBeds24ProductInfo objects filtered by the updated_at column
|
||||
*
|
||||
*/
|
||||
abstract class Beds24ProductInfoQuery extends ModelCriteria
|
||||
{
|
||||
|
||||
/**
|
||||
* Initializes internal state of \Beds24\Model\Base\Beds24ProductInfoQuery object.
|
||||
*
|
||||
* @param string $dbName The database name
|
||||
* @param string $modelName The phpName of a model, e.g. 'Book'
|
||||
* @param string $modelAlias The alias for the model in this query, e.g. 'b'
|
||||
*/
|
||||
public function __construct($dbName = 'thelia', $modelName = '\\Beds24\\Model\\Beds24ProductInfo', $modelAlias = null)
|
||||
{
|
||||
parent::__construct($dbName, $modelName, $modelAlias);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new ChildBeds24ProductInfoQuery object.
|
||||
*
|
||||
* @param string $modelAlias The alias of a model in the query
|
||||
* @param Criteria $criteria Optional Criteria to build the query from
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery
|
||||
*/
|
||||
public static function create($modelAlias = null, $criteria = null)
|
||||
{
|
||||
if ($criteria instanceof \Beds24\Model\Beds24ProductInfoQuery) {
|
||||
return $criteria;
|
||||
}
|
||||
$query = new \Beds24\Model\Beds24ProductInfoQuery();
|
||||
if (null !== $modelAlias) {
|
||||
$query->setModelAlias($modelAlias);
|
||||
}
|
||||
if ($criteria instanceof Criteria) {
|
||||
$query->mergeWith($criteria);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key.
|
||||
* Propel uses the instance pool to skip the database if the object exists.
|
||||
* Go fast if the query is untouched.
|
||||
*
|
||||
* <code>
|
||||
* $obj = $c->findPk(12, $con);
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con an optional connection object
|
||||
*
|
||||
* @return ChildBeds24ProductInfo|array|mixed the result, formatted by the current formatter
|
||||
*/
|
||||
public function findPk($key, $con = null)
|
||||
{
|
||||
if ($key === null) {
|
||||
return null;
|
||||
}
|
||||
if ((null !== ($obj = Beds24ProductInfoTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||
// the object is already in the instance pool
|
||||
return $obj;
|
||||
}
|
||||
if ($con === null) {
|
||||
$con = Propel::getServiceContainer()->getReadConnection(Beds24ProductInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
$this->basePreSelect($con);
|
||||
if ($this->formatter || $this->modelAlias || $this->with || $this->select
|
||||
|| $this->selectColumns || $this->asColumns || $this->selectModifiers
|
||||
|| $this->map || $this->having || $this->joins) {
|
||||
return $this->findPkComplex($key, $con);
|
||||
} else {
|
||||
return $this->findPkSimple($key, $con);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key using raw SQL to go fast.
|
||||
* Bypass doSelect() and the object formatter by using generated code.
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con A connection object
|
||||
*
|
||||
* @return ChildBeds24ProductInfo A model object, or null if the key is not found
|
||||
*/
|
||||
protected function findPkSimple($key, $con)
|
||||
{
|
||||
$sql = 'SELECT ID, ROOM_ID, PRODUCT_ID, CREATED_AT, UPDATED_AT FROM beds24_product_info WHERE ID = :p0';
|
||||
try {
|
||||
$stmt = $con->prepare($sql);
|
||||
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
} catch (Exception $e) {
|
||||
Propel::log($e->getMessage(), Propel::LOG_ERR);
|
||||
throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
|
||||
}
|
||||
$obj = null;
|
||||
if ($row = $stmt->fetch(\PDO::FETCH_NUM)) {
|
||||
$obj = new ChildBeds24ProductInfo();
|
||||
$obj->hydrate($row);
|
||||
Beds24ProductInfoTableMap::addInstanceToPool($obj, (string) $key);
|
||||
}
|
||||
$stmt->closeCursor();
|
||||
|
||||
return $obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key.
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con A connection object
|
||||
*
|
||||
* @return ChildBeds24ProductInfo|array|mixed the result, formatted by the current formatter
|
||||
*/
|
||||
protected function findPkComplex($key, $con)
|
||||
{
|
||||
// As the query uses a PK condition, no limit(1) is necessary.
|
||||
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||
$dataFetcher = $criteria
|
||||
->filterByPrimaryKey($key)
|
||||
->doSelect($con);
|
||||
|
||||
return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find objects by primary key
|
||||
* <code>
|
||||
* $objs = $c->findPks(array(12, 56, 832), $con);
|
||||
* </code>
|
||||
* @param array $keys Primary keys to use for the query
|
||||
* @param ConnectionInterface $con an optional connection object
|
||||
*
|
||||
* @return ObjectCollection|array|mixed the list of results, formatted by the current formatter
|
||||
*/
|
||||
public function findPks($keys, $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getReadConnection($this->getDbName());
|
||||
}
|
||||
$this->basePreSelect($con);
|
||||
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||
$dataFetcher = $criteria
|
||||
->filterByPrimaryKeys($keys)
|
||||
->doSelect($con);
|
||||
|
||||
return $criteria->getFormatter()->init($criteria)->format($dataFetcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by primary key
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByPrimaryKey($key)
|
||||
{
|
||||
|
||||
return $this->addUsingAlias(Beds24ProductInfoTableMap::ID, $key, Criteria::EQUAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by a list of primary keys
|
||||
*
|
||||
* @param array $keys The list of primary key to use for the query
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByPrimaryKeys($keys)
|
||||
{
|
||||
|
||||
return $this->addUsingAlias(Beds24ProductInfoTableMap::ID, $keys, Criteria::IN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterById(1234); // WHERE id = 1234
|
||||
* $query->filterById(array(12, 34)); // WHERE id IN (12, 34)
|
||||
* $query->filterById(array('min' => 12)); // WHERE id > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $id The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterById($id = null, $comparison = null)
|
||||
{
|
||||
if (is_array($id)) {
|
||||
$useMinMax = false;
|
||||
if (isset($id['min'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($id['max'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24ProductInfoTableMap::ID, $id, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the room_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByRoomId(1234); // WHERE room_id = 1234
|
||||
* $query->filterByRoomId(array(12, 34)); // WHERE room_id IN (12, 34)
|
||||
* $query->filterByRoomId(array('min' => 12)); // WHERE room_id > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $roomId The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByRoomId($roomId = null, $comparison = null)
|
||||
{
|
||||
if (is_array($roomId)) {
|
||||
$useMinMax = false;
|
||||
if (isset($roomId['min'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::ROOM_ID, $roomId['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($roomId['max'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::ROOM_ID, $roomId['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24ProductInfoTableMap::ROOM_ID, $roomId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the product_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByProductId(1234); // WHERE product_id = 1234
|
||||
* $query->filterByProductId(array(12, 34)); // WHERE product_id IN (12, 34)
|
||||
* $query->filterByProductId(array('min' => 12)); // WHERE product_id > 12
|
||||
* </code>
|
||||
*
|
||||
* @see filterByProduct()
|
||||
*
|
||||
* @param mixed $productId The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByProductId($productId = null, $comparison = null)
|
||||
{
|
||||
if (is_array($productId)) {
|
||||
$useMinMax = false;
|
||||
if (isset($productId['min'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::PRODUCT_ID, $productId['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($productId['max'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::PRODUCT_ID, $productId['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24ProductInfoTableMap::PRODUCT_ID, $productId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the created_at column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByCreatedAt('2011-03-14'); // WHERE created_at = '2011-03-14'
|
||||
* $query->filterByCreatedAt('now'); // WHERE created_at = '2011-03-14'
|
||||
* $query->filterByCreatedAt(array('max' => 'yesterday')); // WHERE created_at > '2011-03-13'
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $createdAt The value to use as filter.
|
||||
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||
* Empty strings are treated as NULL.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByCreatedAt($createdAt = null, $comparison = null)
|
||||
{
|
||||
if (is_array($createdAt)) {
|
||||
$useMinMax = false;
|
||||
if (isset($createdAt['min'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::CREATED_AT, $createdAt['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($createdAt['max'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::CREATED_AT, $createdAt['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24ProductInfoTableMap::CREATED_AT, $createdAt, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the updated_at column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByUpdatedAt('2011-03-14'); // WHERE updated_at = '2011-03-14'
|
||||
* $query->filterByUpdatedAt('now'); // WHERE updated_at = '2011-03-14'
|
||||
* $query->filterByUpdatedAt(array('max' => 'yesterday')); // WHERE updated_at > '2011-03-13'
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $updatedAt The value to use as filter.
|
||||
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||
* Empty strings are treated as NULL.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByUpdatedAt($updatedAt = null, $comparison = null)
|
||||
{
|
||||
if (is_array($updatedAt)) {
|
||||
$useMinMax = false;
|
||||
if (isset($updatedAt['min'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::UPDATED_AT, $updatedAt['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($updatedAt['max'])) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::UPDATED_AT, $updatedAt['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(Beds24ProductInfoTableMap::UPDATED_AT, $updatedAt, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by a related \Thelia\Model\Product object
|
||||
*
|
||||
* @param \Thelia\Model\Product|ObjectCollection $product The related object(s) to use as filter
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByProduct($product, $comparison = null)
|
||||
{
|
||||
if ($product instanceof \Thelia\Model\Product) {
|
||||
return $this
|
||||
->addUsingAlias(Beds24ProductInfoTableMap::PRODUCT_ID, $product->getId(), $comparison);
|
||||
} elseif ($product instanceof ObjectCollection) {
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
|
||||
return $this
|
||||
->addUsingAlias(Beds24ProductInfoTableMap::PRODUCT_ID, $product->toKeyValue('PrimaryKey', 'Id'), $comparison);
|
||||
} else {
|
||||
throw new PropelException('filterByProduct() only accepts arguments of type \Thelia\Model\Product or Collection');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a JOIN clause to the query using the Product relation
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function joinProduct($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||
{
|
||||
$tableMap = $this->getTableMap();
|
||||
$relationMap = $tableMap->getRelation('Product');
|
||||
|
||||
// create a ModelJoin object for this join
|
||||
$join = new ModelJoin();
|
||||
$join->setJoinType($joinType);
|
||||
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
|
||||
if ($previousJoin = $this->getPreviousJoin()) {
|
||||
$join->setPreviousJoin($previousJoin);
|
||||
}
|
||||
|
||||
// add the ModelJoin to the current object
|
||||
if ($relationAlias) {
|
||||
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
|
||||
$this->addJoinObject($join, $relationAlias);
|
||||
} else {
|
||||
$this->addJoinObject($join, 'Product');
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the Product relation Product object
|
||||
*
|
||||
* @see useQuery()
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation,
|
||||
* to be used as main alias in the secondary query
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return \Thelia\Model\ProductQuery A secondary query class using the current class as primary query
|
||||
*/
|
||||
public function useProductQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||
{
|
||||
return $this
|
||||
->joinProduct($relationAlias, $joinType)
|
||||
->useQuery($relationAlias ? $relationAlias : 'Product', '\Thelia\Model\ProductQuery');
|
||||
}
|
||||
|
||||
/**
|
||||
* Exclude object from result
|
||||
*
|
||||
* @param ChildBeds24ProductInfo $beds24ProductInfo Object to remove from the list of results
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function prune($beds24ProductInfo = null)
|
||||
{
|
||||
if ($beds24ProductInfo) {
|
||||
$this->addUsingAlias(Beds24ProductInfoTableMap::ID, $beds24ProductInfo->getId(), Criteria::NOT_EQUAL);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all rows from the beds24_product_info table.
|
||||
*
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
*/
|
||||
public function doDeleteAll(ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24ProductInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->beginTransaction();
|
||||
$affectedRows += parent::doDeleteAll($con);
|
||||
// Because this db requires some delete cascade/set null emulation, we have to
|
||||
// clear the cached instance *after* the emulation has happened (since
|
||||
// instances get re-added by the select statement contained therein).
|
||||
Beds24ProductInfoTableMap::clearInstancePool();
|
||||
Beds24ProductInfoTableMap::clearRelatedInstancePool();
|
||||
|
||||
$con->commit();
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return $affectedRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a DELETE on the database, given a ChildBeds24ProductInfo or Criteria object OR a primary key value.
|
||||
*
|
||||
* @param mixed $values Criteria or ChildBeds24ProductInfo object or primary key or array of primary keys
|
||||
* which is used to create the DELETE statement
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||
* if supported by native driver or if emulated using Propel.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public function delete(ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24ProductInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
$criteria = $this;
|
||||
|
||||
// Set the correct dbName
|
||||
$criteria->setDbName(Beds24ProductInfoTableMap::DATABASE_NAME);
|
||||
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->beginTransaction();
|
||||
|
||||
|
||||
Beds24ProductInfoTableMap::removeInstanceFromPool($criteria);
|
||||
|
||||
$affectedRows += ModelCriteria::delete($con);
|
||||
Beds24ProductInfoTableMap::clearRelatedInstancePool();
|
||||
$con->commit();
|
||||
|
||||
return $affectedRows;
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
// timestampable behavior
|
||||
|
||||
/**
|
||||
* Filter by the latest updated
|
||||
*
|
||||
* @param int $nbDays Maximum age of the latest update in days
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function recentlyUpdated($nbDays = 7)
|
||||
{
|
||||
return $this->addUsingAlias(Beds24ProductInfoTableMap::UPDATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter by the latest created
|
||||
*
|
||||
* @param int $nbDays Maximum age of in days
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function recentlyCreated($nbDays = 7)
|
||||
{
|
||||
return $this->addUsingAlias(Beds24ProductInfoTableMap::CREATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Order by update date desc
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function lastUpdatedFirst()
|
||||
{
|
||||
return $this->addDescendingOrderByColumn(Beds24ProductInfoTableMap::UPDATED_AT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Order by update date asc
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function firstUpdatedFirst()
|
||||
{
|
||||
return $this->addAscendingOrderByColumn(Beds24ProductInfoTableMap::UPDATED_AT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Order by create date desc
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function lastCreatedFirst()
|
||||
{
|
||||
return $this->addDescendingOrderByColumn(Beds24ProductInfoTableMap::CREATED_AT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Order by create date asc
|
||||
*
|
||||
* @return ChildBeds24ProductInfoQuery The current query, for fluid interface
|
||||
*/
|
||||
public function firstCreatedFirst()
|
||||
{
|
||||
return $this->addAscendingOrderByColumn(Beds24ProductInfoTableMap::CREATED_AT);
|
||||
}
|
||||
|
||||
} // Beds24ProductInfoQuery
|
||||
10
local/Beds24/Model/Beds24BookingInfo.php
Normal file
10
local/Beds24/Model/Beds24BookingInfo.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model;
|
||||
|
||||
use Beds24\Model\Base\Beds24BookingInfo as BaseBeds24BookingInfo;
|
||||
|
||||
class Beds24BookingInfo extends BaseBeds24BookingInfo
|
||||
{
|
||||
|
||||
}
|
||||
21
local/Beds24/Model/Beds24BookingInfoQuery.php
Normal file
21
local/Beds24/Model/Beds24BookingInfoQuery.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model;
|
||||
|
||||
use Beds24\Model\Base\Beds24BookingInfoQuery as BaseBeds24BookingInfoQuery;
|
||||
|
||||
|
||||
/**
|
||||
* Skeleton subclass for performing query and update operations on the 'beds24_booking_info' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* You should add additional methods to this class to meet the
|
||||
* application requirements. This class will only be generated as
|
||||
* long as it does not already exist in the output directory.
|
||||
*
|
||||
*/
|
||||
class Beds24BookingInfoQuery extends BaseBeds24BookingInfoQuery
|
||||
{
|
||||
|
||||
} // Beds24BookingInfoQuery
|
||||
10
local/Beds24/Model/Beds24BookingOrderProduct.php
Normal file
10
local/Beds24/Model/Beds24BookingOrderProduct.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model;
|
||||
|
||||
use Beds24\Model\Base\Beds24BookingOrderProduct as BaseBeds24BookingOrderProduct;
|
||||
|
||||
class Beds24BookingOrderProduct extends BaseBeds24BookingOrderProduct
|
||||
{
|
||||
|
||||
}
|
||||
21
local/Beds24/Model/Beds24BookingOrderProductQuery.php
Normal file
21
local/Beds24/Model/Beds24BookingOrderProductQuery.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model;
|
||||
|
||||
use Beds24\Model\Base\Beds24BookingOrderProductQuery as BaseBeds24BookingOrderProductQuery;
|
||||
|
||||
|
||||
/**
|
||||
* Skeleton subclass for performing query and update operations on the 'beds24_booking_order_product' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* You should add additional methods to this class to meet the
|
||||
* application requirements. This class will only be generated as
|
||||
* long as it does not already exist in the output directory.
|
||||
*
|
||||
*/
|
||||
class Beds24BookingOrderProductQuery extends BaseBeds24BookingOrderProductQuery
|
||||
{
|
||||
|
||||
} // Beds24BookingOrderProductQuery
|
||||
10
local/Beds24/Model/Beds24ProductInfo.php
Normal file
10
local/Beds24/Model/Beds24ProductInfo.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model;
|
||||
|
||||
use Beds24\Model\Base\Beds24ProductInfo as BaseBeds24ProductInfo;
|
||||
|
||||
class Beds24ProductInfo extends BaseBeds24ProductInfo
|
||||
{
|
||||
|
||||
}
|
||||
21
local/Beds24/Model/Beds24ProductInfoQuery.php
Normal file
21
local/Beds24/Model/Beds24ProductInfoQuery.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model;
|
||||
|
||||
use Beds24\Model\Base\Beds24ProductInfoQuery as BaseBeds24ProductInfoQuery;
|
||||
|
||||
|
||||
/**
|
||||
* Skeleton subclass for performing query and update operations on the 'beds24_product_info' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* You should add additional methods to this class to meet the
|
||||
* application requirements. This class will only be generated as
|
||||
* long as it does not already exist in the output directory.
|
||||
*
|
||||
*/
|
||||
class Beds24ProductInfoQuery extends BaseBeds24ProductInfoQuery
|
||||
{
|
||||
|
||||
} // Beds24ProductInfoQuery
|
||||
451
local/Beds24/Model/Map/Beds24BookingInfoTableMap.php
Normal file
451
local/Beds24/Model/Map/Beds24BookingInfoTableMap.php
Normal file
@@ -0,0 +1,451 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model\Map;
|
||||
|
||||
use Beds24\Model\Beds24BookingInfo;
|
||||
use Beds24\Model\Beds24BookingInfoQuery;
|
||||
use Propel\Runtime\Propel;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Propel\Runtime\ActiveQuery\InstancePoolTrait;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Propel\Runtime\DataFetcher\DataFetcherInterface;
|
||||
use Propel\Runtime\Exception\PropelException;
|
||||
use Propel\Runtime\Map\RelationMap;
|
||||
use Propel\Runtime\Map\TableMap;
|
||||
use Propel\Runtime\Map\TableMapTrait;
|
||||
|
||||
|
||||
/**
|
||||
* This class defines the structure of the 'beds24_booking_info' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* This map class is used by Propel to do runtime db structure discovery.
|
||||
* For example, the createSelectSql() method checks the type of a given column used in an
|
||||
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
|
||||
* (i.e. if it's a text column type).
|
||||
*
|
||||
*/
|
||||
class Beds24BookingInfoTableMap extends TableMap
|
||||
{
|
||||
use InstancePoolTrait;
|
||||
use TableMapTrait;
|
||||
/**
|
||||
* The (dot-path) name of this class
|
||||
*/
|
||||
const CLASS_NAME = 'Beds24.Model.Map.Beds24BookingInfoTableMap';
|
||||
|
||||
/**
|
||||
* The default database name for this class
|
||||
*/
|
||||
const DATABASE_NAME = 'thelia';
|
||||
|
||||
/**
|
||||
* The table name for this class
|
||||
*/
|
||||
const TABLE_NAME = 'beds24_booking_info';
|
||||
|
||||
/**
|
||||
* The related Propel class for this table
|
||||
*/
|
||||
const OM_CLASS = '\\Beds24\\Model\\Beds24BookingInfo';
|
||||
|
||||
/**
|
||||
* A class that can be returned by this tableMap
|
||||
*/
|
||||
const CLASS_DEFAULT = 'Beds24.Model.Beds24BookingInfo';
|
||||
|
||||
/**
|
||||
* The total number of columns
|
||||
*/
|
||||
const NUM_COLUMNS = 7;
|
||||
|
||||
/**
|
||||
* The number of lazy-loaded columns
|
||||
*/
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
|
||||
/**
|
||||
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
|
||||
*/
|
||||
const NUM_HYDRATE_COLUMNS = 7;
|
||||
|
||||
/**
|
||||
* the column name for the ID field
|
||||
*/
|
||||
const ID = 'beds24_booking_info.ID';
|
||||
|
||||
/**
|
||||
* the column name for the CART_ITEM_ID field
|
||||
*/
|
||||
const CART_ITEM_ID = 'beds24_booking_info.CART_ITEM_ID';
|
||||
|
||||
/**
|
||||
* the column name for the ROOM_ID field
|
||||
*/
|
||||
const ROOM_ID = 'beds24_booking_info.ROOM_ID';
|
||||
|
||||
/**
|
||||
* the column name for the START_DATE field
|
||||
*/
|
||||
const START_DATE = 'beds24_booking_info.START_DATE';
|
||||
|
||||
/**
|
||||
* the column name for the END_DATE field
|
||||
*/
|
||||
const END_DATE = 'beds24_booking_info.END_DATE';
|
||||
|
||||
/**
|
||||
* the column name for the ADULTS field
|
||||
*/
|
||||
const ADULTS = 'beds24_booking_info.ADULTS';
|
||||
|
||||
/**
|
||||
* the column name for the CHILDREN field
|
||||
*/
|
||||
const CHILDREN = 'beds24_booking_info.CHILDREN';
|
||||
|
||||
/**
|
||||
* The default string format for model objects of the related table
|
||||
*/
|
||||
const DEFAULT_STRING_FORMAT = 'YAML';
|
||||
|
||||
/**
|
||||
* holds an array of fieldnames
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
protected static $fieldNames = array (
|
||||
self::TYPE_PHPNAME => array('Id', 'CartItemId', 'RoomId', 'StartDate', 'EndDate', 'Adults', 'Children', ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id', 'cartItemId', 'roomId', 'startDate', 'endDate', 'adults', 'children', ),
|
||||
self::TYPE_COLNAME => array(Beds24BookingInfoTableMap::ID, Beds24BookingInfoTableMap::CART_ITEM_ID, Beds24BookingInfoTableMap::ROOM_ID, Beds24BookingInfoTableMap::START_DATE, Beds24BookingInfoTableMap::END_DATE, Beds24BookingInfoTableMap::ADULTS, Beds24BookingInfoTableMap::CHILDREN, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID', 'CART_ITEM_ID', 'ROOM_ID', 'START_DATE', 'END_DATE', 'ADULTS', 'CHILDREN', ),
|
||||
self::TYPE_FIELDNAME => array('id', 'cart_item_id', 'room_id', 'start_date', 'end_date', 'adults', 'children', ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
|
||||
);
|
||||
|
||||
/**
|
||||
* holds an array of keys for quick access to the fieldnames array
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
protected static $fieldKeys = array (
|
||||
self::TYPE_PHPNAME => array('Id' => 0, 'CartItemId' => 1, 'RoomId' => 2, 'StartDate' => 3, 'EndDate' => 4, 'Adults' => 5, 'Children' => 6, ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'cartItemId' => 1, 'roomId' => 2, 'startDate' => 3, 'endDate' => 4, 'adults' => 5, 'children' => 6, ),
|
||||
self::TYPE_COLNAME => array(Beds24BookingInfoTableMap::ID => 0, Beds24BookingInfoTableMap::CART_ITEM_ID => 1, Beds24BookingInfoTableMap::ROOM_ID => 2, Beds24BookingInfoTableMap::START_DATE => 3, Beds24BookingInfoTableMap::END_DATE => 4, Beds24BookingInfoTableMap::ADULTS => 5, Beds24BookingInfoTableMap::CHILDREN => 6, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID' => 0, 'CART_ITEM_ID' => 1, 'ROOM_ID' => 2, 'START_DATE' => 3, 'END_DATE' => 4, 'ADULTS' => 5, 'CHILDREN' => 6, ),
|
||||
self::TYPE_FIELDNAME => array('id' => 0, 'cart_item_id' => 1, 'room_id' => 2, 'start_date' => 3, 'end_date' => 4, 'adults' => 5, 'children' => 6, ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
|
||||
);
|
||||
|
||||
/**
|
||||
* Initialize the table attributes and columns
|
||||
* Relations are not initialized by this method since they are lazy loaded
|
||||
*
|
||||
* @return void
|
||||
* @throws PropelException
|
||||
*/
|
||||
public function initialize()
|
||||
{
|
||||
// attributes
|
||||
$this->setName('beds24_booking_info');
|
||||
$this->setPhpName('Beds24BookingInfo');
|
||||
$this->setClassName('\\Beds24\\Model\\Beds24BookingInfo');
|
||||
$this->setPackage('Beds24.Model');
|
||||
$this->setUseIdGenerator(true);
|
||||
// columns
|
||||
$this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
|
||||
$this->addForeignKey('CART_ITEM_ID', 'CartItemId', 'INTEGER', 'cart_item', 'ID', true, null, null);
|
||||
$this->addColumn('ROOM_ID', 'RoomId', 'INTEGER', true, null, null);
|
||||
$this->addColumn('START_DATE', 'StartDate', 'DATE', true, null, null);
|
||||
$this->addColumn('END_DATE', 'EndDate', 'DATE', true, null, null);
|
||||
$this->addColumn('ADULTS', 'Adults', 'INTEGER', true, 2, null);
|
||||
$this->addColumn('CHILDREN', 'Children', 'INTEGER', true, 2, null);
|
||||
} // initialize()
|
||||
|
||||
/**
|
||||
* Build the RelationMap objects for this table relationships
|
||||
*/
|
||||
public function buildRelations()
|
||||
{
|
||||
$this->addRelation('CartItem', '\\Thelia\\Model\\CartItem', RelationMap::MANY_TO_ONE, array('cart_item_id' => 'id', ), 'CASCADE', 'RESTRICT');
|
||||
} // buildRelations()
|
||||
|
||||
/**
|
||||
* Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
|
||||
*
|
||||
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||
* a multi-column primary key, a serialize()d version of the primary key will be returned.
|
||||
*
|
||||
* @param array $row resultset row.
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||
*/
|
||||
public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
// If the PK cannot be derived from the row, return NULL.
|
||||
if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the primary key from the DB resultset row
|
||||
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||
* a multi-column primary key, an array of the primary key columns will be returned.
|
||||
*
|
||||
* @param array $row resultset row.
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||
*
|
||||
* @return mixed The primary key of the row
|
||||
*/
|
||||
public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
|
||||
return (int) $row[
|
||||
$indexType == TableMap::TYPE_NUM
|
||||
? 0 + $offset
|
||||
: self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* The class that the tableMap will make instances of.
|
||||
*
|
||||
* If $withPrefix is true, the returned path
|
||||
* uses a dot-path notation which is translated into a path
|
||||
* relative to a location on the PHP include_path.
|
||||
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
|
||||
*
|
||||
* @param boolean $withPrefix Whether or not to return the path with the class name
|
||||
* @return string path.to.ClassName
|
||||
*/
|
||||
public static function getOMClass($withPrefix = true)
|
||||
{
|
||||
return $withPrefix ? Beds24BookingInfoTableMap::CLASS_DEFAULT : Beds24BookingInfoTableMap::OM_CLASS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Populates an object of the default type or an object that inherit from the default.
|
||||
*
|
||||
* @param array $row row returned by DataFetcher->fetch().
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType().
|
||||
One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
|
||||
*
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
* @return array (Beds24BookingInfo object, last column rank)
|
||||
*/
|
||||
public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
$key = Beds24BookingInfoTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType);
|
||||
if (null !== ($obj = Beds24BookingInfoTableMap::getInstanceFromPool($key))) {
|
||||
// We no longer rehydrate the object, since this can cause data loss.
|
||||
// See http://www.propelorm.org/ticket/509
|
||||
// $obj->hydrate($row, $offset, true); // rehydrate
|
||||
$col = $offset + Beds24BookingInfoTableMap::NUM_HYDRATE_COLUMNS;
|
||||
} else {
|
||||
$cls = Beds24BookingInfoTableMap::OM_CLASS;
|
||||
$obj = new $cls();
|
||||
$col = $obj->hydrate($row, $offset, false, $indexType);
|
||||
Beds24BookingInfoTableMap::addInstanceToPool($obj, $key);
|
||||
}
|
||||
|
||||
return array($obj, $col);
|
||||
}
|
||||
|
||||
/**
|
||||
* The returned array will contain objects of the default type or
|
||||
* objects that inherit from the default.
|
||||
*
|
||||
* @param DataFetcherInterface $dataFetcher
|
||||
* @return array
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function populateObjects(DataFetcherInterface $dataFetcher)
|
||||
{
|
||||
$results = array();
|
||||
|
||||
// set the class once to avoid overhead in the loop
|
||||
$cls = static::getOMClass(false);
|
||||
// populate the object(s)
|
||||
while ($row = $dataFetcher->fetch()) {
|
||||
$key = Beds24BookingInfoTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
|
||||
if (null !== ($obj = Beds24BookingInfoTableMap::getInstanceFromPool($key))) {
|
||||
// We no longer rehydrate the object, since this can cause data loss.
|
||||
// See http://www.propelorm.org/ticket/509
|
||||
// $obj->hydrate($row, 0, true); // rehydrate
|
||||
$results[] = $obj;
|
||||
} else {
|
||||
$obj = new $cls();
|
||||
$obj->hydrate($row);
|
||||
$results[] = $obj;
|
||||
Beds24BookingInfoTableMap::addInstanceToPool($obj, $key);
|
||||
} // if key exists
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
/**
|
||||
* Add all the columns needed to create a new object.
|
||||
*
|
||||
* Note: any columns that were marked with lazyLoad="true" in the
|
||||
* XML schema will not be added to the select list and only loaded
|
||||
* on demand.
|
||||
*
|
||||
* @param Criteria $criteria object containing the columns to add.
|
||||
* @param string $alias optional table alias
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function addSelectColumns(Criteria $criteria, $alias = null)
|
||||
{
|
||||
if (null === $alias) {
|
||||
$criteria->addSelectColumn(Beds24BookingInfoTableMap::ID);
|
||||
$criteria->addSelectColumn(Beds24BookingInfoTableMap::CART_ITEM_ID);
|
||||
$criteria->addSelectColumn(Beds24BookingInfoTableMap::ROOM_ID);
|
||||
$criteria->addSelectColumn(Beds24BookingInfoTableMap::START_DATE);
|
||||
$criteria->addSelectColumn(Beds24BookingInfoTableMap::END_DATE);
|
||||
$criteria->addSelectColumn(Beds24BookingInfoTableMap::ADULTS);
|
||||
$criteria->addSelectColumn(Beds24BookingInfoTableMap::CHILDREN);
|
||||
} else {
|
||||
$criteria->addSelectColumn($alias . '.ID');
|
||||
$criteria->addSelectColumn($alias . '.CART_ITEM_ID');
|
||||
$criteria->addSelectColumn($alias . '.ROOM_ID');
|
||||
$criteria->addSelectColumn($alias . '.START_DATE');
|
||||
$criteria->addSelectColumn($alias . '.END_DATE');
|
||||
$criteria->addSelectColumn($alias . '.ADULTS');
|
||||
$criteria->addSelectColumn($alias . '.CHILDREN');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the TableMap related to this object.
|
||||
* This method is not needed for general use but a specific application could have a need.
|
||||
* @return TableMap
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function getTableMap()
|
||||
{
|
||||
return Propel::getServiceContainer()->getDatabaseMap(Beds24BookingInfoTableMap::DATABASE_NAME)->getTable(Beds24BookingInfoTableMap::TABLE_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a TableMap instance to the database for this tableMap class.
|
||||
*/
|
||||
public static function buildTableMap()
|
||||
{
|
||||
$dbMap = Propel::getServiceContainer()->getDatabaseMap(Beds24BookingInfoTableMap::DATABASE_NAME);
|
||||
if (!$dbMap->hasTable(Beds24BookingInfoTableMap::TABLE_NAME)) {
|
||||
$dbMap->addTableObject(new Beds24BookingInfoTableMap());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a DELETE on the database, given a Beds24BookingInfo or Criteria object OR a primary key value.
|
||||
*
|
||||
* @param mixed $values Criteria or Beds24BookingInfo object or primary key or array of primary keys
|
||||
* which is used to create the DELETE statement
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||
* if supported by native driver or if emulated using Propel.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doDelete($values, ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24BookingInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($values instanceof Criteria) {
|
||||
// rename for clarity
|
||||
$criteria = $values;
|
||||
} elseif ($values instanceof \Beds24\Model\Beds24BookingInfo) { // it's a model object
|
||||
// create criteria based on pk values
|
||||
$criteria = $values->buildPkeyCriteria();
|
||||
} else { // it's a primary key, or an array of pks
|
||||
$criteria = new Criteria(Beds24BookingInfoTableMap::DATABASE_NAME);
|
||||
$criteria->add(Beds24BookingInfoTableMap::ID, (array) $values, Criteria::IN);
|
||||
}
|
||||
|
||||
$query = Beds24BookingInfoQuery::create()->mergeWith($criteria);
|
||||
|
||||
if ($values instanceof Criteria) { Beds24BookingInfoTableMap::clearInstancePool();
|
||||
} elseif (!is_object($values)) { // it's a primary key, or an array of pks
|
||||
foreach ((array) $values as $singleval) { Beds24BookingInfoTableMap::removeInstanceFromPool($singleval);
|
||||
}
|
||||
}
|
||||
|
||||
return $query->delete($con);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all rows from the beds24_booking_info table.
|
||||
*
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
*/
|
||||
public static function doDeleteAll(ConnectionInterface $con = null)
|
||||
{
|
||||
return Beds24BookingInfoQuery::create()->doDeleteAll($con);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs an INSERT on the database, given a Beds24BookingInfo or Criteria object.
|
||||
*
|
||||
* @param mixed $criteria Criteria or Beds24BookingInfo object containing data that is used to create the INSERT statement.
|
||||
* @param ConnectionInterface $con the ConnectionInterface connection to use
|
||||
* @return mixed The new primary key.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doInsert($criteria, ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24BookingInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($criteria instanceof Criteria) {
|
||||
$criteria = clone $criteria; // rename for clarity
|
||||
} else {
|
||||
$criteria = $criteria->buildCriteria(); // build Criteria from Beds24BookingInfo object
|
||||
}
|
||||
|
||||
if ($criteria->containsKey(Beds24BookingInfoTableMap::ID) && $criteria->keyContainsValue(Beds24BookingInfoTableMap::ID) ) {
|
||||
throw new PropelException('Cannot insert a value for auto-increment primary key ('.Beds24BookingInfoTableMap::ID.')');
|
||||
}
|
||||
|
||||
|
||||
// Set the correct dbName
|
||||
$query = Beds24BookingInfoQuery::create()->mergeWith($criteria);
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table (I guess, conceivably)
|
||||
$con->beginTransaction();
|
||||
$pk = $query->doInsert($con);
|
||||
$con->commit();
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return $pk;
|
||||
}
|
||||
|
||||
} // Beds24BookingInfoTableMap
|
||||
// This is the static code needed to register the TableMap for this table with the main Propel class.
|
||||
//
|
||||
Beds24BookingInfoTableMap::buildTableMap();
|
||||
468
local/Beds24/Model/Map/Beds24BookingOrderProductTableMap.php
Normal file
468
local/Beds24/Model/Map/Beds24BookingOrderProductTableMap.php
Normal file
@@ -0,0 +1,468 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model\Map;
|
||||
|
||||
use Beds24\Model\Beds24BookingOrderProduct;
|
||||
use Beds24\Model\Beds24BookingOrderProductQuery;
|
||||
use Propel\Runtime\Propel;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Propel\Runtime\ActiveQuery\InstancePoolTrait;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Propel\Runtime\DataFetcher\DataFetcherInterface;
|
||||
use Propel\Runtime\Exception\PropelException;
|
||||
use Propel\Runtime\Map\RelationMap;
|
||||
use Propel\Runtime\Map\TableMap;
|
||||
use Propel\Runtime\Map\TableMapTrait;
|
||||
|
||||
|
||||
/**
|
||||
* This class defines the structure of the 'beds24_booking_order_product' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* This map class is used by Propel to do runtime db structure discovery.
|
||||
* For example, the createSelectSql() method checks the type of a given column used in an
|
||||
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
|
||||
* (i.e. if it's a text column type).
|
||||
*
|
||||
*/
|
||||
class Beds24BookingOrderProductTableMap extends TableMap
|
||||
{
|
||||
use InstancePoolTrait;
|
||||
use TableMapTrait;
|
||||
/**
|
||||
* The (dot-path) name of this class
|
||||
*/
|
||||
const CLASS_NAME = 'Beds24.Model.Map.Beds24BookingOrderProductTableMap';
|
||||
|
||||
/**
|
||||
* The default database name for this class
|
||||
*/
|
||||
const DATABASE_NAME = 'thelia';
|
||||
|
||||
/**
|
||||
* The table name for this class
|
||||
*/
|
||||
const TABLE_NAME = 'beds24_booking_order_product';
|
||||
|
||||
/**
|
||||
* The related Propel class for this table
|
||||
*/
|
||||
const OM_CLASS = '\\Beds24\\Model\\Beds24BookingOrderProduct';
|
||||
|
||||
/**
|
||||
* A class that can be returned by this tableMap
|
||||
*/
|
||||
const CLASS_DEFAULT = 'Beds24.Model.Beds24BookingOrderProduct';
|
||||
|
||||
/**
|
||||
* The total number of columns
|
||||
*/
|
||||
const NUM_COLUMNS = 9;
|
||||
|
||||
/**
|
||||
* The number of lazy-loaded columns
|
||||
*/
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
|
||||
/**
|
||||
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
|
||||
*/
|
||||
const NUM_HYDRATE_COLUMNS = 9;
|
||||
|
||||
/**
|
||||
* the column name for the ID field
|
||||
*/
|
||||
const ID = 'beds24_booking_order_product.ID';
|
||||
|
||||
/**
|
||||
* the column name for the ORDER_ID field
|
||||
*/
|
||||
const ORDER_ID = 'beds24_booking_order_product.ORDER_ID';
|
||||
|
||||
/**
|
||||
* the column name for the ORDER_PRODUCT_ID field
|
||||
*/
|
||||
const ORDER_PRODUCT_ID = 'beds24_booking_order_product.ORDER_PRODUCT_ID';
|
||||
|
||||
/**
|
||||
* the column name for the ROOM_ID field
|
||||
*/
|
||||
const ROOM_ID = 'beds24_booking_order_product.ROOM_ID';
|
||||
|
||||
/**
|
||||
* the column name for the START_DATE field
|
||||
*/
|
||||
const START_DATE = 'beds24_booking_order_product.START_DATE';
|
||||
|
||||
/**
|
||||
* the column name for the END_DATE field
|
||||
*/
|
||||
const END_DATE = 'beds24_booking_order_product.END_DATE';
|
||||
|
||||
/**
|
||||
* the column name for the ADULTS field
|
||||
*/
|
||||
const ADULTS = 'beds24_booking_order_product.ADULTS';
|
||||
|
||||
/**
|
||||
* the column name for the CHILDREN field
|
||||
*/
|
||||
const CHILDREN = 'beds24_booking_order_product.CHILDREN';
|
||||
|
||||
/**
|
||||
* the column name for the BEDS_24_BOOKING_ID field
|
||||
*/
|
||||
const BEDS_24_BOOKING_ID = 'beds24_booking_order_product.BEDS_24_BOOKING_ID';
|
||||
|
||||
/**
|
||||
* The default string format for model objects of the related table
|
||||
*/
|
||||
const DEFAULT_STRING_FORMAT = 'YAML';
|
||||
|
||||
/**
|
||||
* holds an array of fieldnames
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
protected static $fieldNames = array (
|
||||
self::TYPE_PHPNAME => array('Id', 'OrderId', 'OrderProductId', 'RoomId', 'StartDate', 'EndDate', 'Adults', 'Children', 'Beds24BookingId', ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id', 'orderId', 'orderProductId', 'roomId', 'startDate', 'endDate', 'adults', 'children', 'beds24BookingId', ),
|
||||
self::TYPE_COLNAME => array(Beds24BookingOrderProductTableMap::ID, Beds24BookingOrderProductTableMap::ORDER_ID, Beds24BookingOrderProductTableMap::ORDER_PRODUCT_ID, Beds24BookingOrderProductTableMap::ROOM_ID, Beds24BookingOrderProductTableMap::START_DATE, Beds24BookingOrderProductTableMap::END_DATE, Beds24BookingOrderProductTableMap::ADULTS, Beds24BookingOrderProductTableMap::CHILDREN, Beds24BookingOrderProductTableMap::BEDS_24_BOOKING_ID, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID', 'ORDER_ID', 'ORDER_PRODUCT_ID', 'ROOM_ID', 'START_DATE', 'END_DATE', 'ADULTS', 'CHILDREN', 'BEDS_24_BOOKING_ID', ),
|
||||
self::TYPE_FIELDNAME => array('id', 'order_id', 'order_product_id', 'room_id', 'start_date', 'end_date', 'adults', 'children', 'beds_24_booking_id', ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, )
|
||||
);
|
||||
|
||||
/**
|
||||
* holds an array of keys for quick access to the fieldnames array
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
protected static $fieldKeys = array (
|
||||
self::TYPE_PHPNAME => array('Id' => 0, 'OrderId' => 1, 'OrderProductId' => 2, 'RoomId' => 3, 'StartDate' => 4, 'EndDate' => 5, 'Adults' => 6, 'Children' => 7, 'Beds24BookingId' => 8, ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'orderId' => 1, 'orderProductId' => 2, 'roomId' => 3, 'startDate' => 4, 'endDate' => 5, 'adults' => 6, 'children' => 7, 'beds24BookingId' => 8, ),
|
||||
self::TYPE_COLNAME => array(Beds24BookingOrderProductTableMap::ID => 0, Beds24BookingOrderProductTableMap::ORDER_ID => 1, Beds24BookingOrderProductTableMap::ORDER_PRODUCT_ID => 2, Beds24BookingOrderProductTableMap::ROOM_ID => 3, Beds24BookingOrderProductTableMap::START_DATE => 4, Beds24BookingOrderProductTableMap::END_DATE => 5, Beds24BookingOrderProductTableMap::ADULTS => 6, Beds24BookingOrderProductTableMap::CHILDREN => 7, Beds24BookingOrderProductTableMap::BEDS_24_BOOKING_ID => 8, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID' => 0, 'ORDER_ID' => 1, 'ORDER_PRODUCT_ID' => 2, 'ROOM_ID' => 3, 'START_DATE' => 4, 'END_DATE' => 5, 'ADULTS' => 6, 'CHILDREN' => 7, 'BEDS_24_BOOKING_ID' => 8, ),
|
||||
self::TYPE_FIELDNAME => array('id' => 0, 'order_id' => 1, 'order_product_id' => 2, 'room_id' => 3, 'start_date' => 4, 'end_date' => 5, 'adults' => 6, 'children' => 7, 'beds_24_booking_id' => 8, ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, )
|
||||
);
|
||||
|
||||
/**
|
||||
* Initialize the table attributes and columns
|
||||
* Relations are not initialized by this method since they are lazy loaded
|
||||
*
|
||||
* @return void
|
||||
* @throws PropelException
|
||||
*/
|
||||
public function initialize()
|
||||
{
|
||||
// attributes
|
||||
$this->setName('beds24_booking_order_product');
|
||||
$this->setPhpName('Beds24BookingOrderProduct');
|
||||
$this->setClassName('\\Beds24\\Model\\Beds24BookingOrderProduct');
|
||||
$this->setPackage('Beds24.Model');
|
||||
$this->setUseIdGenerator(true);
|
||||
// columns
|
||||
$this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
|
||||
$this->addForeignKey('ORDER_ID', 'OrderId', 'INTEGER', 'order', 'ID', true, null, null);
|
||||
$this->addForeignKey('ORDER_PRODUCT_ID', 'OrderProductId', 'INTEGER', 'order_product', 'ID', true, null, null);
|
||||
$this->addColumn('ROOM_ID', 'RoomId', 'INTEGER', true, null, null);
|
||||
$this->addColumn('START_DATE', 'StartDate', 'DATE', true, null, null);
|
||||
$this->addColumn('END_DATE', 'EndDate', 'DATE', true, null, null);
|
||||
$this->addColumn('ADULTS', 'Adults', 'INTEGER', true, 2, null);
|
||||
$this->addColumn('CHILDREN', 'Children', 'INTEGER', true, 2, null);
|
||||
$this->addColumn('BEDS_24_BOOKING_ID', 'Beds24BookingId', 'VARCHAR', true, 128, null);
|
||||
} // initialize()
|
||||
|
||||
/**
|
||||
* Build the RelationMap objects for this table relationships
|
||||
*/
|
||||
public function buildRelations()
|
||||
{
|
||||
$this->addRelation('OrderProduct', '\\Thelia\\Model\\OrderProduct', RelationMap::MANY_TO_ONE, array('order_product_id' => 'id', ), 'CASCADE', 'RESTRICT');
|
||||
$this->addRelation('Order', '\\Thelia\\Model\\Order', RelationMap::MANY_TO_ONE, array('order_id' => 'id', ), 'CASCADE', 'RESTRICT');
|
||||
} // buildRelations()
|
||||
|
||||
/**
|
||||
* Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
|
||||
*
|
||||
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||
* a multi-column primary key, a serialize()d version of the primary key will be returned.
|
||||
*
|
||||
* @param array $row resultset row.
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||
*/
|
||||
public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
// If the PK cannot be derived from the row, return NULL.
|
||||
if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the primary key from the DB resultset row
|
||||
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||
* a multi-column primary key, an array of the primary key columns will be returned.
|
||||
*
|
||||
* @param array $row resultset row.
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||
*
|
||||
* @return mixed The primary key of the row
|
||||
*/
|
||||
public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
|
||||
return (int) $row[
|
||||
$indexType == TableMap::TYPE_NUM
|
||||
? 0 + $offset
|
||||
: self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* The class that the tableMap will make instances of.
|
||||
*
|
||||
* If $withPrefix is true, the returned path
|
||||
* uses a dot-path notation which is translated into a path
|
||||
* relative to a location on the PHP include_path.
|
||||
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
|
||||
*
|
||||
* @param boolean $withPrefix Whether or not to return the path with the class name
|
||||
* @return string path.to.ClassName
|
||||
*/
|
||||
public static function getOMClass($withPrefix = true)
|
||||
{
|
||||
return $withPrefix ? Beds24BookingOrderProductTableMap::CLASS_DEFAULT : Beds24BookingOrderProductTableMap::OM_CLASS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Populates an object of the default type or an object that inherit from the default.
|
||||
*
|
||||
* @param array $row row returned by DataFetcher->fetch().
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType().
|
||||
One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
|
||||
*
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
* @return array (Beds24BookingOrderProduct object, last column rank)
|
||||
*/
|
||||
public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
$key = Beds24BookingOrderProductTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType);
|
||||
if (null !== ($obj = Beds24BookingOrderProductTableMap::getInstanceFromPool($key))) {
|
||||
// We no longer rehydrate the object, since this can cause data loss.
|
||||
// See http://www.propelorm.org/ticket/509
|
||||
// $obj->hydrate($row, $offset, true); // rehydrate
|
||||
$col = $offset + Beds24BookingOrderProductTableMap::NUM_HYDRATE_COLUMNS;
|
||||
} else {
|
||||
$cls = Beds24BookingOrderProductTableMap::OM_CLASS;
|
||||
$obj = new $cls();
|
||||
$col = $obj->hydrate($row, $offset, false, $indexType);
|
||||
Beds24BookingOrderProductTableMap::addInstanceToPool($obj, $key);
|
||||
}
|
||||
|
||||
return array($obj, $col);
|
||||
}
|
||||
|
||||
/**
|
||||
* The returned array will contain objects of the default type or
|
||||
* objects that inherit from the default.
|
||||
*
|
||||
* @param DataFetcherInterface $dataFetcher
|
||||
* @return array
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function populateObjects(DataFetcherInterface $dataFetcher)
|
||||
{
|
||||
$results = array();
|
||||
|
||||
// set the class once to avoid overhead in the loop
|
||||
$cls = static::getOMClass(false);
|
||||
// populate the object(s)
|
||||
while ($row = $dataFetcher->fetch()) {
|
||||
$key = Beds24BookingOrderProductTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
|
||||
if (null !== ($obj = Beds24BookingOrderProductTableMap::getInstanceFromPool($key))) {
|
||||
// We no longer rehydrate the object, since this can cause data loss.
|
||||
// See http://www.propelorm.org/ticket/509
|
||||
// $obj->hydrate($row, 0, true); // rehydrate
|
||||
$results[] = $obj;
|
||||
} else {
|
||||
$obj = new $cls();
|
||||
$obj->hydrate($row);
|
||||
$results[] = $obj;
|
||||
Beds24BookingOrderProductTableMap::addInstanceToPool($obj, $key);
|
||||
} // if key exists
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
/**
|
||||
* Add all the columns needed to create a new object.
|
||||
*
|
||||
* Note: any columns that were marked with lazyLoad="true" in the
|
||||
* XML schema will not be added to the select list and only loaded
|
||||
* on demand.
|
||||
*
|
||||
* @param Criteria $criteria object containing the columns to add.
|
||||
* @param string $alias optional table alias
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function addSelectColumns(Criteria $criteria, $alias = null)
|
||||
{
|
||||
if (null === $alias) {
|
||||
$criteria->addSelectColumn(Beds24BookingOrderProductTableMap::ID);
|
||||
$criteria->addSelectColumn(Beds24BookingOrderProductTableMap::ORDER_ID);
|
||||
$criteria->addSelectColumn(Beds24BookingOrderProductTableMap::ORDER_PRODUCT_ID);
|
||||
$criteria->addSelectColumn(Beds24BookingOrderProductTableMap::ROOM_ID);
|
||||
$criteria->addSelectColumn(Beds24BookingOrderProductTableMap::START_DATE);
|
||||
$criteria->addSelectColumn(Beds24BookingOrderProductTableMap::END_DATE);
|
||||
$criteria->addSelectColumn(Beds24BookingOrderProductTableMap::ADULTS);
|
||||
$criteria->addSelectColumn(Beds24BookingOrderProductTableMap::CHILDREN);
|
||||
$criteria->addSelectColumn(Beds24BookingOrderProductTableMap::BEDS_24_BOOKING_ID);
|
||||
} else {
|
||||
$criteria->addSelectColumn($alias . '.ID');
|
||||
$criteria->addSelectColumn($alias . '.ORDER_ID');
|
||||
$criteria->addSelectColumn($alias . '.ORDER_PRODUCT_ID');
|
||||
$criteria->addSelectColumn($alias . '.ROOM_ID');
|
||||
$criteria->addSelectColumn($alias . '.START_DATE');
|
||||
$criteria->addSelectColumn($alias . '.END_DATE');
|
||||
$criteria->addSelectColumn($alias . '.ADULTS');
|
||||
$criteria->addSelectColumn($alias . '.CHILDREN');
|
||||
$criteria->addSelectColumn($alias . '.BEDS_24_BOOKING_ID');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the TableMap related to this object.
|
||||
* This method is not needed for general use but a specific application could have a need.
|
||||
* @return TableMap
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function getTableMap()
|
||||
{
|
||||
return Propel::getServiceContainer()->getDatabaseMap(Beds24BookingOrderProductTableMap::DATABASE_NAME)->getTable(Beds24BookingOrderProductTableMap::TABLE_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a TableMap instance to the database for this tableMap class.
|
||||
*/
|
||||
public static function buildTableMap()
|
||||
{
|
||||
$dbMap = Propel::getServiceContainer()->getDatabaseMap(Beds24BookingOrderProductTableMap::DATABASE_NAME);
|
||||
if (!$dbMap->hasTable(Beds24BookingOrderProductTableMap::TABLE_NAME)) {
|
||||
$dbMap->addTableObject(new Beds24BookingOrderProductTableMap());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a DELETE on the database, given a Beds24BookingOrderProduct or Criteria object OR a primary key value.
|
||||
*
|
||||
* @param mixed $values Criteria or Beds24BookingOrderProduct object or primary key or array of primary keys
|
||||
* which is used to create the DELETE statement
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||
* if supported by native driver or if emulated using Propel.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doDelete($values, ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24BookingOrderProductTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($values instanceof Criteria) {
|
||||
// rename for clarity
|
||||
$criteria = $values;
|
||||
} elseif ($values instanceof \Beds24\Model\Beds24BookingOrderProduct) { // it's a model object
|
||||
// create criteria based on pk values
|
||||
$criteria = $values->buildPkeyCriteria();
|
||||
} else { // it's a primary key, or an array of pks
|
||||
$criteria = new Criteria(Beds24BookingOrderProductTableMap::DATABASE_NAME);
|
||||
$criteria->add(Beds24BookingOrderProductTableMap::ID, (array) $values, Criteria::IN);
|
||||
}
|
||||
|
||||
$query = Beds24BookingOrderProductQuery::create()->mergeWith($criteria);
|
||||
|
||||
if ($values instanceof Criteria) { Beds24BookingOrderProductTableMap::clearInstancePool();
|
||||
} elseif (!is_object($values)) { // it's a primary key, or an array of pks
|
||||
foreach ((array) $values as $singleval) { Beds24BookingOrderProductTableMap::removeInstanceFromPool($singleval);
|
||||
}
|
||||
}
|
||||
|
||||
return $query->delete($con);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all rows from the beds24_booking_order_product table.
|
||||
*
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
*/
|
||||
public static function doDeleteAll(ConnectionInterface $con = null)
|
||||
{
|
||||
return Beds24BookingOrderProductQuery::create()->doDeleteAll($con);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs an INSERT on the database, given a Beds24BookingOrderProduct or Criteria object.
|
||||
*
|
||||
* @param mixed $criteria Criteria or Beds24BookingOrderProduct object containing data that is used to create the INSERT statement.
|
||||
* @param ConnectionInterface $con the ConnectionInterface connection to use
|
||||
* @return mixed The new primary key.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doInsert($criteria, ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24BookingOrderProductTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($criteria instanceof Criteria) {
|
||||
$criteria = clone $criteria; // rename for clarity
|
||||
} else {
|
||||
$criteria = $criteria->buildCriteria(); // build Criteria from Beds24BookingOrderProduct object
|
||||
}
|
||||
|
||||
if ($criteria->containsKey(Beds24BookingOrderProductTableMap::ID) && $criteria->keyContainsValue(Beds24BookingOrderProductTableMap::ID) ) {
|
||||
throw new PropelException('Cannot insert a value for auto-increment primary key ('.Beds24BookingOrderProductTableMap::ID.')');
|
||||
}
|
||||
|
||||
|
||||
// Set the correct dbName
|
||||
$query = Beds24BookingOrderProductQuery::create()->mergeWith($criteria);
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table (I guess, conceivably)
|
||||
$con->beginTransaction();
|
||||
$pk = $query->doInsert($con);
|
||||
$con->commit();
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return $pk;
|
||||
}
|
||||
|
||||
} // Beds24BookingOrderProductTableMap
|
||||
// This is the static code needed to register the TableMap for this table with the main Propel class.
|
||||
//
|
||||
Beds24BookingOrderProductTableMap::buildTableMap();
|
||||
448
local/Beds24/Model/Map/Beds24ProductInfoTableMap.php
Normal file
448
local/Beds24/Model/Map/Beds24ProductInfoTableMap.php
Normal file
@@ -0,0 +1,448 @@
|
||||
<?php
|
||||
|
||||
namespace Beds24\Model\Map;
|
||||
|
||||
use Beds24\Model\Beds24ProductInfo;
|
||||
use Beds24\Model\Beds24ProductInfoQuery;
|
||||
use Propel\Runtime\Propel;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Propel\Runtime\ActiveQuery\InstancePoolTrait;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Propel\Runtime\DataFetcher\DataFetcherInterface;
|
||||
use Propel\Runtime\Exception\PropelException;
|
||||
use Propel\Runtime\Map\RelationMap;
|
||||
use Propel\Runtime\Map\TableMap;
|
||||
use Propel\Runtime\Map\TableMapTrait;
|
||||
|
||||
|
||||
/**
|
||||
* This class defines the structure of the 'beds24_product_info' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* This map class is used by Propel to do runtime db structure discovery.
|
||||
* For example, the createSelectSql() method checks the type of a given column used in an
|
||||
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
|
||||
* (i.e. if it's a text column type).
|
||||
*
|
||||
*/
|
||||
class Beds24ProductInfoTableMap extends TableMap
|
||||
{
|
||||
use InstancePoolTrait;
|
||||
use TableMapTrait;
|
||||
/**
|
||||
* The (dot-path) name of this class
|
||||
*/
|
||||
const CLASS_NAME = 'Beds24.Model.Map.Beds24ProductInfoTableMap';
|
||||
|
||||
/**
|
||||
* The default database name for this class
|
||||
*/
|
||||
const DATABASE_NAME = 'thelia';
|
||||
|
||||
/**
|
||||
* The table name for this class
|
||||
*/
|
||||
const TABLE_NAME = 'beds24_product_info';
|
||||
|
||||
/**
|
||||
* The related Propel class for this table
|
||||
*/
|
||||
const OM_CLASS = '\\Beds24\\Model\\Beds24ProductInfo';
|
||||
|
||||
/**
|
||||
* A class that can be returned by this tableMap
|
||||
*/
|
||||
const CLASS_DEFAULT = 'Beds24.Model.Beds24ProductInfo';
|
||||
|
||||
/**
|
||||
* The total number of columns
|
||||
*/
|
||||
const NUM_COLUMNS = 5;
|
||||
|
||||
/**
|
||||
* The number of lazy-loaded columns
|
||||
*/
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
|
||||
/**
|
||||
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
|
||||
*/
|
||||
const NUM_HYDRATE_COLUMNS = 5;
|
||||
|
||||
/**
|
||||
* the column name for the ID field
|
||||
*/
|
||||
const ID = 'beds24_product_info.ID';
|
||||
|
||||
/**
|
||||
* the column name for the ROOM_ID field
|
||||
*/
|
||||
const ROOM_ID = 'beds24_product_info.ROOM_ID';
|
||||
|
||||
/**
|
||||
* the column name for the PRODUCT_ID field
|
||||
*/
|
||||
const PRODUCT_ID = 'beds24_product_info.PRODUCT_ID';
|
||||
|
||||
/**
|
||||
* the column name for the CREATED_AT field
|
||||
*/
|
||||
const CREATED_AT = 'beds24_product_info.CREATED_AT';
|
||||
|
||||
/**
|
||||
* the column name for the UPDATED_AT field
|
||||
*/
|
||||
const UPDATED_AT = 'beds24_product_info.UPDATED_AT';
|
||||
|
||||
/**
|
||||
* The default string format for model objects of the related table
|
||||
*/
|
||||
const DEFAULT_STRING_FORMAT = 'YAML';
|
||||
|
||||
/**
|
||||
* holds an array of fieldnames
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
protected static $fieldNames = array (
|
||||
self::TYPE_PHPNAME => array('Id', 'RoomId', 'ProductId', 'CreatedAt', 'UpdatedAt', ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id', 'roomId', 'productId', 'createdAt', 'updatedAt', ),
|
||||
self::TYPE_COLNAME => array(Beds24ProductInfoTableMap::ID, Beds24ProductInfoTableMap::ROOM_ID, Beds24ProductInfoTableMap::PRODUCT_ID, Beds24ProductInfoTableMap::CREATED_AT, Beds24ProductInfoTableMap::UPDATED_AT, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID', 'ROOM_ID', 'PRODUCT_ID', 'CREATED_AT', 'UPDATED_AT', ),
|
||||
self::TYPE_FIELDNAME => array('id', 'room_id', 'product_id', 'created_at', 'updated_at', ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, )
|
||||
);
|
||||
|
||||
/**
|
||||
* holds an array of keys for quick access to the fieldnames array
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
protected static $fieldKeys = array (
|
||||
self::TYPE_PHPNAME => array('Id' => 0, 'RoomId' => 1, 'ProductId' => 2, 'CreatedAt' => 3, 'UpdatedAt' => 4, ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'roomId' => 1, 'productId' => 2, 'createdAt' => 3, 'updatedAt' => 4, ),
|
||||
self::TYPE_COLNAME => array(Beds24ProductInfoTableMap::ID => 0, Beds24ProductInfoTableMap::ROOM_ID => 1, Beds24ProductInfoTableMap::PRODUCT_ID => 2, Beds24ProductInfoTableMap::CREATED_AT => 3, Beds24ProductInfoTableMap::UPDATED_AT => 4, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID' => 0, 'ROOM_ID' => 1, 'PRODUCT_ID' => 2, 'CREATED_AT' => 3, 'UPDATED_AT' => 4, ),
|
||||
self::TYPE_FIELDNAME => array('id' => 0, 'room_id' => 1, 'product_id' => 2, 'created_at' => 3, 'updated_at' => 4, ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, )
|
||||
);
|
||||
|
||||
/**
|
||||
* Initialize the table attributes and columns
|
||||
* Relations are not initialized by this method since they are lazy loaded
|
||||
*
|
||||
* @return void
|
||||
* @throws PropelException
|
||||
*/
|
||||
public function initialize()
|
||||
{
|
||||
// attributes
|
||||
$this->setName('beds24_product_info');
|
||||
$this->setPhpName('Beds24ProductInfo');
|
||||
$this->setClassName('\\Beds24\\Model\\Beds24ProductInfo');
|
||||
$this->setPackage('Beds24.Model');
|
||||
$this->setUseIdGenerator(true);
|
||||
// columns
|
||||
$this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
|
||||
$this->addColumn('ROOM_ID', 'RoomId', 'INTEGER', true, null, null);
|
||||
$this->addForeignKey('PRODUCT_ID', 'ProductId', 'INTEGER', 'product', 'ID', true, null, null);
|
||||
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
|
||||
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
|
||||
} // initialize()
|
||||
|
||||
/**
|
||||
* Build the RelationMap objects for this table relationships
|
||||
*/
|
||||
public function buildRelations()
|
||||
{
|
||||
$this->addRelation('Product', '\\Thelia\\Model\\Product', RelationMap::MANY_TO_ONE, array('product_id' => 'id', ), 'CASCADE', 'RESTRICT');
|
||||
} // buildRelations()
|
||||
|
||||
/**
|
||||
*
|
||||
* Gets the list of behaviors registered for this table
|
||||
*
|
||||
* @return array Associative array (name => parameters) of behaviors
|
||||
*/
|
||||
public function getBehaviors()
|
||||
{
|
||||
return array(
|
||||
'timestampable' => array('create_column' => 'created_at', 'update_column' => 'updated_at', ),
|
||||
);
|
||||
} // getBehaviors()
|
||||
|
||||
/**
|
||||
* Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
|
||||
*
|
||||
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||
* a multi-column primary key, a serialize()d version of the primary key will be returned.
|
||||
*
|
||||
* @param array $row resultset row.
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||
*/
|
||||
public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
// If the PK cannot be derived from the row, return NULL.
|
||||
if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the primary key from the DB resultset row
|
||||
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||
* a multi-column primary key, an array of the primary key columns will be returned.
|
||||
*
|
||||
* @param array $row resultset row.
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||
*
|
||||
* @return mixed The primary key of the row
|
||||
*/
|
||||
public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
|
||||
return (int) $row[
|
||||
$indexType == TableMap::TYPE_NUM
|
||||
? 0 + $offset
|
||||
: self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* The class that the tableMap will make instances of.
|
||||
*
|
||||
* If $withPrefix is true, the returned path
|
||||
* uses a dot-path notation which is translated into a path
|
||||
* relative to a location on the PHP include_path.
|
||||
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
|
||||
*
|
||||
* @param boolean $withPrefix Whether or not to return the path with the class name
|
||||
* @return string path.to.ClassName
|
||||
*/
|
||||
public static function getOMClass($withPrefix = true)
|
||||
{
|
||||
return $withPrefix ? Beds24ProductInfoTableMap::CLASS_DEFAULT : Beds24ProductInfoTableMap::OM_CLASS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Populates an object of the default type or an object that inherit from the default.
|
||||
*
|
||||
* @param array $row row returned by DataFetcher->fetch().
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType().
|
||||
One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
|
||||
*
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
* @return array (Beds24ProductInfo object, last column rank)
|
||||
*/
|
||||
public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
$key = Beds24ProductInfoTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType);
|
||||
if (null !== ($obj = Beds24ProductInfoTableMap::getInstanceFromPool($key))) {
|
||||
// We no longer rehydrate the object, since this can cause data loss.
|
||||
// See http://www.propelorm.org/ticket/509
|
||||
// $obj->hydrate($row, $offset, true); // rehydrate
|
||||
$col = $offset + Beds24ProductInfoTableMap::NUM_HYDRATE_COLUMNS;
|
||||
} else {
|
||||
$cls = Beds24ProductInfoTableMap::OM_CLASS;
|
||||
$obj = new $cls();
|
||||
$col = $obj->hydrate($row, $offset, false, $indexType);
|
||||
Beds24ProductInfoTableMap::addInstanceToPool($obj, $key);
|
||||
}
|
||||
|
||||
return array($obj, $col);
|
||||
}
|
||||
|
||||
/**
|
||||
* The returned array will contain objects of the default type or
|
||||
* objects that inherit from the default.
|
||||
*
|
||||
* @param DataFetcherInterface $dataFetcher
|
||||
* @return array
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function populateObjects(DataFetcherInterface $dataFetcher)
|
||||
{
|
||||
$results = array();
|
||||
|
||||
// set the class once to avoid overhead in the loop
|
||||
$cls = static::getOMClass(false);
|
||||
// populate the object(s)
|
||||
while ($row = $dataFetcher->fetch()) {
|
||||
$key = Beds24ProductInfoTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
|
||||
if (null !== ($obj = Beds24ProductInfoTableMap::getInstanceFromPool($key))) {
|
||||
// We no longer rehydrate the object, since this can cause data loss.
|
||||
// See http://www.propelorm.org/ticket/509
|
||||
// $obj->hydrate($row, 0, true); // rehydrate
|
||||
$results[] = $obj;
|
||||
} else {
|
||||
$obj = new $cls();
|
||||
$obj->hydrate($row);
|
||||
$results[] = $obj;
|
||||
Beds24ProductInfoTableMap::addInstanceToPool($obj, $key);
|
||||
} // if key exists
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
/**
|
||||
* Add all the columns needed to create a new object.
|
||||
*
|
||||
* Note: any columns that were marked with lazyLoad="true" in the
|
||||
* XML schema will not be added to the select list and only loaded
|
||||
* on demand.
|
||||
*
|
||||
* @param Criteria $criteria object containing the columns to add.
|
||||
* @param string $alias optional table alias
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function addSelectColumns(Criteria $criteria, $alias = null)
|
||||
{
|
||||
if (null === $alias) {
|
||||
$criteria->addSelectColumn(Beds24ProductInfoTableMap::ID);
|
||||
$criteria->addSelectColumn(Beds24ProductInfoTableMap::ROOM_ID);
|
||||
$criteria->addSelectColumn(Beds24ProductInfoTableMap::PRODUCT_ID);
|
||||
$criteria->addSelectColumn(Beds24ProductInfoTableMap::CREATED_AT);
|
||||
$criteria->addSelectColumn(Beds24ProductInfoTableMap::UPDATED_AT);
|
||||
} else {
|
||||
$criteria->addSelectColumn($alias . '.ID');
|
||||
$criteria->addSelectColumn($alias . '.ROOM_ID');
|
||||
$criteria->addSelectColumn($alias . '.PRODUCT_ID');
|
||||
$criteria->addSelectColumn($alias . '.CREATED_AT');
|
||||
$criteria->addSelectColumn($alias . '.UPDATED_AT');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the TableMap related to this object.
|
||||
* This method is not needed for general use but a specific application could have a need.
|
||||
* @return TableMap
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function getTableMap()
|
||||
{
|
||||
return Propel::getServiceContainer()->getDatabaseMap(Beds24ProductInfoTableMap::DATABASE_NAME)->getTable(Beds24ProductInfoTableMap::TABLE_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a TableMap instance to the database for this tableMap class.
|
||||
*/
|
||||
public static function buildTableMap()
|
||||
{
|
||||
$dbMap = Propel::getServiceContainer()->getDatabaseMap(Beds24ProductInfoTableMap::DATABASE_NAME);
|
||||
if (!$dbMap->hasTable(Beds24ProductInfoTableMap::TABLE_NAME)) {
|
||||
$dbMap->addTableObject(new Beds24ProductInfoTableMap());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a DELETE on the database, given a Beds24ProductInfo or Criteria object OR a primary key value.
|
||||
*
|
||||
* @param mixed $values Criteria or Beds24ProductInfo object or primary key or array of primary keys
|
||||
* which is used to create the DELETE statement
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||
* if supported by native driver or if emulated using Propel.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doDelete($values, ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24ProductInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($values instanceof Criteria) {
|
||||
// rename for clarity
|
||||
$criteria = $values;
|
||||
} elseif ($values instanceof \Beds24\Model\Beds24ProductInfo) { // it's a model object
|
||||
// create criteria based on pk values
|
||||
$criteria = $values->buildPkeyCriteria();
|
||||
} else { // it's a primary key, or an array of pks
|
||||
$criteria = new Criteria(Beds24ProductInfoTableMap::DATABASE_NAME);
|
||||
$criteria->add(Beds24ProductInfoTableMap::ID, (array) $values, Criteria::IN);
|
||||
}
|
||||
|
||||
$query = Beds24ProductInfoQuery::create()->mergeWith($criteria);
|
||||
|
||||
if ($values instanceof Criteria) { Beds24ProductInfoTableMap::clearInstancePool();
|
||||
} elseif (!is_object($values)) { // it's a primary key, or an array of pks
|
||||
foreach ((array) $values as $singleval) { Beds24ProductInfoTableMap::removeInstanceFromPool($singleval);
|
||||
}
|
||||
}
|
||||
|
||||
return $query->delete($con);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all rows from the beds24_product_info table.
|
||||
*
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
*/
|
||||
public static function doDeleteAll(ConnectionInterface $con = null)
|
||||
{
|
||||
return Beds24ProductInfoQuery::create()->doDeleteAll($con);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs an INSERT on the database, given a Beds24ProductInfo or Criteria object.
|
||||
*
|
||||
* @param mixed $criteria Criteria or Beds24ProductInfo object containing data that is used to create the INSERT statement.
|
||||
* @param ConnectionInterface $con the ConnectionInterface connection to use
|
||||
* @return mixed The new primary key.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doInsert($criteria, ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(Beds24ProductInfoTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($criteria instanceof Criteria) {
|
||||
$criteria = clone $criteria; // rename for clarity
|
||||
} else {
|
||||
$criteria = $criteria->buildCriteria(); // build Criteria from Beds24ProductInfo object
|
||||
}
|
||||
|
||||
if ($criteria->containsKey(Beds24ProductInfoTableMap::ID) && $criteria->keyContainsValue(Beds24ProductInfoTableMap::ID) ) {
|
||||
throw new PropelException('Cannot insert a value for auto-increment primary key ('.Beds24ProductInfoTableMap::ID.')');
|
||||
}
|
||||
|
||||
|
||||
// Set the correct dbName
|
||||
$query = Beds24ProductInfoQuery::create()->mergeWith($criteria);
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table (I guess, conceivably)
|
||||
$con->beginTransaction();
|
||||
$pk = $query->doInsert($con);
|
||||
$con->commit();
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return $pk;
|
||||
}
|
||||
|
||||
} // Beds24ProductInfoTableMap
|
||||
// This is the static code needed to register the TableMap for this table with the main Propel class.
|
||||
//
|
||||
Beds24ProductInfoTableMap::buildTableMap();
|
||||
45
local/Beds24/Readme.md
Normal file
45
local/Beds24/Readme.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Beds24
|
||||
|
||||
Interface avec le système de réservation Beds24
|
||||
|
||||
1) Définir dans Beds24 les différentes clefs d'API nécessaire (cf. configuration du module)
|
||||
2) Indiquer les diverses clefs d'API Beds24 dans la configuration du module
|
||||
3) Dans le back-office beds24, définir dans Settings > Properties > Link la valeur de "Notify URL" à https://votreboutique.com/beds24/notify
|
||||
4) Pour chaque produit du catalogue à gérer avec ce module, indiquer sur la fiche produit le Room ID, qui se trouve dans le B.O. Beds24, Settings > Properties > Rooms
|
||||
|
||||
Et voilà !
|
||||
|
||||
Les critères de recherche entrés par un client sur le site sont enregistrés automatiquement
|
||||
dans la session, et sont ré-affichés quand nécessaire, ça permet de conserver le contexte de recherche dans tout le site.
|
||||
|
||||
|
||||
Dès qu'une commande passée à l'état payé, les réservation qu'elle contient sont créées dans Beds24.
|
||||
Si une commande est annulée ou remboursée, la réservation est annulée dans Beds24.
|
||||
|
||||
Dans le détail de la commande figure les ID de réservation Book ID associés à la commande.
|
||||
|
||||
Boucles :
|
||||
|
||||
**beds24.availability** : Détermine les rooms disponibles entre deux dates.
|
||||
|
||||
- En entrée :
|
||||
- start_date: date de début, au format Y-m-d
|
||||
- end_date : date de fin, au format Y-m-d
|
||||
- adults : nombre d'adultes
|
||||
- children: nombre d'enfants
|
||||
- ignore_availability: si true, retourne toutes les location, même si elles ne sont pas disponibles avec les critères demandées
|
||||
- room_id: si indiqué, retourne la dispo de la location indiquée
|
||||
- product_id: si indiqué, retourne la disponibilité de la location associée à l'ID du produit fourni.
|
||||
- use_saved_search_criteria: utiliser les critères de recherche enregistrés en session (dates de debut et de fin, nombre d'adultes et d'enfants).
|
||||
|
||||
- En sortie
|
||||
- ROOM_ID: ID de la location
|
||||
- PRODUCT_ID: ID du produit associé
|
||||
- PROP_ID: ID de la property de la location
|
||||
- ROOMS_AVAIL: true si la location est dispo, false sinon
|
||||
- PRICE: prix de la location pour les critères indiqués
|
||||
- CHECK_IN: Date d'arrivée (DateTime)
|
||||
- CHECK_OUT: Date de départ (DateTime)
|
||||
- LAST_NIGHT: Date de la dernière nuitée (DateTime)
|
||||
- NUM_ADULTS: nombre d'adultes
|
||||
- NUM_CHILDREN: nombre d'enfants
|
||||
11
local/Beds24/composer.json
Normal file
11
local/Beds24/composer.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "your-vendor/beds24-module",
|
||||
"license": "LGPL-3.0+",
|
||||
"type": "thelia-module",
|
||||
"require": {
|
||||
"thelia/installer": "~1.1"
|
||||
},
|
||||
"extra": {
|
||||
"installer-name": "Beds24"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<div class="row">
|
||||
<div class="col-md-12 general-block-decorator">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 title title-without-tabs">
|
||||
{intl d='beds24.bo.default' l="Configuration Beds 24"}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{form name="beds24.form.configuration"}
|
||||
<form action="{url path="/admin/beds24/configure"}" method="post">
|
||||
{include
|
||||
file = "includes/inner-form-toolbar.html"
|
||||
hide_submit_buttons = false
|
||||
|
||||
page_url = {url path="/admin/module/Beds24"}
|
||||
close_url = {url path="/admin/modules"}
|
||||
}
|
||||
|
||||
{form_hidden_fields}
|
||||
|
||||
{if $form_error}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="alert alert-danger">{$form_error_message}</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">{render_form_field field="api_key" value=$api_key}</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="title title-without-tabs">{intl d='beds24.bo.default' l='Properties API Access keys'}</div>
|
||||
<p>{intl d='beds24.bo.default' l='Please enter here the API access key for each of your properties. You\'ll find these keys in your Beds24 account SETTINGS >> PROPERTIES >> LINK >> API Access > propKey'}</p>
|
||||
</div>
|
||||
{if $properties}
|
||||
{foreach $properties as $property}
|
||||
<div class="col-md-6">{render_form_field field="prop_key_`$property.id`" value=$property.key}</div>
|
||||
{/foreach}
|
||||
{else}
|
||||
<div class="col-md-12">
|
||||
<div class="alert alert-warning">{intl d='beds24.bo.default' l='Enter the Beds24 API Key and validate the form to get property list'}</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="title title-without-tabs">{intl d='beds24.bo.default' l='Notification URL'}</div>
|
||||
<div class="alert alert-info">
|
||||
{intl d='beds24.bo.default' l='In your Beds 24 back-office, please go to Settings > Properties > Link and set the "Notify URL" field to the following value : <strong>%url</strong>' url={url path='/beds24/notify'}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<div class="title title-without-tabs">{intl d='beds24.bo.default' l='Request Cache'}</div>
|
||||
<p>Requests to Beds24 are cached to minimize traffice and prevent throttling from Beds24 system.</p>
|
||||
<p><a href="{url path="/admin/beds24/clear-cache"}" class="btn btn-primary">Clear request cache</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{/form}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
45
local/Beds24/templates/backOffice/default/order-edit.html
Normal file
45
local/Beds24/templates/backOffice/default/order-edit.html
Normal file
@@ -0,0 +1,45 @@
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-condensed table-left-aligned">
|
||||
<caption class="clearfix">
|
||||
{intl l='Beds24 Bookings for this order' d='beds24.bo.default'}
|
||||
</caption>
|
||||
{ifloop rel="bookings"}
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{intl l="Booking description" d='beds24.bo.default'}</th>
|
||||
<th class="text-center">{intl l='Beds24 Booking ID' d='beds24.bo.default'}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{loop type="beds24.order-product-booking-data" name="bookings" order_id=$order_id}
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
{loop type="order_product" order=$ORDER_ID name="prod" id=$ORDER_PRODUCT_ID}{$TITLE}{/loop}
|
||||
{intl l="du %debut au %fin pour %adults adulte%s" debut={format_date date=$START_DATE output="date"} fin={format_date date=$END_DATE output="date"} adults=$NUM_ADULTS s=($NUM_ADULTS>1)?'s':''}
|
||||
{if $NUM_CHILDREN > 0}
|
||||
{intl l=" et %enfant enfant%s" enfant=$NUM_CHILDREN s=($NUM_CHILDREN>1)?'s':''}
|
||||
{/if}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{if $BEDS24_BOOKING_ID}
|
||||
{$BEDS24_BOOKING_ID}
|
||||
{else}
|
||||
{intl l="None" d='beds24.bo.default'}
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
{/loop}
|
||||
{/ifloop}
|
||||
|
||||
{elseloop rel="bookings"}
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="alert alert-info">{intl l='There\'s no Beds24 booking for this order.' d='beds24.bo.default'}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
{/elseloop}
|
||||
</table>
|
||||
</div>
|
||||
@@ -0,0 +1 @@
|
||||
{render_form_field field="room_id" value=$room_id}
|
||||
@@ -0,0 +1,60 @@
|
||||
{if $error}
|
||||
<div class="alert alert-error">{$error}</div>
|
||||
{else}
|
||||
{ifloop rel="disponibilites"}
|
||||
<ul class="search_results">
|
||||
{loop type="beds24.availability" name="disponibilites" start_date=$startDate end_date=$endDate adults=$adultCount children=$childCount}
|
||||
{$productPrice = $PRICE}
|
||||
|
||||
{loop type="product" name="item" id=$PRODUCT_ID}
|
||||
<li class="col-md-3">
|
||||
<a href="{$URL}" itemprop="url" tabindex="-1" class="product-image overlay">
|
||||
{ifloop rel="image_product_new" }
|
||||
<img
|
||||
{loop name="image_product_new" type="image" limit="1" product="{$ID}" force_return="true" width="310" height="196" resize_mode="crop"}
|
||||
src="{$IMAGE_URL}"
|
||||
{/loop}
|
||||
alt="Product #{$LOOP_COUNT}" >
|
||||
{/ifloop}
|
||||
{elseloop rel="image_product_new"}
|
||||
<img src="{image file='assets/dist/img/280x196.png'}" alt="Product #{$LOOP_COUNT}">
|
||||
{/elseloop}
|
||||
</a>
|
||||
|
||||
<a href="{$URL}" class="product-info">
|
||||
<h3 class="name"><span itemprop="name">{$TITLE|truncate:40}</span></h3>
|
||||
|
||||
<div class="product-price">
|
||||
{format_money number=$productPrice}
|
||||
</div>
|
||||
Prix remisé: <span class="price_remise">{format_money number=$PRICE_REMISE symbol={currency attr="symbol"}}</span>
|
||||
Remise: -<span class="remise">{$REMISE}</span>%
|
||||
Nb jours: <span class="nb_jours">{$NB_JOURS}</span> jour(s)
|
||||
|
||||
|
||||
{*<div class="short-description" itemprop="description">
|
||||
ID du produit associé: {$PRODUCT_ID}<br>
|
||||
Autres champs disponibles
|
||||
ROOM_ID: {$ROOM_ID}<br>
|
||||
PROP_ID: {$PROP_ID}<br>
|
||||
ROOMS_AVAIL: {$ROOMS_AVAIL}<br>
|
||||
PRICE: {$productPrice}<br>
|
||||
CHECK_IN: {format_date date=$CHECK_IN output="date"}<br>
|
||||
CHECK_OUT: {format_date date=$CHECK_OUT output="date"}<br>
|
||||
LAST_NIGHT: {format_date date=$LAST_NIGHT output="date"}<br>
|
||||
NUM_ADULTS: {$NUM_ADULTS}<br>
|
||||
NUM_CHILDREN: {$NUM_CHILDREN}<br>
|
||||
</div>*}
|
||||
</a>
|
||||
</li>
|
||||
{/loop}
|
||||
{/loop}
|
||||
</ul>
|
||||
{/ifloop}
|
||||
|
||||
{elseloop rel="disponibilites"}
|
||||
<div class="alert alert-info">
|
||||
{intl l="Nous n'avons trouvé aucune disponibilité avec les critères choisis." d="beds24.fo.default"}
|
||||
</div>
|
||||
{/elseloop}
|
||||
{/if}
|
||||
@@ -0,0 +1,18 @@
|
||||
{loop type="beds24.availability" name="disponibilite" product_id=$product_id start_date=$startDate end_date=$endDate adults=$adultCount children=$childCount}
|
||||
{
|
||||
"available": true,
|
||||
"error": false,
|
||||
"nbJours": "{$NB_JOURS}",
|
||||
"remise": "{$REMISE}",
|
||||
"price_remise": "{$PRICE_REMISE}",
|
||||
"formattedPriceRemise": "{format_money number=$PRICE_REMISE symbol={currency attr='symbol'}}",
|
||||
"price": "{$PRICE}",
|
||||
"formattedPrice": "{format_money number=$PRICE symbol={currency attr='symbol'}}"
|
||||
}
|
||||
{/loop}
|
||||
{elseloop rel="disponibilite"}
|
||||
{
|
||||
"available": false,
|
||||
"error": "{$error}"
|
||||
}
|
||||
{/elseloop}
|
||||
@@ -0,0 +1,78 @@
|
||||
<div class="reservations">
|
||||
{form name="beds24.form.search"}
|
||||
<form id="beds24-search-form" method="post" action="{url path="/search-availabilities"}">
|
||||
{form_hidden_fields}
|
||||
|
||||
<div class="row">
|
||||
{form_field field="start_date"}
|
||||
<div class="form-group col-md-3{if $error} has-error{/if}">
|
||||
<label class="control-label" for="{$label_attr.for}"><i class="fa fa-calendar"></i> {$label}{if $required} <span class="required">*</span>{/if}</label>
|
||||
<div class="control-input">
|
||||
<input type="text" name="{$name}" id="{$label_attr.for}" class="date-debut form-control" maxlength="255" placeholder="{$label_attr.placeholder}" value="{$value}" {if $required} aria-required="true" required{/if}{if ! $error_focus && $error} autofocus{/if}>
|
||||
{if $error }
|
||||
<span class="help-block">{$message}</span>
|
||||
{$error_focus = true}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field field="end_date"}
|
||||
<div class="form-group col-md-3{if $error} has-error{/if}">
|
||||
<label class="control-label" for="{$label_attr.for}"><i class="fa fa-calendar"></i> {$label}{if $required} <span class="required">*</span>{/if}</label>
|
||||
<div class="control-input">
|
||||
<input type="text" name="{$name}" id="{$label_attr.for}" class="date-fin form-control" maxlength="255" placeholder="{$label_attr.placeholder}" value="{$value}" {if $required} aria-required="true" required{/if}{if ! $error_focus && $error} autofocus{/if}>
|
||||
{if $error }
|
||||
<span class="help-block">{$message}</span>
|
||||
{$error_focus = true}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field field="adults"}
|
||||
<div class="form-group col-md-2{if $error} has-error{/if}">
|
||||
<label class="control-label" for="{$label_attr.for}"><i class="fa fa-male"></i> {$label}{if $required} <span class="required">*</span>{/if}</label>
|
||||
<div class="control-input">
|
||||
<select name="{$name}" id="{$label_attr.for}" class=" form-control" {if $required} aria-required="true" required{/if}{if ! $error_focus && $error} autofocus{/if}>
|
||||
{for $idx = 1 to 5}
|
||||
<option value="{$idx}"{if $value == $idx} selected{/if}>{$idx}</option>
|
||||
{/for}
|
||||
</select>
|
||||
{if $error }
|
||||
<span class="help-block">{$message}</span>
|
||||
{$error_focus = true}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field field="children"}
|
||||
<div class="form-group col-md-2{if $error} has-error{/if}">
|
||||
<label class="control-label" for="{$label_attr.for}"><i class="fa fa-child"></i> {$label}{if $required} <span class="required">*</span>{/if}</label>
|
||||
<div class="control-input">
|
||||
<select name="{$name}" id="{$label_attr.for}" class=" form-control" {if $required} aria-required="true" required{/if}{if ! $error_focus && $error} autofocus{/if}>
|
||||
{for $idx = 0 to 5}
|
||||
<option value="{$idx}"{if $value == $idx} selected{/if}>{if $idx == 0}{intl l="Aucun"}{else}{$idx}{/if}</option>
|
||||
{/for}
|
||||
</select>
|
||||
{if $error }
|
||||
<span class="help-block">{$message}</span>
|
||||
{$error_focus = true}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary" id="book-now">{intl l="Réserver maintenant"}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{/form}
|
||||
|
||||
<div id="beds24-search-results">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
<div class="reservations">
|
||||
{form name="beds24.form.search"}
|
||||
<form id="beds24-search-form" method="post" action="{url path="/search-availability/{$product}"}">
|
||||
{form_hidden_fields}
|
||||
|
||||
<div class="row">
|
||||
{form_field field="start_date"}
|
||||
<div class="form-group col-md-6{if $error} has-error{/if}">
|
||||
<label class="control-label" for="{$label_attr.for}"><i class="fa fa-calendar"></i> {$label}{if $required} <span class="required">*</span>{/if}</label>
|
||||
<div class="control-input">
|
||||
<input type="text" name="{$name}" id="{$label_attr.for}" class="date-debut form-control" maxlength="255" placeholder="{$label_attr.placeholder}" value="{$value}" {if $required} aria-required="true" required{/if}{if ! $error_focus && $error} autofocus{/if}>
|
||||
{if $error }
|
||||
<span class="help-block">{$message}</span>
|
||||
{$error_focus = true}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field field="end_date"}
|
||||
<div class="form-group col-md-6{if $error} has-error{/if}">
|
||||
<label class="control-label" for="{$label_attr.for}"><i class="fa fa-calendar"></i> {$label}{if $required} <span class="required">*</span>{/if}</label>
|
||||
<div class="control-input">
|
||||
<input type="text" name="{$name}" id="{$label_attr.for}" class="date-fin form-control" maxlength="255" placeholder="{$label_attr.placeholder}" value="{$value}" {if $required} aria-required="true" required{/if}{if ! $error_focus && $error} autofocus{/if}>
|
||||
{if $error }
|
||||
<span class="help-block">{$message}</span>
|
||||
{$error_focus = true}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field field="adults"}
|
||||
<div class="form-group col-md-6{if $error} has-error{/if}">
|
||||
<label class="control-label" for="{$label_attr.for}"><i class="fa fa-male"></i> {$label}{if $required} <span class="required">*</span>{/if}</label>
|
||||
<div class="control-input">
|
||||
<select name="{$name}" id="{$label_attr.for}" class=" form-control" {if $required} aria-required="true" required{/if}{if ! $error_focus && $error} autofocus{/if}>
|
||||
{for $idx = 1 to 5}
|
||||
<option value="{$idx}"{if $value == $idx} selected{/if}>{$idx}</option>
|
||||
{/for}
|
||||
</select>
|
||||
{if $error }
|
||||
<span class="help-block">{$message}</span>
|
||||
{$error_focus = true}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field field="children"}
|
||||
<div class="form-group col-md-6{if $error} has-error{/if}">
|
||||
<label class="control-label" for="{$label_attr.for}"><i class="fa fa-child"></i> {$label}{if $required} <span class="required">*</span>{/if}</label>
|
||||
<div class="control-input">
|
||||
<select name="{$name}" id="{$label_attr.for}" class=" form-control" {if $required} aria-required="true" required{/if}{if ! $error_focus && $error} autofocus{/if}>
|
||||
{for $idx = 0 to 5}
|
||||
<option value="{$idx}"{if $value == $idx} selected{/if}>{if $idx == 0}{intl l="Aucun"}{else}{$idx}{/if}</option>
|
||||
{/for}
|
||||
</select>
|
||||
{if $error }
|
||||
<span class="help-block">{$message}</span>
|
||||
{$error_focus = true}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
<div class="col-md-12 text-center">
|
||||
<button type="submit" class="btn btn-info">{intl l="Vérifier la disponibilité"}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{/form}
|
||||
|
||||
<div id="beds24-search-results"></div>
|
||||
</div>
|
||||
@@ -0,0 +1,63 @@
|
||||
<script>
|
||||
$(function() {
|
||||
flatpickr.localize(flatpickr.l10ns.{lang attr="code"});
|
||||
|
||||
var startPicker, endPicker, flatpickrOptions = {
|
||||
enableTime: false,
|
||||
dateFormat: "Y-m-d",
|
||||
minDate: "today",
|
||||
allowInput: true,
|
||||
altFormat: "l j F Y",
|
||||
altInput: true
|
||||
};
|
||||
|
||||
endPicker = flatpickr(".date-fin", flatpickrOptions);
|
||||
|
||||
flatpickrOptions.onChange = function(selectedDates) {
|
||||
endPicker.set('minDate', selectedDates[0]);
|
||||
};
|
||||
|
||||
startPicker = flatpickr(".date-debut", flatpickrOptions);
|
||||
|
||||
$('#beds24-search-form').submit(function(ev) {
|
||||
var $zeForm = $(this);
|
||||
|
||||
ev.preventDefault();
|
||||
|
||||
$('#form-product-details').hide();
|
||||
$('#not-available').hide();
|
||||
$('.price').html('');
|
||||
|
||||
setSearchInfoHtml('<div class="well well-sm">{intl l='Nous recherchons les disponibilités...' js=1}</div>');
|
||||
|
||||
$.ajax({
|
||||
url: $zeForm.attr('action'),
|
||||
data: $zeForm.serialize(),
|
||||
method: $zeForm.attr('method'),
|
||||
dataType: 'json',
|
||||
success: function (jsonData) {
|
||||
console.log(jsonData);
|
||||
|
||||
setSearchInfoHtml('');
|
||||
|
||||
if (jsonData.available === true) {
|
||||
$('#form-product-details').show();
|
||||
$('.price').html(jsonData.formattedPrice);
|
||||
$('.remise').html(jsonData.remise);
|
||||
$('.price_remise').html(jsonData.formattedPriceRemise);
|
||||
$('.nb_jours').html(jsonData.nbJours);
|
||||
} else {
|
||||
$('#not-available').show();
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
setSearchInfoHtml('<div class="alert alert-danger">{intl l='Désolé, quelque chose n\'a pas fonctionné. Merci de ré-essayer.' js=1}</div>');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function setSearchInfoHtml(htmlText) {
|
||||
$('#beds24-search-results').html(htmlText);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,46 @@
|
||||
<script>
|
||||
$(function() {
|
||||
flatpickr.localize(flatpickr.l10ns.{lang attr="code"});
|
||||
|
||||
var startPicker, endPicker, flatpickrOptions = {
|
||||
enableTime: false,
|
||||
dateFormat: "Y-m-d",
|
||||
minDate: "today",
|
||||
allowInput: true,
|
||||
altFormat: "l j F Y",
|
||||
altInput: true
|
||||
};
|
||||
|
||||
endPicker = flatpickr(".date-fin", flatpickrOptions);
|
||||
|
||||
flatpickrOptions.onChange = function(selectedDates) {
|
||||
endPicker.set('minDate', selectedDates[0]);
|
||||
};
|
||||
|
||||
startPicker = flatpickr(".date-debut", flatpickrOptions);
|
||||
|
||||
$('#beds24-search-form').submit(function(ev) {
|
||||
var $zeForm = $(this);
|
||||
|
||||
ev.preventDefault();
|
||||
|
||||
setSearchResultHtml('<div class="well well-sm">{intl l='Nous recherchons les disponibilités...' js=1}</div>');
|
||||
|
||||
$.ajax({
|
||||
url: $zeForm.attr('action'),
|
||||
data: $zeForm.serialize(),
|
||||
method: $zeForm.attr('method'),
|
||||
success: function (htmlData) {
|
||||
setSearchResultHtml(htmlData);
|
||||
},
|
||||
error: function () {
|
||||
setSearchResultHtml('<div class="alert alert-danger">{intl l='Désolé, quelque chose n\'a pas fonctionné. Merci de ré-essayer.' js=1}</div>');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function setSearchResultHtml(htmlText) {
|
||||
$('#beds24-search-results').html(htmlText);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
28
local/Beds24/templates/frontOffice/default/test-beds24.html
Normal file
28
local/Beds24/templates/frontOffice/default/test-beds24.html
Normal file
@@ -0,0 +1,28 @@
|
||||
{* Parametres par defaut *}
|
||||
{$startDispDate = "next monday"|date_format:"%d/%m"}
|
||||
{$endDispDate = "next monday +5 days"|date_format:"%d/%m"}
|
||||
|
||||
{$startDate = "next monday"|date_format:'%d/%m/%Y'}
|
||||
{$endDate = "next monday +5 days"|date_format:"%d/%m/%Y"}
|
||||
{$adultes = 1}
|
||||
{$enfants = 0}
|
||||
|
||||
<p>{intl l="Réserver du %debut au %fin pour %adults adulte%plur" debut=$startDispDate fin=$endDispDate adults=$adultes plur={($adultes>1)?'s':''}}</p>
|
||||
|
||||
{loop type="beds24.availability" name="disponibilites" start_date=$startDate end_date=$endDate adults=$adultes children=$enfants}
|
||||
<ul>
|
||||
<li>ROOM_ID: {$ROOM_ID}</li>
|
||||
<li>PRODUCT_ID: {$PRODUCT_ID}</li>
|
||||
<li>PROP_ID: {$PROP_ID}</li>
|
||||
<li>ROOMS_AVAIL: {$ROOMS_AVAIL}</li>
|
||||
<li>PRICE: {$PRICE}</li>
|
||||
<li>CHECK_IN: {format_date date=$CHECK_IN output="date"}</li>
|
||||
<li>CHECK_OUT: {format_date date=$CHECK_OUT output="date"}</li>
|
||||
<li>LAST_NIGHT: {format_date date=$LAST_NIGHT output="date"}</li>
|
||||
<li>NUM_ADULTS: {$NUM_ADULTS}</li>
|
||||
<li>NUM_CHILDREN: {$NUM_CHILDREN}</li>
|
||||
</ul>
|
||||
{/loop}
|
||||
{elseloop rel="disponibilites"}
|
||||
<p>Y'a rien de dispo !</p>
|
||||
{/elseloop}
|
||||
Reference in New Issue
Block a user