public function testExists() { $list = new ArrayList(); $this->assertFalse($list->exists()); $list = new ArrayList(array(1, 2, 3)); $this->assertTrue($list->exists()); }
public function getTagsCollection() { $allTags = new ArrayList(); $max = 0; $member = Member::currentUser(); // Find if we need to filter tags by current discussion page $controller = Controller::curr(); if (method_exists($controller, "data")) { $page = $controller->data(); } else { $page = null; } if ($page != null && $page instanceof DiscussionPage) { $discussions = $page->Discussions(); } else { $discussions = Discussion::get(); } if ($discussions) { foreach ($discussions as $discussion) { if ($discussion->canView($member)) { $theseTags = preg_split(" *, *", trim($discussion->Tags)); foreach ($theseTags as $tag) { if ($tag) { if ($allTags->find("Tag", $tag)) { $allTags->find("Tag", $tag)->Count++; } else { $allTags->push(new ArrayData(array("Tag" => $tag, "Count" => 1, "Link" => Controller::join_links($discussion->Parent()->Link("tag"), Convert::raw2url($tag))))); } $tag_count = $allTags->find("Tag", $tag)->Count; $max = $tag_count > $max ? $tag_count : $max; } } } } if ($allTags->exists()) { // First sort our tags $allTags->sort($this->SortParam, $this->SortOrder); // Now if a limit has been set, limit the list if ($this->Limit) { $allTags = $allTags->limit($this->Limit); } } return $allTags; } return; }
public function Form() { $menu = $this->getProductMenu(); $selections = new ArrayList(); foreach ($menu->GroupSortedSelections() as $mps) { if ($mps->Product()->exists() && $mps->Product()->canPurchase()) { $selections->push($mps); } } if (!$selections->exists()) { return; } $gselections = new Menu_GroupedList($selections); $fields = new FieldList(QuantitiesSelectionField::create("Selections", "", $gselections)); $actions = new FieldList(new FormAction("save", _t("MenuPage.SAVE", "Save"))); $form = new Form($this, "Form", $fields, $actions); $this->dataRecord->extend("updateMenuSelectionForm", $form); return $form; }
/** * Function to find relevent postage rates, based on supplied country and * zip/postal code data. * * We make this a function as part of Commerce Controller, as there are * several points in the payment/order process that will make use of this * functionality * * @param $country String listing the country to search, this has to be an ISO 3166 code * @param $zipcode String listing the zip/postage code to filter by */ public function getPostageAreas($country, $zipcode) { $return = new ArrayList(); $countries = new ArrayList(); $cart = ShoppingCart::create(); $all_rates = $this->SiteConfig()->PostageAreas(); // First find all area's for this country directly (no wildcards) foreach ($all_rates as $rate) { if (!(strpos(strtolower($rate->Country), strtolower($country)) === false)) { $countries->add($rate); } } // If we have no countries in the list specificly, then check for wildcards if (!$countries->exists()) { foreach ($all_rates as $rate) { if ($rate->Country == "*") { $countries->add($rate); } } } // If we have a list of countries check them for post codes foreach ($countries as $rate) { $rate_codes = explode(",", $rate->ZipCode); foreach ($rate_codes as $rate_to_check) { $curr_length = strlen($rate_to_check); if (strtolower(substr($zipcode, 0, $curr_length)) == strtolower($rate_to_check)) { $return->add($rate); } } } // If we still don't have anything to return, check or list of countries // for a wildcard if (!$return->exists()) { foreach ($countries as $rate) { if ($rate->ZipCode == "*") { $return->add($rate); } } } // Now we have a list of locations, start checking for additional // rules an remove if not applicable. $total_cost = str_replace(",", "", $cart->SubTotalCost()); $total_weight = str_replace(",", "", $cart->TotalWeight()); $total_items = str_replace(",", "", $cart->TotalItems()); $max_cost = 0; $max_weight = 0; $max_items = 0; // First loop through and find items that are invalid foreach ($return as $location) { if ($location->Calculation == "Price" && (double) $total_cost < $location->Unit) { $return->remove($location); } if ($location->Calculation == "Weight" && (double) $total_weight < $location->Unit) { $return->remove($location); } if ($location->Calculation == "Items" && (double) $total_items < $location->Unit) { $return->remove($location); } } // Now find max values based on units foreach ($return as $location) { if ($location->Calculation == "Price" && $location->Unit > $max_cost) { $max_cost = $location->Unit; } if ($location->Calculation == "Weight" && $location->Unit > $max_weight) { $max_weight = $location->Unit; } if ($location->Calculation == "Items" && $location->Unit > $max_items) { $max_items = $location->Unit; } } // Now loop through again and calculate which brackets each // Location fits in foreach ($return as $location) { if ($location->Calculation == "Price" && $location->Unit < $max_cost) { $return->remove($location); } if ($location->Calculation == "Weight" && $location->Unit < $max_weight) { $return->remove($location); } if ($location->Calculation == "Items" && $location->Unit < $max_items) { $return->remove($location); } } return $return; }
/** * Check that current product variation is valid * * @param Array $data Submitted data * @return Boolean Returns TRUE if the submitted data is valid, otherwise FALSE. */ public function php($data) { $valid = parent::php($data); $fields = $this->form->Fields(); //Check that variation exists if necessary $form = $this->form; $request = $this->form->getRequest(); //Get product variations from options sent //TODO refactor this $productVariations = new ArrayList(); $options = $request->postVar('Options'); $product = DataObject::get_by_id($data['ProductClass'], $data['ProductID']); $variations = $product ? $product->Variations() : new ArrayList(); if ($variations && $variations->exists()) { foreach ($variations as $variation) { $variationOptions = $variation->Options()->map('AttributeID', 'ID')->toArray(); if ($options == $variationOptions && $variation->isEnabled()) { $productVariations->push($variation); } } } if ((!$productVariations || !$productVariations->exists()) && $product && $product->requiresVariation()) { $this->form->sessionMessage(_t('ProductForm.VARIATIONS_REQUIRED', 'This product requires options before it can be added to the cart.'), 'bad'); //Have to set an error for Form::validate() $this->errors[] = true; $valid = false; return $valid; } //Validate that base currency is set for this cart $config = ShopConfig::current_shop_config(); if (!$config->BaseCurrency) { $this->form->sessionMessage(_t('ProductForm.BASE_CURRENCY_NOT_SET', 'The currency is not set.'), 'bad'); //Have to set an error for Form::validate() $this->errors[] = true; $valid = false; } return $valid; }
/** * This method tests that the exists method * returns TRUE if the values exists in the * ArrayList. * * @return void */ public function testExists() { // initialize two new ArrayList's $list = new ArrayList(); // add different values to the ArrayList $list->add("test"); $list->add(1); // check for the values $this->assertTrue($list->exists(0)); $this->assertTrue($list->exists(1)); }