Skip to content

Commit

Permalink
Updated
Browse files Browse the repository at this point in the history
  • Loading branch information
devtoolboxuk committed May 25, 2019
1 parent eca10ab commit 8516d0c
Showing 1 changed file with 55 additions and 55 deletions.
110 changes: 55 additions & 55 deletions src/AbstractCerberus.php
Expand Up @@ -19,6 +19,61 @@ public function __construct()
$this->setOptions();
}

/**
* @param array $options
*/
public function setOptions($options = [])
{
$baseOptions = new BaseOptions();
$this->options = $this->arrayMergeRecursiveDistinct($baseOptions->getOptions(), $options);
}

/**
* @param $file
*/
public function setOptionsWithFile($file)
{
if ($this->isYamlLoaded()) {
$this->soteria->sanitise()->disinfect($file, 'url');
if ($this->soteria->sanitise()->result()->isValid()) {
$this->options = $this->arrayMergeRecursiveDistinct($this->options, yaml_parse_file($file));
} else {
if (file_exists($file)) {
$this->options = $this->arrayMergeRecursiveDistinct($this->options, yaml_parse_file($file));
}
}
}
}

/**
* @return bool
*/
private function isYamlLoaded()
{
return extension_loaded('yaml');
}

/**
* @param array $merged
* @param array $array2
* @return array
*/
private function arrayMergeRecursiveDistinct($merged = [], $array2 = [])
{
if (empty($array2)) {
return $merged;
}

foreach ($array2 as $key => &$value) {
if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) {
$merged[$key] = $this->arrayMergeRecursiveDistinct($merged[$key], $value);
} else {
$merged[$key] = $value;
}
}
return $merged;
}

/**
* @param $handler
*/
Expand Down Expand Up @@ -80,7 +135,6 @@ private function addScore($score)
return $this;
}


protected function clearResults()
{
$this->results = [];
Expand All @@ -96,59 +150,5 @@ protected function getOptions()
return $this->options;
}

/**
* @return bool
*/
private function isYamlLoaded()
{
return extension_loaded('yaml');
}

/**
* @param File|array $options
*/
public function setOptions($options)
{

$baseOptions = new BaseOptions();
$basic_options = $baseOptions->getOptions();

if (is_array($options)) {
$options = $this->arrayMergeRecursiveDistinct($basic_options, $options);
} else {
if ($this->isYamlLoaded()) {
$this->soteria->sanitise()->disinfect($options, 'url');
if ($this->soteria->sanitise()->result()->isValid()) {
$options = $this->arrayMergeRecursiveDistinct($basic_options, yaml_parse_file($options));
} else {
if (file_exists($options)) {
$options = $this->arrayMergeRecursiveDistinct($basic_options, yaml_parse_file($options));
}
}
}
}

$this->options = $options;
}

/**
* @param array $merged
* @param array $array2
* @return array
*/
private function arrayMergeRecursiveDistinct($merged = [], $array2 = [])
{
if (empty($array2)) {
return $merged;
}

foreach ($array2 as $key => &$value) {
if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) {
$merged[$key] = $this->arrayMergeRecursiveDistinct($merged[$key], $value);
} else {
$merged[$key] = $value;
}
}
return $merged;
}
}

0 comments on commit 8516d0c

Please sign in to comment.