<?php
/**
* Contao Open Source CMS
*
* Copyright (c) 2005-2014 Leo Feyer
*
* @package hideaway
* @author hideaway
* @license hideaway
* @copyright hideaway
*/
/**
* Namespace
*/
namespace hideaway;
/**
* Class Hideaway
*
* @copyright hideaway
* @author hideaway
* @package Devtools
*/
class Hideaway extends \Backend
{
/**
* Template
* @var string
*/
protected $strTemplate = '';
public function __construct()
{
parent::__construct();
}
public function generateAlias($varValue, \DataContainer $dc)
{
$autoAlias = false;
// Generate an alias if there is none
if ($varValue == '')
{
$autoAlias = true;
$varValue = standardize(\StringUtil::restoreBasicEntities($dc->activeRecord->title));
}
$objAlias = $this->Database->prepare("SELECT id FROM ".$dc->table." WHERE alias=?")
->execute($varValue);
// Check whether the page alias exists
if ($objAlias->numRows > 1)
{
$varValue .= '-' . $dc->id;
}
return $varValue;
}
public function getCombiOptions()
{
$ret = array('0'=>'');
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_hotel WHERE published=1 ORDER BY title")
->execute();
while($obj->next())
{
$ret['h_'.$obj->id] = 'Hotel: '.$obj->title;
}
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_travel WHERE published=1 ORDER BY title")
->execute();
while($obj->next())
{
$ret['t_'.$obj->id] = 'Reise: '.$obj->title;
}
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_trip WHERE published=1 ORDER BY title")
->execute();
while($obj->next())
{
$ret['tr_'.$obj->id] = 'Ausflug: '.$obj->title;
}
return $ret;
}
public function getNavigation($countryPage, $regionPage)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_country WHERE published=1 ORDER BY sorting")
->execute();
$objParent = \PageModel::findById($countryPage);
while ($obj->next())
{
$row = $obj->row();
$t = array(
'row' => $row,
// 'url' => $this->generateFrontendUrl($objParent->row(), ($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'], $objParent->language),
'url' => '/reisen/'.$row['alias'].'/',
'regions' => $this->getRegionNavigation($regionPage, $row['id'], $row['alias'])
);
if($obj->single_region > 0)
$t['regions'] = array();
array_push($ret, $t);
}
return $ret;
}
public function getFilter()
{
$regions = array();
$types = array();
/*
if(!$this->Input->cookie('ceFilterBaseUri'))
\System::setCookie('ceFilterBaseUri', $this->Environment->requestUri, 86400000);
*/
$objRegion = $this->Database->prepare(" SELECT region.*, country.title as country_title
FROM tl_hideaway_region as region, tl_hideaway_country as country
WHERE country.id=region.country AND region.published=1
ORDER BY region.country, region.title")
->execute();
while ($objRegion->next())
{
$row = $objRegion->row();
array_push($regions, array(
'row' => $row,
'url' => $this->Input->cookie('ceFilterBaseUri').($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'].'/',
'data-filter' => 'region_id_'.$row['id']
)
);
}
foreach ($GLOBALS['hideaway']['types'] as $key => $value )
{
array_push($types, array(
'title' => $value['title'],
'url' => $this->Input->cookie('ceFilterBaseUri').'type/'.$key.'/',
'data-filter' => $key
)
);
}
$ret['regions'] = $regions;
$ret['types'] = $types;
return $ret;
}
public function getNavigationExperience($jumpToPage, $filter_target=false)
{
$ret = array();
if ($filter_target)
{
// Get target alias for prefiltering
$obj = $this->Database->prepare("SELECT alias FROM tl_hideaway_target WHERE id=?")
->execute($filter_target);
$row = $obj->row();
$targetAlias = $row['alias'];
}
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_experience WHERE published=1 ORDER BY title")
->execute();
$objParent = \PageModel::findById($jumpToPage);
while ($obj->next())
{
$row = $obj->row();
$preview_image = \FilesModel::findByUuid($row['preview_image']);
$page_image = \FilesModel::findByUuid($row['pageimage']);
if ($targetAlias)
{
$url = $this->generateFrontendUrl($objParent->row(), '/erlebnis/'.$row['alias'].'/gruppe/'.$targetAlias, $objParent->language);
$url = '/reiseerlebnis/'.$row['alias'].'/gruppe/'.$targetAlias.'/';
}
else
{
$url = $this->generateFrontendUrl($objParent->row(), '/erlebnis/'.$row['alias'], $objParent->language);
$url = '/reiseerlebnis/'.$row['alias'].'/';
}
array_push($ret, array(
'row' => $row,
'url' => $url,
'preview_image_path'=>$preview_image->path,
'preview_image_meta' => unserialize($preview_image->meta),
'page_image_path'=>$page_image->path,
'page_image_meta' => unserialize($page_image->meta)
)
);
}
return $ret;
}
public function getRegionNavigation($regionPage, $countryId, $countryAlias)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_region WHERE published=1 AND country=? ORDER BY title")
->execute($countryId);
$objParentRegion = \PageModel::findById($regionPage);
while ($obj->next())
{
$row = $obj->row();
array_push($ret, array(
'row' => $row,
// 'url' => $this->generateFrontendUrl($objParentRegion->row(), ($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'], $objParent->language)
'url' => '/reisen/'.$countryAlias.'/'.$row['alias'].'/'
)
);
}
return $ret;
}
public function getCountryList($jumpToPage)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_country WHERE published=1 ORDER BY sorting")
->execute();
$objParent = \PageModel::findById($jumpToPage);
while ($obj->next())
{
$row = $obj->row();
$preview_image = \FilesModel::findByUuid($row['preview_image']);
$page_image = \FilesModel::findByUuid($row['pageimage']);
array_push($ret, array(
'row' => $row,
// 'url' => $this->generateFrontendUrl($objParent->row(), ($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'], $objParent->language),
'url' => '/reisen/'.$row['alias'].'/',
'preview_image_path'=>$preview_image->path,
'preview_image_meta' => unserialize($preview_image->meta),
'page_image_path'=>$page_image->path,
'page_image_meta' => unserialize($page_image->meta)
)
);
}
return $ret;
}
public function getTargetList($jumpToPage)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_target WHERE published=1 ORDER BY title")
->execute();
$objParent = \PageModel::findById($jumpToPage);
while ($obj->next())
{
$row = $obj->row();
if ($row['jumpto_target'])
{
$objParent = \PageModel::findById($row['jumpto_target']);
$url = $this->generateFrontendUrl($objParent->row(), false, $objParent->language);
}
else
{
$url = $this->generateFrontendUrl($objParent->row(), '/gruppe/'.$row['alias'], $objParent->language);
}
$preview_image = \FilesModel::findByUuid($row['preview_image']);
$page_image = \FilesModel::findByUuid($row['pageimage']);
array_push($ret, array(
'row' => $row,
'url' => $url,
'preview_image_path'=>$preview_image->path,
'preview_image_meta' => unserialize($preview_image->meta),
'page_image_path'=>$page_image->path,
'page_image_meta' => unserialize($page_image->meta)
)
);
}
return $ret;
}
public function getList($page=1,$limit=5, $types=array(), $targets=array(), $region=false, $feature=false, $target=false, $experience=false, $highlight=false)
{
//var_dump($GLOBALS['hideaway']['hotel_reader_id']);
$ret = array();
$cnt = 0;
$pages = 1;
/*$obj = $this->Database->prepare("SELECT COUNT(id) as cnt FROM tl_admk_event WHERE published=1")
->execute();
if($obj->next())
{
$r = $obj->row();
$cnt = $r['cnt'];
$pages = ceil($cnt/$limit);
}*/
// HOTELS
if(in_array('hotel', $types))
{
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_hotel WHERE published=1 ORDER BY title")
->execute();
$objParent = \PageModel::findById($GLOBALS['hideaway']['hotel_reader_id']);
while ($obj->next())
{
$row = $obj->row();
$t = array('row'=>$row, 'type'=>'hotel');
$objModel = \FilesModel::findByUuid($row['image']);
$t['image_path'] = $objModel->path;
$t['image_meta'] = unserialize($objModel->meta);
// $t['url'] = $this->generateFrontendUrl($objParent->row(), ($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'], $objParent->language);
$t['url'] = $this->generateUrl($row, 'hotel');
if ($targets)
{
foreach ($targets as $target)
{
if ($highlight)
{
$highlight_targets = unserialize($row['highlight']);
if ($highlight_targets)
{
if (in_array($target, $highlight_targets))
{
$ret[] = $t;
break;
}
}
}
else
{
if (in_array($target, unserialize($row['targets'])))
{
$ret[] = $t;
break;
}
}
}
}
else $ret[] = $t;
}
}
// TRAVELS
if(in_array('travel', $types))
{
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_travel WHERE published=1 ORDER BY title")
->execute();
$objParent = \PageModel::findById($GLOBALS['hideaway']['travel_reader_id']);
while ($obj->next())
{
$row = $obj->row();
$t = array('row'=>$row, 'type'=>'travel');
$objModel = \FilesModel::findByUuid($row['image']);
$t['image_path'] = $objModel->path;
$t['image_meta'] = unserialize($objModel->meta);
// $t['url'] = $this->generateFrontendUrl($objParent->row(), ($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'], $objParent->language);
$t['url'] = $this->generateUrl($row, 'travel');
if ($targets)
{
foreach ($targets as $target)
{
if ($highlight)
{
$highlight_targets = unserialize($row['highlight']);
if ($highlight_targets)
{
if (in_array($target, $highlight_targets))
{
$ret[] = $t;
break;
}
}
}
else
{
if (in_array($target, unserialize($row['targets'])))
{
$ret[] = $t;
break;
}
}
}
}
else $ret[] = $t;
}
}
// TRIPS
if(in_array('trip', $types))
{
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_trip WHERE published=1 ORDER BY title")
->execute();
$objParent = \PageModel::findById($GLOBALS['hideaway']['trip_reader_id']);
while ($obj->next())
{
$row = $obj->row();
$t = array('row'=>$row, 'type'=>'trip');
$objModel = \FilesModel::findByUuid($row['image']);
$t['image_path'] = $objModel->path;
$t['image_meta'] = unserialize($objModel->meta);
// $t['url'] = $this->generateFrontendUrl($objParent->row(), ($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'], $objParent->language);
$t['url'] = $this->generateUrl($row, 'trip');
if ($targets)
{
foreach ($targets as $target)
{
if ($highlight)
{
$highlight_targets = unserialize($row['highlight']);
if ($highlight_targets)
{
if (in_array($target, $highlight_targets))
{
$ret[] = $t;
break;
}
}
}
else
{
if (in_array($target, unserialize($row['targets'])))
{
$ret[] = $t;
break;
}
}
}
}
else $ret[] = $t;
}
}
// COMBIS
if(in_array('combi', $types))
{
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_combis WHERE published=1 ORDER BY title")
->execute();
$objParent = \PageModel::findById($GLOBALS['hideaway']['combi_reader_id']);
while ($obj->next())
{
$row = $obj->row();
$t = array('row'=>$row, 'type'=>'combi');
$objModel = \FilesModel::findByUuid($row['image']);
$t['image_path'] = $objModel->path;
$t['image_meta'] = unserialize($objModel->meta);
$t['url'] = $this->generateFrontendUrl($objParent->row(), ($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'], $objParent->language);
if ($targets)
{
foreach ($targets as $target)
{
if ($highlight)
{
$highlight_targets = unserialize($row['highlight']);
if ($highlight_targets)
{
if (in_array($target, $highlight_targets))
{
$ret[] = $t;
break;
}
}
}
else
{
if (in_array($target, unserialize($row['targets'])))
{
$ret[] = $t;
break;
}
}
}
}
else $ret[] = $t;
}
}
if($feature)
{
$features = explode(",", $feature);
foreach($features as $feature)
{
$feat = $this->getFeature($feature);
foreach($ret as $k=>$val)
{
$fs = unserialize($val['row']['features']);
if(is_array($fs))
{
if(!in_array($feat['id'], $fs))
{
unset($ret[$k]);
}
}
else unset($ret[$k]);
}
}
}
if($experience)
{
$experiences = explode(",", $experience);
foreach($experiences as $experience)
{
$feat = $this->getExperience($experience);
foreach($ret as $k=>$val)
{
$fs = unserialize($val['row']['experiences']);
if(is_array($fs))
{
if(!in_array($feat['id'], $fs))
{
unset($ret[$k]);
}
}
else unset($ret[$k]);
}
}
}
if($region)
{
$regions = explode(",", $region);
foreach($regions as $region)
{
$feat = $this->getRegion($region);
foreach($ret as $k=>$val)
{
// echo $val['row']['title'].' / '.$val['row']['region'].' !== '.$feat.'<br>';
if($val['row']['region'] !== $feat['id']) unset($ret[$k]);
}
}
}
if($target)
{
$targets = explode(",", $target);
foreach($targets as $target)
{
$feat = $this->getTarget($target);
foreach($ret as $k=>$val)
{
$fs = unserialize($val['row']['targets']);
if(is_array($fs))
{
if(!in_array($feat['id'], $fs))
{
unset($ret[$k]);
}
}
else unset($ret[$k]);
}
}
}
return array('objs'=>$ret, 'cnt'=>1, 'pages'=>1, 'page'=>1);
}
public function getFeature($id=0)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_feature WHERE published=1 AND id = ? OR alias = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
return $row;
}
return false;
}
public function getTarget($id=0)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_target WHERE published=1 AND id = ? OR alias = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
return $row;
}
return false;
}
public function getTargetIdByInternalAlias($alias='')
{
$obj = $this->Database->prepare("SELECT id FROM tl_hideaway_target WHERE internal_alias=?")
->execute($alias);
if ($obj->next())
{
$row = $obj->row();
return $row['id'];
}
return false;
}
public function getRegion($id=0)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_region WHERE published=1 AND id = ? OR alias = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
return $row;
}
return false;
}
public function getExperience($id=0)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_experience WHERE published=1 AND id = ? OR alias = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
return $row;
}
return false;
}
public function getHotelEntry($id=0, $bGallery = false)
{
$obj = $this->Database->prepare("SELECT * FROM tl_page WHERE id = ?")
->execute($GLOBALS['hideaway']['hotel_reader_id']);
$obj->next();
$url = $obj->alias;
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_hotel WHERE published=1 AND id = ? OR alias = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
$objModel = \FilesModel::findByUuid($row['image']);
$ret = array(
'row' => $row,
'image_path' => $objModel->path,
'image_meta' => unserialize($objModel->meta),
// 'url' => $url.($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$obj->alias.'/',
'url' => $this->generateUrl($row, 'hotel'),
'gallery' => false,
'breadcrumb' => $this->getBreadcrumb($row)
);
if($bGallery && $row['images'])
{
$ret['gallery'] = $this->getGallery($row);
}
return $ret;
}
return false;
}
private function getGallery($row)
{
$a = unserialize($row['images']);
$gal = array();
foreach($a as $i=>$im)
{
$fi = \FilesModel::findByUuid($im);
if($fi->path)
{
//var_dump($fi->path);
array_push($gal, array(
'uuid'=>$im,
'path' => $fi->path,
'meta' => unserialize($fi->meta)
)
);
}
}
$tmp = deserialize($row['orderSRC']);
if(is_array($tmp))
{
$tmpGal = array();
foreach($tmp as $tid)
{
foreach($gal as $k=>$v)
{
if($v['uuid']==$tid)
{
$tmpGal[] = $v;
}
}
}
$gal = $tmpGal;//$gal;
}
return $gal;
}
public function getCombiEntry($id=0, $bGallery = false)
{
$obj = $this->Database->prepare("SELECT * FROM tl_page WHERE id = ?")
->execute($GLOBALS['hideaway']['combi_reader_id']);
$obj->next();
$url = $obj->alias;
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_combis WHERE published=1 AND id = ? OR alias = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
$row['regions'] = unserialize($row['regions']);
$objModel = \FilesModel::findByUuid($row['image']);
$ret = array(
'row' => $row,
'image_path' => $objModel->path,
'image_meta' => unserialize($objModel->meta),
'url' => $url.($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$obj->alias.'/',
'breadcrumb' => $this->getBreadcrumb($row)
);
if($bGallery && $row['images'])
{
$ret['gallery'] = $this->getGallery($row);
}
return $ret;
}
return false;
}
public function getTravelEntry($id=0, $bGallery = false)
{
$obj = $this->Database->prepare("SELECT * FROM tl_page WHERE id = ?")
->execute($GLOBALS['hideaway']['travel_reader_id']);
$obj->next();
$url = $obj->alias;
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_travel WHERE published=1 AND id = ? OR alias = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
$row['regions'] = unserialize($row['regions']);
$objModel = \FilesModel::findByUuid($row['image']);
$ret = array(
'row' => $row,
'image_path' => $objModel->path,
'image_meta' => unserialize($objModel->meta),
// 'url' => $url.($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$obj->alias.'/',
'url' => $this->generateUrl($row, 'travel'),
'breadcrumb' => $this->getBreadcrumb($row)
);
if($bGallery && $row['images'])
{
$ret['gallery'] = $this->getGallery($row);
}
return $ret;
}
return false;
}
public function iEntry($id=0, $bGallery = false)
{
$obj = $this->Database->prepare("SELECT * FROM tl_page WHERE id = ?")
->execute($GLOBALS['hideaway']['combi_reader_id']);
$obj->next();
$url = $obj->alias;
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_combis WHERE published=1 AND id = ? OR alias = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
$row['regions'] = unserialize($row['regions']);
$objModel = \FilesModel::findByUuid($row['image']);
$ret = array(
'row' => $row,
'image_path' => $objModel->path,
'image_meta' => unserialize($objModel->meta),
'url' => $url.($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$obj->alias.'/',
'breadcrumb' => $this->getBreadcrumb($row)
);
if($bGallery && $row['images'])
{
$ret['gallery'] = $this->getGallery($row);
}
return $ret;
}
return false;
}
public function getTripEntry($id=0, $bGallery = false)
{
$obj = $this->Database->prepare("SELECT * FROM tl_page WHERE id = ?")
->execute($GLOBALS['hideaway']['trip_reader_id']);
$obj->next();
$url = $obj->alias;
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_trip WHERE published=1 AND id = ? OR alias = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
$row['regions'] = unserialize($row['regions']);
$objModel = \FilesModel::findByUuid($row['image']);
$ret = array(
'row' => $row,
'image_path' => $objModel->path,
'image_meta' => unserialize($objModel->meta),
// 'url' => $url.($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$obj->alias.'/',
'url' => $this->generateUrl($row, 'trip'),
'breadcrumb' => $this->getBreadcrumb($row)
);
if($bGallery && $row['images'])
{
$ret['gallery'] = $this->getGallery($row);
}
return $ret;
}
return false;
}
public function getCountryEntry($id=0)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_country WHERE published=1 AND id = ?")
->execute($id);
if ($obj->next())
{
$row = $obj->row();
$objModel = \FilesModel::findByUuid($row['pageimage']);
$ret = array(
'row' => $row,
'image_path' => $objModel->path,
'image_meta' => unserialize($objModel->meta),
);
return $ret;
}
return false;
}
public function getRegionEntry($id=0)
{
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_region WHERE published=1 AND id = ?")
->execute($id, $id);
if ($obj->next())
{
$row = $obj->row();
$objModel = \FilesModel::findByUuid($row['pageimage']);
$ret = array(
'row' => $row,
'image_path' => $objModel->path,
'image_meta' => unserialize($objModel->meta)
);
return $ret;
}
return false;
}
public function getRegionByUrl()
{
$alias = $this->Input->get('items');
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_region WHERE published=1 AND alias = ?")
->execute($alias);
if ($obj->next())
{
$row = $obj->row();
$map = \FilesModel::findByUuid($row['map']);
$image = \FilesModel::findByUuid($row['pageimage']);
$ret = array(
'row' => $row,
'map_path' => $map->path,
'map_meta' => unserialize($map->meta),
'image_path' => $image->path,
'image_meta' => unserialize($image->meta),
'breadcrumb' => $this->getRegionBreadcrumb($row)
);
return $ret;
}
return false;
}
public function getCountryByUrl()
{
$alias = $this->Input->get('items');
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_country WHERE published=1 AND alias = ?")
->execute($alias);
if ($obj->next())
{
$row = $obj->row();
$map = \FilesModel::findByUuid($row['map']);
$image = \FilesModel::findByUuid($row['pageimage']);
$ret = array(
'row' => $row,
'map_path' => $map->path,
'map_meta' => unserialize($map->meta),
'image_path'=>$image->path,
'image_meta' => unserialize($image->meta),
'breadcrumb' => $this->getCountryBreadcrumb($row)
);
return $ret;
}
return false;
}
public function getExperienceByUrl()
{
$alias = $this->Input->get('erlebnis');
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_experience WHERE published=1 AND alias = ?")
->execute($alias);
if ($obj->next())
{
$row = $obj->row();
$page_image = \FilesModel::findByUuid($row['pageimage']);
$preview_image = \FilesModel::findByUuid($row['preview_image']);
$ret = array(
'row' => $row,
'map_path' => $map->path,
'map_meta' => unserialize($map->meta),
'page_image_path' => $page_image->path,
'page_image_meta' => unserialize($page_image->meta),
'preview_image_path' => $preview_image->path,
'preview_image_meta' => unserialize($preview_image->meta),
);
return $ret;
}
return false;
}
public function getTargetByUrl()
{
$alias = $this->Input->get('gruppe');
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_target WHERE published=1 AND alias = ?")
->execute($alias);
if ($obj->next())
{
$row = $obj->row();
$page_image = \FilesModel::findByUuid($row['pageimage']);
$preview_image = \FilesModel::findByUuid($row['preview_image']);
$ret = array(
'row' => $row,
'map_path' => $map->path,
'map_meta' => unserialize($map->meta),
'page_image_path' => $page_image->path,
'page_image_meta' => unserialize($page_image->meta),
'preview_image_path' => $preview_image->path,
'preview_image_meta' => unserialize($preview_image->meta),
);
return $ret;
}
return false;
}
public function getHotelsByRegionId($id)
{
if ($_COOKIE['target']) $targetId = $this->getTargetIdByInternalAlias($_COOKIE['target']);
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_hotel WHERE published=1 AND region = ?")
->execute($id);
while ($obj->next())
{
if ($targetId)
{
$targets = unserialize($obj->targets);
if ($targets)
{
if (in_array($targetId, $targets))
{
$ret[] = $this->getHotelEntry($obj->id);
}
}
}
else $ret[] = $this->getHotelEntry($obj->id);
}
return $ret;
}
public function getTravelsByRegionId($id)
{
if ($_COOKIE['target']) $targetId = $this->getTargetIdByInternalAlias($_COOKIE['target']);
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_travel WHERE published=1 AND regions LIKE ?")
->execute('%"'.$id.'"%');
while ($obj->next())
{
$addEntry = false;
if ($targetId)
{
$targets = unserialize($obj->targets);
if ($targets && in_array($targetId, $targets))
{
$addEntry = true;
}
}
else $addEntry = true;
if ($addEntry)
{
$entry = $this->getTravelEntry($obj->id);
$stations = array();
for ($i = 1; $i <= 21; $i++)
{
if ($entry['row']['day_'.$i.'_location'] != '')
{
$stations[] = array(
'pos' => $i,
'location' => $entry['row']['day_'.$i.'_location'],
'teaser' => $entry['row']['day_'.$i.'_teaser'],
);
}
}
$entry['stations'] = $stations;
$ret[] = $entry;
}
}
return $ret;
}
public function getTripsByRegionId($id)
{
if ($_COOKIE['target']) $targetId = $this->getTargetIdByInternalAlias($_COOKIE['target']);
$ret = array();
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_trip WHERE published=1 AND regions LIKE ?")
->execute('%"'.$id.'"%');
while ($obj->next())
{
if ($targetId)
{
$targets = unserialize($obj->targets);
if ($targets)
{
if (in_array($targetId, $targets))
{
$ret[] = $this->getTripEntry($obj->id);
}
}
}
else $ret[] = $this->getTripEntry($obj->id);
}
return $ret;
}
public function getTripsByCountryId($id)
{
$regionObj = $this->Database->prepare("SELECT id FROM tl_hideaway_region WHERE published=1 AND country = ?")
->execute($id);
$tripsByCountry = array();
while ($regionObj->next())
{
$trips = $this->getTripsByRegionId($regionObj->id);
if ($trips)
{
foreach ($trips as $trip)
{
$inList = false;
foreach ($tripsByCountry as $t)
{
if ($t['row']['id'] == $trip['row']['id'])
{
$inList = true;
break;
}
}
if (!$inList)
$tripsByCountry[] = $trip;
}
}
}
return count($tripsByCountry) ? $tripsByCountry : false;
}
public function getCombisByCountryId($id)
{
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_region WHERE published=1 AND country = ?")
->execute($id);
$combisByCountry = array();
while ($obj->next())
{
// Get Combis by Region and check if not already in combisByCountry-list
if ($this->getCombisByRegionId($obj->id))
{
// echo "getCombisByRegionId fired!";
foreach ($this->getCombisByRegionId($obj->id) as $combi)
{
if (count($combisByCountry))
{
$in_list = false;
foreach ($combisByCountry as $c)
{
if ($c['row']['id'] == $combi['row']['id'])
$in_list = true;
}
if ($in_list == false)
array_push($combisByCountry, $combi);
}
else
{
array_push($combisByCountry, $combi);
}
}
}
}
// var_dump($combisByCountry); exit;
return $combisByCountry;
}
public function getCombisByRegionId($id)
{
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_combis WHERE published=1 ORDER BY title")
->execute();
$objParent = \PageModel::findById($GLOBALS['hideaway']['combi_reader_id']);
while ($obj->next())
{
$regions = unserialize($obj->regions);
if (!in_array($id, $regions)) continue;
$row = $obj->row();
$t = array('row'=>$row, 'type'=>'combi');
$objModel = \FilesModel::findByUuid($row['image']);
$t['image_path'] = $objModel->path;
$t['image_meta'] = unserialize($objModel->meta);
$t['url'] = $this->generateFrontendUrl($objParent->row(), ($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'], $objParent->language);
if ($targets)
{
foreach ($targets as $target)
{
if ($highlight)
{
$highlight_targets = unserialize($row['highlight']);
if ($highlight_targets)
{
if (in_array($target, $highlight_targets))
{
$ret[] = $t;
break;
}
}
}
else
{
if (in_array($target, unserialize($row['targets'])))
{
$ret[] = $t;
break;
}
}
}
}
else $ret[] = $t;
}
return $ret;
}
public function getRegionsByCountryId($id, $reader_id = 0)
{
$ret = array();
$url = false;
if($reader_id > 0)
{
$obj = $this->Database->prepare("SELECT * FROM tl_page WHERE id = ?")
->execute($reader_id);
$obj->next();
$url = $obj->alias;
}
$obj = $this->Database->prepare("SELECT * FROM tl_hideaway_region WHERE published=1 AND country = ?")
->execute($id);
while ($obj->next())
{
$row = $obj->row();
$image = \FilesModel::findByUuid($row['pageimage']);
$row['image_path'] = $image->path;
$row['image_meta'] = unserialize($image->meta);
$row['url'] = false;
$country = $this->getCountryEntry($row['country']);
//die($country['row']['alias']);
if($url)
{
// $row['url'] = $url.($GLOBALS['TL_CONFIG']['useAutoItem'] ? '/' : '/items/').$row['alias'].'/';
$row['url'] = '/reisen/'.$country['row']['alias'].'/'.$row['alias'].'/';
}
$ret[] = $row;
}
return $ret;
}
public function getCountryAndRegionByReference($row)
{
if ($row['main_region'])
{
$regid = $row['main_region'];
}
else
{
if ($row['region'] > 0)
$regid = $row['region'];
else if (is_array($row['regions']))
$regid = $row['regions'][0];
}
$region = $this->getRegionEntry($regid);
$country = $this->getCountryEntry($region['row']['country']);
return array(
'region' => $region,
'country' => $country
);
}
public function generateUrl($row, $type='hotel')
{
$arr = $this->getCountryAndRegionByReference($row);
$region = $arr['region'];
$country = $arr['country'];
if((int)$country['row']['single_region'] > 0)
{
switch ($type) {
case 'hotel':
$url = '/reisen/'.$country['row']['alias'].'/'.'hotels-'.str_replace(array('-urlaub','-reisen'), '', $country['row']['alias']).'/'.$row['alias'].'/';
break;
case 'trip':
$url = '/reisen/'.$country['row']['alias'].'/'.str_replace(array('-urlaub','-reisen'), '', $country['row']['alias']).'-ausfluege'.'/'.$row['alias'].'/';
break;
case 'travel':
$url = '/reisen/'.$country['row']['alias'].'/'.str_replace(array('-urlaub','-reisen'), '', $country['row']['alias']).'-rundreise'.'/'.$row['alias'].'/';
break;
default:
# code...
break;
}
//die($url);
}
else
{
switch ($type) {
case 'hotel':
$url = '/reisen/'.$country['row']['alias'].'/'.$region['row']['alias'].'/'.'hotels-'.str_replace('-urlaub', '', $region['row']['alias']).'/'.$row['alias'].'/';
break;
case 'trip':
$url = '/reisen/'.$country['row']['alias'].'/'.$region['row']['alias'].'/'.str_replace('-urlaub', '', $region['row']['alias']).'-ausfluege'.'/'.$row['alias'].'/';
break;
case 'travel':
$url = '/reisen/'.$country['row']['alias'].'/'.$region['row']['alias'].'/'.str_replace('-urlaub', '', $region['row']['alias']).'-rundreise'.'/'.$row['alias'].'/';
break;
default:
# code...
break;
}
}
return $url;
}
private function getCountryBreadcrumb($row)
{
$country = $this->getCountryEntry($row['country']);
$ret = array(
array(
'title' => 'Reiseziele',
'url' => '/reisen-suedostasien/'
)
);
return $ret;
}
private function getRegionBreadcrumb($row)
{
$country = $this->getCountryEntry($row['country']);
$ret = array(
array(
'title' => 'Reiseziele',
'url' => '/reisen-suedostasien/'
),
array(
'title' => $country['row']['title'],
'url' => '/reisen/'.$country['row']['alias'].'/'
)
);
return $ret;
}
private function getBreadcrumb($row)
{
global $GLOBALS;
$arr = $this->getCountryAndRegionByReference($row);
$region = $arr['region'];
$country = $arr['country'];
//var_dump($country);
if($country['row']['single_region'] > 0)
{
$ret = array(
array(
'title' => 'Reiseziele',
'url' => '/reisen-suedostasien/'
),
array(
'title' => $country['row']['title'],
'url' => '/reisen/'.$country['row']['alias'].'/'
)
);
}
else
{
$ret = array(
array(
'title' => 'Reiseziele',
'url' => '/reisen-suedostasien/'
),
array(
'title' => $country['row']['title'],
'url' => '/reisen/'.$country['row']['alias'].'/'
),
array(
'title' => $region['row']['title'],
'url' => '/reisen/'.$country['row']['alias'].'/'.$region['row']['alias'].'/'
)
);
}
return $ret;
}
}