/** * Handle page redirection. * * @param Page $page * @param Curry_Request $r * @return Page */ public function redirectPage(Page $page, Curry_Request $r) { while ($page && $page->getRedirectMethod()) { switch ($page->getRedirectMethod()) { case PagePeer::REDIRECT_METHOD_CLONE: if ($page->getRedirectUrl() !== null) { readfile($page->getRedirectUrl()); exit; } $redirectPage = $page->getActualRedirectPage(); if ($redirectPage && $redirectPage !== $page) { $page = $redirectPage; } else { return $page; } break; default: $code = $page->getRedirectMethod() == PagePeer::REDIRECT_METHOD_PERMANENT ? 301 : 302; url($page->getFinalUrl(), $r->get)->redirect($code); break; } } return $page; }