/** * Execute the console command. * * @return mixed */ public function fire(Filesystem $files) { $langDirectory = base_path('resources' . DIRECTORY_SEPARATOR . 'lang' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR); $diff = []; foreach (ModulesLoader::getRegisteredModules() as $module) { if (!is_dir($module->getLocalePath()) or !$module->isPublishable()) { continue; } $locale = $this->input->getOption('locale'); foreach ($files->directories($module->getLocalePath()) as $localeDir) { foreach ($files->allFiles($localeDir) as $localeFile) { $vendorFileDir = $module->getKey() . DIRECTORY_SEPARATOR . $locale . DIRECTORY_SEPARATOR . $localeFile->getFilename(); $vendorFilePath = $langDirectory . $vendorFileDir; if (file_exists($vendorFilePath)) { $localArray = $files->getRequire($localeFile->getRealPath()); $vendorArray = $files->getRequire($vendorFilePath); $array = array_keys_exists_recursive($localArray, $vendorArray); $arrayDiff = ''; foreach (array_dot($array) as $key => $value) { $arrayDiff .= "{$key}: {$value}\n"; } if (empty($arrayDiff)) { continue; } $diff[] = ['modules' . DIRECTORY_SEPARATOR . $vendorFileDir, 'vendor' . DIRECTORY_SEPARATOR . $vendorFileDir]; $diff[] = new TableSeparator(); $diff[] = [$arrayDiff, var_export(array_merge_recursive($array, $vendorArray), true)]; $diff[] = new TableSeparator(); } } } } $this->table($this->headers, $diff); }
/** * @param array $arr1 * @param array $arr2 * * @return array */ function array_keys_exists_recursive(array $arr1, array $arr2) { $outputDiff = []; foreach ($arr1 as $key => $value) { if (array_key_exists($key, $arr2)) { if (is_array($value)) { $recursiveDiff = array_keys_exists_recursive($value, $arr2[$key]); if (count($recursiveDiff)) { $outputDiff[$key] = $recursiveDiff; } } } else { $outputDiff[$key] = $value; } } return $outputDiff; }