/** * @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'); }
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()); } } }
/** * 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(); }
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(); }
/** * @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')); }
/** * 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(); } }
/** * 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; } }