/**
  * @param Order $order - the order that is being paid
  * @param Form $form - the form that is being submitted
  * @param Array $data - Array of data that is submittted
  * @return Boolean - true if the data is valid
  */
 public static function validate_payment(Order $order, Form $form, array $data)
 {
     if (!$order) {
         $form->sessionMessage(_t('EcommercePayment.NOORDER', 'Order not found.'), 'bad');
         return false;
     }
     //nothing to pay, always valid
     if ($order->TotalOutstanding() == 0) {
         return true;
     }
     $hasValidPaymentClass = false;
     $paymentClass = !empty($data['PaymentMethod']) ? $data['PaymentMethod'] : null;
     if ($paymentClass) {
         if (class_exists($paymentClass)) {
             $paymentClass = new $paymentClass();
             if ($paymentClass instanceof EcommercePayment) {
                 $hasValidPaymentClass = true;
             }
         }
     }
     if (!$hasValidPaymentClass) {
         $form->sessionMessage(_t('EcommercePayment.NOPAYMENTOPTION', 'No Payment option selected.'), 'bad');
         return false;
     }
     // Check payment, get the result back
     return $paymentClass->validatePayment($data, $form);
 }
 /**
  * Make payment for a place order, where payment had previously failed.
  *
  * @param array $data
  * @param Form  $form
  *
  * @return boolean
  */
 public function dopayment($data, $form)
 {
     if (self::config()->allow_paying && $this->order && $this->order->canPay()) {
         // Save payment data from form and process payment
         $data = $form->getData();
         $gateway = !empty($data['PaymentMethod']) ? $data['PaymentMethod'] : null;
         if (!GatewayInfo::is_manual($gateway)) {
             $processor = OrderProcessor::create($this->order);
             $data['cancelUrl'] = $processor->getReturnUrl();
             $response = $processor->makePayment($gateway, $data);
             if ($response) {
                 if ($response->isRedirect() || $response->isSuccessful()) {
                     return $response->redirect();
                 }
                 $form->sessionMessage($response->getMessage(), 'bad');
             } else {
                 $form->sessionMessage($processor->getError(), 'bad');
             }
         } else {
             $form->sessionMessage(_t('OrderActionsForm.MANUAL_NOT_ALLOWED', "Manual payment not allowed"), 'bad');
         }
         return $this->controller->redirectBack();
     }
     $form->sessionMessage(_t('OrderForm.COULDNOTPROCESSPAYMENT', 'Payment could not be processed.'), 'bad');
     $this->controller->redirectBack();
 }
 /**
  * Performs the login, but will also create and sync the Member record on-the-fly, if not found.
  *
  * @param array $data
  * @param Form $form
  * @return bool|Member|void
  * @throws SS_HTTPResponse_Exception
  */
 public static function authenticate($data, Form $form = null)
 {
     $service = Injector::inst()->get('LDAPService');
     $result = $service->authenticate($data['Username'], $data['Password']);
     $success = $result['success'] === true;
     if (!$success) {
         if ($form) {
             $form->sessionMessage($result['message'], 'bad');
         }
         return;
     }
     $data = $service->getUserByUsername($result['identity']);
     if (!$data) {
         if ($form) {
             $form->sessionMessage(_t('LDAPAuthenticator.PROBLEMFINDINGDATA', 'There was a problem retrieving your user data'), 'bad');
         }
         return;
     }
     // LDAPMemberExtension::memberLoggedIn() will update any other AD attributes mapped to Member fields
     $member = Member::get()->filter('GUID', $data['objectguid'])->limit(1)->first();
     if (!($member && $member->exists())) {
         $member = new Member();
         $member->GUID = $data['objectguid'];
         $member->write();
     }
     Session::clear('BackURL');
     return $member;
 }
 /**
  * Updates an existing Member's profile.
  */
 public function save(array $data, Form $form)
 {
     $form->saveInto($this->member);
     try {
         $this->member->write();
     } catch (ValidationException $e) {
         $form->sessionMessage($e->getResult()->message(), 'bad');
         return $this->redirectBack();
     }
     $form->sessionMessage(_t('MemberProfiles.PROFILEUPDATED', 'Your profile has been updated.'), 'good');
     return $this->redirectBack();
 }
 /**
  * @param array $data
  * @param Form $form
  *
  * @return mixed
  */
 public function doSubmit($data, $form)
 {
     $controller = Controller::curr();
     $redirect = Director::baseURL() . $this->owner->URLSegment;
     if ((bool) Config::inst()->get('QuickFeedbackExtension', 'redirect_field') && isset($data['Redirect']) && Director::is_site_url($data['Redirect'])) {
         $redirect = Director::absoluteURL($data['Redirect'], true);
     }
     if (!$controller) {
         goto error;
     }
     $request = $controller->getRequest();
     if (!$request) {
         goto error;
     }
     $limit = (int) Config::inst()->get('QuickFeedbackExtension', 'rate_limit');
     $existing = Feedback::get()->filter('IP', $request->getIP())->sort('Created desc')->first();
     if ($existing) {
         $created = $existing->dbObject('Created');
         if (!$created) {
             goto error;
         }
         $seconds = abs(time() - strtotime($created->getValue()));
         $minutes = round($seconds / 60);
         if ($minutes <= $limit) {
             goto rate;
         }
     }
     $feedback = Feedback::create();
     $feedback->Rating = $data['Rating'];
     $feedback->Comment = $data['Comment'];
     $feedback->IP = $request->getIP();
     if (!empty($this->owner->ID)) {
         $feedback->PageID = $this->owner->ID;
     }
     if (!empty($this->owner->URLSegment)) {
         $feedback->URL = $this->owner->RelativeLink();
     }
     if ((bool) Config::inst()->get('QuickFeedbackExtension', 'redirect_field') && isset($data['Redirect'])) {
         $feedback->URL = $data['Redirect'];
     }
     $feedback->write();
     $form->sessionMessage(_t('QuickFeedback.ThanksMessage', 'Thanks for your comment!'), 'good');
     return $this->owner->redirect($redirect . '?success=1');
     error:
     $form->sessionMessage(_t('QuickFeedback.ErrorMessage', 'An error occurred!'), 'error');
     return $this->owner->redirect($redirect . '?error=1');
     rate:
     $form->sessionMessage(_t('QuickFeedback.RateMessage', 'Please wait a while before submitting!'), 'error');
     return $this->owner->redirect($redirect . '?rate=1');
 }
Exemplo n.º 6
0
 public function doRegisterPersonal(array $data, Form $form)
 {
     $exist = Member::get()->filter(array('Email' => $this->Email))->first();
     if ($exist) {
         $form->sessionMessage('该电子邮件已被注册', 'bad');
         return $this->redirectBack();
     }
     $member = new UnapprovedMember();
     $form->saveInto($member);
     $member->setField('MemberType', 'Personal');
     $member->write();
     $form->sessionMessage('注册成功,请等待您所属的企业审核账号,审核通过之后可以正常登陆', 'good');
     return $this->redirectBack();
 }
 /**
  * Process payment form and return next step in the payment process.
  * Steps taken are:
  * 1. create new payment
  * 2. save form into payment
  * 3. return payment result
  *
  * @param Order $order - the order that is being paid
  * @param Form $form - the form that is being submitted
  * @param Array $data - Array of data that is submittted
  * @return Boolean - if successful, this method will return TRUE
  */
 public static function process_payment_form_and_return_next_step($order, $form, $data)
 {
     if (!$order) {
         $form->sessionMessage(_t('EcommercePayment.NOORDER', 'Order not found.'), 'bad');
         Director::redirectBack();
         return false;
     }
     $paidBy = $order->Member();
     if (!$paidBy) {
         $paidBy = Member::currentUser();
     }
     $paymentClass = !empty($data['PaymentMethod']) ? $data['PaymentMethod'] : null;
     $payment = class_exists($paymentClass) ? new $paymentClass() : null;
     if (!($payment && $payment instanceof Payment)) {
         $form->sessionMessage(_t('EcommercePayment.NOPAYMENTOPTION', 'No Payment option selected.'), 'bad');
         Director::redirectBack();
         return false;
     }
     // Save payment data from form and process payment
     $form->saveInto($payment);
     $payment->OrderID = $order->ID;
     if (is_object($paidBy)) {
         $payment->PaidByID = $paidBy->ID;
     }
     $payment->Amount = $order->TotalOutstandingAsMoneyObject();
     $payment->write();
     // Process payment, get the result back
     $result = $payment->processPayment($data, $form);
     if (!$result instanceof Payment_Result) {
         return false;
     } else {
         if ($result->isProcessing()) {
             //IMPORTANT!!!
             // isProcessing(): Long payment process redirected to another website (PayPal, Worldpay)
             //redirection is taken care of by payment processor
             return $result->getValue();
         } else {
             //payment is done, redirect to either returntolink
             //OR to the link of the order ....
             if (isset($data["returntolink"])) {
                 Director::redirect($data["returntolink"]);
             } else {
                 Director::redirect($order->Link());
             }
         }
         return true;
     }
 }
 public function regenerate($data, Form $form)
 {
     $form->sessionMessage('Regenerated script files', 'good');
     $class = $this->modelClass();
     $this->scriptService->generateScriptFilesFor($class);
     $this->owner->redirectBack();
 }
 function doRegister($data, Form $form)
 {
     //Check for existing member email address
     if ($member = DataObject::get_one("Member", "`Email` = '" . Convert::raw2sql($data['Email']) . "'")) {
         //Set error message
         $form->sessionMessage($data['Email'] . ". Sorry, that email address already exists. Please choose another.", 'bad');
         //Return back to form
         return $this->redirectBack();
         //return Director::redirectBack();
     } else {
         //Otherwise create new member and log them in
         $Member = new Member();
         $form->saveInto($Member);
         $Member->write();
         $Member->login();
         //Find or create the 'user' group
         if (!($userGroup = DataObject::get_one('Group', "Code = 'users'"))) {
             $userGroup = new Group();
             $userGroup->Code = "users";
             $userGroup->Title = "users";
             $userGroup->Write();
             $userGroup->Members()->add($Member);
         }
         //Add member to user group
         $userGroup->Members()->add($Member);
         //Get profile page
         if ($ProfilePage = DataObject::get_one('EditProfilePage')) {
             //echo "profile page exists";
             //Redirect to profile page with success message
             return $this->redirect($ProfilePage->Link());
         }
     }
 }
Exemplo n.º 10
0
 /**
  * Respond to a form view ajax or redirect
  * @param array $params
  * @param \Form $form
  * @param string $redirect
  * @return \SS_HTTPResponse|null
  */
 public function respondToFormAppropriately(array $params, $form = null, $redirect = '')
 {
     if ($redirect && !isset($params['redirect'])) {
         $params['redirect'] = $redirect;
     }
     if ($this->owner->Request->isAjax()) {
         if (!isset($params['code'])) {
             $params['code'] = 200;
         }
         if (!isset($params['code'])) {
             $params['status'] = 'success';
         }
         return singleton('director')->ajax_response($params, $params['code'], $params['status']);
     } else {
         if (isset($params['redirect'])) {
             $this->owner->redirect($params['redirect']);
         }
         if ($form && isset($params['message'])) {
             $form->sessionMessage($params['message'], 'good');
         }
         if (!$this->owner->redirectedTo()) {
             $this->owner->redirectBack();
         }
     }
 }
 /**
  * Handles the SetPassword form
  * @param  array $data 
  * @param  Form $form 	 
  */
 public function doSetPassword($data, $form)
 {
     if (!Member::currentUser()) {
         return false;
     }
     if ($data['Password'] && $data['Password'] == $data['Password_confirm']) {
         Member::currentUser()->Password = $data['Password'];
         Member::currentUser()->write();
         if ($data['BackURL']) {
             return $this->owner->redirect($data['BackURL']);
         }
         $form->sessionMessage('Password updated', 'good');
     }
     $form->sessionMessage('Passwords do not match', 'bad');
     return $this->owner->redirectBack();
 }
 /**
  * Create a new report
  *
  * @param array  $data
  * @param Form $form
  */
 public function createreport($data, $form)
 {
     // assume a user's okay if they can edit the reportholder
     // @TODO have a new create permission here?
     if ($this->data()->canEdit()) {
         $type = $data['ReportType'];
         $classes = ClassInfo::subclassesFor('AdvancedReport');
         if (!in_array($type, $classes)) {
             throw new Exception("Invalid report type");
         }
         $report = new ReportPage();
         $report->Title = $data['ReportName'];
         $report->MetaDescription = isset($data['ReportDescription']) ? $data['ReportDescription'] : '';
         $report->ReportType = $type;
         $report->ParentID = $this->data()->ID;
         $oldMode = Versioned::get_reading_mode();
         Versioned::reading_stage('Stage');
         $report->write();
         $report->doPublish();
         Versioned::reading_stage('Live');
         $this->redirect($report->Link());
     } else {
         $form->sessionMessage(_t('ReporHolder.NO_PERMISSION', 'You do not have permission to do that'), 'warning');
         $this->redirect($this->data()->Link());
     }
 }
 /**
  * Attempt to find and authenticate member if possible from the given data.
  *
  * @param array $data
  * @param Form $form
  * @param bool &$success Success flag
  * @return Member Found member, regardless of successful login
  * @see MemberAuthenticator::authenticate_member()
  */
 protected static function authenticate_member($data, $form, &$success)
 {
     // Default success to false
     $success = false;
     // Attempt to identify by temporary ID
     $member = null;
     $email = null;
     if (!empty($data['tempid'])) {
         // Find user by tempid, in case they are re-validating an existing session
         $member = Member::member_from_tempid($data['tempid']);
         if ($member) {
             $email = $member->Email;
         }
     }
     // Otherwise, get email from posted value instead
     if (!$member && !empty($data['Email'])) {
         $email = $data['Email'];
     }
     // Check default login (see Security::setDefaultAdmin()) the standard way and the "extension"-way :-)
     $asDefaultAdmin = $email === Security::default_admin_username();
     if ($asDefaultAdmin || isset($GLOBALS['_DEFAULT_ADMINS']) && array_key_exists($email, $GLOBALS['_DEFAULT_ADMINS'])) {
         // If logging is as default admin, ensure record is setup correctly
         $member = Member::default_admin();
         $success = Security::check_default_admin($email, $data['Password']);
         // If not already true check if one of the extra admins match
         if (!$success) {
             $success = $GLOBALS['_DEFAULT_ADMINS'][$email] == $data['Password'];
         }
         if ($success) {
             return $member;
         }
     }
     // Attempt to identify user by email
     if (!$member && $email) {
         // Find user by email
         $member = Member::get()->filter(Member::config()->unique_identifier_field, $email)->first();
     }
     // Validate against member if possible
     if ($member && !$asDefaultAdmin) {
         $result = $member->checkPassword($data['Password']);
         $success = $result->valid();
     } else {
         $result = new ValidationResult(false, _t('Member.ERRORWRONGCRED'));
     }
     // Emit failure to member and form (if available)
     if (!$success) {
         if ($member) {
             $member->registerFailedLogin();
         }
         if ($form) {
             $form->sessionMessage($result->message(), 'bad');
         }
     } else {
         if ($member) {
             $member->registerSuccessfulLogin();
         }
     }
     return $member;
 }
 /**
  * Handles conversion of the current record
  * @param {array} $data Submitted Data
  * @param {Form} $form Submitting Form
  * @return {mixed} Returns an SS_HTTPResponse or an HTML string
  */
 public function doConvertObject($data, Form $form)
 {
     //Make sure the record still exists
     if (empty($this->record) || $this->record === false || !$this->record->exists()) {
         return $this->httpError(404);
     }
     if ($data['ConvertMode'] == 'ReplacePage') {
         if (empty($data['ReplacePageID']) || $data['ReplacePageID'] == 0) {
             $form->sessionMessage(_t('KapostAdmin.NO_REPLACE_PAGE_TARGET', '_You must select a page to replace'), 'error');
             return $this->popupController->redirectBack();
         }
         if (($redirectURL = $this->replacePage($data, $form)) === false) {
             $form->sessionMessage(_t('KapostAdmin.ERROR_COULD_NOT_REPLACE', '_Sorry an error occured and the target page could not be replaced.'), 'error');
             return $this->popupController->redirectBack();
         } else {
             Requirements::clear();
             Requirements::customScript('window.parent.jQuery(\'.cms-edit-form.KapostAdmin\').entwine(\'ss\').panelRedirect(' . json_encode($redirectURL) . ')');
             //Clean up the expired previews
             $this->cleanUpExpiredPreviews();
             return $this->customise(array('Title' => null, 'Content' => null, 'Form' => null))->renderWith('CMSDialog');
         }
     } else {
         if ($data['ConvertMode'] == 'NewPage') {
             if (($redirectURL = $this->newPage($data, $form)) === false) {
                 $form->sessionMessage(_t('KapostAdmin.ERROR_COULD_NOT_CREATE', '_Sorry an error occured and the page could not be created.'), 'error');
                 return $this->popupController->redirectBack();
             } else {
                 Requirements::clear();
                 Requirements::customScript('window.parent.jQuery(\'.cms-edit-form.KapostAdmin\').entwine(\'ss\').panelRedirect(' . json_encode($redirectURL) . ')');
                 //Clean up the expired previews
                 $this->cleanUpExpiredPreviews();
                 return $this->customise(array('Title' => null, 'Content' => null, 'Form' => null))->renderWith('CMSDialog');
             }
         }
     }
     //Allow extensions to convert the object
     if (in_array($data['ConvertMode'], KapostAdmin::config()->extra_conversion_modes)) {
         $results = $this->extend('doConvert' . $data['ConvertMode'], $this->record, $data, $form);
         if (count($results) > 0) {
             foreach ($results as $result) {
                 if ($result !== false) {
                     Requirements::clear();
                     Requirements::customScript('window.parent.jQuery(\'.cms-edit-form.KapostAdmin\').entwine(\'ss\').panelRedirect(' . json_encode($result) . ')');
                     //Clean up the expired previews
                     $this->cleanUpExpiredPreviews();
                     return $this->customise(array('Title' => null, 'Content' => null, 'Form' => null))->renderWith('CMSDialog');
                 }
             }
             $message = $form->Message();
             if (empty($message)) {
                 $form->sessionMessage(_t('KapostAdmin.GENERIC_CONVERSION_ERROR', '_Conversion method returns an error and no specific message'), 'error');
             }
             //All failed redirect back
             return $this->popupController->redirectBack();
         }
     }
     $form->sessionMessage(_t('KapostAdmin.UNKNOWN_CONVERSION_MODE', '_Unknown conversion mode: {mode}', array('mode' => $data['ConvertMode'])), 'error');
     return $this->popupController->redirectBack();
 }
Exemplo n.º 15
0
 public function processApplication($data, Form $form)
 {
     $application = JobApplication::create();
     $form->saveinto($application);
     $application->write();
     $form->sessionMessage('Thanks for applying.', 'good');
     $this->redirectBack();
 }
 public function syncnow($data, Form $form)
 {
     $record = $this->getRecord();
     if ($record) {
         singleton('SyncrotronService')->getUpdates($record->ID);
     }
     $form->sessionMessage('Sync complete', 'good');
     return $this->getToplevelController()->redirectBack();
 }
Exemplo n.º 17
0
 /**
  * @param $data
  * @param Form $form
  * @return bool|SS_HTTPResponse
  * Handle form submission
  */
 public function Submit($data, Form $form)
 {
     Session::set('Contact', $data);
     if ($this->sendMail($data)) {
         Session::clear('Contact');
     }
     $form->sessionMessage('Your message has been sent', 'good');
     return $this->redirectBack();
 }
 /**
  * Performs the login, but will also create and sync the Member record on-the-fly, if not found.
  *
  * @param array $data
  * @param Form $form
  * @return bool|Member|void
  * @throws SS_HTTPResponse_Exception
  */
 public static function authenticate($data, Form $form = null)
 {
     $service = Injector::inst()->get('LDAPService');
     $login = trim($data['Login']);
     if (Email::validEmailAddress($login)) {
         if (Config::inst()->get('LDAPAuthenticator', 'allow_email_login') != 'yes') {
             $form->sessionMessage(_t('LDAPAuthenticator.PLEASEUSEUSERNAME', 'Please enter your username instead of your email to log in.'), 'bad');
             return;
         }
         $username = $service->getUsernameByEmail($login);
         // No user found with this email.
         if (!$username) {
             $form->sessionMessage(_t('LDAPAuthenticator.INVALIDCREDENTIALS', 'Invalid credentials'), 'bad');
             return;
         }
     } else {
         $username = $login;
     }
     $result = $service->authenticate($username, $data['Password']);
     $success = $result['success'] === true;
     if (!$success) {
         if ($form) {
             $form->sessionMessage($result['message'], 'bad');
         }
         return;
     }
     $data = $service->getUserByUsername($result['identity']);
     if (!$data) {
         if ($form) {
             $form->sessionMessage(_t('LDAPAuthenticator.PROBLEMFINDINGDATA', 'There was a problem retrieving your user data'), 'bad');
         }
         return;
     }
     // LDAPMemberExtension::memberLoggedIn() will update any other AD attributes mapped to Member fields
     $member = Member::get()->filter('GUID', $data['objectguid'])->limit(1)->first();
     if (!($member && $member->exists())) {
         $member = new Member();
         $member->GUID = $data['objectguid'];
         $member->write();
     }
     Session::clear('BackURL');
     return $member;
 }
 public function saveSummitAttendeeInfo($data, Form $form)
 {
     if ($current_member = Member::currentUser()) {
         $attendee = $current_member->getCurrentSummitAttendee();
         if (!$attendee && !isset($data['SelectedAttendee'])) {
             try {
                 if (Session::get('attendees')) {
                     // already retrieved data
                     $form->sessionMessage('Please select an attendee', "bad");
                     return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration'));
                 }
                 $attendees = $this->manager->getOrderAttendees($data['ExternalOrderId']);
                 Session::set('attendees', $attendees);
                 Session::set('ExternalOrderId', $data['ExternalOrderId']);
                 Session::set('SharedContactInfo', $data['SharedContactInfo']);
                 return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration'));
             } catch (InvalidEventbriteOrderStatusException $ex1) {
                 Session::clear('attendees');
                 Session::clear('ExternalOrderId');
                 Session::clear('SharedContactInfo');
                 $form->sessionMessage('Current order was cancelled, please try with another one!', "bad");
                 return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration'));
             }
         }
         if ($attendee) {
             return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration'));
         }
         if (isset($data['SelectedAttendee'])) {
             try {
                 // register attendee with current member
                 $attendees = Session::get('attendees');
                 $external_order_id = Session::get('ExternalOrderId');
                 $external_attendee_id = $data['SelectedAttendee'];
                 $selected_attendee_data = $attendees[$external_attendee_id];
                 $external_event_id = $selected_attendee_data['event_id'];
                 $external_ticket_class_id = $selected_attendee_data['ticket_class_id'];
                 $created = $selected_attendee_data['created'];
                 $this->manager->registerAttendee($current_member, $external_event_id, $external_order_id, $external_attendee_id, $external_ticket_class_id, $created, $data['SharedContactInfo']);
                 Session::clear('attendees');
                 Session::clear('ExternalOrderId');
                 Session::clear('SharedContactInfo');
                 $form->sessionMessage('Your registration request was successfully processed!', "good");
                 return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration'));
             } catch (Exception $ex) {
                 Session::clear('attendees');
                 Session::clear('ExternalOrderId');
                 Session::clear('SharedContactInfo');
                 SS_Log::log($ex->getMessage(), SS_Log::ERR);
                 $form->sessionMessage('Your request can not be processed, please contact your administrator', "bad");
                 return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration'));
             }
         }
     }
     return $this->owner->httpError(403);
 }
 public function testGetStateWithFormMessages()
 {
     $fields = new FieldList();
     $actions = new FieldList();
     $form = new Form(new Controller(), 'TestForm', $fields, $actions);
     $form->sessionMessage('All saved', 'good');
     $formSchema = new FormSchema();
     $expected = ['id' => 'TestForm', 'fields' => [['id' => 'Form_TestForm_SecurityID', 'value' => $form->getSecurityToken()->getValue(), 'messages' => [], 'valid' => true, 'data' => []]], 'messages' => [['value' => 'All saved', 'type' => 'good']]];
     $state = $formSchema->getState($form);
     $this->assertInternalType('array', $state);
     $this->assertJsonStringEqualsJsonString(json_encode($expected), json_encode($state));
 }
 /**
  * Save the changes to the form, and redirect to the checkout page
  *
  * @param array          $data
  * @param Form           $form
  * @param SS_HTTPRequest $request
  *
  * @return bool|SS_HTTPResponse
  */
 public function proceed($data, $form, $request)
 {
     $member = Member::currentUser();
     if (!$member) {
         return false;
     }
     $form->saveInto($member);
     $member->write();
     $form->sessionMessage(_t("MemberForm.DetailsSaved", 'Your details have been saved'), 'good');
     $this->extend('updateShopAccountFormResponse', $request, $form, $data, $response);
     return $response ?: $this->getController()->redirect(CheckoutPage::find_link());
 }
 public function postEntry(array $data, Form $form)
 {
     if (!empty($data['Website'])) {
         if (!filter_var($data['Website'], FILTER_VALIDATE_URL)) {
             $form->addErrorMessage('Website', _t('GuestbookController.INVALIDWEBSITEFORMAT', "Invalid format for website."), 'bad');
             return $this->redirectBack();
         }
     }
     if (Session::get("GuestbookPosted") > time() - $this->FloodLimit) {
         $floodMessage = _t('GuestbookController.FLOODLIMITEXCEEDED', "You have already posted the last {seconds} seconds. Please wait.", "", $this->FloodLimit);
         $form->sessionMessage($floodMessage, 'bad');
         return $this->redirectBack();
     }
     $entry = GuestbookEntry::create();
     $entry->GuestbookID = $this->ID;
     $form->saveInto($entry);
     $entry->write();
     $form->sessionMessage(_t('GuestbookController.ENTRYSAVED', "Entry has been saved."), 'good');
     Session::set('GuestbookPosted', time());
     return $this->redirectBack();
 }
 /**
  * Save the current sites {@link SiteConfig} into the database
  *
  * @param array $data 
  * @param Form $form 
  * @return String
  */
 public function save_siteconfig($data, $form)
 {
     $siteConfig = SiteConfig::current_site_config();
     $form->saveInto($siteConfig);
     try {
         $siteConfig->write();
     } catch (ValidationException $ex) {
         $form->sessionMessage($ex->getResult()->message(), 'bad');
         return $this->getResponseNegotiator()->respond($this->request);
     }
     $this->response->addHeader('X-Status', rawurlencode(_t('LeftAndMain.SAVEDUP', 'Saved.')));
     return $this->getResponseNegotiator()->respond($this->request);
 }
 /**
  * Make payment for a place order, where payment had previously failed.
  *
  * @param array $data
  * @param Form  $form
  *
  * @return boolean
  */
 public function dopayment($data, $form)
 {
     if (self::config()->allow_paying && $this->order && $this->order->canPay()) {
         // Save payment data from form and process payment
         $data = $form->getData();
         $gateway = !empty($data['PaymentMethod']) ? $data['PaymentMethod'] : null;
         if (!GatewayInfo::isManual($gateway)) {
             /** @var OrderProcessor $processor */
             $processor = OrderProcessor::create($this->order);
             $response = $processor->makePayment($gateway, $data, $processor->getReturnUrl());
             if ($response && !$response->isError()) {
                 return $response->redirectOrRespond();
             } else {
                 $form->sessionMessage($processor->getError(), 'bad');
             }
         } else {
             $form->sessionMessage(_t('OrderActionsForm.ManualNotAllowed', "Manual payment not allowed"), 'bad');
         }
         return $this->controller->redirectBack();
     }
     $form->sessionMessage(_t('OrderForm.CouldNotProcessPayment', 'Payment could not be processed.'), 'bad');
     $this->controller->redirectBack();
 }
 /**
  * Form action handler for OrderForm_Cancel.
  *
  * Take the order that this was to be change on,
  * and set the status that was requested from
  * the form request data.
  *
  * @param array $data The form request data submitted
  * @param Form $form The {@link Form} this was submitted on
  */
 function docancel(array $data, Form $form, SS_HTTPRequest $request)
 {
     $SQLData = Convert::raw2sql($data);
     $member = Member::currentUser();
     if ($member) {
         if (isset($SQLData['OrderID'])) {
             $order = Order::get()->byID(intval($SQLData['OrderID']));
             if ($order) {
                 if ($order->canCancel()) {
                     $reason = "";
                     if (isset($SQLData["CancellationReason"])) {
                         $reason = $SQLData["CancellationReason"];
                     }
                     $order->Cancel($member, $reason);
                     $form->sessionMessage(_t('OrderForm.CANCELLED', 'Order has been cancelled.'), 'good');
                     return $this->controller->redirectBack();
                 }
             }
         }
     }
     $form->sessionMessage(_t('OrderForm.COULDNOTCANCELORDER', 'Sorry, order could not be cancelled.'), 'bad');
     $this->controller->redirectBack();
     return false;
 }
 /**
  * @param $data
  * @param Form $form
  * @return bool|SS_HTTPResponse
  */
 public function saveLink($data, Form $form)
 {
     $url = $data['Link'];
     // Attach a protocol if needed
     if (substr($url, 0, 7) != 'http://' && substr($url, 0, 8) != 'https://') {
         $url = 'http://' . $url;
     }
     if (!filter_var($url, FILTER_VALIDATE_URL)) {
         $form->sessionMessage('That does not appear to be a valid URL', 'bad');
         return $this->Controller()->redirectBack();
     }
     $material = PresentationSlide::create();
     $material->Link = $url;
     $material->write();
     $this->presentation->Materials()->filter(['ClassName' => 'PresentationSlide'])->removeAll();
     $this->presentation->Materials()->add($material);
     $token = SecurityToken::inst()->getValue();
     return $this->Controller()->redirect(Controller::join_links($this->Controller()->Link(), 'success', "?key={$token}&material={$material->ID}"));
 }
 /**
  * @param array $data
  * @param Form  $form
  */
 public function doUnregister($data, $form)
 {
     $regos = $this->time->Registrations()->filter('Email', $data['Email']);
     if (!$regos || !count($regos)) {
         $form->sessionMessage(_t('EventManager.NOREGFOREMAIL', 'No registrations for the email you entered could be found.'), 'bad');
         return $this->redirectBack();
     }
     if ($this->time->Event()->UnRegEmailConfirm) {
         $addr = $data['Email'];
         $email = new Email();
         $registration = $regos->First();
         $email->setTo($addr);
         $email->setSubject(sprintf(_t('EventManagement.CONFIRMUNREGFOR', 'Confirm Un-Registration For %s (%s)'), $this->time->Event()->Title, SiteConfig::current_site_config()->Title));
         $email->setTemplate('EventUnregistrationConfirmationEmail');
         $email->populateTemplate(array('Registration' => $registration, 'Time' => $this->time, 'SiteConfig' => SiteConfig::current_site_config(), 'ConfirmLink' => Director::absoluteURL(Controller::join_links($this->Link(), 'confirm', '?email=' . urlencode($addr), '?token=' . $registration->Token))));
         $email->send();
     } else {
         foreach ($regos as $rego) {
             $rego->Status = 'Canceled';
             $rego->write();
         }
     }
     $this->redirect($this->Link('afterunregistration'));
 }
Exemplo n.º 28
0
 /**
  * Imports the submitted CSV file based on specifications given in
  * {@link self::model_importers}.
  * Redirects back with a success/failure message.
  * 
  * @todo Figure out ajax submission of files via jQuery.form plugin
  *
  * @param array $data
  * @param Form $form
  * @param SS_HTTPRequest $request
  */
 public function import($data, $form, $request)
 {
     if (!$this->showImportForm || is_array($this->showImportForm) && !in_array($this->modelClass, $this->showImportForm)) {
         return false;
     }
     $importers = $this->getModelImporters();
     $loader = $importers[$this->modelClass];
     // File wasn't properly uploaded, show a reminder to the user
     if (empty($_FILES['_CsvFile']['tmp_name']) || file_get_contents($_FILES['_CsvFile']['tmp_name']) == '') {
         $form->sessionMessage(_t('ModelAdmin.NOCSVFILE', 'Please browse for a CSV file to import'), 'good');
         $this->redirectBack();
         return false;
     }
     if (!empty($data['EmptyBeforeImport']) && $data['EmptyBeforeImport']) {
         //clear database before import
         $loader->deleteExistingRecords = true;
     }
     $results = $loader->load($_FILES['_CsvFile']['tmp_name']);
     $message = '';
     if ($results->CreatedCount()) {
         $message .= _t('ModelAdmin.IMPORTEDRECORDS', "Imported {count} records.", array('count' => $results->CreatedCount()));
     }
     if ($results->UpdatedCount()) {
         $message .= _t('ModelAdmin.UPDATEDRECORDS', "Updated {count} records.", array('count' => $results->UpdatedCount()));
     }
     if ($results->DeletedCount()) {
         $message .= _t('ModelAdmin.DELETEDRECORDS', "Deleted {count} records.", array('count' => $results->DeletedCount()));
     }
     if (!$results->CreatedCount() && !$results->UpdatedCount()) {
         $message .= _t('ModelAdmin.NOIMPORT', "Nothing to import");
     }
     $form->sessionMessage($message, 'good');
     $this->redirectBack();
 }
 /**
  * Postback action to save a record
  *
  * @param array $data
  * @param Form $form
  * @param SS_HTTPRequest $request
  * @return mixed
  */
 function doSave($data, $form, $request)
 {
     $form->saveInto($this->currentRecord);
     try {
         $this->currentRecord->write();
     } catch (ValidationException $e) {
         $form->sessionMessage($e->getResult()->message(), 'bad');
     }
     // Behaviour switched on ajax.
     if (Director::is_ajax()) {
         return $this->edit($request);
     } else {
         Director::redirectBack();
     }
 }
Exemplo n.º 30
0
 /**
  * This method is used to return data after an ajax call was made.
  * When a asynchronious request is made to the shopping cart (ajax),
  * then you will first action the request and then use this function
  * to return some values.
  *
  * It can also be used without ajax, in wich case it will redirects back
  * to the last page.
  *
  * Note that you can set the ajax response class in the configuration file.
  *
  *
  * @param String $message
  * @param String $status
  * @param Form $form
  * @returns String (JSON)
  */
 public function setMessageAndReturn($message = "", $status = "", $form = null)
 {
     if ($message && $status) {
         $this->addMessage($message, $status);
     }
     //TODO: handle passing back multiple messages
     if (Director::is_ajax()) {
         $responseClass = EcommerceConfig::get("ShoppingCart", "response_class");
         $obj = new $responseClass();
         return $obj->ReturnCartData($this->getMessages());
     } else {
         //TODO: handle passing a message back to a form->sessionMessage
         $this->StoreMessagesInSession();
         if ($form) {
             $form->sessionMessage($message, $status);
         }
         Director::redirectBack();
         return;
     }
 }