示例#1
0
 /**
  * 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);
 }