/** * @see sfTask */ protected function execute($arguments = array(), $options = array()) { $context = sfContext::createInstance($this->configuration); $configCache = $context->getConfigCache(); $context->getRouting()->loadConfiguration(); $routes = $context->getRouting()->getRoutes(); if (!isset($routes[$arguments['route']])) { throw new InvalidArgumentException(sprintf('Could not find route named "%s"', $arguments['route'])); } $redirect = new sfSympalRedirect(); $redirect->source = $routes[$arguments['route']]->getPattern(); if (is_numeric($arguments['destination'])) { $this->logSection('sympal', sprintf('Redirecting route "%s" to content id "%s"', $routes[$arguments['route']]->getPattern(), $arguments['destination'])); $redirect->content_id = $arguments['destination']; } else { $this->logSection('sympal', sprintf('Redirecting route "%s" to "%s"', $routes[$arguments['route']]->getPattern(), $arguments['destination'])); $redirect->destination = $arguments['destination']; } $redirect->Site = Doctrine_Core::getTable('sfSympalSite')->findOneBySlug($arguments['application']); $redirect->save(); $this->clearCache(); }
<?php $app = 'sympal'; require_once dirname(__FILE__) . '/../bootstrap/functional.php'; $browser = new sfSympalTestFunctional(new sfBrowser()); $redirect = new sfSympalRedirect(); $redirect->source = '/test_redirect1/:parameter1/ok/:parameter2'; $redirect->destination = '@redirect_route'; $redirect->site_id = sfSympalContext::getInstance()->getSite()->getId(); $redirect->save(); $redirect = new sfSympalRedirect(); $redirect->source = '/test_redirect2'; $redirect->site_id = sfSympalContext::getInstance()->getSite()->getId(); $redirect->content_id = 1; $redirect->save(); $redirect = new sfSympalRedirect(); $redirect->source = '/test_redirect3/:parameter1/ok/:parameter2'; $redirect->destination = '/some/path/ok/:parameter2'; $redirect->site_id = sfSympalContext::getInstance()->getSite()->getId(); $redirect->save(); $browser->clearCache(); $browser->get('/test_redirect1/test1/ok/test2')->with('response')->begin()->isStatusCode(301)->isRedirected()->followRedirect()->end()->with('request')->begin()->isParameter('module', 'test')->isParameter('action', 'redirect')->isParameter('parameter1', 'test1')->end(); $browser->get('/test_redirect2')->with('response')->begin()->isStatusCode(301)->isRedirected()->followRedirect()->end()->with('request')->begin()->isParameter('module', 'sympal_content_renderer')->isParameter('action', 'index')->end()->with('response')->begin()->matches('/Sample Content List/')->end(); $browser->get('/test_redirect3/test1/ok/test2')->with('response')->begin()->isStatusCode(301)->isRedirected()->followRedirect()->end()->with('request')->begin()->isParameter('module', 'test')->isParameter('action', 'redirect')->isParameter('parameter2', 'test2')->end();