private function createtags()
 {
     $products = Product::get()->where("ClassName = 'Product'")->sort("Rand()")->limit(4);
     $this->addExamplePages(1, "Product Tags", $products);
     foreach ($products as $pos => $product) {
         $idArray[$pos] = $product->ID;
         $titleArray[] = $product->MenuTitle;
         $this->addToTitle($product, "with tag", true);
     }
     $page = Page::get()->where("\"URLSegment\" = 'tag-explanation'")->First();
     $t1 = new EcommerceProductTag();
     $t1->Title = "TAG 1";
     $t1->ExplanationPageID = $page->ID;
     $t1->Explanation = "explains Tag 1";
     $t1->write();
     $existingProducts = $t1->Products();
     $existingProducts->addMany(array($idArray[0], $idArray[1]));
     DB::alteration_message("Creating tag: " . $t1->Title . " for " . implode(",", $titleArray), "created");
     $t2 = new EcommerceProductTag();
     $t2->Title = "TAG 2";
     $t2->ExplanationPageID = $page->ID;
     $t2->Explanation = "explains Tag 2";
     $t2->write();
     $existingProducts = $t2->Products();
     $existingProducts->addMany(array($idArray[2], $idArray[3]));
     DB::alteration_message("Creating tag: " . $t2->Title . " for " . implode(",", $titleArray), "created");
     $productGroupWithTags = ProductGroupWithTags::get()->First();
     $existingTags = $productGroupWithTags->EcommerceProductTags();
     $existingTags->addMany(array($t1->ID, $t2->ID));
 }
 function submit($data, $form)
 {
     $member = Member::currentUser();
     if (!$member) {
         $form->setMessage("You need to be logged in to edit this module.", "bad");
         $this->redirectBack();
         return;
     }
     $data = Convert::raw2sql($data);
     $page = null;
     if (isset($data["ModuleProductID"])) {
         $page = ModuleProduct::get()->byID(intval($data["ModuleProductID"]));
     }
     if (!$page) {
         $page = new ModuleProduct();
     }
     if (isset($page->ParentID)) {
         $oldParentID = $page->ParentID;
     }
     $form->saveInto($page);
     $page->Title = $data["Title"];
     $page->MenuTitle = $data["Title"];
     if (!$member->inGroup("ADMIN")) {
         $page->ShowInMenus = 0;
         $page->ShowInMenus = 0;
         $parentPage = AddingModuleProduct::get()->First();
         if ($parentPage) {
             $page->ParentID = $parentPage->ID;
         }
     }
     $page->writeToStage('Stage');
     $page->Publish('Stage', 'Live');
     $page->Status = "Published";
     $page->flushCache();
     if ($page->Authors()->count() == 0 && $member) {
         $page->Authors()->addMany(array($member->ID => $member->ID));
     }
     if (!isset($data["EcommerceProductTags"]) || !is_array($data["EcommerceProductTags"]) || !count($data["EcommerceProductTags"])) {
         $data["EcommerceProductTags"] = array(-1 => -1);
     }
     if (isset($data["AdditionalTags"]) && $data["AdditionalTags"]) {
         $extraTagsArray = explode(",", $data["AdditionalTags"]);
         if (is_array($extraTagsArray) && count($extraTagsArray)) {
             foreach ($extraTagsArray as $tag) {
                 $tag = trim($tag);
                 $obj = EcommerceProductTag::get()->filter(array("Title" => $tag))->first();
                 if (!$obj) {
                     $obj = new EcommerceProductTag();
                     $obj->Title = $tag;
                     $obj->write();
                 }
                 $data["EcommerceProductTags"][$obj->ID] = $obj->ID;
             }
         }
     }
     DB::query("DELETE FROM \"EcommerceProductTag_Products\" WHERE \"ProductID\" = " . $page->ID . " AND \"EcommerceProductTagID\" NOT IN (" . implode(",", $data["EcommerceProductTags"]) . ")");
     if (is_array($data["EcommerceProductTags"]) && count($data["EcommerceProductTags"])) {
         $page->EcommerceProductTags()->addMany($data["EcommerceProductTags"]);
     }
     if (Director::is_ajax()) {
         return $page->renderWith("ModuleProductInner");
     } else {
         $this->redirect($page->Link());
     }
 }