function ApplicableProductQuestions() { $productQuestions = $this->owner->ProductQuestions(); $productQuestionsArray = array(0 => 0); if ($productQuestions && $productQuestions->count()) { $productQuestionsArray = $productQuestions->map("ID", "ID")->toArray(); } $productQuestionsForAll = ProductQuestion::get()->filter(array("ApplyToAllProducts" => 1)); if ($productQuestionsForAll && $productQuestionsForAll->count()) { $productQuestionsForAllArray = $productQuestionsForAll->map("ID", "ID")->toArray(); $productQuestionsArray += $productQuestionsForAllArray; } return ProductQuestion::get()->filter(array("ID" => $productQuestionsArray)); }
/** * returns the applicable Product Questions * @return DataList */ function ProductQuestions() { if (!isset(self::$_product_questions_cache[$this->owner->ID])) { $product = $this->owner->Product(); $productQuestions = $product->ApplicableProductQuestions(); $productQuestionsArray = array(0 => 0); if ($productQuestions && $productQuestions->count()) { $productQuestionsArray = $productQuestions->map("ID", "ID")->toArray(); } $ignoreProductQuestions = $this->owner->IgnoreProductQuestions(); if ($ignoreProductQuestions && $ignoreProductQuestions->count()) { foreach ($ignoreProductQuestions as $ignoreProductQuestion) { unset($productQuestionsArray[$ignoreProductQuestion->ID]); } } $additionalProductQuestions = $this->owner->AdditionalProductQuestions(); if ($additionalProductQuestions && $additionalProductQuestions->count()) { foreach ($additionalProductQuestions as $additionalProductQuestion) { $productQuestionsArray[$additionalProductQuestion->ID] = $additionalProductQuestion->ID; } } if (!count($productQuestionsArray)) { $productQuestionsArray = array(0 => 0); } self::$_product_questions_cache[$this->owner->ID] = ProductQuestion::get()->filter(array("ID" => $productQuestionsArray)); } return self::$_product_questions_cache[$this->owner->ID]; }
/** * * @param Array $answers * ID = ProductQuestion.ID * "ID" => "Answer" (String) * @param Boolean $write */ function updateOrderItemWithProductAnswers($answers, $write = true) { if ($this->owner->canEdit()) { $this->owner->ProductQuestionsAnswer = ""; if (is_array($answers) && count($answers)) { foreach ($answers as $productQuestionID => $productQuestionAnswer) { $question = ProductQuestion::get()->byID(intval($productQuestionID)); if ($question) { } //$form->addErrorMessage("ProductQuestions", $message, $type); } $this->owner->ProductQuestionsAnswer = $this->owner->renderWith("ProductQuestionsAnswers"); } $this->owner->JSONAnswers = json_encode($answers); if ($write) { $this->owner->write(); } } }