function edit($args, $request) { $this->validate(); $plugin =& $this->plugin; $this->setupTemplate($request); $locale = array_shift($args); $file = array_shift($args); if (!AppLocale::isLocaleValid($locale)) { $request->redirect(null, null, 'index'); } $localeFiles = TranslatorAction::getLocaleFiles($locale); $miscFiles = TranslatorAction::getMiscLocaleFiles($locale); $emails = TranslatorAction::getEmailTemplates($locale); $templateMgr = TemplateManager::getManager($request); $localeFilesRangeInfo = $this->getRangeInfo($request, 'localeFiles'); $miscFilesRangeInfo = $this->getRangeInfo($request, 'miscFiles'); $emailsRangeInfo = $this->getRangeInfo($request, 'emails'); import('lib.pkp.classes.core.ArrayItemIterator'); $templateMgr->assign('localeFiles', new ArrayItemIterator($localeFiles, $localeFilesRangeInfo->getPage(), $localeFilesRangeInfo->getCount())); $templateMgr->assign('miscFiles', new ArrayItemIterator($miscFiles, $miscFilesRangeInfo->getPage(), $miscFilesRangeInfo->getCount())); $templateMgr->assign('emails', new ArrayItemIterator($emails, $emailsRangeInfo->getPage(), $emailsRangeInfo->getCount())); $templateMgr->assign('locale', $locale); $templateMgr->assign('masterLocale', MASTER_LOCALE); $templateMgr->display($plugin->getTemplatePath() . 'locale.tpl'); }
/** * Export the locale files to the browser as a tarball. * Requires tar for operation (configured in config.inc.php). * @param $locale string Locale code for exported locale */ function export($locale) { // Construct the tar command $tarBinary = Config::getVar('cli', 'tar'); if (empty($tarBinary) || !file_exists($tarBinary)) { // We can use fatalError() here as we already have a user // friendly way of dealing with the missing tar on the // index page. fatalError('The tar binary must be configured in config.inc.php\'s cli section to use the export function of this plugin!'); } $command = $tarBinary . ' cz'; $localeFilesList = TranslatorAction::getLocaleFiles($locale); $localeFilesList = array_merge($localeFilesList, TranslatorAction::getMiscLocaleFiles($locale)); $emailTemplateDao = DAORegistry::getDAO('EmailTemplateDAO'); $localeFilesList[] = $emailTemplateDao->getMainEmailTemplateDataFilename($locale); foreach (array_values(TranslatorAction::getEmailFileMap($locale)) as $emailFile) { } // Include locale files (main file and plugin files) foreach ($localeFilesList as $file) { if (file_exists($file)) { $command .= ' ' . escapeshellarg($file); } } header('Content-Type: application/x-gtar'); header("Content-Disposition: attachment; filename=\"{$locale}.tar.gz\""); header('Cache-Control: private'); // Workarounds for IE weirdness passthru($command); }
function isLocaleFile($locale, $filename) { if (in_array($filename, TranslatorAction::getLocaleFiles($locale))) { return true; } if (in_array($filename, TranslatorAction::getMiscLocaleFiles($locale))) { return true; } if ($filename == Locale::getEmailTemplateFilename($locale)) { return true; } return false; }
function edit($args) { list($plugin) = TranslatorHandler::validate(); TranslatorHandler::setupTemplate(); $locale = array_shift($args); $file = array_shift($args); if (!Locale::isLocaleValid($locale)) { Request::redirect(null, null, 'index'); } $localeFiles = TranslatorAction::getLocaleFiles($locale); $miscFiles = TranslatorAction::getMiscLocaleFiles($locale); $emails = TranslatorAction::getEmailTemplates($locale); $templateMgr =& TemplateManager::getManager(); $localeFilesRangeInfo = Handler::getRangeInfo('localeFiles'); $miscFilesRangeInfo = Handler::getRangeInfo('miscFiles'); $emailsRangeInfo = Handler::getRangeInfo('emails'); $templateMgr->assign('localeFiles', new ArrayItemIterator($localeFiles, $localeFilesRangeInfo->getPage(), $localeFilesRangeInfo->getCount())); $templateMgr->assign('miscFiles', new ArrayItemIterator($miscFiles, $miscFilesRangeInfo->getPage(), $miscFilesRangeInfo->getCount())); $templateMgr->assign('emails', new ArrayItemIterator($emails, $emailsRangeInfo->getPage(), $emailsRangeInfo->getCount())); $templateMgr->assign('locale', $locale); $templateMgr->assign('masterLocale', MASTER_LOCALE); $templateMgr->display($plugin->getTemplatePath() . 'locale.tpl'); }
function isLocaleFile($locale, $filename) { if (in_array($filename, TranslatorAction::getLocaleFiles($locale))) { return true; } if (in_array($filename, TranslatorAction::getMiscLocaleFiles($locale))) { return true; } $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO'); if ($filename == $emailTemplateDao->getMainEmailTemplateDataFilename($locale)) { return true; } return false; }
/** * Export the locale files to the browser as a tarball. * Requires tar (configured in config.inc.php) for operation. * @param $args array Parameters. * @param $request PKPRequest Request object. */ function export($args, $request) { $locale = $request->getUserVar('locale'); if (!AppLocale::isLocaleValid($locale)) { fatalError('Invalid locale.'); } // Construct the tar command $tarBinary = Config::getVar('cli', 'tar'); if (empty($tarBinary) || !file_exists($tarBinary)) { fatalError('cli.tar binary not properly configured.'); } $command = $tarBinary . ' cz'; $emailTemplateDao = DAORegistry::getDAO('EmailTemplateDAO'); $localeFilesList = array_merge(TranslatorAction::getLocaleFiles($locale), TranslatorAction::getMiscLocaleFiles($locale), array($emailTemplateDao->getMainEmailTemplateDataFilename($locale)), array_values(TranslatorAction::getEmailFileMap($locale))); // Include locale files (main file and plugin files) foreach ($localeFilesList as $file) { if (file_exists($file)) { $command .= ' ' . escapeshellarg($file); } } header('Content-Type: application/x-gtar'); header("Content-Disposition: attachment; filename=\"{$locale}.tar.gz\""); header('Cache-Control: private'); // Workarounds for IE weirdness passthru($command); }
/** * Get the (validated) filename for the current request. * @param $request PKPRequest * @return string Filename */ protected function _getFilename($request) { $filename = $request->getUserVar('filename'); if (!in_array($filename, TranslatorAction::getMiscLocaleFiles($this->locale))) { fatalError('Invalid locale file specified!'); } return $filename; }