src/AppBundle/Model/CustomObject.php line 449

Open in your IDE?
  1. <?php 
  2. namespace AppBundle\Model;
  3. use Pimcore\Model\DataObject;
  4. use Pimcore\Model\Asset;
  5. use AppBundle\Model\Restful;
  6. class CustomObject
  7. {
  8.     private $dataObject;
  9.     private $objectList = array();
  10.     private $resfulModel;
  11.     public function __construct($object_name)
  12.     {
  13.         $this->resfulModel = new Restful();
  14.         switch ($object_name
  15.         {
  16.             case 'privilege':
  17.                 $this->dataObject = new DataObject\Privilege\Listing();
  18.                 break;
  19.             case 'KiosPromotion':
  20.                 $this->dataObject = new DataObject\KiosPromotion\Listing();
  21.                 break;
  22.             case 'KiosCMS':
  23.                 $this->dataObject = new DataObject\KiosCMS\Listing();
  24.                 break;
  25.             case 'KiosCatePromotion':
  26.                 $this->dataObject = new DataObject\KiosPromoCatalogImage\Listing();
  27.                 break;
  28.             case 'MediaByLocation':
  29.                 $this->dataObject = new DataObject\MediaLocation\Listing();
  30.                 break;
  31.             case 'KiosPromoCoupon':
  32.                 $this->dataObject = new DataObject\KiosPromoCoupon\Listing();
  33.             break;
  34.         }
  35.         //$this->dataObject = $object;
  36.     }
  37.     public function getObjects($lang 'en'$catName '')
  38.     {
  39.         
  40.         if( $catName != '' )
  41.         {
  42.             $this->dataObject->setCondition("category LIKE ?""%"$catName ."%");
  43.         }
  44.         
  45.         $data $this->dataObject->load();
  46.         $localData = array();
  47.         foreach ($data as $item
  48.         {
  49.             $email_template $item->email_template;
  50.             if( isset($item->localizedfields->items[$lang]) )
  51.             {
  52.                 $localData[] = $this->reformatOutputArray($item->localizedfields->items[$lang],$email_template,$lang);
  53.             }
  54.         }
  55.         return $localData;
  56.     }
  57.     /*
  58.         @param: container, lang, objectName
  59.     */
  60.     public function getObjectKiosCMS$param = array() )
  61.     {
  62.         $lang $param['lang'];
  63.         $containers explode(','$param['container']);
  64.         // Prepare string to query IN condition
  65.         $containersListString "('" implode "', '"$containers ) . "')";
  66.         $this->dataObject->setCondition("container IN $containersListString AND o_className = ? ", array($param['objectName']) );
  67.         $data $this->dataObject->load();
  68.         $localData = array();
  69.         foreach ($data as $item
  70.         {
  71.             $container $item->container;
  72.             if( isset($item->localizedfields->items[$lang]) )
  73.             {
  74.                 $tmp[$container][] = $this->reformatOutputArray($item->localizedfields->items[$lang]);
  75.             }
  76.         }
  77.         // reformat add index key 0, 1, ...
  78.         foreach($tmp as $key => $item)
  79.         {
  80.             $localData[] = array(
  81.                 'container' => $key,
  82.                 'listID' => $item,
  83.                 'totalCount' => count($item)  
  84.             );
  85.         }
  86.         return $localData;        
  87.     }
  88.     private function reformatOutputArray$dataArray = array(),$email_template="",$lang="" )
  89.     {
  90.         $res = array();
  91.         foreach($dataArray as $key => $item)
  92.         {
  93.             // stripe _ for reserve key id, value
  94.             //echo $item;
  95.             if( $key == 'id_' || $key == 'value_' )
  96.             {
  97.                 $key str_replace("_"""$key);
  98.             }
  99.             $res[$key] = $item;
  100.             if ( strstr($key'image') )
  101.             {
  102.                 $res['cover_image'] = array(
  103.                     'id' => $item->id,
  104.                     'filename' => $item->filename
  105.                 );
  106.                 
  107.             }
  108.             if($key == 'email_subject' || $key == 'email_body'){
  109.                 if($item == "") {
  110.                     list($subject,$body) = $this->getEmailTemplate($email_template,$lang);
  111.                    $res['email_subject'] = $subject;
  112.                    $res['email_body'] = $body;
  113.                 }
  114.             }
  115.         }
  116.         return $res;
  117.     }
  118.     private function getEmailTemplate($template,$lang){
  119.         $data = new DataObject\EmailTemplate\Listing();
  120.         $data->setCondition("o_className =? and o_key =?" ,array("EmailTemplate",$template));
  121.         $obj $data->load();
  122.         $localData = array();
  123.         foreach ($obj as $item) {
  124.             $localData $item->localizedfields;
  125.         }
  126.         if( !$localData->items )
  127.         {
  128.             return array();
  129.         }
  130.          $subject    $localData->items[$lang]['email_subject'];
  131.          $body       =$localData->items[$lang]['email_body'];
  132.         return array($subject,$body);
  133.     }
  134.     public function getObject($param = array())
  135.     {
  136.         $key $param['key'];
  137.         $path $param['path']; 
  138.         $externalKey $param['external_key'];
  139.         $lang $param['lang'];
  140.         $pathToQuery '';
  141.         if( $path )
  142.         {
  143.             $tmpPath explode('_'strtolower($path));
  144.             $pathToQuery $tmpPath[0] .'/'$tmpPath[1];
  145.         }
  146.         $key strtolower($key);
  147.         if( $externalKey != '' )
  148.         {
  149.             $this->dataObject->setCondition("o_key LIKE ?""%"$externalKey ."%");
  150.         }
  151.         
  152.         if( $pathToQuery != '' )
  153.         {
  154.             $this->dataObject->setCondition("o_path LIKE ?""%"$pathToQuery ."%");
  155.         }
  156.         $data $this->dataObject->load();
  157.         $localData = array();
  158.         foreach ($data as $item) {
  159.             $localData $item->localizedfields;
  160.             $email_template $item->email_template;
  161.         }
  162.         if( !$localData->items )
  163.         {
  164.             return array();
  165.         }
  166.         return $this->reformatOutputArray($localData->items[$lang],$email_template,$lang);
  167.     }
  168.     public function getPromoKios($key,$lang 'en')
  169.     {
  170.         if(is_array($key)){
  171.             $txt_search "('" implode "', '"$key ) . "')";
  172.             $this->dataObject->setCondition("o_className =? and o_key in $txt_search,"KiosPromotion");
  173.             //$this->dataObject->setCondition("o_key in ($txt_search)");
  174.         }
  175.         $data $this->dataObject->load();
  176.         $localData = array();
  177.         foreach ($data as $item)
  178.         {
  179.             if( isset($item->localizedfields->items[$lang]) )
  180.             {
  181.                 $localData[] = $this->reformatOutputArray($item->localizedfields->items[$lang]);
  182.             }
  183.         }
  184.         return $localData;
  185.     }
  186.     public function getPromoKiosLocation($lang 'en',$branch)
  187.     {
  188.         $this->dataObject->setCondition("o_className =? and branch=?" ,array('KiosPromotion',$branch));
  189.         $data $this->dataObject->load();
  190.         $localData = array();
  191.         $arr = array();
  192.         foreach ($data as $item){
  193.             //$localData['branch'] = $item->branch;
  194.             if( isset($item->localizedfields->items[$lang]) )
  195.             {
  196.                 $tmp_data $item->localizedfields->items[$lang];
  197.                 $branch $item->branch;
  198.                 //$localData[] = $this->reformatOutputArray($item->localizedfields->items[$lang]);
  199.                 $localData['branch'] = $branch;
  200.                 $localData['promotion_code'] = $tmp_data['promotion_code'];
  201.                 $localData['promotion_name'] = $tmp_data['promotion_name'];
  202.                 $localData['promotion_value'] = $tmp_data['promotion_value'];
  203.                 $localData['short_description'] = $tmp_data['short_description'];
  204.                 $localData['condition'] = $tmp_data['condition'];
  205.                 foreach($tmp_data as $key => $item) {
  206.                     if (strstr($key'image')) {
  207.                         $localData['cover_image'] = array(
  208.                             'id' => $item->id,
  209.                             'filename' => $item->filename
  210.                         );
  211.                     }
  212.                 }
  213.                 $localData['print'] = $tmp_data['print'];
  214.                 $arr[] = $localData;
  215.             }
  216.         }
  217.         return $arr;
  218.     }
  219.     public function getPromoKiosByCate($cate,$lang 'en')
  220.     {
  221.         $localData = array();
  222.         $cate_list = array();
  223.         if( $cate != '' )
  224.         {
  225.             $this->dataObject->setCondition("o_className =? and category LIKE ?" ,array("KiosPromotion","%"$cate ."%"));
  226.             //$this->dataObject->setCondition("category LIKE ?", "%". $cate ."%");
  227.         }
  228.         $data $this->dataObject->load();
  229.         
  230.         if(count($data) > 0) {
  231.             $localData['category_image'] = $this->getImageCate($cate,$lang);
  232.             $idx 0;
  233.             foreach ($data as $item) {
  234.                 //category
  235.                 //brand
  236.                 if (isset($item->localizedfields->items[$lang])) {
  237.                     $cate_list[$idx]['category'] = $cate;
  238.                     $cate_list[$idx]['brand'] = $item->brand;
  239.                     $tmp $this->reformatOutputArray($item->localizedfields->items[$lang]);
  240.                     
  241.                     foreach($tmp as $key => $value)
  242.                     {
  243.                         $cate_list[$idx][$key] = $value;
  244.                     }
  245.                     $idx++;
  246.                 }
  247.             }
  248.             $localData['categories'] = $cate_list;
  249.             return $localData;
  250.         }else{
  251.             return null;
  252.         }
  253.     }
  254.     private function getImageCate($cate,$lang){
  255.         $objectCateImage = new DataObject\KiosPromoCatalogImage\Listing();
  256.         if( $cate != '' )
  257.         {
  258.             $objectCateImage->setCondition("catalog LIKE ?""%"$cate ."%");
  259.         }
  260.         $data $objectCateImage->load();
  261.         $localData = array();
  262.         foreach ($data as $item) {
  263.             $localData $item->localizedfields;
  264.         }
  265.         if( !$localData->items )
  266.         {
  267.             return array();
  268.         }
  269.         return $this->reformatOutputImage($localData->items[$lang]);
  270.     }
  271.     private function reformatOutputImage$dataArray = array() )
  272.     {
  273.         $res = array();
  274.         foreach($dataArray as $key => $item)
  275.         {
  276.             if ( strstr($key'image') )
  277.             {
  278.                 $res = array(
  279.                     'type'=>$item->type,
  280.                     'mimetype'=>$item->mimetype,
  281.                     'id' => $item->id,
  282.                     'filename' => $item->filename
  283.                 );
  284.             }
  285.         }
  286.         return $res;
  287.     }
  288.     public function getCatePromoKios($lang){
  289.         $localData = array();
  290.         $this->dataObject->setCondition("o_className =? and o_path=?" ,array("KiosPromoCatalogImage","/Kios/CategoryImage/"));
  291.         $data $this->dataObject->load();
  292.         foreach ($data as $item)
  293.         {
  294.             if( isset($item->localizedfields->items[$lang]) )
  295.             {
  296.                 $cate_code $item->catalog;
  297.                 foreach($item->localizedfields->items[$lang] as $key => $item)
  298.                 {
  299.                     if($key == "category_name") {
  300.                         $cate_name $item;
  301.                     }
  302.                     if ( strstr($key'image') )
  303.                     {
  304.                         $res = array(
  305.                             'category_code' => $cate_code,
  306.                             'category_name' => $cate_name,
  307.                             'type'=>$item->type,
  308.                             'mimetype'=>$item->mimetype,
  309.                             'id' => $item->id,
  310.                             'filename' => $item->filename
  311.                         );
  312.                     }
  313.                 }
  314.                 $localData[] = $res;
  315.             }
  316.         }
  317.         return $localData;
  318.     }
  319.     public function getAllBrandPromoKios($lang){
  320.         $localData = array();
  321.         $this->dataObject->setCondition("o_className =? and o_path=?" ,array("KiosPromoCatalogImage","/Kios/BrandImage/"));
  322.         $data $this->dataObject->load();
  323.         foreach ($data as $item)
  324.         {
  325.             if( isset($item->localizedfields->items[$lang]) )
  326.             {
  327.                 $cate_code $item->catalog;
  328.                 foreach($item->localizedfields->items[$lang] as $key => $item)
  329.                 {
  330.                     if($key == "category_name") {
  331.                         $cate_name $item;
  332.                     }
  333.                     if ( strstr($key'image') )
  334.                     {
  335.                         $res = array(
  336.                             'category_code' => $cate_code,
  337.                             'category_name' => $cate_name,
  338.                             'type'=>$item->type,
  339.                             'mimetype'=>$item->mimetype,
  340.                             'id' => $item->id,
  341.                             'filename' => $item->filename
  342.                         );
  343.                     }
  344.                 }
  345.                 $localData[] = $res;
  346.             }
  347.         }
  348.         return $localData;
  349.     }
  350.     public function getMediaLocation($location,$lang,$app=""){
  351.         $localData = array();
  352.         $this->dataObject->setCondition("o_className =? and location=? and o_path like ?" ,array("MediaLocation",$location,"%"$app."%"));
  353.         $data $this->dataObject->load();
  354.         $tmp = array();
  355.         foreach ($data as $item)
  356.         {
  357.             $link $item->link;
  358.             if( isset($item->localizedfields->items[$lang]) )
  359.             {
  360.                 $location $item->location;
  361.                 foreach($item->localizedfields->items[$lang] as $key => $value)
  362.                 {                  
  363.                     if ( strstr($key'title')) { 
  364.                         $title $value
  365.                     }
  366.                     if ( strstr($key'image')) {
  367.                         if (!$value->type == null) {
  368.                             $tmp[] = array(
  369.                                 'title'  => $title,
  370.                                 'type' => $value->type,
  371.                                 'id' => $value->id,
  372.                                 'filename' => $value->filename,
  373.                                 'link'  => $link,
  374.                             );
  375.                         }
  376.                     }
  377.                     if ( strstr($key'vdo')){
  378.                         if($value->data != "") {
  379.                             $asset Asset::getById($value->data->id);
  380.                             $tmp[] = array(
  381.                                 'title'  => $title,
  382.                                 'type' => $value->data->type,
  383.                                 'id' => $value->id,
  384.                                 'url' => $this->resfulModel->getSiteUrlProtocal().$_SERVER['HTTP_HOST'].'/var/assets'.$asset->path.$value->data->filename);
  385.                        }
  386.                     }
  387.                 }
  388.             }
  389.             $localData['location'] = $location;
  390.             $localData['listMedia'] = $tmp;
  391.         }
  392.         //$arr = array('location'=>$location,'listMedia'=>$localData);
  393.         return $localData;
  394.     }
  395.     public function getVersion($id,$force false)
  396.     {
  397.         $db = \Pimcore\Db::getConnection();
  398.         $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
  399.         $version = \Pimcore\Model\Version::getById($versionData["id"]);
  400.         $version->getData();
  401.         print_r($version); exit();
  402.     }
  403.     public function getKiosPromoCoupon($location,$lang,$campaign,$shop_name,$promotion_code,$branch,$highlight){
  404.         $localData = array();
  405.         $condition "";
  406.         if($location != ""){
  407.             $condition .= " and location='".$location."'";
  408.         }
  409.         if($shop_name != ''){
  410.             $condition .= " and shop_name='".$shop_name."'";
  411.         }
  412.         if($campaign != ""){
  413.             $condition .= " and campaign='".$campaign."'";
  414.         }
  415.         if($promotion_code != ""){
  416.             $condition .= " and promotion_code='".$promotion_code."'";
  417.         }
  418.         if($branch != ""){
  419.             $condition .= " and branch='".$branch."'";
  420.         }
  421.         if($highlight != ""){
  422.             $condition .= " and highlight='".$highlight."'";
  423.         }
  424.         $this->dataObject->setCondition("o_className ='KiosPromoCoupon' $condition");
  425.         $data $this->dataObject->load();  
  426.         foreach ($data as $item)
  427.         {
  428.             if( isset($item->localizedfields->items[$lang]) )
  429.             {               
  430.                 $res['campaign'] = $item->campaign;
  431.                 $res['branch'] = $item->branch;
  432.                 $res['location'] = $item->location;
  433.                 $res['shop_name'] = trim($item->shop_name);
  434.                 $res['promotion_code'] = $item->promotion_code;
  435.                 $res['start_date'] = $item->start_date;
  436.                 $res['end_date'] = $item->end_date;
  437.                 foreach($item->logo as $key => $value){
  438.                         if ( strstr($key'id') )
  439.                                 $id $value;
  440.                         if ( strstr($key'filename') )
  441.                                 $filename $value;
  442.                         $res['image_logo'] = array(
  443.                             "id"=>$id,
  444.                             "filename"=>$filename,
  445.                         );
  446.                 }
  447.                 foreach($item->localizedfields->items[$lang] as $key => $item)
  448.                 {
  449.                     $res[$key] = $item;
  450.                     if ( strstr($key'image_thumbnails') )
  451.                     {
  452.                         $res['image_thumbnails'] = array(
  453.                             'id' => $item->id,
  454.                             'filename' => $item->filename
  455.                         );
  456.                     }
  457.                     if ( strstr($key'image_description') )
  458.                     {
  459.                         $res['image_description'] = array(
  460.                             'id' => $item->id,
  461.                             'filename' => $item->filename
  462.                         );
  463.                     }
  464.                     
  465.                 }
  466.                 $localData[] = $res;
  467.             }
  468.         }
  469.         return $localData;
  470.     }
  471.     public function getPromoShop($branch,$lang){
  472.         $localData = array();
  473.         $condition "";
  474.         $shop = array();
  475.        
  476.         if($branch != ""){
  477.             $condition .= " and branch='".$branch."'";
  478.         }
  479.         $this->dataObject->setCondition("o_className ='KiosPromoCoupon' $condition");
  480.         $data $this->dataObject->load(); 
  481.         foreach ($data as $item)
  482.         {
  483.             if( isset($item->localizedfields->items[$lang]) )
  484.             {
  485.                 if(!in_array(trim($item->shop_name), $shop)){
  486.                     array_push($shop,$item->shop_name);
  487.                     $res['branch'] = $item->branch;
  488.                     $res['location'] = $item->location;
  489.                     $res['shop_name'] = trim($item->shop_name);
  490.                     $res['promotion_code'] = $item->promotion_code;
  491.                     foreach($item->logo as $key => $value){
  492.                             if ( strstr($key'id') )
  493.                                     $id $value;
  494.                             if ( strstr($key'filename') )
  495.                                     $filename $value;
  496.                             $res['image_logo'] = array(
  497.                                 "id"=>$id,
  498.                                 "filename"=>$filename,
  499.                             );
  500.                     }
  501.                     
  502.                     $localData[] = $res;
  503.                 }
  504.             }
  505.         }
  506.         return $localData;
  507.     }
  508. }