public function getObjectForProductAndParameter(Product $product, $param)
 {
     $q = $this->createQuery('c')->from('ParameterProductValue ppv')->where('ppv.Parameter.id = ? ', $param->getId())->addWhere('ppv.Product.id = ?', $product->getId());
     $ppv = $q->fetchOne();
     if (!$ppv) {
         $ppv = new ParameterProductValue();
         $ppv->setProduct($product);
         $ppv->setParameter($param);
         $ppv->setCommonValue('empty');
         $ppv->save();
     }
     return $ppv;
 }
Exemplo n.º 2
0
 public function executeCopyProduct($request)
 {
     $product = $this->getRoute()->getObject();
     # copy product main information
     $newProduct = $product->copy();
     $newProduct['code'] = $product['code'] . '_new_' . rand(1, 100000);
     ## copy product Translations
     $transArr = $product->Translation->toArray();
     foreach ($transArr as $index => &$transVal) {
         unset($transVal['id']);
     }
     $newProduct->Translation->fromArray($transArr);
     $newProduct->save();
     # copy product connections with ProductGroups
     foreach ($product->ProductGroups as $prodGroup) {
         $rel = new ProductVsProductGroup();
         $rel['group_id'] = $prodGroup['group_id'];
         $rel['product_id'] = $newProduct['id'];
         $rel->save();
     }
     # copy product connections with ParameterProductOptions
     foreach ($product->ParameterProductOptions as $prodGroup) {
         $rel = new ParameterProductOption();
         $rel['option_id'] = $prodGroup['option_id'];
         $rel['product_id'] = $newProduct['id'];
         $rel->save();
     }
     # copy product connections with ParameterProductValues and their Translations
     foreach ($product->ParameterProductValues as $prodValue) {
         $rel = new ParameterProductValue();
         $arr = $prodValue->toArray();
         $arr['Translation'] = $prodValue->Translation->toArray();
         foreach ($arr['Translation'] as $lang => &$transArr) {
             unset($transArr['id']);
         }
         unset($arr['id']);
         $rel->fromArray($arr);
         $rel['product_id'] = $newProduct['id'];
         $rel->save();
     }
     $this->redirect(array('sf_route' => $this->helper->getEditRoute(), 'sf_subject' => $newProduct));
 }