public function syncPhrases($addonId) { $phrases = $this->getModelFromCache('XenForo_Model_Phrase')->getMasterPhrasesInAddOn($addonId); $phraseFile = new DevTools_File_Phrase(); $files = array(); foreach ($phrases as $phrase) { $files[$phrase['phrase_id']] = array_merge($phrase, array('id' => $phrase['phrase_id'], 'title' => $phrase['title'], 'contents' => $phrase['phrase_text'], 'lastModifiedTime' => $phrase['last_file_update'])); $files[$phrase['phrase_id']]['fileName'] = $phraseFile->getFileName($files[$phrase['phrase_id']]); $files[$phrase['phrase_id']]['filePath'] = $phraseFile->getDirectory($files[$phrase['phrase_id']]) . DIRECTORY_SEPARATOR . $files[$phrase['phrase_id']]['fileName']; } $extraFiles = array(); $this->getFilesFromDirectory($phraseFile->getDirectory(array('addon_id' => $addonId)), $extraFiles); foreach ($extraFiles as $k => $file) { $file['global_cache'] = strpos($file['fileName'], 'global.txt') == strlen($file['fileName']) - 10; $files[$k] = $file; } DevTools_File_Phrase::setOriginalFiles($files); $deletedFiles = array(); $newFiles = array(); foreach ($files as $f) { $file = new DevTools_File_Phrase($f['filePath'], $f['id']); if ($file->isNewFile()) { $newFiles[$f['filePath']] = $file; } else { $file->detectChangesAndUpdate(); } } foreach ($newFiles as $file) { $file->detectChangesAndUpdate(); } }