public function isMaxOrder() { //If menu is a child AND get maxOrder siblings if ($this->parent_id != 0) { $maxOrder = Nav::where('parent_id', '=', $this->parent_id)->where('id', '<>', $this->id)->max('order'); } else { $maxOrder = Nav::where('parent_id', '=', 0)->where('id', '<>', $this->id)->max('order'); } if (empty($maxOrder)) { return true; } //there are only one menu or one child if ($this->order > $maxOrder) { return true; } return false; }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { // delete $navigation = Nav::find($id); if (empty($navigation)) { return Redirect::to('admin/navigation')->with('success', Lang::get('admin.navigation_notfind')); } //delete all translation foreach ($navigation->i18n()->translations() as $translation) { if (!$translation->delete()) { return Redirect::to('admin/navigation')->with('error', Lang::get('admin.navigation_translation_delete_fail')); } } //equilibrate branche //here equilibrate orders of menu ! //if parentid = 0, set all else other ! $navigations = Nav::where('parent_id', $navigation->parent_id)->where('id', '<>', $navigation->id)->orderBy('order', 'ASC')->get(); for ($count_navigation = count($navigations), $i = 0; $i < $count_navigation; $i++) { $navigations[$i]->order = $i + 1; $navigations[$i]->save(); } //delete children if exists foreach ($navigation->children() as $child) { $child->delete(); } // delete if ($navigation->delete()) { //track user parent::track('delete', 'Navigation', $navigation->id); Cache::forget('DB_Nav'); return Redirect::to('admin/navigation')->with('success', Lang::get('admin.navigation_delete_success')); } return Redirect::to('admin/navigation')->with('success', Lang::get('admin.navigation_delete_fail')); }
public function initCache() { // !!! DATABASE CACHE !!! //Cache Model::Menu //Cache::forget('DB_Menu'); /*Cache::rememberForever('DB_Menu', function() { return Menu::where('parent_id','=',0)->orderBy('order','ASC')->get(); });*/ //Cache Model::Locale Cache::rememberForever('DB_LocaleFrontEnable', function () { //Get all data in database $locales = Locale::where('enable', '=', 1)->where('is_publish', '=', 1)->get(); //Preapre data to extract by id $data = array(); foreach ($locales as $l) { $data[] = $l->id; } return $data; }); //Cache Model::Nav Cache::rememberForever('DB_Nav', function () { return Nav::where('parent_id', '=', 0)->orderBy('order', 'ASC')->get(); }); //Cache Model::Resource('name') Cache::rememberForever('DB_AdminResourceName', function () { //Get all data in database $resources = Resource::where('in_admin_ui', '=', 1)->get(); //Preapre data to extract by id $data = array(); foreach ($resources as $r) { $data[$r->id] = $r->name; } return $data; }); Cache::rememberForever('DB_AdminResource', function () { //Get all data in database return Resource::where('in_admin_ui', '=', 1)->get(); }); Cache::rememberForever('DB_AdminResourceNavigable', function () { //Get all data in database return Resource::where('navigable', '=', 1)->where('in_admin_ui', '=', 1)->get(); }); // Get all Locales enableds in the table Cache::rememberForever('DB_LocalesEnabled', function () { return Locale::where('enable', 1)->where('is_publish', 1)->get(); }); Cache::rememberForever('DB_AdminBlockTypes', function () { //Get all data in database return BlockType::all(); }); //Cache Model::Mosaique('name') //Cache::forget('DB_Mosaique'); /*Cache::rememberForever('DB_Mosaique', function() { //Get all data in database return Mosaique::all(); });*/ //Cache Model::Option Cache::rememberForever('DB_Option', function () { return Option::all(); }); //Cache Model::Urls Cache::rememberForever('DB_Urls', function () { $data = DB::select(' SELECT translations.i18n_id , translations.text , translations.locale_id FROM translations INNER JOIN i18n_types ON i18n_types.name = ? INNER JOIN i18n ON i18n.i18n_type_id = i18n_types.id AND translations.i18n_id = i18n.id ', array('url')); //$data = Translation::i18n()->where('i18n_type_id','=',I18nType::where('name','=','url')->first()->id)->get $datas = array(); foreach ($data as $d) { $datas[] = array('i18n_id' => $d->i18n_id, 'url' => $d->text, 'locale_id' => $d->locale_id); } return $datas; }); }
public static function getNotAllowed() { $notAllowed = array(); //get all Nav with a page as resource $navs = Nav::where('navigable_type', '=', get_class())->get(); $allowed = array(); foreach ($navs as $nav) { $allowed[] = $nav->navigable->id; } //get all Pages $objects = self::all(); //store each resources foreach ($objects as $object) { if (!in_array($object->id, $allowed)) { $notAllowed[] = $object; } } return $notAllowed; }