/** * standard SS method */ function requireDefaultRecords() { parent::requireDefaultRecords(); $steps = EcommerceConfig::get("CheckoutPage_Controller", "checkout_steps"); if (is_array($steps) && count($steps)) { foreach ($steps as $id => $code) { $newID = $id + 1; if ($obj = DataObject::get_by_id("CheckoutPage_StepDescription", $newID)) { //do nothing } else { $obj = new CheckoutPage_StepDescription(); $obj->ID = $newID; $obj->Heading = $this->getDefaultTitle($code); $obj->write(); } } } }
function checkoutAndModifierDetails() { $checkoutPage = CheckoutPage::get()->First(); if (!$checkoutPage) { $task = new EcommerceTaskDefaultRecords(); $task->run(null); $checkoutPage = CheckoutPage::get()->First(); if (!$checkoutPage) { user_error("There is no checkout page available and it seems impossible to create one."); } } $steps = CheckoutPage_StepDescription::get(); if ($steps->count()) { foreach ($steps as $key => $step) { $stepNumber = $key + 1; $fields = Config::inst()->get($step->ClassName, "db"); $defaultsArray = $step->stat("defaults", true); $configArray = array(); foreach ($fields as $fieldKey => $fieldType) { if ($fields) { $configArray[$fieldKey] = $step->{$fieldKey}; if (!isset($defaultsArray[$fieldKey])) { $defaultsArray[$fieldKey] = "[default not set]"; } } } $this->definitions["CheckoutPage_Controller"]["STEP_{$stepNumber}" . "_" . $step->getCode()] = $step->Description . "<br />see: <a href=\"/admin/pages/edit/show/" . $checkoutPage->ID . "/\">checkout page</a>."; $this->configs["CheckoutPage_Controller"]["STEP_{$stepNumber}" . "_" . $step->getCode()] = $configArray; $this->defaults["CheckoutPage_Controller"]["STEP_{$stepNumber}" . "_" . $step->getCode()] = $defaultsArray; $this->databaseValues["CheckoutPage_Controller"]["STEP_{$stepNumber}" . "_" . $step->getCode()] = true; } } $steps = OrderModifier_Descriptor::get(); if ($steps->count()) { foreach ($steps as $step) { $fields = Config::inst()->get($step->ClassName, "db"); $defaultsArray = $step->stat("defaults", true); $configArray = array(); foreach ($fields as $fieldKey => $fieldType) { if ($fields) { $configArray[$fieldKey] = $step->{$fieldKey}; if (!isset($defaultsArray[$fieldKey])) { $defaultsArray[$fieldKey] = "[default not set]"; } } } $this->definitions["CheckoutPage_Controller"]["OrderModifier_Descriptor_" . $step->ModifierClassName] = $step->Description . "<br />see: <a href=\"/admin/pages/edit/show/" . $checkoutPage->ID . "/\">checkout page</a>."; $this->configs["CheckoutPage_Controller"]["OrderModifier_Descriptor_" . $step->ModifierClassName] = $configArray; $this->defaults["CheckoutPage_Controller"]["OrderModifier_Descriptor_" . $step->ModifierClassName] = $defaultsArray; $this->databaseValues["CheckoutPage_Controller"]["OrderModifier_Descriptor_" . $step->ModifierClassName] = true; } } }
/** * returns a dataobject set of the steps. * Or just one step if that is more relevant. * @param Int $number - if set, it returns that one step. * @return Null | DataObject (CheckoutPage_Description) | ArrayList (CheckoutPage_Description) */ function CheckoutSteps($number = 0) { $where = ''; $dos = CheckoutPage_StepDescription::get()->Sort("ID", "ASC"); if ($number) { $dos = $dos->Filter(array("ID" => $number)); } if ($number) { if ($dos->count()) { return $dos->First(); } } $returnData = new ArrayList(array()); $completed = 1; $completedClass = "completed"; foreach ($dos as $do) { if ($this->currentStep && $do->Code() == $this->currentStep) { $do->LinkingMode = "current"; $completed = 0; $completedClass = "notCompleted"; } else { if ($completed) { $do->Link = $this->Link("checkoutstep") . "/" . $do->Code . "/"; } $do->LinkingMode = "link {$completedClass}"; } $do->Completed = $completed; $returnData->push($do); } if (EcommerceConfig::get("OrderConfirmationPage_Controller", "include_as_checkout_step")) { $orderConfirmationPage = OrderConfirmationPage::get()->First(); if ($orderConfirmationPage) { $do = $orderConfirmationPage->CurrentCheckoutStep(false); if ($do) { $returnData->push($do); } } } return $returnData; }
/** * standard SS method */ function requireDefaultRecords() { parent::requireDefaultRecords(); $steps = EcommerceConfig::get("CheckoutPage_Controller", "checkout_steps"); if (is_array($steps) && count($steps)) { $idArray = array(); foreach ($steps as $id => $code) { $newID = $id + 1; $idArray[$newID] = $newID; if ($obj = CheckoutPage_StepDescription::get()->byID($newID)) { //do nothing } else { $obj = CheckoutPage_StepDescription::create(); $obj->ID = $newID; $obj->Heading = $this->getDefaultTitle($code); $obj->write(); DB::alteration_message("Creating CheckoutPage_StepDescription {$code}", "created"); } } $toDeleteObjects = CheckoutPage_StepDescription::get()->exclude(array("ID" => $idArray)); if ($toDeleteObjects->count()) { foreach ($toDeleteObjects as $toDeleteObject) { DB::alteration_message("Deleting CheckoutPage_StepDescription " . $toDeleteObject->ID, "deleted"); $toDeleteObject->delete(); } } } }
/** * Returns a dataobject set of the checkout steps if * the OrderConfirmationPage is shown as part of the checkout process * We repeat these here so that you can show the user that (s)he has reached the last step * * @param Int $number - if set, it returns that one step. * @return Null | DataObject (CheckoutPage_Description) | ArrayList (CheckoutPage_Description) */ function CheckoutSteps($number = 0) { $where = ''; if ($number) { $where = "\"CheckoutPage_StepDescription\".\"ID\" = {$number}"; } if (EcommerceConfig::get("OrderConfirmationPage_Controller", "include_as_checkout_step")) { if ($this->currentOrder->IsInSession()) { $dos = CheckoutPage_StepDescription::get()->where($where)->sort("ID", "ASC"); if ($number) { if ($dos && $dos->count()) { return $dos->First(); } } $arrayList = new ArrayList(array()); foreach ($dos as $do) { $do->LinkingMode = "link completed"; $do->Completed = 1; $do->Link = ""; $arrayList->push($do); } $do = $this->CurrentCheckoutStep(true); if ($do) { $arrayList->push($do); } return $arrayList; } } }