00001 <?php
00002
00015
00016
00017
00019 define('TAR_COMMAND', '/bin/tar cz');
00020
00021 class TranslatorAction {
00026 function export($locale) {
00027 $command = TAR_COMMAND;
00028 $localeFilesList = TranslatorAction::getLocaleFiles($locale);
00029 $localeFilesList = array_merge($localeFilesList, TranslatorAction::getMiscLocaleFiles($locale));
00030 $localeFilesList[] = Locale::getEmailTemplateFilename($locale);
00031
00032
00033 foreach ($localeFilesList as $file) {
00034 if (file_exists($file)) $command .= ' ' . escapeshellarg($file);
00035 }
00036
00037 header('Content-Type: application/x-gtar');
00038 header("Content-Disposition: attachment; filename=\"$locale.tar.gz\"");
00039 header('Cache-Control: private');
00040 passthru($command);
00041 }
00042
00043 function getLocaleFiles($locale) {
00044 if (!Locale::isLocaleValid($locale)) return null;
00045
00046 $localeFiles = array(Locale::getMainLocaleFilename($locale));
00047 $plugins =& PluginRegistry::loadAllPlugins();
00048 foreach (array_keys($plugins) as $key) {
00049 $plugin =& $plugins[$key];
00050 $localeFile = $plugin->getLocaleFilename($locale);
00051 if (!empty($localeFile)) $localeFiles[] = $localeFile;
00052 unset($plugin);
00053 }
00054 return $localeFiles;
00055 }
00056
00057 function getMiscLocaleFiles($locale) {
00058 $countryDao =& DAORegistry::getDAO('CountryDAO');
00059 $currencyDao =& DAORegistry::getDAO('CurrencyDAO');
00060 return array(
00061 $countryDao->getFilename($locale),
00062 $currencyDao->getCurrencyFilename($locale)
00063 );
00064 }
00065
00066 function getEmailTemplates($locale) {
00067 $xmlParser =& new XMLParser();
00068 $emails = $xmlParser->parse(Locale::getEmailTemplateFilename($locale));
00069 $emailsTable =& $emails->getChildByName('table');
00070
00071 $returner = array();
00072
00073 for ($emailIndex = 0; ($email =& $emailsTable->getChildByName('row', $emailIndex)) !== null; $emailIndex++) {
00074 $fields = Locale::extractFields($email);
00075 $returner[$fields['email_key']]['subject'] = $fields['subject'];
00076 $returner[$fields['email_key']]['body'] = $fields['body'];
00077 $returner[$fields['email_key']]['description'] = isset($fields['description'])?$fields['description']:'';
00078 }
00079 return $returner;
00080 }
00081
00082 function isLocaleFile($locale, $filename) {
00083 if (in_array($filename, TranslatorAction::getLocaleFiles($locale))) return true;
00084 if (in_array($filename, TranslatorAction::getMiscLocaleFiles($locale))) return true;
00085 if ($filename == Locale::getEmailTemplateFilename($locale)) return true;
00086 return false;
00087 }
00088
00089 function determineReferenceFilename($locale, $filename) {
00090
00091 return str_replace($locale, MASTER_LOCALE, $filename);
00092 }
00093 }
00094 ?>