/** * Save a new theme. * * @return void */ public function store() { if (!$this->app['sentry']->getUser()->hasAccess('themes.create')) { return new Response($this->app['translator']->trans('noPermThemeCreate'), 403); } $name = $this->input->get('name'); $data = $this->input->get('theme'); $vars = $this->input->get('vars', array()); //make sure we got a name passed in if (!$name) { return new Response($this->app['translator']->trans('enterNameForTheme'), 400); } $byName = $this->model->where('name', $name)->first(); //if we have an id it means we're gonna need to edit an existing theme if (isset($data['id'])) { $byId = $this->model->find($data['id']); if ($byName && $byName->name != $byId->name) { return new Response($this->app['translator']->trans('themeWithNameExists'), 400); } if ($byId && Sentry::getUser()->id == $byId->user_id) { return new Response($this->theme->update($byId, $this->input->all())); } } else { //update if theme is created by currently logged in user or return an error if ($byName && Sentry::getUser()->id == $byName->user_id) { return new Response($this->theme->update($byName, $this->input->all())); } elseif ($byName) { return new Response($this->app['translator']->trans('themeWithNameExists'), 400); } } //if we didn't return by this point we'll just create a new theme with given data try { $this->theme->create($this->input->all()); } catch (\Less_Exception_Compiler $e) { return new Response($this->app['translator']->trans('errorInTheme'), 400); } return new Response($this->model, 201); }