public function update()
 {
     Allow::permission($this->module['group'], 'settings');
     if (!Request::ajax()) {
         App::abort(404);
     }
     $json_request = array('status' => FALSE, 'responseText' => '', 'responseErrorText' => '', 'redirect' => FALSE);
     ## Скелет настроек из конфига
     $settings = Config::get('settings');
     $settings_sections = isset($settings['sections']) && is_callable($settings['sections']) ? $settings['sections']() : NULL;
     #Helper::ta($settings_sections);
     ## Текущие значения настроек из БД
     $settings_values = Storage::firstOrNew(['module' => 'system', 'name' => 'settings']);
     $settings_values = json_decode($settings_values->value, true);
     #Helper::tad($settings_values);
     ## Новые значения настроек - из формы
     $settings_values_new = @Input::all()['settings'];
     #Helper::tad($settings_values);
     ## Проходим все проверки, и сохраняем настройки
     ## Если в конфиге объявлены секции настроек...
     if (!is_null($settings_sections) && is_array($settings_sections) && count($settings_sections)) {
         ## Если из формы переданы новые значения настроек
         if (is_array($settings_values_new) && count($settings_values_new)) {
             ## Перебираем все секции настроек, переданных из формы
             foreach ($settings_values_new as $section_slug => $options) {
                 ## Если передана неизвестная секция - пропускаем ее
                 if (!isset($settings_sections[$section_slug]) || !is_array($settings_sections[$section_slug]) || !count($settings_sections[$section_slug])) {
                     continue;
                 }
                 #Helper::ta($settings_sections[$section_slug]);
                 ## Перебираем все опции в текущей известной секции (из конфига)
                 foreach ($settings_sections[$section_slug]['options'] as $option_slug => $option_data) {
                     #Helper::ta($section_slug . ' / ' . $option_slug . ' => ');
                     $value = isset($options[$option_slug]) ? $options[$option_slug] : NULL;
                     ## If handler of field is defined
                     if (is_callable($handler = @$option_data['handler'])) {
                         #Helper::d($handler);
                         #var_dump($value);
                         $value = $handler($value);
                     }
                     if ($value === false) {
                         continue;
                     }
                     #var_dump($value);
                     $settings_values[$section_slug][$option_slug] = $value;
                 }
             }
         }
     }
     ## СОХРАНЕНИЕ
     #Helper::tad($settings_values);
     Storage::updateOrCreate(['module' => 'system', 'name' => 'settings'], ['value' => json_encode($settings_values)]);
     ## КЕШИРОВАНИЕ
     Cache::forever('cms.settings', $settings_values);
     $json_request['responseText'] = 'Сохранено';
     $json_request['status'] = TRUE;
     return Response::json($json_request, 200);
 }
 public function destroy($id)
 {
     Allow::permission($this->module['group'], 'delete');
     if (!Request::ajax()) {
         App::abort(404);
     }
     $json_request = array('status' => FALSE, 'responseText' => '');
     $element = Upload::where('id', $id)->first();
     if (is_object($element)) {
         #Helper::tad($element);
         #Helper::dd($element->fullpath());
         @unlink($element->fullpath());
         $element->delete();
     }
     $json_request['responseText'] = 'Удалено';
     $json_request['status'] = TRUE;
     return Response::json($json_request, 200);
 }
 public function deleteDestroy($id)
 {
     Allow::permission($this->module['group'], 'users');
     if (!Request::ajax()) {
         App::abort(404);
     }
     $json_request = array('status' => FALSE, 'responseText' => '');
     $deleted = User::find($id)->delete();
     $json_request['responseText'] = 'Пользователь удален';
     $json_request['status'] = TRUE;
     return Response::json($json_request, 200);
 }
 public function destroy($id)
 {
     Allow::permission($this->module['group'], $this->module['name']);
     if (!Request::ajax()) {
         App::abort(404);
     }
     $json_request = array('status' => FALSE, 'responseText' => '');
     $deleted = Storage::where('module', 'menu')->where('id', $id)->delete();
     $json_request['responseText'] = 'Удалено';
     $json_request['status'] = TRUE;
     return Response::json($json_request, 200);
 }
 private function dicval_permission($dic, $permission = '')
 {
     /**
      * Устанавливаем права доступа текущего пользователя к словарю, из конфига (если они заданы)
      */
     $dic_settings = Config::get('dic/' . $dic->slug);
     if (@is_object(Auth::user()) && @is_object(Auth::user()->group) && NULL != ($user_group_name = Auth::user()->group->name)) {
         #Helper::dd($user_group_name);
         #$user_group_name = 'moderator';
         $dicval_permissions = @$dic_settings['group_actions'][$user_group_name];
         #Helper::dd($dicval_permissions);
         if (isset($dicval_permissions) && @is_callable($dicval_permissions)) {
             $dicval_permissions = $dicval_permissions();
             #Helper::dd($dicval_permissions);
             Allow::set_actions($this->module['group'], $dicval_permissions);
         }
     }
     /**
      * Проверяем, есть ли у пользователя необходимые права для выполнения действия
      */
     Allow::permission($this->module['group'], $permission);
 }
 public function deleteDestroy($id)
 {
     Allow::permission($this->module['group'], 'groups');
     if (!Request::ajax()) {
         App::abort(404);
     }
     $json_request = array('status' => FALSE, 'responseText' => '');
     if ($id == 1) {
         $json_request['responseText'] = 'Невозможно удалить группу Администраторы';
         return Response::json($json_request, 400);
     }
     $deleted = Group::find($id)->delete();
     $json_request['responseText'] = 'Группа удалена';
     $json_request['status'] = TRUE;
     return Response::json($json_request, 200);
 }
 public function destroy($id)
 {
     if (!Request::ajax()) {
         App::abort(404);
     }
     Allow::permission($this->module['group'], 'delete');
     $json_request = array('status' => FALSE, 'responseText' => '');
     $page = $this->essence->find($id);
     if (is_object($page)) {
         $metas = $this->pages_meta->where('page_id', $id)->get();
         if (count($metas)) {
             /**
              * Delete SEO data of the PageMeta
              * DEPRICATED
              */
             if (class_exists('Seo')) {
                 $metas_list = $metas->lists('id');
                 Seo::where('module', 'page_meta')->whereIn('unit_id', $metas_list)->delete();
             }
             foreach ($metas as $meta) {
                 $meta->delete();
             }
         }
         $blocks = $this->pages_blocks->where('page_id', $id)->get();
         if (count($blocks)) {
             foreach ($blocks as $block) {
                 $block_metas = $this->pages_blocks_meta->where('block_id', $block->id)->get();
                 foreach ($block_metas as $block_meta) {
                     $block_meta->delete();
                 }
                 $block->delete();
             }
         }
         /**
          * Delete SEO data of the Page
          */
         if (class_exists('Seo')) {
             Seo::where('module', 'Page')->where('unit_id', $page->id)->delete();
         }
     }
     $page->delete();
     ## Clear & reload pages cache
     Page::drop_cache();
     Page::preload();
     $json_request['responseText'] = 'Страница удалена';
     $json_request['status'] = TRUE;
     return Response::json($json_request, 200);
 }
 public function postImport3($dic_id)
 {
     Allow::permission($this->module['group'], 'import');
     $dic = Dictionary::where(is_numeric($dic_id) ? 'id' : 'slug', $dic_id)->first();
     if (!is_object($dic)) {
         App::abort(404);
     }
     #Helper::tad($dic);
     ## Get also exists values
     #$exist_values = $dic->values;
     #Helper::ta($exist_values);
     $input = Input::all();
     /*
     foreach ($exist_values as $e => $exist_value) {
         if ($input['rewrite_mode'] == 1)
             $exist_values[$exist_value->name] = $exist_value;
         else
             $exist_values[$exist_value->slug] = $exist_value;
         unset($exist_values[$e]);
     }
     Helper::ta($exist_values);
     */
     $max = count($input['values'][0]);
     $fields = $input['fields'];
     $values = $input['values'];
     ## Filter fields & values
     foreach ($fields as $f => $field) {
         if (is_numeric($field) && $field == 0) {
             #Helper::d($f . " => " . $field . " = 0");
             unset($fields[$f]);
             unset($values[$f]);
         }
     }
     #Helper::d($fields);
     #Helper::d($values);
     ## Make insertions
     $find_key = $input['rewrite_mode'] == 1 ? 'name' : 'slug';
     $array = array();
     $count = count($values[0]);
     for ($i = 0; $i < $count; $i++) {
         $arr = array('dic_id' => $dic->id);
         foreach ($fields as $f => $field) {
             $arr[$field] = @trim($values[$f][$i]);
         }
         $find = array($find_key => @$arr[$find_key], 'dic_id' => $dic->id);
         #unset($arr[$find_key]);
         if (@$input['set_slug'] && ($input['set_slug_elements'] == 'all' || $input['set_slug_elements'] == 'empty' && !@$arr['slug'])) {
             $arr['slug'] = Helper::translit(@$arr['name']);
         }
         if (@$input['set_ucfirst'] && $arr['name']) {
             $arr['name'] = Helper::mb_ucfirst($arr['name']);
         }
         #Helper::dd($find);
         #/*
         $dicval = DicVal::firstOrCreate($find);
         $dicval->update($arr);
         #Helper::ta($dicval);
         #*/
         unset($dicval);
         #$array[] = $arr;
     }
     #Helper::d($array);
     return Redirect::route('dicval.index', $dic_id);
 }
示例#9
0
 public function destroy($id)
 {
     if (!Request::ajax()) {
         App::abort(404);
     }
     Allow::permission($this->module['group'], 'delete');
     $json_request = array('status' => FALSE, 'responseText' => '');
     $element = $this->essence->find($id);
     if (is_object($element)) {
         $metas = $this->news_meta->where('news_id', $id)->get();
         if (count($metas)) {
             foreach ($metas as $meta) {
                 $meta->delete();
             }
         }
     }
     $element->delete();
     $json_request['responseText'] = 'Удалено';
     $json_request['status'] = TRUE;
     return Response::json($json_request, 200);
 }