function onBeforeWrite()
 {
     parent::onBeforeWrite();
     if (isset($_REQUEST["AddATag"])) {
         $name = Convert::raw2sql($_REQUEST["AddATag"]);
         if ($name) {
             $this->newTag = EcommerceProductTag::get()->filterAny(array("Title" => $name, "Code" => $name))->first();
             if (!$this->newTag) {
                 $this->newTag = new EcommerceProductTag();
                 $this->newTag->Title = $name;
                 $this->newTag->Code = $name;
                 $this->newTag->write();
                 //TO DO - does not work!!!
             }
         }
     }
 }
 /**
  * Process and render search results.
  *
  * @param array $data The raw request data submitted by user
  * @param SearchForm $form The form instance that was submitted
  * @param SS_HTTPRequest $request Request generated for this action
  */
 function modulesearchformresults($data, $form, $request)
 {
     $data = array('Results' => $form->getResults(), 'Query' => $form->getSearchQuery(), 'Title' => _t('SearchForm.SearchResults', 'Search Results'));
     //search tags
     //search authors
     if ($data["Results"]) {
         foreach ($data["Results"] as $key => $resultItem) {
             if (!$resultItem instanceof ModuleProduct) {
                 $data["Results"]->remove($resultItem);
             }
         }
     } else {
         $data["Results"] = new ArrayList();
     }
     $search = Convert::raw2sql($data["Query"]);
     if (strlen($search) > 2) {
         $additionalProducts = ModuleProduct::get()->filterAny(array("Code:PartialMatch" => $search, "MenuTitle:PartialMatch" => $search));
         if ($additionalProducts) {
             foreach ($additionalProducts as $moduleProduct) {
                 $data["Results"]->push($moduleProduct);
             }
         }
         $tags = EcommerceProductTag::get()->filterAny(array("Title:PartialMatch" => $search, "Synonyms:PartialMatch" => $search, "Explanation:PartialMatch" => $search));
         if ($tags->count()) {
             foreach ($tags as $tag) {
                 $rows = DB::query("SELECT ProductID FROM EcommerceProductTag_Products WHERE EcommerceProductTagID = " . $tag->ID);
                 if ($rows) {
                     foreach ($rows as $row) {
                         $item = ModuleProduct::get()->byID($row["ProductID"]);
                         if ($item) {
                             $data["Results"]->push($item);
                         }
                     }
                 }
             }
         }
         $authors = Member::get()->filterAny(array("ScreenName:PartialMatch" => $search, "FirstName:PartialMatch" => $search, "Surname:PartialMatch" => $search));
         if ($authors->count()) {
             foreach ($authors as $author) {
                 $rows = DB::query("SELECT \"ModuleProductID\" FROM \"ModuleProduct_Authors\" WHERE \"MemberID\" = " . $author->ID);
                 if ($rows) {
                     foreach ($rows as $row) {
                         $item = ModuleProduct::get()->byID($row["ModuleProductID"]);
                         if ($item) {
                             $data["Results"]->push($item);
                         }
                     }
                 }
             }
         }
     }
     if ($data["Results"] && $data["Results"] instanceof DataObjectSet) {
         $data["Results"]->removeDuplicates();
     }
     if (Director::is_ajax()) {
         return Convert::array2json(array("ModuleProducts" => $data["Results"]->column("ID")));
     }
     return $this->customise(array("Products" => $data["Results"]));
 }
 /**
  * just a placeholder that is required
  */
 function show()
 {
     if ($tag = $this->request->param("ID")) {
         $this->tag = EcommerceProductTag::get_by_code($tag);
     }
     return array();
 }
 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));
 }
 static function get_by_code($code)
 {
     $code = Convert::raw2sql($code);
     return EcommerceProductTag::get()->filter(array("Code" => $code))->first();
 }
 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());
     }
 }