Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\system\Tests\Routing;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Path\AliasManagerInterface;
|
Chris@0
|
6
|
Chris@0
|
7 /**
|
Chris@0
|
8 * An easily configurable mock alias manager.
|
Chris@0
|
9 */
|
Chris@0
|
10 class MockAliasManager implements AliasManagerInterface {
|
Chris@0
|
11
|
Chris@0
|
12 /**
|
Chris@0
|
13 * Array of mocked aliases. Keys are system paths, followed by language.
|
Chris@0
|
14 *
|
Chris@0
|
15 * @var array
|
Chris@0
|
16 */
|
Chris@0
|
17 protected $aliases = [];
|
Chris@0
|
18
|
Chris@0
|
19 /**
|
Chris@0
|
20 * Array of mocked aliases. Keys are aliases, followed by language.
|
Chris@0
|
21 *
|
Chris@0
|
22 * @var array
|
Chris@0
|
23 */
|
Chris@0
|
24 protected $systemPaths = [];
|
Chris@0
|
25
|
Chris@0
|
26 /**
|
Chris@0
|
27 * An index of aliases that have been requested.
|
Chris@0
|
28 *
|
Chris@0
|
29 * @var array
|
Chris@0
|
30 */
|
Chris@0
|
31 protected $lookedUp = [];
|
Chris@0
|
32
|
Chris@0
|
33 /**
|
Chris@0
|
34 * The language to assume a path alias is for if not specified.
|
Chris@0
|
35 *
|
Chris@0
|
36 * @var string
|
Chris@0
|
37 */
|
Chris@0
|
38 public $defaultLanguage = 'en';
|
Chris@0
|
39
|
Chris@0
|
40 /**
|
Chris@0
|
41 * Adds an alias to the in-memory alias table for this object.
|
Chris@0
|
42 *
|
Chris@0
|
43 * @param string $path
|
Chris@0
|
44 * The system path of the alias.
|
Chris@0
|
45 * @param string $alias
|
Chris@0
|
46 * The alias of the system path.
|
Chris@0
|
47 * @param string $path_language
|
Chris@0
|
48 * The language of this alias.
|
Chris@0
|
49 */
|
Chris@0
|
50 public function addAlias($path, $alias, $path_language = NULL) {
|
Chris@0
|
51 $language = $path_language ?: $this->defaultLanguage;
|
Chris@0
|
52
|
Chris@0
|
53 if ($path[0] !== '/') {
|
Chris@0
|
54 throw new \InvalidArgumentException('The path needs to start with a slash.');
|
Chris@0
|
55 }
|
Chris@0
|
56 if ($alias[0] !== '/') {
|
Chris@0
|
57 throw new \InvalidArgumentException('The alias needs to start with a slash.');
|
Chris@0
|
58 }
|
Chris@0
|
59
|
Chris@0
|
60 $this->aliases[$path][$language] = $alias;
|
Chris@0
|
61 $this->systemPaths[$alias][$language] = $path;
|
Chris@0
|
62 }
|
Chris@0
|
63
|
Chris@0
|
64 /**
|
Chris@0
|
65 * {@inheritdoc}
|
Chris@0
|
66 */
|
Chris@0
|
67 public function getPathByAlias($alias, $langcode = NULL) {
|
Chris@0
|
68 $langcode = $langcode ?: $this->defaultLanguage;
|
Chris@0
|
69 return $this->systemPaths[$alias][$langcode];
|
Chris@0
|
70 }
|
Chris@0
|
71
|
Chris@0
|
72 /**
|
Chris@0
|
73 * {@inheritdoc}
|
Chris@0
|
74 * @param $path
|
Chris@0
|
75 * @param null $langcode
|
Chris@0
|
76 * @return
|
Chris@0
|
77 */
|
Chris@0
|
78 public function getAliasByPath($path, $langcode = NULL) {
|
Chris@0
|
79 if ($path[0] !== '/') {
|
Chris@0
|
80 throw new \InvalidArgumentException(sprintf('Source path %s has to start with a slash.', $path));
|
Chris@0
|
81 }
|
Chris@0
|
82
|
Chris@0
|
83 $langcode = $langcode ?: $this->defaultLanguage;
|
Chris@0
|
84 $this->lookedUp[$path] = 1;
|
Chris@0
|
85 return $this->aliases[$path][$langcode];
|
Chris@0
|
86 }
|
Chris@0
|
87
|
Chris@0
|
88 /**
|
Chris@0
|
89 * {@inheritdoc}
|
Chris@0
|
90 */
|
Chris@0
|
91 public function cacheClear($source = NULL) {
|
Chris@0
|
92 // Not needed.
|
Chris@0
|
93 }
|
Chris@0
|
94
|
Chris@0
|
95 }
|