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()); } }