public function testDuplicates() { for ($id = 1; $id < 3; $id++) { $values = ['source' => '/redirect-test-duplicates', 'contentId' => $id, 'contentType' => 'entries', 'code' => 302]; $redirect = new Redirect($values); $redirect->save(); } $new = Redirect::load('/redirect-test-duplicates'); $this->assertEquals($new->contentId, 2); }
public function handleRequest(Request $request) { // Look for a migrated article with this URL path. $requested_path = $request->getPathInfo(); if ($this->isRedirectable($requested_path) && ($redirect = Redirect::load($requested_path))) { $status_code = $redirect->code; $status_code = empty($status_code) ? $this->config['default_status_code'] : $status_code; if (!in_array($status_code, Redirect::$validCodes)) { $this->app['logger.system']->error("Prevented an invalid HTTP code ({$status_code}) from being sent for '{$requested_path}'. Instead, used 302 as fallback.", ['event' => 'contentredirect']); $status_code = 302; } $record = $this->app['storage']->getContent("{$redirect->contentType}/{$redirect->contentId}"); if ($record) { $root_path = $this->app['paths']['root']; $record_path = substr($record->link(), 1); // Strip off the first '/'. return $this->app->redirect($root_path . $record_path, $status_code); } else { $this->app['logger.system']->error("Couldn't find content with type '{$content_type}' and id '{$content_id}'.", ['event' => 'contentredirect']); return false; } } }