public function action_home($page = null) { // To store any form errors $errors = array(); // Store success message $session = Session::instance(); $success_message = null; if ($session->get('success_message')) { $success_message = $session->get('success_message'); $session->delete('success_message'); } $this->template->scripts = array('media/js/contact.js'); // Make sure this is a POST request if ($this->request->method() == 'POST') { // Get required parameters from the web form for the request $fields = array(); $fields['name'] = urlencode(arr::get($_POST, 'name')); $fields['company'] = urlencode(arr::get($_POST, 'company')); $fields['email'] = arr::get($_POST, 'email'); $fields['website'] = arr::get($_POST, 'website'); $fields['subject'] = urlencode(arr::get($_POST, 'subject')); $fields['message'] = urlencode(arr::get($_POST, 'message')); // validates fields $validation = Validation::factory($fields); $contact = new Model_Contact(); $rules = $contact->rules(); $validation->rules('name', $rules['name'])->rules('company', $rules['company'])->rules('email', $rules['email'])->rules('website', $rules['website'])->rules('subject', $rules['subject'])->rules('message', $rules['message']); if ($validation->check()) { // Send email to admin $template = View::factory('emails/contact', array('name' => $fields['name'], 'company' => $fields['company'], 'email' => $fields['email'], 'website' => $fields['website'], 'subject' => $fields['subject'], 'message' => $fields['message']))->render(); Email::send($this->config['global']['email_info'], $fields['email'], $fields['subject'], $template, TRUE); // Redirect user $session->set('success_message', "Thank you. Your message was successfully sent."); $this->request->redirect('/contact'); } else { // If form did not pass, get errors $e = new ORM_Validation_Exception('payment', $validation); $errors = $e->errors('models'); } } $this->template->title = __("Contact Us - gowork@"); $this->template->content = View::factory("static/contact_us", array('errors' => $errors, 'success_message' => $success_message)); }
protected function errors_extract(ORM_Validation_Exception $e) { $errors = $e->errors(''); if (!empty($errors['_files'])) { $errors = array_merge($errors, $errors['_files']); unset($errors['_files']); } if (!empty($errors['_external'])) { $errors = array_merge($errors, $errors['_external']); unset($errors['_external']); } return $errors; }
/** * It will display the form to create a new AD */ public function action_create() { die; // To store any form errors $errors = array(); // Start session $session = Session::instance(); // Set default discount code $discount_code = Arr::get($_POST, 'discount_code', Arr::get($session->get('temp_ad'), 'discount_code')); if (!isset($this->config['paypal'][$discount_code])) { $discount_code = null; } // Make sure this is a POST request if ($this->request->method() == 'POST') { // Deletes session data $session->delete('temp_ad'); // validates form $ad = ORM::factory('ad'); $ad->set_fields($_POST); $ad->company_logo = arr::get($_FILES, 'company_logo'); // Check if form is valid if ($ad->validation()->check()) { $ad->company_logo = $this->save_image($_FILES['company_logo']); $session->set('temp_ad', array('title' => $ad->title, 'description' => $ad->description, 'budget' => $ad->budget, 'category_id' => $ad->category_id, 'jobtype_id' => $ad->jobtype_id, 'contact' => $ad->contact, 'telecommute' => $ad->telecommute, 'location' => $ad->location, 'highlight' => $ad->highlight, 'private_company' => arr::get($_POST, 'private_company', 0), 'company_logo' => $ad->company_logo, 'company_name' => $ad->company_name, 'company_url' => $ad->company_url, 'company_address' => $ad->company_address, 'email' => $ad->email, 'jobboard_id' => 1, 'discount_code' => $ad->discount_code)); // Redirects user to the preview $this->request->redirect('/ads/preview'); } else { // If form did not pass, get errors $e = new ORM_Validation_Exception('ad', $ad->validation()); $errors = $e->errors('models'); } } $this->template->scripts = array('media/js/tiny_mce/jquery.tinymce.js', 'media/js/create.js'); $this->template->title = __('Create Ad (Step 1) - gowork@'); $this->template->content = View::factory('ads/create', array('categories' => array_merge(array('--'), ORM::factory('category')->find_all()->as_array('id', 'name')), 'jobtypes' => array_merge(array('--'), ORM::factory('jobtype')->find_all()->as_array('id', 'name')), 'errors' => $errors, 'temp_ad' => $session->get('temp_ad'), 'price_highlight' => $this->config['paypal'][$discount_code]['price_highlight'])); }
/** * Shows the payment form */ public function action_home() { // To store any form errors $errors = array(); // Check for a valid AD session form $session = Session::instance(); $temp_ad = $session->get('temp_ad'); // Redirects user to the create form if temp ad was not found if (!$temp_ad) { $this->request->redirect('/ads/create'); } $amount = $this->config['ad']['price_base']; if (1 == $temp_ad['highlight']) { $amount += $this->config['ad']['price_highlight']; } // Make sure this is a POST request if ($this->request->method() == 'POST') { // Get required parameters from the web form for the request $fields['paymentType'] = urlencode('Sale'); $fields['amount'] = $this->config['ad']['price_base']; $fields['amount'] += $amount; $fields['currencyCode'] = 'USD'; $fields['firstName'] = urlencode(arr::get($_POST, 'firstName')); $fields['lastName'] = urlencode(arr::get($_POST, 'lastName')); $fields['creditCardType'] = urlencode(arr::get($_POST, 'creditCardType')); $fields['creditCardNumber'] = urlencode(arr::get($_POST, 'creditCardNumber')); $fields['expDateMonth'] = urlencode(arr::get($_POST, 'expDateMonth')); $fields['expDateYear'] = urlencode(arr::get($_POST, 'expDateYear')); $fields['cvv2Number'] = urlencode(arr::get($_POST, 'cvv2Number')); $fields['address1'] = urlencode(arr::get($_POST, 'address1')); $fields['city'] = urlencode(arr::get($_POST, 'city')); $fields['state'] = urlencode(arr::get($_POST, 'state')); $fields['zip'] = urlencode(arr::get($_POST, 'zip')); $fields['country'] = urlencode(arr::get($_POST, 'country')); // validates fields $validation = Validation::factory($fields); $payment = new Model_Payment(); $rules = $payment->rules(); $validation->rules('paymentType', $rules['paymentType'])->rules('amount', $rules['amount'])->rules('currencyCode', $rules['currencyCode'])->rules('firstName', $rules['firstName'])->rules('lastName', $rules['lastName'])->rules('creditCardType', $rules['creditCardType'])->rules('creditCardNumber', $rules['creditCardNumber'])->rules('expDateMonth', $rules['expDateMonth'])->rules('expDateYear', $rules['expDateYear'])->rules('cvv2Number', $rules['cvv2Number'])->rules('address1', $rules['address1'])->rules('city', $rules['city'])->rules('state', $rules['state'])->rules('zip', $rules['zip'])->rules('country', $rules['country']); if ($validation->check()) { // Data seems good, try to send ti to paypal $result = $payment->transaction($fields); if ($result) { // Adds AD to DB $ad = ORM::factory('ad'); $ad->set_fields($temp_ad); $ad->active = 1; // Ugly ugly hack ! $ad->_valid = TRUE; $ad->save(); // Deleted session $session->delete('temp_ad'); // Create temp session value $session->set('ad_created_id', $ad->id); // Send email to client $this->request->redirect('/payment/complete'); } else { $errors['paypal'] = $payment->resArray['L_LONGMESSAGE0']; } } else { // If form did not pass, get errors $e = new ORM_Validation_Exception('payment', $validation); $errors = $e->errors('models'); } } // Fixed arrays $creditCardTypes = array('Visa' => 'Visa', 'MasterCard' => 'MasterCard', 'Discover' => 'Discover', 'Amex' => 'Amex'); // Months $expDateMonths = array('01' => '01', '02' => '02', '03' => '03', '04' => '04', '05' => '05', '06' => '06', '07' => '07', '08' => '08', '09' => '09', '10' => '10', '11' => '11', '12' => '12'); // Years $expDateYears = array(); for ($i = date('Y'); $i <= (int) date('Y') + 10; $i++) { $expDateYears[$i] = $i; } $this->template->scripts = array('media/js/payment.js'); // Show view $this->template->title = __('Purchase and complete (Final step)'); $this->template->content = View::factory('payment/purchase', array('creditCardTypes' => $creditCardTypes, 'expDateMonths' => $expDateMonths, 'expDateYears' => $expDateYears, 'countries' => $this->country_list(), 'errors' => $errors, 'temp_payment' => $_POST, 'amount' => $amount)); }
/** * Set validation errors. * * @param ORM_Validation_Exception|Validation $validation * @param string $file File or directory to error messages. * @return mixed */ public static function validation($validation, $file = 'models') { $messages = $validation->errors($file); self::$_data[Messages::VALIDATION] = !empty(self::$_data[Messages::VALIDATION]) ? Arr::merge(self::$_data[Messages::VALIDATION], $messages) : $messages; }