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;
         }
     }
 }