/**
  * Default action handler for this page
  * 
  * @param	SS_HTTPRequest	$request
  * @return	Object			AfterPurchasePage
  */
 public function afterPurchase(SS_HTTPRequest $request)
 {
     if ($request->isGET()) {
         if ($this->validateClickBankRequest) {
             $cbreceipt = $request->getVar('cbreceipt');
             $cbpop = $request->getVar('cbpop');
             $name = $request->getVar('cname');
             $email = $request->getVar('cemail');
             if (!empty($cbreceipt) && !empty($cbpop)) {
                 if (ClickBankManager::validate_afterpurchase_request($request->getVars())) {
                     $member = DataObject::get_one('Member', "Email = '{$email}'");
                     // make the member status to logged-in
                     if ($member && $this->loginAfterClickBankRequestIsValid) {
                         $member->logIn();
                     }
                     // few handy replacement texts
                     $content = $this->Content;
                     $content = str_replace('$CBReceipt', $cbreceipt, $content);
                     $content = str_replace('$CBName', $name, $content);
                     $data = array('Title' => $this->Title, 'Content' => $content);
                     return $this->customise($data)->renderWith(array('AfterPurchasePage' => 'Page'));
                 }
             }
         } else {
             $data = array('Title' => $this->Title, 'Content' => $this->Content);
             return $this->customise($data)->renderWith(array('AfterPurchasePage' => 'Page'));
         }
     }
     return $this->redirect('/server-error');
 }
 /**
  * Process IPN request from ClickBank. Only process POST request
  * 
  * @param	object	$_POST
  * @return	int		HTTP code 
  */
 public function ipn(SS_HTTPRequest $request)
 {
     if ($request->isPost()) {
         if (ClickBankManager::validate_ipn_request($request->postVars())) {
             ClickBankManager::process_ipn_request($request->postVars());
             return Director::get_status_code();
         }
     }
     return ErrorPage::response_for(404);
 }
 /**
  * Add config options in CMS site configuration section
  * 
  * @see DataObjectDecorator::updateCMSFields()
  */
 function updateCMSFields(&$fields)
 {
     // Show warning message
     if (!ClickBankManager::validate_required_modules()) {
         $fields->addFieldToTab("Root.ClickBank", new LiteralField("ClickBankWarningHeader", _t('ClickBank.MESSAGE_WARNINGMISSINGMODULE')));
     }
     $fields->addFieldToTab("Root.ClickBank", new LiteralField('ClickBankIPNTitle', _t('ClickBank.CONFIG_GENERAL_SETTINGS_SECTION_TITLE')));
     $fields->addFieldToTab("Root.ClickBank", new TextField('ClickBankID', _t('ClickBank.CONFIG_CLICKBANKID')));
     $fields->addFieldToTab("Root.ClickBank", new TextField('ClickBankSecretKey', _t('ClickBank.CONFIG_SECRETKEY')));
     $fields->addFieldToTab("Root.ClickBank", new TextField('ClickBankSkin', _t('ClickBank.CONFIG_SKINID')));
     $clickBankHolder = DataObject::get_one('ClickBankHolder');
     $site_ipn_url = '';
     if ($clickBankHolder) {
         $site_ipn_url = Director::absoluteURL('/clickbank/ipn');
     }
     $ipn_textfield = new ReadonlyField('ClickBankIpnUrl', _t('ClickBank.CONFIG_IPN_URL'), $site_ipn_url);
     $fields->addFieldToTab("Root.ClickBank", $ipn_textfield);
     $fields->addFieldToTab("Root.ClickBank", new LabelField('IpnUrlLabel', _t('ClickBank.CONFIG_IPN_URL_LABEL')));
     //$fields->addFieldToTab("Root.ClickBank", new LiteralField('ClickBankAPI', _t('ClickBank.CONFIG_API_SECTION_TITLE')));
     //$fields->addFieldToTab("Root.ClickBank", new TextField('ClickBankApiKey', _t('ClickBank.CONFIG_API_KEY')));
     //$fields->addFieldToTab("Root.ClickBank", new TextField('ClickBankDeveloperApiKey', _t('ClickBank.CONFIG_API_DEVELOPER_KEY')));
     //$fields->addFieldToTab("Root.ClickBank", new LiteralField('ClickBankSiteModeHeader', _t('ClickBank.CONFIG_SITE_MODE_SECTION_TITLE')));
     //$fields->addFieldToTab("Root.ClickBank", new CheckboxField('ClickBankTestMode', _t('ClickBank.CONFIG_SITE_MODE')));
 }