public function action_new($countrySlug = null) { $country = null; /* @var $country Model_Country */ if ($countrySlug) { $country = Model_Country::getBySlug($countrySlug); if (!$country instanceof Model_Country) { Response::redirect('/admin/404'); } } $session = Session::instance(); $validationErrors = array(); $view = $this->setDefaultValiesToView('admin/partners/partners/new.html.twig'); if (Input::post('action')) { try { /* Validates form */ $validationErrors = $this->validateItem(); if ($validationErrors) { throw new Exception('Form validation failed'); } // Creates partner model, adds values and saves $partner = Model_Partner::forge(); $this->assignValuesFromPost($partner); $partner->save(); // Adds terms and conditions foreach (self::$languages as $language) { $terms = Model_Translation_PartnerTerm::forge(); $terms->set('parent', $partner->get('id')); $terms->set('locale', $language); // In case translation for current language is missing, copies EN translation by default if (Input::post('terms_' . $language)) { $terms->set('translation', Input::post('terms_' . $language)); } else { $terms->set('translation', Input::post('terms_en')); } $terms->save(); } // Redirects to edit partner page $session->set($this->createdKey, true); Response::redirect('admin/partners/edit/' . $partner->get('id')); } catch (Exception $e) { Log::error($e->getMessage()); $view->set('post', Input::post()); } } $view->set('pageTitle', 'Create New Partner'); $view->set('countries', Model_Country::findAll(null, 'en')); $view->set('country', $country); $view->set('currencies', Model_Currency::find('all')); $view->set('validationErrors', $validationErrors); return $view; }