src/Controller/ProductController.php line 379
<?phpnamespace App\Controller;use Pimcore\Controller\FrontendController;use Symfony\Bridge\Twig\Attribute\Template;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\HttpFoundation\Request;use Symfony\Contracts\Translation\TranslatorInterface;use Pimcore\Localization\LocaleServiceInterface;use Pimcore\Model\DataObject\Recipe;use Pimcore\Model\DataObject\Review;use Pimcore\Model\DataObject\ProductBanner;use Pimcore\Model\DataObject\Product;use Pimcore\Model\DataObject\ProductAttribute;use Pimcore\Model\DataObject\ProductCategory;use Pimcore\Bundle\PersonalizationBundle\Targeting\VisitorInfoStorageInterface;use Pimcore\Model\Tool\Targeting;use Pimcore\Model\Tool\Targeting\TargetGroup;use GeoIp2\Database\Reader;/****@IgnoreAnnotation("Template")* @author PcCom*/class ProductController extends FrontendController {/*** @Template** @param Request $request** @return array*//*** @var LocaleService*/// /**// * @var VisitorInfoStorageInterface// */private $visitorInfoStorage;public function __construct(VisitorInfoStorageInterface $visitorInfoStorage) {$this->visitorInfoStorage = $visitorInfoStorage;}public function defaultAction(Request $request) {return [];}public function productAction(Request $request) {// $visitorInfo = $this->visitorInfoStorage->getVisitorInfo();// $groups = $visitorInfo->getAssignedTargetGroups();// $groupids = [];// foreach ($groups as $key => $val) {// $groupids[] = $val->id;// }// if(!$groupids){// $groupids[] = '1';// }//print_r($groupids);die();$groups = [];$code = 'AE';if (!$this->visitorInfoStorage->hasVisitorInfo()) {$groups = [];$code = 'AE';}else{$visitorInfo = $this->visitorInfoStorage->getVisitorInfo();if($visitorInfo instanceof \Pimcore\Targeting\Model\VisitorInfo){$groups = $visitorInfo->getAssignedTargetGroups();$city = $visitorInfo->get('geoip');if($city){$code = $city['country']['iso_code'];}if (!$code) {$code = 'AE';}}}$groupids = [];foreach ($groups as $key => $val) {$groupids[] = $val->getId();}if(!$groupids){$groupids[] = '22';}// Region wise ip Handler starttry {$ipaddress = '';if (isset($_SERVER['HTTP_CLIENT_IP'])) {$ipaddress = $_SERVER['HTTP_CLIENT_IP'];} else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];} else if (isset($_SERVER['HTTP_X_FORWARDED'])) {$ipaddress = $_SERVER['HTTP_X_FORWARDED'];} else if (isset($_SERVER['HTTP_FORWARDED_FOR'])) {$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];} else if (isset($_SERVER['HTTP_FORWARDED'])) {$ipaddress = $_SERVER['HTTP_FORWARDED'];} else if (isset($_SERVER['REMOTE_ADDR'])) {$ipaddress = $_SERVER['REMOTE_ADDR'];} else {$ipaddress = 'UNKNOWN';}if ($ipaddress != 'UNKNOWN') {$ip_info = new Reader(__DIR__ . '/GeoLite2-Country.mmdb');$record = $ip_info->country($ipaddress);if ($record) {$ip = $record->country->isoCode;}}} catch (\Exception $e) {$ip = '';}$code = $ip; // issign country-iso code to code varibleif ($code == 'AE') {$groupids[] = '29';} elseif ($code == 'SA') {$groupids[] = '27';} elseif ($code == 'OM' || $code == 'QA' || $code == 'KW' || $code == 'BH') {$groupids[] = '28';} else {//$code = 'AE';$groupids[] = '29';}if(!$groupids){$groupids[] = '22';}// Region wise ip Handler end$Products = new Product\Listing();//$Products->setCondition("regions IN (?)", [$groupids]);$Products->load();foreach ($Products as $key => $Product) {$product[] = $Product;}$Categories = new ProductCategory\Listing();$Categories->setOrderKey("sort");$Categories->setOrder("asc");$Categories->load();foreach ($Categories as $key => $Category) {$category[] = $Category;//$categoryy[] = $Category->getName() . $Category->getSort();}//print_r($categoryy);die();$Banner = new ProductBanner\Listing();return $this->render('Product/Product.html.twig', ['banners' => $Banner,'product' => $product,'category' => $category,'groupids' => $groupids,// 'groupids'=>'1', // temporary basses]);// $this->view->banners = $Banner;// $this->view->product = $product;// $this->view->category = $category;// $this->view->groupids = $groupids;}// /**// * @Route("/{locale}/product/{url}", name="product_category")// */// public function productcategoryAction(Request $request)// {// // $url = strtolower($request->get('url'));// // $recipes = new Recipe\Listing();// // $recipes->load();// // foreach ($recipes as $key => $recipe) {// // // $product = DefaultProduct::getById($product->getId());// // break;// // }// // $this->view->recipe = $recipe;// $visitorInfo = $this->visitorInfoStorage->getVisitorInfo();// $groups = $visitorInfo->getAssignedTargetGroups();// $groupids = [];// // $city = $visitorInfo->get('geoip');// // $code = $city['country']['iso_code'];// // if (!$code) {// // $code = 'AE';// // }// foreach ($groups as $key => $val) {// $groupids[] = $val->id;// }// if(!$groupids){// $groupids[] = '1';// }// if($request->get('url')){// $url = strtolower($request->get('url'));// $locale = $request->getLocale();// $id = $request->get('id');// $Products = new ProductCategory\Listing();// $Products->setCondition("url IN (?)", [[$url]]);// $Products->load();// foreach ($Products as $key => $Product) {// $product[] = ProductCategory::getById($Product->getId());// }// }// return $this->render('Product/ProductCategory.html.twig', [// 'category'=>$product,// 'locale'=>$locale,// 'groupids'=>$groupids,// //'country'=>$code,// 'country'=>'AE', // temporary basses// ]);// // $this->view->category = $product;// // $this->view->locale = $locale;// // $this->view->groupids = $groupids;// // $this->view->country = $code;// }// /**// * @Route("/{locale}/product/{url}", name="blog_list")// */public function productdetailsAction(Request $request) {// Region wise ip Handler starttry {$ipaddress = '';if (isset($_SERVER['HTTP_CLIENT_IP'])) {$ipaddress = $_SERVER['HTTP_CLIENT_IP'];} else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];} else if (isset($_SERVER['HTTP_X_FORWARDED'])) {$ipaddress = $_SERVER['HTTP_X_FORWARDED'];} else if (isset($_SERVER['HTTP_FORWARDED_FOR'])) {$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];} else if (isset($_SERVER['HTTP_FORWARDED'])) {$ipaddress = $_SERVER['HTTP_FORWARDED'];} else if (isset($_SERVER['REMOTE_ADDR'])) {$ipaddress = $_SERVER['REMOTE_ADDR'];} else {$ipaddress = 'UNKNOWN';}if ($ipaddress != 'UNKNOWN') {$ip_info = new Reader(__DIR__ . '/GeoLite2-Country.mmdb');$record = $ip_info->country($ipaddress);if ($record) {$ip = $record->country->isoCode;}}} catch (\Exception $e) {$ip = '';}$code = $ip; // issign country-iso code to code varibleif ($code == 'AE') {$groupids[] = '29';} elseif ($code == 'SA') {$groupids[] = '27';} elseif ($code == 'OM' || $code == 'QA' || $code == 'KW' || $code == 'BH') {$groupids[] = '28';} else {//$code = 'AE';$groupids[] = '29';}// Region wise ip Handler endif ($request->get('url')) {$variant_id = 0;$url = strtolower($request->get('url'));$locale = $request->getLocale();$cat = false;$cats = new ProductCategory\Listing();$cats->setCondition("url IN (?)", [[$url]]);$cats->load();if ($cats && count($cats) > 0) {foreach ($cats as $key => $Product) {$productt[] = ProductCategory::getById($Product->getId());}$cat = true;}//die($url);$products = new Product\Listing();$products->setCondition("url IN (?)", [[$url]]);$products->load();$count = count($products);if ($count > 0) {foreach ($products as $key => $product) {$product = Product::getById($product->getId());}} else {$ProductAttribute = new ProductAttribute\Listing();$ProductAttribute->setCondition("url IN (?)", [[$url]]);$ProductAttribute->load();$product_used_recipe_IDs = [];foreach ($ProductAttribute as $key => $productt) {$variant_id = $productt->getId();$product = ProductAttribute::getById($productt->getId())->getProduct();if(empty($product)){$productsList = new Product\Listing();$productsList->setCondition("attributes LIKE :attributes", ["attributes" => "%object|".$variant_id."%"]);$productsList->load();if(!empty($productsList)){foreach ($productsList as $key => $value) {# code...$product = $value;break;}}}foreach ($product->getRecipe() as $product_used_recipes) {$product_used_recipe_IDs[] = $product_used_recipes->getID();}}$product_recipe_reviews = new Review\Listing();$product_recipe_reviews->setCondition("recipe_id__id in (?)", [$product_used_recipe_IDs ]);$product_recipe_reviews->setLimit(4);$product_recipe_reviews->load();}}if ($cat) {return $this->render('Product/ProductCategory.html.twig', ['category' => $productt,'locale' => $locale,'groupids' => $groupids,'country' => $code,//'country'=>'AE', // temporary basses'cat' => $cat,]);// $this->view->category = $productt;// $this->view->locale = $locale;// $this->view->groupids = $groupids;// $this->view->country = $code;// $this->view->cat = $cat;} else {return $this->render('Product/Productdetail.html.twig', ['country' => $code,//'country'=>'AE', // temporary basses//'vindex'=>$id2,'variant_id' => $variant_id,'product' => $product,'productsss' => $product,'product_recipe_reviews' => $product_recipe_reviews,'product_used_recipe_IDs' => $product_used_recipe_IDs,]);// $this->view->country = $code;// $this->view->vindex = $id2;// $this->view->variant_id = $variant_id;// $this->view->product = $product;// $this->view->productsss = $product;}}}