Esempio n. 1
0
 public static function getCache($cache)
 {
     if (App::isLocal()) {
         Cache::forget('DB_Nav');
         Cache::forget('DB_Urls');
         Cache::forget('DB_Option');
         Cache::forget('DB_AdminBlockTypes');
         Cache::forget('DB_AdminResourceName');
         Cache::forget('DB_AdminResource');
         Cache::forget('DB_LocaleFrontEnable');
         Cache::forget('DB_ResourceNavigable');
         Cache::forget('DB_LocalesEnabled');
     }
     if (!Cache::has($cache)) {
         $cachr = new Cachr();
         $cachr->initCache();
     }
     if (Cache::get($cache) === null) {
         $cachr = new Cachr();
         $cachr->initCache();
     }
     return Cache::get($cache);
 }
Esempio n. 2
0
 /**
  * get the Filemanager
  *
  * @return Response
  */
 public function postPermission()
 {
     $role = Role::find(Input::get('role_id'));
     if (!empty($role)) {
         // Validate the inputs
         $validator = Validator::make(Input::all(), Config::get('validator.admin.permission'));
         // Check if the form validates with success
         if ($validator->passes()) {
             //[id] => name
             $resources = Cachr::getCache('DB_AdminResourceName');
             //Set allowed resources
             foreach (Input::except(array('role_id', '_token')) as $resource_id) {
                 //['resource_id'] => [id]
                 Log::info('allowed resource : ' . $resource_id);
                 unset($resources[$resource_id]);
                 $permission = Permission::where('role_id', '=', $role->id)->where('resource_id', '=', $resource_id)->first();
                 if (!empty($permission)) {
                     $permission->type = 'allow';
                     if (!$permission->save()) {
                         return Redirect::to('admin/role_permission')->with('error_permissions', Lang::get('admin.permission_save_error'));
                     }
                 }
             }
             //Set deny resources
             foreach ($resources as $k => $resource) {
                 $permissions = Permission::where('role_id', '=', $role->id)->where('resource_id', '=', $k)->get();
                 Log::info('denied resource : ' . $k);
                 foreach ($permissions as $permission) {
                     if (!empty($permission)) {
                         $permission->type = 'deny';
                         if (!$permission->save()) {
                             return Redirect::to('admin/role_permission')->with('error_permissions', Lang::get('admin.permission_save_error'));
                         }
                     }
                 }
             }
             //track user
             parent::track('update', 'Permission', $role->id);
             return Redirect::to('admin/role_permission')->with('success_permissions', Lang::get('admin.permission_save_success'));
         }
         return Redirect::to('/admin/role_permission')->withInput()->withErrors($validator);
     }
     return Redirect::to('/admin/role_permission')->with('error_permissions', Lang::get('admin.role_not_found'));
 }
Esempio n. 3
0
 /**
  * Génère a form by a model
  * @param  Object $form
  * @return Array
  */
 public function generateByModel($model, $modelId, $combine)
 {
     $data = array();
     $data['locales'] = \Cachr::getCache('DB_LocalesEnabled');
     if (is_null($data['locales'])) {
         $data['locales'][0] = (object) array('id' => Config::get('app.locale'), 'flag' => null);
     }
     // Cast l'array en objet
     $data['form'] = (object) $model;
     $form = $model->formr($combine);
     if ($form) {
         // Cast l'array en objet
         $form = (object) $form;
     } else {
         return false;
     }
     if (null != $modelId) {
         $modelData = $model->find($modelId)->getAttributes();
         if ($combine && is_array($combine)) {
             foreach ($combine as $new_model_name => $value) {
                 $combine_model = $new_model_name::find($value)->getAttributes();
                 $modelData = array_merge($modelData, $combine_model);
             }
         }
         // Boucle sur les champs pour trouver les champs i18n
         foreach ($modelData as $key => $value) {
             if (strpos($key, 'i18n_') !== false) {
                 $splitModel = explode('_', $key);
                 $modelData[$splitModel[1]] = \I18n::read($value);
                 unset($modelData[$key]);
             }
         }
     }
     $data['form']->id = $form->model;
     $data['form']->type = $form->type;
     if (isset($form->action)) {
         $data['form']->action = $form->action;
     }
     $inputs = $form->data;
     // Boucle sur les inputs
     foreach ($inputs as $key => $input) {
         $data['inputs'][$key] = (object) $input;
         $data['inputs'][$key]->name = $key;
         if (!isset($data['inputs'][$key]->multiLang)) {
             $data['inputs'][$key]->multiLang = false;
         }
         if (!isset($data['inputs'][$key]->value)) {
             $data['inputs'][$key]->value = NULL;
         }
         $data['inputs'][$key]->i18nInpError = false;
         // Check if the input is linked to a foreign model
         if (isset($modelData) && isset($data['inputs'][$key]->foreign) && $data['inputs'][$key]->foreign != null) {
             if (\Input::old($data['inputs'][$key]->name)) {
                 $data['inputs'][$key]->value = \Input::old($data['inputs'][$key]->name);
             } else {
                 $localModel = $data['inputs'][$key]->foreign_local_model;
                 $foreignColumn = $data['inputs'][$key]->foreign_column;
                 $foreign = $localModel->hasMany($data['inputs'][$key]->foreign)->where($data['inputs'][$key]->foreign_column_id, $modelData['id'])->first();
                 if ($foreign == null) {
                     $data['inputs'][$key]->value = null;
                 } else {
                     $data['inputs'][$key]->value = $foreign->{$foreignColumn};
                 }
             }
         } else {
             if (null == $data['inputs'][$key]->value) {
                 // Si 18n est activé pour cet input
                 if ($data['inputs'][$key]->multiLang) {
                     // Boucle sur les langues et set les valeurs pour les inputs i18n
                     foreach ($data['locales'] as $locale) {
                         $data['inputs'][$key]->value[$locale->id] = \Input::old($data['inputs'][$key]->name . '_lang_' . $locale->id);
                     }
                     // Sinon c'est un input normal
                 }
                 if (\Input::old($data['inputs'][$key]->name)) {
                     $data['inputs'][$key]->value = \Input::old($data['inputs'][$key]->name);
                     // Si il n'y a pas de old value et si la value est setté dans le model
                 } else {
                     if (isset($modelData) && isset($modelData[$data['inputs'][$key]->name]) && null != $modelData[$data['inputs'][$key]->name]) {
                         // Set la value en i18n si elle existe
                         if ($data['inputs'][$key]->multiLang) {
                             foreach ($data['locales'] as $locale) {
                                 if (isset($modelData[$data['inputs'][$key]->name][$locale->id]) && $data['inputs'][$key]->value[$locale->id] == null) {
                                     $data['inputs'][$key]->value[$locale->id] = $modelData[$data['inputs'][$key]->name][$locale->id];
                                 }
                             }
                         } else {
                             // si c'est pas multilang, on set la value normal
                             $data['inputs'][$key]->value = $modelData[$data['inputs'][$key]->name];
                         }
                     }
                 }
             }
         }
         // Si c'est un select on génère les options
         if ($data['inputs'][$key]->type == "select" || $data['inputs'][$key]->type == "multiselect") {
             // Append la valeur en DB à la key (A bien test correctement)
             if (\Input::old($data['inputs'][$key]->name)) {
                 $data['inputs'][$key]->key = \Input::old($data['inputs'][$key]->name);
             } else {
                 if (null != $modelId) {
                     $data['inputs'][$key]->key = $modelData[$data['inputs'][$key]->name];
                 } else {
                     $data['inputs'][$key]->key = NULL;
                 }
             }
         }
         // Si c'est un multiselect on génère les options
         if ($data['inputs'][$key]->type == "multiselect") {
             $data['inputs'][$key]->keys = array();
             // Append la valeur en DB à la key (A bien test correctement)
             if (\Input::old($data['inputs'][$key]->name)) {
                 $oldInput = \Input::old($data['inputs'][$key]->name);
                 foreach ($oldInput as $oldIn) {
                     $data['inputs'][$key]->keys[] = $oldIn;
                 }
             } else {
                 if (null != $modelId) {
                     // A TESTER A MODIFIER SI BUG /!\
                     // Recuper le champs en DB (au format json) et le decode pr setter les options
                     $optionsFromModel = json_decode($modelData[$data['inputs'][$key]->name]);
                     // A TERMINER :
                     foreach ($optionsFromModel as $opt) {
                         $data['inputs'][$key]->keys[] = $opt;
                     }
                 }
             }
         }
         if ($data['inputs'][$key]->type == "select" || $data['inputs'][$key]->type == "multiselect") {
             foreach ($data['inputs'][$key]->options as $keyOpt => $option) {
                 $options[$keyOpt] = (object) $option;
             }
             $data['inputs'][$key]->options = $options;
         }
         // Set file Type if the input is a filemanager
         if ($data['inputs'][$key]->type == "filemanager" && !isset($data['inputs'][$key]->typeFilemanager)) {
             // Set to 0 if typeFilemanager is undefined
             $data['inputs'][$key]->typeFilemanager = 0;
         }
         // Set the height of the wysiwyg if undefined
         if ($data['inputs'][$key]->type == "wysiwyg" && !isset($data['inputs'][$key]->height)) {
             // Set to 300 if the height is undefined
             $data['inputs'][$key]->height = 300;
         }
         // Génération des vues
         $data['inputs'][$key]->view = \Response::view('theme::' . $data['inputs'][$key]->viewPath, array('form' => $form, 'input' => $data['inputs'][$key], 'locales' => $data['locales']))->getOriginalContent();
     }
     return $data;
 }