Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
93.75% covered (success)
93.75%
15 / 16
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
default_resources_locator
93.75% covered (success)
93.75%
15 / 16
66.67% covered (warning)
66.67%
2 / 3
10.02
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 locate_resources
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 append_ext_resources
90.00% covered (success)
90.00%
9 / 10
0.00% covered (danger)
0.00%
0 / 1
8.06
1<?php
2/**
3*
4* This file is part of the phpBB Forum Software package.
5*
6* @copyright (c) phpBB Limited <https://www.phpbb.com>
7* @license       GNU General Public License, version 2 (GPL-2.0)
8*
9* For full copyright and license information, please see
10* the docs/CREDITS.txt file.
11*
12*/
13
14namespace phpbb\routing\resources_locator;
15
16use phpbb\extension\manager;
17
18/**
19 * Locates the yaml routing resources located in the default locations
20 */
21class default_resources_locator implements resources_locator_interface
22{
23    /**
24     * phpBB root path
25     *
26     * @var string
27     */
28    protected $phpbb_root_path;
29
30    /**
31     * Name of the current environment
32     *
33     * @var string
34     */
35    protected $environment;
36
37    /**
38     * Extension manager
39     *
40     * @var manager
41     */
42    protected $extension_manager;
43
44    /**
45     * Construct method
46     *
47     * @param string        $phpbb_root_path    phpBB root path
48     * @param string        $environment        Name of the current environment
49     * @param manager|null    $extension_manager    Extension manager
50     */
51    public function __construct($phpbb_root_path, $environment, manager $extension_manager = null)
52    {
53        $this->phpbb_root_path        = $phpbb_root_path;
54        $this->environment            = $environment;
55        $this->extension_manager    = $extension_manager;
56    }
57
58    /**
59     * {@inheritdoc}
60     */
61    public function locate_resources()
62    {
63        $resources = [['config/' . $this->environment . '/routing/environment.yml', 'yaml']];
64
65        $resources = $this->append_ext_resources($resources);
66
67        return $resources;
68    }
69
70    /**
71     * Append extension resources to an array of resouces
72     *
73     * @see resources_locator_interface::locate_resources()
74     *
75     * @param mixed[] $resources List of resources
76     *
77     * @return mixed[] List of resources
78     */
79    protected function append_ext_resources(array $resources)
80    {
81        if ($this->extension_manager !== null)
82        {
83            foreach ($this->extension_manager->all_enabled(false) as $path)
84            {
85                if (file_exists($this->phpbb_root_path . $path . 'config/' . $this->environment . '/routing/environment.yml'))
86                {
87                    $resources[] = [$path . 'config/' . $this->environment . '/routing/environment.yml', 'yaml'];
88                }
89                else if (!is_dir($this->phpbb_root_path . $path . 'config/' . $this->environment))
90                {
91                    if (file_exists($this->phpbb_root_path . $path . 'config/default/routing/environment.yml'))
92                    {
93                        $resources[] = [$path . 'config/default/routing/environment.yml', 'yaml'];
94                    }
95                    else if (!is_dir($this->phpbb_root_path . $path . 'config/default/routing') && file_exists($this->phpbb_root_path . $path . 'config/routing.yml'))
96                    {
97                        $resources[] = [$path . 'config/routing.yml', 'yaml'];
98                    }
99                }
100            }
101        }
102
103        return $resources;
104    }
105}