/** * Checa se existem erros de dependencia e retorna os modulos requeridos * * @param array $dependencias * @param array $explodedLoadedModules * @param array $explodedLoadedTypes * @return array|bool */ public static function checkModuleDependencies(array $dependencias, array $explodedLoadedModules, array $explodedLoadedTypes) { $errors = []; foreach ($dependencias as $dependencia) { //Se for uma dependencia válida if (!empty($dependencia)) { //Dependencia quebrada em tipo e nome $dependenciaBroken = explode(Strings::MODULE_TYPE_NAME_SEPARATOR, $dependencia); //Tipo da dependencia $dependenciaType = $dependenciaBroken[0]; //Verifica se é uma dependencia especifica if (array_key_exists(1, $dependenciaBroken)) { //verifica se a dependencia esta carregada if (!in_array($dependencia, $explodedLoadedModules)) { //Adiciona o erro para o array de erros $errors[] = Strings::moduleSpecificDependencyError($dependencia); } } else { //Verifica se é uma dependencia de tipo //verifica se a dependencia esta carregada if (!in_array($dependenciaType, $explodedLoadedTypes)) { //Adiciona o erro para o array de erros $errors[] = Strings::moduleTypeDependencyError($dependenciaType); } } } } return !empty($errors) ? $errors : true; }