/**
  * All general configuration related with configuring site.
  * @return [view] Renders view with form inputs
  */
 public function action_general()
 {
     $this->template->styles = array('//cdn.jsdelivr.net/bootstrap.tagsinput/0.3.9/bootstrap-tagsinput.css' => 'screen', 'css/pnotify.custom.min.css' => 'screen');
     $this->template->scripts['footer'][] = '//cdn.jsdelivr.net/bootstrap.tagsinput/0.3.9/bootstrap-tagsinput.min.js';
     Breadcrumbs::add(Breadcrumb::factory()->set_title(__('General')));
     $this->template->title = __('General');
     // all form config values
     $generalconfig = new Model_Config();
     $config = $generalconfig->where('group_name', '=', 'general')->or_where('group_name', '=', 'i18n')->find_all();
     // config general array
     foreach ($config as $c) {
         $forms[$c->config_key] = $forms[$c->config_key] = array('key' => $c->group_name . '[' . $c->config_key . '][]', 'id' => $c->config_key, 'value' => $c->config_value);
     }
     //not updatable fields
     $do_nothing = array('base_url', 'menu', 'locale', 'allow_query_language', 'charset', 'translate', 'ocacu', 'minify', 'subscribe', 'blog', 'faq', 'forums', 'messaging', 'black_list', 'auto_locate', 'social_auth', 'adblock', 'subscriptions', 'cron', 'hide_homepage_categories');
     // save only changed values
     if ($this->request->post()) {
         foreach ($this->request->post('general') as $k => $v) {
             $this->request->post('general_' . $k, $v[0]);
         }
         $validation = Validation::factory($this->request->post())->rule('general_maintenance', 'range', array(':value', 0, 1))->rule('general_private_site', 'range', array(':value', 0, 1))->rule('general_disallowbots', 'range', array(':value', 0, 1))->rule('general_cookie_consent', 'range', array(':value', 0, 1))->rule('general_site_name', 'not_empty')->rule('general_moderation', 'not_empty')->rule('general_moderation', 'range', array(':value', 0, 5))->rule('general_blog', 'range', array(':value', 0, 1))->rule('general_forums', 'range', array(':value', 0, 1))->rule('general_faq', 'range', array(':value', 0, 1))->rule('general_black_list', 'range', array(':value', 0, 1))->rule('general_search_by_description', 'range', array(':value', 0, 1))->rule('general_recaptcha_active', 'range', array(':value', 0, 1));
         if ($validation->check()) {
             //save general
             foreach ($config as $c) {
                 $config_res = $this->request->post();
                 if (!in_array($c->config_key, $do_nothing) and ($config_res[$c->group_name][$c->config_key][0] != $c->config_value or Kohana::$_POST_ORIG['general']['html_head'][0] != $c->config_value or Kohana::$_POST_ORIG['general']['html_footer'][0] != $c->config_value)) {
                     if ($c->config_key == 'html_head' or $c->config_key == 'html_footer') {
                         $c->config_value = Kohana::$_POST_ORIG[$c->group_name][$c->config_key][0];
                     } else {
                         $c->config_value = $config_res[$c->group_name][$c->config_key][0];
                     }
                     if ($c->config_key == 'maintenance' and $c->config_value == 0) {
                         Alert::del('maintenance');
                     }
                     if ($c->config_key == 'private_site' and $c->config_value == 0) {
                         Alert::del('private_site');
                     }
                     Model_Config::set_value($c->group_name, $c->config_key, $c->config_value);
                 }
             }
         } else {
             $errors = $validation->errors('config');
             foreach ($errors as $error) {
                 Alert::set(Alert::ALERT, $error);
             }
             $this->redirect(Route::url('oc-panel', array('controller' => 'settings', 'action' => 'general')));
         }
         Alert::set(Alert::SUCCESS, __('General Configuration updated'));
         $this->redirect(Route::url('oc-panel', array('controller' => 'settings', 'action' => 'general')));
     }
     $this->template->content = View::factory('oc-panel/pages/settings/general', array('forms' => $forms));
 }
Exemple #2
0
 /**
  * All general configuration related with configuring site.
  * @return [view] Renders view with form inputs
  */
 public function action_general()
 {
     // validation active
     $this->template->scripts['footer'][] = 'js/jquery.validate.min.js';
     $this->template->scripts['footer'][] = 'js/oc-panel/settings.js';
     Breadcrumbs::add(Breadcrumb::factory()->set_title(__('General')));
     $this->template->title = __('General');
     // all form config values
     $generalconfig = new Model_Config();
     $config = $generalconfig->where('group_name', '=', 'general')->find_all();
     $config_img = $generalconfig->where('group_name', '=', 'image')->find_all();
     $config_i18n = $generalconfig->where('group_name', '=', 'i18n')->find_all();
     foreach ($config as $c) {
         $forms[$c->config_key] = array('key' => $c->config_key, 'value' => $c->config_value);
     }
     foreach ($config_img as $c) {
         $forms_img[$c->config_key] = array('key' => $c->config_key, 'value' => $c->config_value);
     }
     // config i18n configs
     foreach ($config_i18n as $c) {
         $i18n[$c->config_key] = array('key' => $c->config_key, 'value' => $c->config_value);
     }
     //not updatable fields
     $do_nothing = array('menu', 'locale', 'allow_query_language', 'charset', 'minify', 'api_key', 'cron');
     // save only changed values
     if ($this->request->post()) {
         $validation = Validation::factory($this->request->post())->rule('maintenance', 'range', array(':value', 0, 1))->rule('disallowbots', 'range', array(':value', 0, 1))->rule('cookie_consent', 'range', array(':value', 0, 1))->rule('site_name', 'not_empty')->rule('eu_vat', 'range', array(':value', 0, 1))->rule('products_per_page', 'not_empty')->rule('products_per_page', 'digit')->rule('feed_elements', 'not_empty')->rule('feed_elements', 'digit')->rule('max_image_size', 'not_empty')->rule('max_image_size', 'digit')->rule('height', 'digit')->rule('width', 'digit')->rule('height_thumb', 'digit')->rule('width_thumb', 'digit')->rule('quality', 'not_empty')->rule('quality', 'digit')->rule('quality', 'range', array(':value', 1, 100))->rule('watermark', 'range', array(':value', 0, 1))->rule('watermark_position', 'not_empty')->rule('watermark_position', 'digit')->rule('watermark_position', 'range', array(':value', 0, 2))->rule('blog', 'range', array(':value', 0, 1))->rule('faq', 'range', array(':value', 0, 1))->rule('forums', 'range', array(':value', 0, 1))->rule('sort_by', 'not_empty')->rule('aws_s3_active', 'range', array(':value', 0, 1));
         if ($validation->check()) {
             //save general
             foreach ($config as $c) {
                 $config_res = $this->request->post($c->config_key);
                 if ($config_res != $c->config_value and !in_array($c->config_key, $do_nothing)) {
                     if ($c->config_key == 'html_head' or $c->config_key == 'html_footer') {
                         $c->config_value = Kohana::$_POST_ORIG[$c->config_key];
                     } else {
                         $c->config_value = $config_res;
                     }
                     if ($c->config_key == 'maintenance' and $c->config_value == 0) {
                         Alert::del('maintenance');
                     }
                     try {
                         $c->save();
                     } catch (Exception $e) {
                         echo $e;
                     }
                 }
             }
             //save image config
             foreach ($config_img as $ci) {
                 $allowed_formats = '';
                 $config_res = $this->request->post($ci->config_key);
                 if ($config_res != $ci->config_value) {
                     if ($ci->config_key == 'allowed_formats') {
                         foreach ($config_res as $key => $value) {
                             $allowed_formats .= $value . ",";
                         }
                         $config_res = $allowed_formats;
                     }
                     if ($ci->config_key == 'aws_s3_domain') {
                         switch ($config_res) {
                             case 'bn-s3':
                                 $s3_domain = $this->request->post('aws_s3_bucket') . '.s3.amazonaws.com';
                                 break;
                             case 'bn':
                                 $s3_domain = $this->request->post('aws_s3_bucket');
                                 break;
                             default:
                                 $s3_domain = 's3.amazonaws.com/' . $this->request->post('aws_s3_bucket');
                                 break;
                         }
                         $config_res = $s3_domain . '/';
                     }
                     $ci->config_value = $config_res;
                     try {
                         $ci->save();
                     } catch (Exception $e) {
                         echo $e;
                     }
                 }
             }
             //save i18n
             foreach ($config_i18n as $cn) {
                 $config_res = $this->request->post($cn->config_key);
                 if ($config_res != $cn->config_value and !in_array($cn->config_key, $do_nothing)) {
                     $cn->config_value = $config_res;
                     try {
                         $cn->save();
                     } catch (Exception $e) {
                         echo $e;
                     }
                 }
             }
         } else {
             $errors = $validation->errors('config');
             foreach ($errors as $error) {
                 Alert::set(Alert::ALERT, $error);
             }
             $this->redirect(Route::url('oc-panel', array('controller' => 'settings', 'action' => 'general')));
         }
         Alert::set(Alert::SUCCESS, __('General Configuration updated'));
         $this->redirect(Route::url('oc-panel', array('controller' => 'settings', 'action' => 'general')));
     }
     $pages = array('' => __('Deactivated'));
     foreach (Model_Content::get_pages() as $key => $value) {
         $pages[$value->seotitle] = $value->title;
     }
     $this->template->content = View::factory('oc-panel/pages/settings/general', array('pages' => $pages, 'forms' => $forms, 'forms_img' => $forms_img, 'i18n' => $i18n));
 }