/**
  * Handles current transaction
  *
  * @param CakeEvent $event Dispatch event
  * @return true
  */
 public function beforeDispatch(CakeEvent $event)
 {
     $request = $event->data['request'];
     $response = $event->data['response'];
     if (!$this->hasNewRelic()) {
         return true;
     }
     // Set NewRelic appName
     $appName = Configure::read('NewRelic.appName');
     if (!empty($appName)) {
         $this->setAppName($appName);
     }
     $ignored = Configure::read('NewRelic.ignoreRoutes');
     $url = '/' . $event->data['request']->url;
     if (!empty($ignored)) {
         foreach ($ignored as $ignoreTest) {
             $cakeRoute = new CakeRoute($ignoreTest);
             if ($cakeRoute->parse($url) !== false) {
                 $this->ignoreTransaction();
                 continue;
             }
         }
     }
     $this->nameTransaction($request->controller . '/' . $request->action);
     return true;
 }
Example #2
0
 /**
  * Parses a string url into an array. Parsed urls will result in an automatic
  * redirection
  *
  * @param string $url The url to parse
  * @return boolean False on failure
  */
 public function parse($url)
 {
     $params = parent::parse($url);
     if ($params === false) {
         return false;
     }
     $Domains = new Domains();
     $subdomain = $Domains->getSubdomain();
     $masterDomain = Configure::read('Domain.Master');
     $defaultRoute = Configure::read('Domain.DefaultRoute');
     $Tenant = new Tenant();
     if (!$Tenant->domainExists($subdomain) && $params != $defaultRoute) {
         if (!$this->response) {
             $this->response = new CakeResponse();
         }
         debug($this->response);
         die;
         $status = 307;
         $redirect = $defaultRoute;
         $this->response->header(array('Location' => Router::url($redirect, true)));
         $this->response->statusCode($status);
         $this->response->send();
         $this->_stop();
     }
     return $subdomain;
 }
 /**
  * Parses a string url into an array. Parsed urls will result in an automatic
  * redirection
  *
  * @param string $url The url to parse
  * @return boolean False on failure
  */
 public function parse($url)
 {
     $params = parent::parse($url);
     if (!$params) {
         return false;
     }
     if (!$this->response) {
         $this->response = new CakeResponse();
     }
     $redirect = $this->redirect;
     if (count($this->redirect) == 1 && !isset($this->redirect['controller'])) {
         $redirect = $this->redirect[0];
     }
     if (isset($this->options['persist']) && is_array($redirect)) {
         $redirect += array('named' => $params['named'], 'pass' => $params['pass'], 'url' => array());
         $redirect = Router::reverse($redirect);
     }
     $status = 301;
     if (isset($this->options['status']) && ($this->options['status'] >= 300 && $this->options['status'] < 400)) {
         $status = $this->options['status'];
     }
     $this->response->header(array('Location' => Router::url($redirect, true)));
     $this->response->statusCode($status);
     $this->response->send();
     $this->_stop();
 }
Example #4
0
 public function parse($url)
 {
     $params = parent::parse($url);
     if (empty($params)) {
         return false;
     }
     $path = realpath(implode(DS, $params['pass']));
     if (empty($path)) {
         return false;
     }
     $thumb = str_replace(array('/', '\\', '\\\\'), DS, WWW_ROOT . $url);
     $config = realpath(APP . 'Config/thumbs.php') ? include realpath(APP . 'Config/thumbs.php') : (include realpath(APP . 'Plugin/Thumbs/Config/thumbs.php'));
     switch ($params['action']) {
         case "crop":
             $image = $this->_crop($config, $path, $params, $thumb);
             break;
         case "resize":
             $image = $this->_resize($config, $path, $params, $thumb);
             break;
         case "fill":
             $image = $this->_fill($config, $path, $params, $thumb);
             break;
     }
     if (empty($image)) {
         return false;
     }
     $params['image'] = $image;
     return $params;
 }
 /**
  * Parses a string url into an array. Parsed urls will result in an automatic
  * redirection
  *
  * @param string $url The url to parse
  * @return boolean False on failure
  */
 public function parse($url)
 {
     $params = parent::parse($url);
     if (!$params) {
         return false;
     }
     if (!$this->response) {
         $this->response = new CakeResponse();
     }
     $redirect = $this->defaults;
     if (count($this->defaults) == 1 && !isset($this->defaults['controller'])) {
         $redirect = $this->defaults[0];
     }
     if (isset($this->options['persist']) && is_array($redirect)) {
         $argOptions['context'] = array('action' => $redirect['action'], 'controller' => $redirect['controller']);
         $args = Router::getArgs($params['_args_'], $argOptions);
         $redirect += $args['pass'];
         $redirect += $args['named'];
     }
     $status = 301;
     if (isset($this->options['status']) && ($this->options['status'] >= 300 && $this->options['status'] < 400)) {
         $status = $this->options['status'];
     }
     $this->response->header(array('Location' => Router::url($redirect, true)));
     $this->response->statusCode($status);
     $this->response->send();
 }
Example #6
0
 public function parse($url)
 {
     $params = parent::parse($url);
     if (empty($params)) {
         return false;
     }
     return false;
 }
Example #7
0
/**
 * Reverse route plugin shortcut URLs. If the plugin and controller
 * are not the same the match is an auto fail.
 *
 * @param array $url Array of parameters to convert to a string.
 * @return mixed either false or a string URL.
 */
	public function match($url) {
		if (isset($url['controller']) && isset($url['plugin']) && $url['plugin'] != $url['controller']) {
			return false;
		}
		$this->defaults['controller'] = $url['controller'];
		$result = parent::match($url);
		unset($this->defaults['controller']);
		return $result;
	}
 public function match($params)
 {
     $subdomain = isset($params['subdomain']) ? $params['subdomain'] : '';
     unset($params['subdomain']);
     $path = parent::match($params);
     $domain = $this->_getDomain();
     if ($subdomain) {
         $path = 'http://' . $subdomain . '.' . $domain . $path;
     }
     return $path;
 }
 public function _writeUrl($params)
 {
     print_r($params);
     $params['subdomain'] = isset($params['subdomain']) ? strtolower($params['subdomain']) : 'www';
     $out = parent::_writeUrl($params);
     if (!defined('MYDOMAIN')) {
         return $out;
     }
     $out = substr($out, strpos($out, '/') + 1);
     $out = substr($out, strpos($out, '/'));
     return $params['subdomain'] == 'www' ? false : 'http://' . $params['subdomain'] . '.' . MYDOMAIN . $out;
 }
 /**
  * Skips pattern checking if invoked with Router::url(array(..., 'skipPatterns' => true));
  *
  * @param array $url
  * @return mixed|void
  */
 public function match($url)
 {
     if ($this->skipPatterns) {
         $originalOptions = $this->options;
         $this->options = array();
         $res = parent::match($url);
         $this->options = $originalOptions;
         return $res;
     } else {
         return parent::match($url);
     }
 }
Example #11
0
 public function parse($url)
 {
     $params = parent::parse($url);
     if (empty($params)) {
         return false;
     }
     //break up the url into pieces
     $parsed_url = parse_url($_SERVER['REQUEST_URI']);
     $url_p = explode("/", $parsed_url['path']);
     die(print_r($params));
     return false;
 }
 /**
  * Constructor for a Route.
  *
  * @param string $template Template string with parameter placeholders
  * @param array  $defaults Array of defaults for the route.
  * @param array  $options  Array of parameters and additional options for the Route
  *
  * @return \CakeRoute
  */
 public function __construct($template, $defaults = array(), $options = array())
 {
     if (strpos($template, ':current_tenant') === false && empty($options['disableAutoNamedLang'])) {
         Router::connect($template, $defaults + array('current_tenant' => Configure::read('Config.current_tenant')), array('routeClass' => $this->name) + $options);
         $options += array('__promote' => true);
         $template = '/:current_tenant' . $template;
     }
     $options = array_merge((array) $options, array('current_tenant' => '[a-z]{1,10}'));
     if ($template == '/:current_tenant/') {
         $template = '/:current_tenant';
     }
     parent::__construct($template, $defaults, $options);
 }
Example #13
0
 function parse($url)
 {
     $params = parent::parse($url);
     if (empty($params)) {
         return false;
     }
     App::import('Component', 'Session');
     $Session = new SessionComponent();
     if ($Session->check('Auth.User.slug')) {
         return $params;
     }
     return false;
 }
Example #14
0
 /**
  * Checks if an URL array matches this route instance
  *
  * @param array $url An array of parameters to check matching with.
  * @return mixed Either a string URL for the parameters if they match or false.
  * @see CakeRoute::match()
  */
 public function match($url)
 {
     if (isset($url['prefix']) && isset($url['action'])) {
         $prefix = $url['prefix'];
         $url['prefix'] = str_replace('_', '.', $url['prefix']);
         $url['action'] = str_replace($prefix . '_', '', $url['action']);
     }
     $match = parent::match($url);
     if ($match && isset($url['action']) && $url['action'] == 'index') {
         $match = str_replace('/index', '', $match);
     }
     return $match;
 }
 /**
 * Writes out full url with protocol and subdomain
 *
 * @param $params
 * @return string
 */
 protected function _writeUrl($params)
 {
     $protocol = $this->options['protocol'];
     //		$subdomain = AuthComponent::user('subdomain');
     $subdomain = isset($params['subdomain']) ? $params['subdomain'] : null;
     unset($params['subdomain']);
     if (empty($subdomain)) {
         $subdomain = 'www';
     }
     $domain = $this->_getDomain();
     $url = parent::_writeUrl($params);
     return "{$protocol}://{$subdomain}.{$domain}{$url}";
 }
Example #16
0
 function parse($url)
 {
     // import the session controller so we can check if they're logged in or not
     App::import('Component', 'Session');
     $Session = new SessionComponent();
     // check the login
     if ($Session->check('Auth.User.email')) {
         // logged in, parse params and return
         return parent::parse($url);
     } else {
         // not logge in, return false
         return false;
     }
 }
Example #17
0
 public function parse($url)
 {
     $params = parent::parse($url);
     App::import("Model", "Dailyop");
     $Dailyop = new Dailyop();
     if (count($params['pass']) <= 0 && !isset($params['named']['datein'])) {
         //$params['named']['datein'] = $Dailyop->getNewsDate();
         //return $params;
     }
     if (isset($params['named']['datein']) && !preg_match('/([0-9]{4})(\\-)([0-9]{2})(\\-)([0-9]{2})/', $params['named']['datein'])) {
         throw new NotFoundException("Invalid News Date");
     }
     //validate the date
     //$params['named']['datein'] = $Dailyop->validateNewsDateRoute($params['named']['datein']);
     return $params;
 }
Example #18
0
 function parse($url)
 {
     $params = parent::parse($url);
     if (empty($params)) {
         return false;
     }
     $this->Tutorial = ClassRegistry::init('Tutorial');
     $tutorial = $this->Tutorial->find('first', array('conditions' => array('Tutorial.user_url' => $params['slug']), 'recursive' => -1));
     if (!empty($tutorial)) {
         $params['pass'][] = $tutorial['Tutorial']['id'];
         return $params;
     } else {
         return false;
     }
     return false;
 }
 /**
  * Custom Route parsing for SimplePages URL
  * 
  * @param string $url URL to parse
  */
 function parse($url)
 {
     $params = parent::parse($url);
     if (empty($params)) {
         return false;
     }
     $slugs = Cache::read('simple_page_slugs');
     if (empty($slugs)) {
         App::import('Model', 'SimplePages.SimplePage');
         $SimplePage = new SimplePage();
         $slugs = $SimplePage->cacheSlugs();
     }
     if (isset($params['slug']) && in_array($params['slug'], $slugs)) {
         return $params;
     }
     return false;
 }
Example #20
0
 public function parse($url)
 {
     $params = parent::parse($url);
     if (empty($params)) {
         return false;
     }
     $params['controller'] = "dailyops";
     $params['action'] = "index";
     $date_in = date("Y-m-d");
     if (isset($params['year']) && isset($params['month']) && isset($params['day']) && (strtotime("{$params['year']}-{$params['month']}-{$params['day']}") < time() || isset($_GET['showall']) && preg_match('/(dev\\.|v3\\.)/', $_SERVER['HTTP_HOST']))) {
         $date_in = $params['dateIn'] = "{$params['year']}-{$params['month']}-{$params['day']}";
         $params['action'] = "archive";
     }
     switch ($date_in) {
         case "2013-08-17":
         case "2013-08-18":
             if (in_array(date("Y-m-d"), array("2013-08-17", "2013-08-18"))) {
                 $params['controller'] = "run_and_gun";
                 $params['action'] = "dailyops";
             }
             break;
         case "2013-05-21":
             if (in_array(date("Y-m-d"), array("2013-05-21"))) {
                 $params['controller'] = "bon_voyage";
                 $params['action'] = "view";
             }
             break;
         case "2013-07-07":
         case "2013-07-06":
             if (in_array(date("Y-m-d"), array("2013-07-06", "2013-07-07"))) {
                 $params['controller'] = "element_hold_it_down";
                 $params['action'] = "section";
             }
             break;
         case "2013-04-30":
             if (in_array(date("Y-m-d"), array("2013-04-30"))) {
                 $params['controller'] = "deathwish_video";
                 $params['action'] = "section";
             }
             break;
     }
     return $params;
 }
Example #21
0
 function parse($url)
 {
     return parent::parse($url);
     echo $url;
     debug(parent::parse($url));
     // lista de locales em config/locales.php
     $locales = array_keys(Configure::read('Locales.list'));
     // checando se a url atual possui locale
     $url_exploded = explode('/', $url);
     //limpa indices vazios
     for ($i = 0, $l = count($url_exploded); $i < $l; $i++) {
         if (!strlen($url_exploded[$i])) {
             unset($url_exploded[$i]);
         }
     }
     $url_exploded = array_values($url_exploded);
     $url_locale = $url_exploded[0];
     $matched = false;
     foreach ($locales as $locale) {
         if ($url_locale == $locale) {
             $matched = true;
             break;
         }
     }
     // se encontrou o locale na url, entao remonta ela com language:locale
     if ($matched) {
         unset($url_exploded[0]);
         $url_exploded[] = 'language:' . $locale;
         $url = '/' . implode('/', $url_exploded) . '/';
         debug($url);
     }
     $params = parent::parse($url);
     debug($params);
     die;
     if (empty($params)) {
         return false;
     }
     if ($count) {
         return $params;
     }
     return false;
 }
Example #22
0
 public function parse($url)
 {
     $params = parent::parse($url);
     if (empty($params)) {
         return false;
     }
     App::import("Model", "DailyopSection");
     $sec = new DailyopSection();
     $sections = $sec->returnSections();
     $token = Set::extract("/DailyopSection[uri=" . $params['section'] . "]", $sections);
     if (isset($token[0]['DailyopSection']['uri'])) {
         //check to see if we can find the post, and if so, then cache that shit so we can posible use it in the dailyops controller and change the action to view
         if (!empty($params['uri'])) {
             //load up the daily ops model
             App::import("Model", "Dailyop");
             $dop = new Dailyop();
             $slug = md5($_SERVER['REQUEST_URI']);
             //hack it so the router thinks we are admin on dev server;
             //this will allow the router to pass in unpublished posts;
             //auth control will be handled by the controller
             if (!isset($_SERVER['DEVSERVER'])) {
                 $_SERVER['DEVSERVER'] = 0;
             }
             $post = $dop->returnPost(array("Dailyop.uri" => $params['uri'], "DailyopSection.uri" => $params['section']), $_SERVER['DEVSERVER']);
             if (isset($post['Dailyop']['id'])) {
                 $params['action'] = "view";
             } else {
                 if (!empty($params['uri'])) {
                     $params['action'] = $params['uri'];
                 }
             }
         }
         //check the directive
         if (!empty($token[0]['DailyopSection']['directive'])) {
             $params['controller'] = $token[0]['DailyopSection']['directive'];
         } else {
             $params['controller'] = "dailyops";
         }
         return $params;
     }
     return false;
 }
Example #23
0
 public function parse($url)
 {
     $params = parent::parse($url);
     if (empty($params)) {
         return false;
     }
     Configure::load('prefecture');
     Configure::load('city');
     $prefectures = Configure::read('prefecture');
     $cities = Configure::read('city');
     if (in_array($params['prefecture'], $prefectures)) {
         if (isset($params['city'])) {
             if (in_array($params['city'], $cities)) {
                 return $params;
             }
             return false;
         }
         return $params;
     }
     return false;
 }
Example #24
0
 function parse($url)
 {
     $params = parent::parse($url);
     //debug($params);
     if (empty($params)) {
         //echo 'billnn1';
         return false;
     } else {
         //debug($params);
     }
     App::import('Model', 'User');
     $Post = new User();
     $count = $Post->find('count', array('conditions' => array('User.username' => $params['uname']), 'recursive' => -1));
     if ($count) {
         //debug($params);
         return $params;
     } else {
         //echo 'blinnn2';
     }
     //echo 'false';
     return false;
 }
 public function parse($url)
 {
     /*
      * parse url
      */
     $params = parent::parse($url);
     if (!$params || empty($params)) {
         return false;
     }
     //get all registered modules
     $registeredModules = Configure::read('Cloggy.modules');
     /*
      * only active at module request
      */
     if (isset($params['name'])) {
         /*
          * setup module name
          */
         $moduleName = Inflector::variable($params['name']);
         $moduleName = ucfirst($moduleName);
         /*
          * check if requested module listed on registered modules
          */
         if (!in_array($moduleName, $registeredModules)) {
             return false;
         } else {
             /*
              * if empty controller it means go to module home controller
              */
             if (!isset($params['controller']) || empty($params['controller'])) {
                 $params['controller'] = $params['name'] . '_home';
             }
             //set flag that current request is module base
             $params['isCloggyModule'] = 1;
         }
     }
     return $params;
 }
Example #26
0
 function parse($url)
 {
     $params = parent::parse($url);
     if (isset($params['slug'])) {
         $username = $params['slug'];
         App::import("Component", "Users.ControllerList");
         $contList = new ControllerListComponent(new ComponentCollection());
         $conts = $contList->getControllers();
         unset($conts[-2]);
         unset($conts[-1]);
         $conts = array_map('strtolower', $conts);
         $usernameTmp = strtolower(str_replace(' ', '', ucwords(str_replace('_', ' ', $username))));
         if (!in_array($usernameTmp, $conts)) {
             $plugins = App::objects('plugins');
             $plugins = array_map('strtolower', $plugins);
             if (in_array($usernameTmp, $plugins)) {
                 return false;
             }
             $customRoutes = Router::$routes;
             $usernameTmp = '/' . $username;
             foreach ($customRoutes as $customRoute) {
                 if (strpos(strtolower($customRoute->template), strtolower($usernameTmp)) !== false) {
                     return false;
                 }
             }
             App::import("Model", "Users.User");
             $userModel = new User();
             $isUser = $userModel->findByUsername($params['slug']);
             if ($isUser) {
                 $params['pass'][0] = $params['slug'];
                 return $params;
             }
         }
         return false;
     }
     return false;
 }
Example #27
0
 /**
  * Test the /** special type on parsing - UTF8.
  *
  * @return void
  */
 public function testParseTrailingUTF8()
 {
     $route = new CakeRoute('/category/**', array('controller' => 'categories', 'action' => 'index'));
     $result = $route->parse('/category/%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84');
     $expected = array('controller' => 'categories', 'action' => 'index', 'pass' => array('موبایل'), 'named' => array());
     $this->assertEquals($expected, $result);
 }
Example #28
0
 /**
  * test that utf-8 patterns work for :section
  *
  * @return void
  */
 public function testUTF8PatternOnSection()
 {
     $route = new CakeRoute('/:section', array('plugin' => 'blogs', 'controller' => 'posts', 'action' => 'index'), array('persist' => array('section'), 'section' => 'آموزش|weblog'));
     $result = $route->parse('/%D8%A2%D9%85%D9%88%D8%B2%D8%B4');
     $expected = array('section' => 'آموزش', 'plugin' => 'blogs', 'controller' => 'posts', 'action' => 'index', 'pass' => array(), 'named' => array());
     $this->assertEquals($expected, $result);
     $result = $route->parse('/weblog');
     $expected = array('section' => 'weblog', 'plugin' => 'blogs', 'controller' => 'posts', 'action' => 'index', 'pass' => array(), 'named' => array());
     $this->assertEquals($expected, $result);
 }
Example #29
0
 /**
  * Testing that patterns on the :action param work properly.
  *
  * @return void
  */
 public function testPatternOnAction()
 {
     $route = new CakeRoute('/blog/:action/*', array('controller' => 'blog_posts'), array('action' => 'other|actions'));
     $result = $route->match(array('controller' => 'blog_posts', 'action' => 'foo'));
     $this->assertFalse($result);
     $result = $route->match(array('controller' => 'blog_posts', 'action' => 'actions'));
     $this->assertEquals('/blog/actions/', $result);
     $result = $route->parse('/blog/other');
     $expected = array('controller' => 'blog_posts', 'action' => 'other', 'pass' => array(), 'named' => array());
     $this->assertEquals($expected, $result);
     $result = $route->parse('/blog/foobar');
     $this->assertFalse($result);
 }
Example #30
0
 function match($url)
 {
     if (isset($url['admin']) && $url['admin'] === true) {
         if (isset($url['plugin']) && strtolower($url['plugin']) == 'admin') {
             unset($url['plugin']);
             unset($url['admin']);
             $controller = isset($url['controller']) ? $url['controller'] . '/' : '';
             $action = isset($url['action']) ? $url['action'] . '/' : '';
             unset($url['controller']);
             unset($url['action']);
             return '/admin/' . $controller . $action . implode('/', array_values($url));
         }
     }
     if (isset($url['default'])) {
         if ($url['default']) {
             return '/';
         }
         unset($url['default']);
     }
     if (!empty($url['slug'])) {
         return $url['slug'];
     }
     return parent::match($url);
 }