Navigation: Relax type check in method fromConfig()

refs #5600
This commit is contained in:
Johannes Meyer 2015-09-17 13:41:28 +02:00
parent bb4f4e9095
commit b6fe6ffd6b
1 changed files with 12 additions and 4 deletions

View File

@ -9,7 +9,7 @@ use Exception;
use Countable; use Countable;
use InvalidArgumentException; use InvalidArgumentException;
use IteratorAggregate; use IteratorAggregate;
use Icinga\Application\Config; use Traversable;
use Icinga\Application\Icinga; use Icinga\Application\Icinga;
use Icinga\Application\Logger; use Icinga\Application\Logger;
use Icinga\Authentication\Auth; use Icinga\Authentication\Auth;
@ -454,14 +454,22 @@ class Navigation implements ArrayAccess, Countable, IteratorAggregate
/** /**
* Create and return a new set of navigation items for the given configuration * Create and return a new set of navigation items for the given configuration
* *
* @param Config $config * Note that this is supposed to be utilized for one dimensional structures
* only. Multi dimensional structures can be processed by fromArray().
*
* @param Traversable|array $config
* *
* @return Navigation * @return Navigation
* *
* @throws ConfigurationError In case a referenced parent does not exist * @throws InvalidArgumentException In case the given configuration is invalid
* @throws ConfigurationError In case a referenced parent does not exist
*/ */
public static function fromConfig(Config $config) public static function fromConfig($config)
{ {
if (! is_array($config) && !$config instanceof Traversable) {
throw new InvalidArgumentException('Argument $config must be an array or a instance of Traversable');
}
$flattened = $topLevel = array(); $flattened = $topLevel = array();
foreach ($config as $sectionName => $sectionConfig) { foreach ($config as $sectionName => $sectionConfig) {
$parentName = $sectionConfig->parent; $parentName = $sectionConfig->parent;