Blame view

sources/lib/private/route/cachingrouter.php 1.06 KB
6d9380f96   Cédric Dupont   Update sources OC...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  <?php
  /**
   * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
   * This file is licensed under the Affero General Public License version 3 or
   * later.
   * See the COPYING-README file.
   */
  
  namespace OC\Route;
  
  class CachingRouter extends Router {
  	/**
  	 * @var \OCP\ICache
  	 */
  	protected $cache;
  
  	/**
  	 * @param \OCP\ICache $cache
  	 */
  	public function __construct($cache) {
  		$this->cache = $cache;
  		parent::__construct();
  	}
  
  	/**
  	 * Generate url based on $name and $parameters
  	 *
  	 * @param string $name Name of the route to use.
  	 * @param array $parameters Parameters for the route
  	 * @param bool $absolute
  	 * @return string
  	 */
  	public function generate($name, $parameters = array(), $absolute = false) {
  		asort($parameters);
  		$key = $this->context->getHost() . '#' . $this->context->getBaseUrl() . $name . json_encode($parameters) . intval($absolute);
  		if ($this->cache->hasKey($key)) {
  			return $this->cache->get($key);
  		} else {
  			$url = parent::generate($name, $parameters, $absolute);
  			$this->cache->set($key, $url, 3600);
  			return $url;
  		}
  	}
  }