Append utm parameter to urls in google business feed
This commit is contained in:
@@ -95,7 +95,12 @@ class ResellerController extends ActionController
|
||||
public function copypasteAction(Reseller $reseller, Product $product)
|
||||
{
|
||||
if (!$reseller->getProducts()->contains($product)) {
|
||||
$this->redirect('list', null, null, [ 'reseller' => $reseller ]);
|
||||
$this->redirect(
|
||||
'list',
|
||||
null,
|
||||
null,
|
||||
[ 'reseller' => $reseller ]
|
||||
);
|
||||
}
|
||||
|
||||
$productData = $this->resellerDataService->preprocessSingle($product, $reseller);
|
||||
@@ -126,7 +131,11 @@ class ResellerController extends ActionController
|
||||
header('Expires: 0');
|
||||
header('Pragma: public');
|
||||
|
||||
echo $serializer->serialize($data, 'xml', [ 'xml_encoding' => 'utf-8', 'xml_format_output' => true ]);
|
||||
echo $serializer->serialize(
|
||||
$data,
|
||||
'xml',
|
||||
[ 'xml_encoding' => 'utf-8', 'xml_format_output' => true ]
|
||||
);
|
||||
|
||||
exit();
|
||||
}
|
||||
@@ -143,7 +152,11 @@ class ResellerController extends ActionController
|
||||
throw new InvalidArgumentValueException();
|
||||
}
|
||||
|
||||
$data = $this->resellerDataService->preprocessAll($reseller, static::$imageDimensions[$type]);
|
||||
$data = $this->resellerDataService->preprocessAll(
|
||||
$reseller,
|
||||
static::$imageDimensions[$type],
|
||||
$type
|
||||
);
|
||||
|
||||
$filename = sprintf('export_%s_%s.csv', $reseller->getCode(), date('Y-m-d'));
|
||||
|
||||
|
||||
@@ -35,12 +35,14 @@ class Product
|
||||
/**
|
||||
* @param \EP\EpProducts\Domain\Model\Product $entity
|
||||
* @param array $imageProcessingInstructions
|
||||
* @param array $queryData
|
||||
* @return array
|
||||
*/
|
||||
public static function fromEntity
|
||||
(
|
||||
\EP\EpProducts\Domain\Model\Product $entity,
|
||||
array $imageProcessingInstructions = null
|
||||
array $imageProcessingInstructions = null,
|
||||
array $queryData = []
|
||||
)
|
||||
{
|
||||
$product = [
|
||||
@@ -75,7 +77,7 @@ class Product
|
||||
$product['video'] = $entity->getVideo();
|
||||
|
||||
$link = $entity->getExternalLink() ?: $entity->getDetailPage();
|
||||
$product['link'] = SerializationUtility::generateLink($link);
|
||||
$product['link'] = SerializationUtility::generateLink($link, $queryData);
|
||||
|
||||
$product['region'] = Region::fromEntity($entity->getRegion());
|
||||
$product['city'] = City::fromEntity($entity->getCity());
|
||||
|
||||
@@ -32,6 +32,8 @@ use EP\EpProducts\Domain\Model\Product;
|
||||
use EP\EpProducts\Domain\Model\Reseller;
|
||||
use EP\EpProducts\Domain\Repository\ProductRepository;
|
||||
use EP\EpProducts\Domain\Serialization\Date;
|
||||
use EP\EpProducts\Domain\Serialization\Hotel as SerializedHotel;
|
||||
use EP\EpProducts\Domain\Serialization\Product as SerializedProduct;
|
||||
use EP\EpProducts\Domain\Serialization\Room;
|
||||
use EP\EpProducts\Traits\DbConnectionTrait;
|
||||
use EP\EpProducts\Utility\BookingUrlUtility;
|
||||
@@ -58,10 +60,11 @@ class ResellerDataService implements SingletonInterface
|
||||
/**
|
||||
* @param Reseller $reseller
|
||||
* @param array $imageProcessingInstructions
|
||||
* @param string $type
|
||||
* @return array
|
||||
* @throws \Doctrine\DBAL\DBALException
|
||||
*/
|
||||
public function preprocessAll(Reseller $reseller, array $imageProcessingInstructions = null)
|
||||
public function preprocessAll(Reseller $reseller, array $imageProcessingInstructions = null, $type = 'facebook')
|
||||
{
|
||||
$data = [];
|
||||
$products = $reseller->getProducts();
|
||||
@@ -69,7 +72,12 @@ class ResellerDataService implements SingletonInterface
|
||||
foreach ($products as $product)
|
||||
{
|
||||
/** @var Product $product */
|
||||
$data['product'][] = $this->preprocessSingle($product, $reseller, $imageProcessingInstructions);
|
||||
$data['product'][] = $this->preprocessSingle(
|
||||
$product,
|
||||
$reseller,
|
||||
$imageProcessingInstructions,
|
||||
$type
|
||||
);
|
||||
}
|
||||
|
||||
return $data;
|
||||
@@ -79,12 +87,28 @@ class ResellerDataService implements SingletonInterface
|
||||
* @param Product $product
|
||||
* @param Reseller $reseller
|
||||
* @param array $imageProcessingInstructions
|
||||
* @param string $type
|
||||
* @return array
|
||||
* @throws \Doctrine\DBAL\DBALException
|
||||
*/
|
||||
public function preprocessSingle(Product $product, Reseller $reseller, array $imageProcessingInstructions = null)
|
||||
{
|
||||
$data = \EP\EpProducts\Domain\Serialization\Product::fromEntity($product, $imageProcessingInstructions);
|
||||
public function preprocessSingle(
|
||||
Product $product,
|
||||
Reseller $reseller,
|
||||
array $imageProcessingInstructions = null,
|
||||
$type = 'facebook'
|
||||
) {
|
||||
$queryData = $type !== 'google' ? [] : [
|
||||
'utm_source' => 'google',
|
||||
'utm_medium' => 'cpc',
|
||||
'utm_campaign' => 'dynamisches-remarketing',
|
||||
'utm_content' => $product->getName(),
|
||||
];
|
||||
|
||||
$data = SerializedProduct::fromEntity(
|
||||
$product,
|
||||
$imageProcessingInstructions,
|
||||
$queryData
|
||||
);
|
||||
|
||||
$hotels = $product->getHotels();
|
||||
$paCode = $reseller->getPaCode();
|
||||
@@ -92,7 +116,7 @@ class ResellerDataService implements SingletonInterface
|
||||
foreach ($hotels as $hotel)
|
||||
{
|
||||
/** @var Hotel $hotel */
|
||||
$hotelData = \EP\EpProducts\Domain\Serialization\Hotel::fromEntity($hotel);
|
||||
$hotelData = SerializedHotel::fromEntity($hotel);
|
||||
$dates = $this->productRepository->getDatesForExport($product, $hotel);
|
||||
$hotelData['dates']['date'] = $this->preprocessDates($dates, $paCode);
|
||||
$data['hotels']['hotel'][] = $hotelData;
|
||||
|
||||
@@ -89,16 +89,25 @@ class SerializationUtility
|
||||
|
||||
/**
|
||||
* @param string $parameter
|
||||
* @param array $queryData
|
||||
* @return string
|
||||
*/
|
||||
public static function generateLink($parameter)
|
||||
public static function generateLink($parameter, array $queryData = [])
|
||||
{
|
||||
if (static::$contentObject === null) {
|
||||
/** @var ContentObjectRenderer $contentObject */
|
||||
static::$contentObject = GeneralUtility::makeInstance(ContentObjectRenderer::class);
|
||||
}
|
||||
|
||||
return static::$contentObject->typoLink_URL([ 'parameter' => $parameter, 'forceAbsoluteUrl' => true ]);
|
||||
$url = static::$contentObject->typoLink_URL([ 'parameter' => $parameter, 'forceAbsoluteUrl' => true ]);
|
||||
|
||||
if ($queryData) {
|
||||
$query = http_build_query($queryData);
|
||||
$divider = strpos($url, '?') !== false ? '&' : '?';
|
||||
$url .= $divider . urlencode($query);
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user