예제 #1
0
 /**
  * Index page view composer.
  *
  * @param \Illuminate\Contracts\View\View $view
  *
  * @return void
  */
 public function compose(View $view)
 {
     $totalComponents = Component::enabled()->count();
     $majorOutages = Component::enabled()->status(4)->count();
     $isMajorOutage = $majorOutages / $totalComponents >= 0.5;
     // Default data
     $withData = ['system_status' => 'info', 'system_message' => trans_choice('cachet.service.bad', $totalComponents), 'favicon' => 'favicon-high-alert'];
     if ($isMajorOutage) {
         $withData = ['system_status' => 'danger', 'system_message' => trans_choice('cachet.service.major', $totalComponents), 'favicon' => 'favicon-high-alert'];
     } elseif (Component::enabled()->notStatus(1)->count() === 0) {
         // If all our components are ok, do we have any non-fixed incidents?
         $incidents = Incident::notScheduled()->orderBy('created_at', 'desc')->get();
         $incidentCount = $incidents->count();
         if ($incidentCount === 0 || $incidentCount >= 1 && (int) $incidents->first()->status === 4) {
             $withData = ['system_status' => 'success', 'system_message' => trans_choice('cachet.service.good', $totalComponents), 'favicon' => 'favicon'];
         }
     } else {
         if (Component::enabled()->whereIn('status', [2, 3])->count() > 0) {
             $withData['favicon'] = 'favicon-medium-alert';
         }
     }
     // Scheduled maintenance code.
     $scheduledMaintenance = Incident::scheduled()->orderBy('scheduled_at')->get();
     // Component & Component Group lists.
     $usedComponentGroups = Component::enabled()->where('group_id', '>', 0)->groupBy('group_id')->pluck('group_id');
     $componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->orderBy('order')->get();
     $ungroupedComponents = Component::enabled()->where('group_id', 0)->orderBy('order')->orderBy('created_at')->get();
     $view->with($withData)->withComponentGroups($componentGroups)->withUngroupedComponents($ungroupedComponents)->withScheduledMaintenance($scheduledMaintenance);
 }
예제 #2
0
 /**
  * Get all components.
  *
  * @return \Illuminate\Http\JsonResponse
  */
 public function getComponents()
 {
     if (app(Guard::class)->check()) {
         $components = Component::whereRaw('1 = 1');
     } else {
         $components = Component::enabled();
     }
     return $this->paginator($components->paginate(Binput::get('per_page', 20)), Request::instance());
 }
예제 #3
0
 /**
  * Get all components.
  *
  * @param \Symfony\Component\HttpFoundation\Request $request
  * @param \Illuminate\Contracts\Auth\Guard          $auth
  *
  * @return \Illuminate\Http\JsonResponse
  */
 public function getComponents(Request $request, Guard $auth)
 {
     if ($auth->check()) {
         $components = Component::whereRaw('1 = 1');
     } else {
         $components = Component::enabled();
     }
     return $this->paginator($components->paginate(Binput::get('per_page', 20)), $request);
 }
예제 #4
0
 /**
  * Shows the dashboard view.
  *
  * @return \Illuminate\View\View
  */
 public function showDashboard()
 {
     $components = Component::orderBy('order')->get();
     $incidents = $this->getIncidents();
     $subscribers = $this->getSubscribers();
     $usedComponentGroups = Component::enabled()->where('group_id', '>', 0)->groupBy('group_id')->pluck('group_id');
     $componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->orderBy('order')->get();
     $ungroupedComponents = Component::enabled()->where('group_id', 0)->orderBy('order')->orderBy('created_at')->get();
     $entries = null;
     if ($feed = $this->feed->latest()) {
         $entries = array_slice($feed->channel->item, 0, 5);
     }
     return View::make('dashboard.index')->withPageTitle(trans('dashboard.dashboard'))->withComponents($components)->withIncidents($incidents)->withSubscribers($subscribers)->withEntries($entries)->withComponentGroups($componentGroups)->withUngroupedComponents($ungroupedComponents);
 }
예제 #5
0
 /**
  * Get all components.
  *
  * @return \Illuminate\Http\JsonResponse
  */
 public function getComponents()
 {
     if (app(Guard::class)->check()) {
         $components = Component::whereRaw('1 = 1');
     } else {
         $components = Component::enabled();
     }
     $components->search(Binput::except(['sort', 'order', 'per_page']));
     if ($sortBy = Binput::get('sort')) {
         $direction = Binput::has('order') && Binput::get('order') == 'desc';
         $components->sort($sortBy, $direction);
     }
     $components = $components->paginate(Binput::get('per_page', 20));
     return $this->paginator($components, Request::instance());
 }
예제 #6
0
파일: System.php 프로젝트: aksalj/Cachet
 /**
  * Get the entire system status.
  *
  * @return array
  */
 public function getStatus()
 {
     $enabledScope = Component::enabled();
     $totalComponents = Component::enabled()->count();
     $majorOutages = Component::enabled()->status(4)->count();
     $isMajorOutage = $totalComponents ? $majorOutages / $totalComponents >= 0.5 : false;
     // Default data
     $status = ['system_status' => 'info', 'system_message' => trans_choice('cachet.service.bad', $totalComponents), 'favicon' => 'favicon-high-alert'];
     if ($isMajorOutage) {
         $status = ['system_status' => 'danger', 'system_message' => trans_choice('cachet.service.major', $totalComponents), 'favicon' => 'favicon-high-alert'];
     } elseif (Component::enabled()->notStatus(1)->count() === 0) {
         // If all our components are ok, do we have any non-fixed incidents?
         $incidents = Incident::notScheduled()->orderBy('created_at', 'desc')->get()->filter(function ($incident) {
             return $incident->status > 0;
         });
         $incidentCount = $incidents->count();
         if ($incidentCount === 0 || $incidentCount >= 1 && (int) $incidents->first()->status === 4) {
             $status = ['system_status' => 'success', 'system_message' => trans_choice('cachet.service.good', $totalComponents), 'favicon' => 'favicon'];
         }
     } elseif (Component::enabled()->whereIn('status', [2, 3])->count() > 0) {
         $status['favicon'] = 'favicon-medium-alert';
     }
     return $status;
 }
예제 #7
0
 /**
  * Shows the subscription manager page.
  *
  * @param string|null $code
  *
  * @return \Illuminate\View\View
  */
 public function showManage($code = null)
 {
     if ($code === null) {
         throw new NotFoundHttpException();
     }
     $subscriber = Subscriber::where('verify_code', '=', $code)->first();
     $usedComponentGroups = Component::enabled()->where('group_id', '>', 0)->groupBy('group_id')->pluck('group_id');
     $componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->orderBy('order')->get();
     $ungroupedComponents = Component::enabled()->where('group_id', 0)->orderBy('order')->orderBy('created_at')->get();
     if (!$subscriber) {
         throw new BadRequestHttpException();
     }
     return View::make('subscribe.manage')->withUngroupedComponents($ungroupedComponents)->withSubscriber($subscriber)->withSubscriptions($subscriber->subscriptions->pluck('component_id')->all())->withComponentGroups($componentGroups);
 }