Exemplo n.º 1
0
 public function getLogs()
 {
     $logs_data = AdminLog::with('user')->with('backup')->orderBy('id', 'desc')->paginate(50);
     $logs = View::make('coaster::partials.logs.table', array('logs' => $logs_data));
     $this->layoutData['title'] = 'Logs';
     $this->layoutData['content'] = View::make('coaster::pages.home.logs', array('logs' => $logs, 'pagination' => PaginatorRender::admin($logs_data)));
 }
 public function postIndex()
 {
     // update blocks
     AdminLog::new_log('Updated Site-wide Content');
     $versionId = PageVersion::add_new(0)->version_id;
     Block::submit(0, $versionId);
     $this->addAlert('success', 'Site-wide Content Updated');
     return \redirect()->route('coaster.admin.blocks');
 }
 public function postEdit()
 {
     if (Auth::action('redirects.edit')) {
         $redirect = PageRedirect::find(Request::input('delete_id'));
         if (!empty($redirect)) {
             $redirect->delete();
             AdminLog::new_log('Redirect url \'' . $redirect->redirect . '\' removed');
             return 1;
         }
     }
     return 0;
 }
 public function postUndo()
 {
     if ($logIds = Request::input('log_ids')) {
         if (is_string($logIds)) {
             $logIds = [$logIds];
         }
         foreach ($logIds as $logId) {
             $log = AdminLog::find($logId);
             if ($log && (time() - strtotime($log->created_at) < config('coaster::admin.undo_time') && $log->user_id == Auth::user()->id) || Auth::action('backups.restore')) {
                 if (Backup::restore($logId) == 1) {
                     AdminLog::new_log('Restored log ID #' . $logId);
                 } else {
                     return Response::make('Error restoring log ID #' . $logId, 500);
                 }
             }
         }
         return 'Success - restored ID #' . implode(', ', $logIds);
     }
     return 'Success';
 }
Exemplo n.º 5
0
 public function postRename()
 {
     $itemId = substr(Request::input('id'), 5);
     $item = MenuItem::find($itemId);
     if (!empty($item)) {
         $item->custom_name = Request::input('custom_name');
         $item->save();
         $this->preload_menu_item_names();
         // log action
         $item_name = $this->page_names[$item->page_id];
         if ($item->custom_name) {
             AdminLog::new_log('Renamed menu item \'' . $item_name . '\' in \'' . Menu::name($item->menu_id) . '\' to ' . $item->custom_name);
         } else {
             AdminLog::new_log('Removed custom name for menu item \'' . $item_name . '\' in \'' . Menu::name($item->menu_id) . '\'');
         }
         return 1;
     }
     return null;
 }
Exemplo n.º 6
0
 public function postSort()
 {
     $pages = Request::input('list');
     if (!empty($pages)) {
         $rootPages = Page::join('page_lang', 'page_lang.page_id', '=', 'pages.id')->where(function ($query) {
             $query->whereIn('page_lang.url', ['', '/']);
         })->where('page_lang.language_id', '=', Language::current())->where('link', '=', 0)->get(['pages.*'])->all();
         $rootPageIds = array_map(function ($rootPage) {
             return $rootPage->id;
         }, $rootPages);
         $order = [];
         $changeUnderParentIds = [];
         foreach ($pages as $pageId => $parent) {
             $currentPage = Page::preload($pageId);
             if ($currentPage->exists) {
                 $parent = empty($parent) || $parent == 'null' ? 0 : $parent;
                 if ($currentPage->parent != $parent && $parent != 0 && (in_array($currentPage->id, $rootPageIds) || in_array($parent, $rootPageIds))) {
                     return 0;
                     // don't allow root/home page to be moved under other pages or other pages to be moved under it
                 }
                 // get the order value for current page
                 $order[$parent] = isset($order[$parent]) ? $order[$parent] : 0;
                 $order[$parent]++;
                 if ($currentPage->parent != $parent || $currentPage->order != $order[$parent]) {
                     if (Auth::action('pages.sort', ['page_id' => $parent]) && Auth::action('pages.sort', ['page_id' => $currentPage->parent])) {
                         $parentPageName = $parent ? PageLang::preload($parent)->name : 'top level';
                         $pageName = PageLang::preload($pageId)->name;
                         if ($parent != $currentPage->parent) {
                             array_push($changeUnderParentIds, $parent, $currentPage->parent);
                             AdminLog::new_log('Moved page \'' . $pageName . '\' under \'' . $parentPageName . '\' (Page ID ' . $currentPage->id . ')');
                         }
                         if (!in_array($parent, $changeUnderParentIds)) {
                             $changeUnderParentIds[] = $parent;
                             AdminLog::new_log('Re-ordered pages in \'' . $parentPageName . '\' (Page ID ' . $currentPage->id . ')');
                         }
                         $changeUnderParentIds = array_unique($changeUnderParentIds);
                         $currentPage->parent = $parent;
                         $currentPage->order = $order[$parent];
                         $currentPage->save();
                     } else {
                         return 0;
                         // error, can't move page to new location
                     }
                 }
             } else {
                 return 0;
                 // error, moved page no longer exists
             }
         }
     }
     return 1;
 }
 public function getSearch()
 {
     PageSearchData::updateAllSearchData();
     AdminLog::new_log('Search index updated');
     // as ajax call
     return 1;
 }
 public function postEdit(\Illuminate\Http\Request $request)
 {
     try {
         $theme_id = $request->get('theme_id');
         $theme = Theme::find($theme_id);
         $file = $request->get('file');
         $path = $request->get('path');
         $f = fopen($path, "w");
         fwrite($f, $file);
         AdminLog::new_log('Theme: \'' . $theme->theme . '\' updated (Page ID ' . $theme->id . ')');
         return response(['success' => 1]);
     } catch (\Exception $e) {
         return response(['success' => 0, 'error' => $e->getMessage()]);
     }
 }
Exemplo n.º 9
0
 public function delete()
 {
     $page_name = PageLang::getName($this->id);
     $log_id = AdminLog::new_log('Page \'' . $page_name . '\' deleted (Page ID ' . $this->id . ')');
     // make backups
     $page_versions = PageVersion::where('page_id', '=', $this->id);
     $page_langs = PageLang::where('page_id', '=', $this->id);
     $page_blocks = PageBlock::where('page_id', '=', $this->id);
     $menu_items = MenuItem::where('page_id', '=', $this->id)->orWhere('page_id', 'LIKE', $this->id . ',%');
     $user_role_page_actions = UserRolePageAction::where('page_id', '=', $this->id);
     $page_groups = PageGroupPage::where('page_id', '=', $this->id);
     $publish_request_ids = [];
     foreach ($page_versions as $page_version) {
         $publish_request_ids[] = $page_version->id;
     }
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\Page', $this);
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\PageVersion', $page_versions->get());
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\PageLang', $page_langs->get());
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\PageBlock', $page_blocks->get());
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\MenuItem', $menu_items->get());
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\UserRolePageAction', $user_role_page_actions->get());
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\PageGroupPage', $page_groups->get());
     // publish requests
     if (!empty($publish_request_ids)) {
         $page_publish_requests = PagePublishRequests::where('page_version_id', '=', $publish_request_ids);
         Backup::new_backup($log_id, '\\CoasterCms\\Models\\PagePublishRequests', $page_publish_requests->get());
         $page_publish_requests->delete();
     }
     // repeater data
     $repeater_block_ids = Block::getBlockIdsOfType('repeater');
     if (!empty($repeater_block_ids)) {
         $repeater_blocks = PageBlock::whereIn('block_id', $repeater_block_ids)->where('page_id', $this->id)->get();
         if (!$repeater_blocks->isEmpty()) {
             $repeater_ids = [];
             foreach ($repeater_blocks as $repeater_block) {
                 $repeater_ids[] = $repeater_block->content;
             }
             $repeater_row_keys = PageBlockRepeaterRows::whereIn('repeater_id', $repeater_ids);
             $repeater_row_keys_get = $repeater_row_keys->get();
             if (!$repeater_row_keys_get->isEmpty()) {
                 $row_keys = [];
                 foreach ($repeater_row_keys_get as $repeater_row_key) {
                     $row_keys[] = $repeater_row_key->id;
                 }
                 $repeater_data = PageBlockRepeaterData::whereIn('row_key', $row_keys);
                 Backup::new_backup($log_id, '\\CoasterCms\\Models\\PageBlockRepeaterRows', $repeater_row_keys->get());
                 Backup::new_backup($log_id, '\\CoasterCms\\Models\\PageBlockRepeaterData', $repeater_data->get());
                 $repeater_data->delete();
                 $repeater_row_keys->delete();
             }
         }
     }
     // delete data
     $this->groups()->detach();
     $page_versions->delete();
     $page_langs->delete();
     $page_blocks->delete();
     $menu_items->delete();
     $user_role_page_actions->delete();
     PageSearchData::where('page_id', '=', $this->id)->delete();
     parent::delete();
     $return_log_ids = array($log_id);
     $child_pages = self::where('parent', '=', $this->id)->get();
     if (!empty($child_pages)) {
         foreach ($child_pages as $child_page) {
             $log_ids = $child_page->delete();
             $return_log_ids = array_merge($log_ids, $return_log_ids);
         }
     }
     sort($return_log_ids);
     return $return_log_ids;
 }
Exemplo n.º 10
0
 public function delete()
 {
     $log_id = AdminLog::new_log('User role \'' . $this->name . '\' deleted');
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\UserRole', $this);
     $actions = UserRoleAction::where('role_id', '=', $this->id);
     $page_actions = UserRolePageAction::where('role_id', '=', $this->id);
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\UserRoleAction', $actions->get());
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\UserRolePageAction', $page_actions->get());
     // delete data
     parent::delete();
     $actions->delete();
     $page_actions->delete();
     return $log_id;
 }
Exemplo n.º 11
0
 /**
  * @param string $log
  * @param mixed $object
  */
 public function addLogWithBackup($log, $object)
 {
     $logId = AdminLog::logWithBackup($log, $object);
     $this->_logger[$logId] = $log;
 }
Exemplo n.º 12
0
 public function delete()
 {
     $log_id = AdminLog::new_log('User \'' . $this->email . '\' deleted');
     Backup::new_backup($log_id, '\\CoasterCms\\Models\\User', $this);
     // delete data
     parent::delete();
     return $log_id;
 }
Exemplo n.º 13
0
 public function postAdd()
 {
     $authUser = Auth::user();
     $v = Validator::make(Request::all(), array('email' => 'required|email', 'role' => 'required|integer'));
     $perm_issue = true;
     $role = UserRole::find(Request::input('role'));
     if (!empty($role) && $role->admin <= $authUser->role->admin) {
         $perm_issue = false;
     }
     if ($v->passes() && !$perm_issue) {
         $password = str_random(8);
         $new_user = new User();
         $new_user->email = Request::input('email');
         $new_user->role_id = Request::input('role');
         $new_user->password = Hash::make($password);
         $new_user->save();
         AdminLog::new_log('User \'' . $new_user->email . '\' added');
         Mail::send('coaster::emails.new_account', array('email' => $new_user->email, 'password' => $password), function ($message) use($new_user) {
             $message->from(config('coaster::site.email'));
             $message->to($new_user->email);
             $message->subject(config('coaster::site.name') . ': New Account Details');
         });
         $failures = Mail::failures();
         if (empty($failures)) {
             $email_message = 'An email has been sent to the new user with their login details.';
             $email_status = 'success';
         } else {
             $email_message = 'There was an error sending the login details to the new user.';
             $email_status = 'warning';
         }
         $this->layoutData['content'] = View::make('coaster::pages.users.add', array('success' => true, 'password' => $password, 'email_message' => $email_message, 'email_status' => $email_status));
     } else {
         FormMessage::set($v->messages());
         if ($perm_issue) {
             FormMessage::add('role', 'Don\'t have permission to create user with this role, or doesn\'t exist');
         }
         $this->getAdd();
     }
 }
Exemplo n.º 14
0
 /**
  * Return upload images, handler also uploads image if in request
  * @return string
  */
 public function runHandler()
 {
     $currentData = $this->_defaultData($this->_block->getContent());
     $uploadHandler = new GalleryUploadHandler(['print_response' => false, 'selected_data' => $currentData, 'script_url' => Request::url(), 'max_file_size' => 2000000, 'accept_file_types' => '/\\.(gif|jpe?g|png)$/i', 'upload_dir' => public_path() . '/uploads/system/gallery/' . $this->_block->name . '/' . $this->_block->getPageId() . '/', 'upload_url' => URL::to('/uploads/system/gallery/' . $this->_block->name . '/' . $this->_block->getPageId()) . '/']);
     if (!empty($uploadHandler->name)) {
         $order = 0;
         foreach ($currentData as $imageData) {
             if ($order < $imageData->order) {
                 $order = $imageData->order;
             }
         }
         AdminLog::new_log('Uploaded files to Gallery (ID ' . $this->_block->id . ')');
         $currentData[$uploadHandler->name] = new \stdClass();
         $currentData[$uploadHandler->name]->caption = '';
         $currentData[$uploadHandler->name]->order = $order + 1;
         $currentData[$uploadHandler->name]->path = '/' . $this->_block->getPageId() . '/';
         $this->_block->updateContent(serialize($currentData));
     }
     return $uploadHandler->get_response();
 }