public function executeProductmassoper(sfWebRequest $request)
 {
     $producttype_id = $request->getParameter("producttype_id");
     $producttype = ProducttypeTable::fetch($producttype_id);
     $prefix = $request->getParameter("prefix");
     $suffix = $request->getParameter("suffix");
     $replace = $request->getParameter("replace");
     $with = $request->getParameter("with");
     $maxsellprices = $request->getParameter("maxsellprices");
     $maxbuyprices = $request->getParameter("maxbuyprices");
     $minsellprices = $request->getParameter("minsellprices");
     $minbuyprices = $request->getParameter("minbuyprices");
     $autocalcsellprices = $request->getParameter("autocalcsellprices");
     $autocalcbuyprices = $request->getParameter("autocalcbuyprices");
     $ids = $request->getParameter("product_ids");
     $products = $producttype->getProductsByIds($ids);
     //if no checked products, do nothing
     if (count($ids)) {
         if ($request->getParameter("submit") == "Merge") {
             $this->redirect("producttype/merge?producttype_id=" . $producttype_id . "&product_id=" . $request->getParameter("input") . "&duplicate_ids=" . implode(",", $ids));
             //$this->mainproduct=ProductTable::fetch($request->getParameter("input"));
             //$this->products=$products;
             //				$this->merge($mainproduct, $product);
             //
         } else {
             if ($request->getParameter("submit") == "Save") {
                 foreach ($products as $product) {
                     if ($maxsellprices[$product->getId()] != "") {
                         $product->setMaxsellprice($maxsellprices[$product->getId()]);
                         $product->setAutocalcsellprice(0);
                     }
                     if ($minsellprices[$product->getId()] != "") {
                         $product->setMinsellprice($minsellprices[$product->getId()]);
                         $product->setAutocalcsellprice(0);
                     }
                     if ($maxbuyprices[$product->getId()] != "") {
                         $product->setMaxbuyprice($maxbuyprices[$product->getId()]);
                         $product->setAutocalcbuyprice(0);
                     }
                     if ($minbuyprices[$product->getId()] != "") {
                         $product->setMinbuyprice($minbuyprices[$product->getId()]);
                         $product->setAutocalcbuyprice(0);
                     }
                     $product->save();
                 }
             } else {
                 if ($request->getParameter("submit") == "Monitor") {
                     foreach ($products as $product) {
                         $product->setMonitored(1);
                         $product->save();
                     }
                 } else {
                     if ($request->getParameter("submit") == "Unmonitor") {
                         foreach ($products as $product) {
                             $product->setMonitored(0);
                             $product->save();
                         }
                     } else {
                         foreach ($products as $product) {
                             $product->setName($prefix . str_replace($replace, $with, $product->getName()) . $suffix);
                             //$product->setDescription($product->getName());
                             $product->save();
                         }
                     }
                 }
             }
         }
     }
     //$parent->calc();
     $this->redirect($request->getReferer());
 }