Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
71.43% |
10 / 14 |
CRAP | |
80.17% |
93 / 116 |
| ControllerHelper | |
0.00% |
0 / 1 |
|
71.43% |
10 / 14 |
54.10 | |
80.17% |
93 / 116 |
| __construct(\aae\serialize\FileSerializer $serializer) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getActions() | |
100.00% |
1 / 1 |
4 | |
100.00% |
13 / 13 |
|||
| getLanguageFileNames() | |
100.00% |
1 / 1 |
2 | |
100.00% |
7 / 7 |
|||
| getLanguages() | |
100.00% |
1 / 1 |
5 | |
100.00% |
8 / 8 |
|||
| getLocalizedVarNames() | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getLanguagesVarValues() | |
100.00% |
1 / 1 |
5 | |
100.00% |
16 / 16 |
|||
| writeToLanguage($languageName, $languageValuesArray) | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| _getAll($languageName = NULL) | |
0.00% |
0 / 1 |
3.47 | |
62.50% |
5 / 8 |
|||
| _getControllerName() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getConfigurations() | |
100.00% |
1 / 1 |
6 | |
100.00% |
16 / 16 |
|||
| getMasterConfiguration() | |
100.00% |
1 / 1 |
4 | |
100.00% |
12 / 12 |
|||
| writeConfiguration($environment, $content) | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| toggleDependency($environment, $depName) | |
0.00% |
0 / 1 |
5.63 | |
53.33% |
8 / 15 |
|||
| setDependency($environment, $depName, $depJson) | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 10 |
|||
| <?php | |
| /** | |
| * | |
| */ | |
| namespace aae\util { | |
| /** | |
| * @author Axel Ancona Esselmann | |
| * @package aae\util | |
| */ | |
| class ControllerHelper extends PhpClassHelper { | |
| private $_actionEndings = ["AuthenticatedAction", "Action"]; | |
| private $_defaultLanguage = "eng"; | |
| private $_serializer = NULL; | |
| public function __construct(\aae\serialize\FileSerializer $serializer) { | |
| $this->_serializer = $serializer; | |
| } | |
| public function getActions() { | |
| $result = []; | |
| $functions = $this->getFunctions(); | |
| foreach ($this->_actionEndings as $ending) { | |
| $actions = []; | |
| foreach ($functions as $key => $value) { | |
| if (strstr($value, $ending, true)) { | |
| $actions[] = strstr($value, $ending, true); | |
| unset($functions[$key]); | |
| } | |
| } | |
| $result[$ending] = $actions; | |
| } | |
| return $result; | |
| } | |
| public function getLanguageFileNames() { | |
| $languagesDir = dirname(dirname($this->_fileName)).DIRECTORY_SEPARATOR."I18n".DIRECTORY_SEPARATOR; | |
| $controllerName = $this->_getControllerName(); | |
| $languages = $this->getLanguages(); | |
| foreach ($languages as $language) { | |
| $folders[] = $languagesDir.$language.DIRECTORY_SEPARATOR.$controllerName.".json"; | |
| } | |
| return $folders; | |
| } | |
| public function getLanguages() { | |
| $languagesDir = dirname(dirname($this->_fileName)).DIRECTORY_SEPARATOR."I18n".DIRECTORY_SEPARATOR; | |
| $all = scandir($languagesDir); | |
| $languages = []; | |
| foreach ($all as $item) { | |
| if ($item == "." or $item == ".." or $item == ".DS_Store") continue; | |
| $languages[] = $item; | |
| } | |
| return $languages; | |
| } | |
| public function getLocalizedVarNames() { | |
| $all = $this->_getAll(); | |
| return array_keys($all); | |
| } | |
| public function getLanguagesVarValues() { | |
| $languages = $this->getLanguages(); | |
| $getLocalizedVarNames = $this->getLocalizedVarNames(); | |
| $result = []; | |
| foreach ($languages as $language) { | |
| $values = []; | |
| $languageValues = $this->_getAll($language); | |
| foreach ($getLocalizedVarNames as $localizedVarName) { | |
| $localizedValue = ""; | |
| if (!is_null($languageValues) && array_key_exists($localizedVarName, $languageValues)) { | |
| $localizedValue = $languageValues[$localizedVarName]; | |
| } | |
| $values[$localizedVarName] = $localizedValue; | |
| } | |
| $result[$language] = $values; | |
| } | |
| return $result; | |
| } | |
| public function writeToLanguage($languageName, $languageValuesArray) { | |
| $fileName = dirname(dirname($this->_fileName)).DIRECTORY_SEPARATOR."I18n".DIRECTORY_SEPARATOR.$languageName.DIRECTORY_SEPARATOR.$this->_getControllerName().".json"; | |
| file_put_contents($fileName, json_encode($languageValuesArray, JSON_PRETTY_PRINT)); | |
| } | |
| public function _getAll($languageName = NULL) { | |
| if (is_null($languageName)) $languageName = $this->_defaultLanguage; | |
| $fileName = dirname(dirname($this->_fileName)).DIRECTORY_SEPARATOR."I18n".DIRECTORY_SEPARATOR.$languageName.DIRECTORY_SEPARATOR.$this->_getControllerName().".json"; | |
| if (!file_exists($fileName)) { | |
| $file = fopen($fileName, "w"); | |
| fclose($file); | |
| } | |
| $allVars = json_decode(file_get_contents($fileName), true); | |
| return $allVars; | |
| } | |
| private function _getControllerName() { | |
| return basename(strtolower(strstr($this->_fileName, "TemplateController", true))); | |
| } | |
| public function getConfigurations() { | |
| $fileNames = scandir($this->_fileName); | |
| $configurations = []; | |
| foreach ($fileNames as $file) { | |
| $firstChar = substr($file, 0, 1); | |
| $tempDir = $this->_fileName.DIRECTORY_SEPARATOR.$file; | |
| if ($firstChar != '.' && $firstChar != '_' && is_dir($tempDir)) { | |
| $configurationFileName = $tempDir.DIRECTORY_SEPARATOR."config.json"; | |
| if (file_exists($configurationFileName)) { | |
| $configuration["fileName"] = $configurationFileName; | |
| $configuration["name"] = $file; | |
| $configuration["content"] = $this->_serializer->unserialize($configurationFileName); | |
| $configurations[] = $configuration; | |
| } | |
| } | |
| } | |
| return $configurations; | |
| } | |
| public function getMasterConfiguration() { | |
| $fileName = $this->_fileName.DIRECTORY_SEPARATOR."config.json"; | |
| $content = $this->_serializer->unserialize($fileName); | |
| $dependencies = []; | |
| foreach ($content as $masterEntry) { | |
| $dep = reset($masterEntry); | |
| $depName = key($masterEntry); | |
| if (is_array($dep) && array_key_exists("class", $dep)) { | |
| $depClassName = $dep["class"]; | |
| } else $depClassName = ""; | |
| $dependencies[$depName][$depClassName][] = new \aae\di\Dependency($depName, $masterEntry, false); | |
| } | |
| return $dependencies; | |
| } | |
| public function writeConfiguration($environment, $content) { | |
| $fileName = $this->_fileName.DIRECTORY_SEPARATOR.$environment.DIRECTORY_SEPARATOR."config.json"; | |
| file_put_contents($fileName, json_encode($content, JSON_PRETTY_PRINT)); | |
| } | |
| public function toggleDependency($environment, $depName) { | |
| $configurations = $this->getConfigurations(); | |
| foreach ($configurations as $configuration) { | |
| if ($configuration["name"] == $environment) { | |
| $content = $configuration["content"]; | |
| if (array_key_exists($depName, $content)) { | |
| unset($content[$depName]); | |
| $this->writeConfiguration($environment, $content); | |
| return; | |
| } else { | |
| $fromMaster = reset($this->getMasterConfiguration()[$depName]); | |
| $fromMaster = json_decode(reset($fromMaster)->json(), true); | |
| $content[$depName] = $fromMaster; | |
| $this->writeConfiguration($environment, $content); | |
| } | |
| } | |
| } | |
| return; | |
| } | |
| public function setDependency($environment, $depName, $depJson) { | |
| $configurations = $this->getConfigurations(); | |
| foreach ($configurations as $configuration) { | |
| if ($configuration["name"] == $environment) { | |
| $content = $configuration["content"]; | |
| $array = json_decode($depJson); | |
| $content[$depName] = $array; | |
| $this->writeConfiguration($environment, $content); | |
| } | |
| } | |
| return; | |
| } | |
| } | |
| } |