<?php
namespace AppBundle\Model;
use Pimcore\Model\DataObject;
use Pimcore\Model\Asset;
use AppBundle\Model\Restful;
class CustomObject
{
private $dataObject;
private $objectList = array();
private $resfulModel;
public function __construct($object_name)
{
$this->resfulModel = new Restful();
switch ($object_name)
{
case 'privilege':
$this->dataObject = new DataObject\Privilege\Listing();
break;
case 'KiosPromotion':
$this->dataObject = new DataObject\KiosPromotion\Listing();
break;
case 'KiosCMS':
$this->dataObject = new DataObject\KiosCMS\Listing();
break;
case 'KiosCatePromotion':
$this->dataObject = new DataObject\KiosPromoCatalogImage\Listing();
break;
case 'MediaByLocation':
$this->dataObject = new DataObject\MediaLocation\Listing();
break;
case 'KiosPromoCoupon':
$this->dataObject = new DataObject\KiosPromoCoupon\Listing();
break;
}
//$this->dataObject = $object;
}
public function getObjects($lang = 'en', $catName = '')
{
if( $catName != '' )
{
$this->dataObject->setCondition("category LIKE ?", "%". $catName ."%");
}
$data = $this->dataObject->load();
$localData = array();
foreach ($data as $item)
{
$email_template = $item->email_template;
if( isset($item->localizedfields->items[$lang]) )
{
$localData[] = $this->reformatOutputArray($item->localizedfields->items[$lang],$email_template,$lang);
}
}
return $localData;
}
/*
@param: container, lang, objectName
*/
public function getObjectKiosCMS( $param = array() )
{
$lang = $param['lang'];
$containers = explode(',', $param['container']);
// Prepare string to query IN condition
$containersListString = "('" . implode ( "', '", $containers ) . "')";
$this->dataObject->setCondition("container IN $containersListString AND o_className = ? ", array($param['objectName']) );
$data = $this->dataObject->load();
$localData = array();
foreach ($data as $item)
{
$container = $item->container;
if( isset($item->localizedfields->items[$lang]) )
{
$tmp[$container][] = $this->reformatOutputArray($item->localizedfields->items[$lang]);
}
}
// reformat add index key 0, 1, ...
foreach($tmp as $key => $item)
{
$localData[] = array(
'container' => $key,
'listID' => $item,
'totalCount' => count($item)
);
}
return $localData;
}
private function reformatOutputArray( $dataArray = array(),$email_template="",$lang="" )
{
$res = array();
foreach($dataArray as $key => $item)
{
// stripe _ for reserve key id, value
//echo $item;
if( $key == 'id_' || $key == 'value_' )
{
$key = str_replace("_", "", $key);
}
$res[$key] = $item;
if ( strstr($key, 'image') )
{
$res['cover_image'] = array(
'id' => $item->id,
'filename' => $item->filename
);
}
if($key == 'email_subject' || $key == 'email_body'){
if($item == "") {
list($subject,$body) = $this->getEmailTemplate($email_template,$lang);
$res['email_subject'] = $subject;
$res['email_body'] = $body;
}
}
}
return $res;
}
private function getEmailTemplate($template,$lang){
$data = new DataObject\EmailTemplate\Listing();
$data->setCondition("o_className =? and o_key =?" ,array("EmailTemplate",$template));
$obj = $data->load();
$localData = array();
foreach ($obj as $item) {
$localData = $item->localizedfields;
}
if( !$localData->items )
{
return array();
}
$subject = $localData->items[$lang]['email_subject'];
$body =$localData->items[$lang]['email_body'];
return array($subject,$body);
}
public function getObject($param = array())
{
$key = $param['key'];
$path = $param['path'];
$externalKey = $param['external_key'];
$lang = $param['lang'];
$pathToQuery = '';
if( $path )
{
$tmpPath = explode('_', strtolower($path));
$pathToQuery = $tmpPath[0] .'/'. $tmpPath[1];
}
$key = strtolower($key);
if( $externalKey != '' )
{
$this->dataObject->setCondition("o_key LIKE ?", "%". $externalKey ."%");
}
if( $pathToQuery != '' )
{
$this->dataObject->setCondition("o_path LIKE ?", "%". $pathToQuery ."%");
}
$data = $this->dataObject->load();
$localData = array();
foreach ($data as $item) {
$localData = $item->localizedfields;
$email_template = $item->email_template;
}
if( !$localData->items )
{
return array();
}
return $this->reformatOutputArray($localData->items[$lang],$email_template,$lang);
}
public function getPromoKios($key,$lang = 'en')
{
if(is_array($key)){
$txt_search = "('" . implode ( "', '", $key ) . "')";
$this->dataObject->setCondition("o_className =? and o_key in $txt_search" ,"KiosPromotion");
//$this->dataObject->setCondition("o_key in ($txt_search)");
}
$data = $this->dataObject->load();
$localData = array();
foreach ($data as $item)
{
if( isset($item->localizedfields->items[$lang]) )
{
$localData[] = $this->reformatOutputArray($item->localizedfields->items[$lang]);
}
}
return $localData;
}
public function getPromoKiosLocation($lang = 'en',$branch)
{
$this->dataObject->setCondition("o_className =? and branch=?" ,array('KiosPromotion',$branch));
$data = $this->dataObject->load();
$localData = array();
$arr = array();
foreach ($data as $item){
//$localData['branch'] = $item->branch;
if( isset($item->localizedfields->items[$lang]) )
{
$tmp_data = $item->localizedfields->items[$lang];
$branch = $item->branch;
//$localData[] = $this->reformatOutputArray($item->localizedfields->items[$lang]);
$localData['branch'] = $branch;
$localData['promotion_code'] = $tmp_data['promotion_code'];
$localData['promotion_name'] = $tmp_data['promotion_name'];
$localData['promotion_value'] = $tmp_data['promotion_value'];
$localData['short_description'] = $tmp_data['short_description'];
$localData['condition'] = $tmp_data['condition'];
foreach($tmp_data as $key => $item) {
if (strstr($key, 'image')) {
$localData['cover_image'] = array(
'id' => $item->id,
'filename' => $item->filename
);
}
}
$localData['print'] = $tmp_data['print'];
$arr[] = $localData;
}
}
return $arr;
}
public function getPromoKiosByCate($cate,$lang = 'en')
{
$localData = array();
$cate_list = array();
if( $cate != '' )
{
$this->dataObject->setCondition("o_className =? and category LIKE ?" ,array("KiosPromotion","%". $cate ."%"));
//$this->dataObject->setCondition("category LIKE ?", "%". $cate ."%");
}
$data = $this->dataObject->load();
if(count($data) > 0) {
$localData['category_image'] = $this->getImageCate($cate,$lang);
$idx = 0;
foreach ($data as $item) {
//category
//brand
if (isset($item->localizedfields->items[$lang])) {
$cate_list[$idx]['category'] = $cate;
$cate_list[$idx]['brand'] = $item->brand;
$tmp = $this->reformatOutputArray($item->localizedfields->items[$lang]);
foreach($tmp as $key => $value)
{
$cate_list[$idx][$key] = $value;
}
$idx++;
}
}
$localData['categories'] = $cate_list;
return $localData;
}else{
return null;
}
}
private function getImageCate($cate,$lang){
$objectCateImage = new DataObject\KiosPromoCatalogImage\Listing();
if( $cate != '' )
{
$objectCateImage->setCondition("catalog LIKE ?", "%". $cate ."%");
}
$data = $objectCateImage->load();
$localData = array();
foreach ($data as $item) {
$localData = $item->localizedfields;
}
if( !$localData->items )
{
return array();
}
return $this->reformatOutputImage($localData->items[$lang]);
}
private function reformatOutputImage( $dataArray = array() )
{
$res = array();
foreach($dataArray as $key => $item)
{
if ( strstr($key, 'image') )
{
$res = array(
'type'=>$item->type,
'mimetype'=>$item->mimetype,
'id' => $item->id,
'filename' => $item->filename
);
}
}
return $res;
}
public function getCatePromoKios($lang){
$localData = array();
$this->dataObject->setCondition("o_className =? and o_path=?" ,array("KiosPromoCatalogImage","/Kios/CategoryImage/"));
$data = $this->dataObject->load();
foreach ($data as $item)
{
if( isset($item->localizedfields->items[$lang]) )
{
$cate_code = $item->catalog;
foreach($item->localizedfields->items[$lang] as $key => $item)
{
if($key == "category_name") {
$cate_name = $item;
}
if ( strstr($key, 'image') )
{
$res = array(
'category_code' => $cate_code,
'category_name' => $cate_name,
'type'=>$item->type,
'mimetype'=>$item->mimetype,
'id' => $item->id,
'filename' => $item->filename
);
}
}
$localData[] = $res;
}
}
return $localData;
}
public function getAllBrandPromoKios($lang){
$localData = array();
$this->dataObject->setCondition("o_className =? and o_path=?" ,array("KiosPromoCatalogImage","/Kios/BrandImage/"));
$data = $this->dataObject->load();
foreach ($data as $item)
{
if( isset($item->localizedfields->items[$lang]) )
{
$cate_code = $item->catalog;
foreach($item->localizedfields->items[$lang] as $key => $item)
{
if($key == "category_name") {
$cate_name = $item;
}
if ( strstr($key, 'image') )
{
$res = array(
'category_code' => $cate_code,
'category_name' => $cate_name,
'type'=>$item->type,
'mimetype'=>$item->mimetype,
'id' => $item->id,
'filename' => $item->filename
);
}
}
$localData[] = $res;
}
}
return $localData;
}
public function getMediaLocation($location,$lang,$app=""){
$localData = array();
$this->dataObject->setCondition("o_className =? and location=? and o_path like ?" ,array("MediaLocation",$location,"%". $app."%"));
$data = $this->dataObject->load();
$tmp = array();
foreach ($data as $item)
{
$link = $item->link;
if( isset($item->localizedfields->items[$lang]) )
{
$location = $item->location;
foreach($item->localizedfields->items[$lang] as $key => $value)
{
if ( strstr($key, 'title')) {
$title = $value;
}
if ( strstr($key, 'image')) {
if (!$value->type == null) {
$tmp[] = array(
'title' => $title,
'type' => $value->type,
'id' => $value->id,
'filename' => $value->filename,
'link' => $link,
);
}
}
if ( strstr($key, 'vdo')){
if($value->data != "") {
$asset = Asset::getById($value->data->id);
$tmp[] = array(
'title' => $title,
'type' => $value->data->type,
'id' => $value->id,
'url' => $this->resfulModel->getSiteUrlProtocal().$_SERVER['HTTP_HOST'].'/var/assets'.$asset->path.$value->data->filename);
}
}
}
}
$localData['location'] = $location;
$localData['listMedia'] = $tmp;
}
//$arr = array('location'=>$location,'listMedia'=>$localData);
return $localData;
}
public function getVersion($id,$force = false)
{
$db = \Pimcore\Db::getConnection();
$versionData = $db->fetchRow("SELECT id,date FROM versions WHERE id='120' and cid = '$id' AND ctype='object' ORDER BY `id` DESC LIMIT 1"); //Returns null, because no version exists in db
$version = \Pimcore\Model\Version::getById($versionData["id"]);
$version->getData();
print_r($version); exit();
}
public function getKiosPromoCoupon($location,$lang,$campaign,$shop_name,$promotion_code,$branch,$highlight){
$localData = array();
$condition = "";
if($location != ""){
$condition .= " and location='".$location."'";
}
if($shop_name != ''){
$condition .= " and shop_name='".$shop_name."'";
}
if($campaign != ""){
$condition .= " and campaign='".$campaign."'";
}
if($promotion_code != ""){
$condition .= " and promotion_code='".$promotion_code."'";
}
if($branch != ""){
$condition .= " and branch='".$branch."'";
}
if($highlight != ""){
$condition .= " and highlight='".$highlight."'";
}
$this->dataObject->setCondition("o_className ='KiosPromoCoupon' $condition");
$data = $this->dataObject->load();
foreach ($data as $item)
{
if( isset($item->localizedfields->items[$lang]) )
{
$res['campaign'] = $item->campaign;
$res['branch'] = $item->branch;
$res['location'] = $item->location;
$res['shop_name'] = trim($item->shop_name);
$res['promotion_code'] = $item->promotion_code;
$res['start_date'] = $item->start_date;
$res['end_date'] = $item->end_date;
foreach($item->logo as $key => $value){
if ( strstr($key, 'id') )
$id = $value;
if ( strstr($key, 'filename') )
$filename = $value;
$res['image_logo'] = array(
"id"=>$id,
"filename"=>$filename,
);
}
foreach($item->localizedfields->items[$lang] as $key => $item)
{
$res[$key] = $item;
if ( strstr($key, 'image_thumbnails') )
{
$res['image_thumbnails'] = array(
'id' => $item->id,
'filename' => $item->filename
);
}
if ( strstr($key, 'image_description') )
{
$res['image_description'] = array(
'id' => $item->id,
'filename' => $item->filename
);
}
}
$localData[] = $res;
}
}
return $localData;
}
public function getPromoShop($branch,$lang){
$localData = array();
$condition = "";
$shop = array();
if($branch != ""){
$condition .= " and branch='".$branch."'";
}
$this->dataObject->setCondition("o_className ='KiosPromoCoupon' $condition");
$data = $this->dataObject->load();
foreach ($data as $item)
{
if( isset($item->localizedfields->items[$lang]) )
{
if(!in_array(trim($item->shop_name), $shop)){
array_push($shop,$item->shop_name);
$res['branch'] = $item->branch;
$res['location'] = $item->location;
$res['shop_name'] = trim($item->shop_name);
$res['promotion_code'] = $item->promotion_code;
foreach($item->logo as $key => $value){
if ( strstr($key, 'id') )
$id = $value;
if ( strstr($key, 'filename') )
$filename = $value;
$res['image_logo'] = array(
"id"=>$id,
"filename"=>$filename,
);
}
$localData[] = $res;
}
}
}
return $localData;
}
}