/** * MaintenanceLibTest::testStatus() * * @return void */ public function testStatus() { $status = $this->Maintenance->isMaintenanceMode(); $this->assertFalse($status); $this->Maintenance->setMaintenanceMode(0); $status = $this->Maintenance->isMaintenanceMode(); $this->assertTrue($status); $this->Maintenance->setMaintenanceMode(1); $status = $this->Maintenance->isMaintenanceMode(); $this->assertTrue($status); $content = file_get_contents(TMP . 'maintenance.txt'); $this->assertWithinRange(time() + MINUTE, $content, 2); }
/** * @param \Cake\Http\ServerRequest $request The request. * @param \Cake\Network\Response $response The response. * @param callable $next The next middleware to call. * @return \Psr\Http\Message\ResponseInterface A response. */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, $next) { $ip = $request->clientIp(); $Maintenance = new Maintenance(); if (!$Maintenance->isMaintenanceMode($ip)) { return $next($request, $response); } $response = $this->build($response); return $response; }
/** * MaintenanceMode::beforeDispatch() * * @param \Cake\Event\Event $event * @return \Cake\Network\Response|null */ public function beforeDispatch(Event $event) { /* @var \Cake\Http\ServerRequest $request */ $request = $event->data['request']; $ip = $request->clientIp(); $Maintenance = new Maintenance(); if (!$Maintenance->isMaintenanceMode($ip)) { return null; } $body = __d('setup', 'Maintenance work'); $body = $this->_body(); $event->data['response']->header('Retry-After', HOUR); $event->data['response']->statusCode(503); $event->data['response']->body($body); $event->stopPropagation(); return $event->data['response']; }