Пример #1
0
 /**
  * Execute the import command.
  */
 function execute()
 {
     $importer =& new ImportOJS1();
     if ($importer->import($this->journalPath, $this->importPath, $this->options)) {
         $redirects = $importer->getRedirects();
         $conflicts = $importer->getConflicts();
         // Generate redirect files if redirect option enabled
         $redirectResults = $redirectSummary = '';
         if (in_array('redirect', $this->options) && !empty($redirects)) {
             $redirectFilesDir = Config::getVar('files', 'files_dir') . DIRECTORY_SEPARATOR . 'redirect' . DIRECTORY_SEPARATOR . $this->journalPath;
             $redirectSummary = "\n\nRedirect PHP files have been created in the following directory:\n\n{$redirectFilesDir}\n\nTo enable redirection, these files will need to be moved to either the OJS 1 filesystem path, or, for single journal installations, to the OJS 2 filesystem path. Once these files are moved, you can safely delete the redirect directory ({$redirectFilesDir}) created by this tool.\n\nSee {$redirectFilesDir}" . DIRECTORY_SEPARATOR . "README for more information.\n";
             $redirectReadme = "To enable redirection, the following files will need to be moved to either the OJS 1 filesystem path, or, for single journal installations, to the OJS 2 filesystem path. Once these files are moved, you can safely delete the redirect directory ({$redirectFilesDir}).\n\n";
             reset($redirects);
             $errors = false;
             while (list($key, $redirect) = each($redirects)) {
                 $redirectFile = $redirect[0];
                 $redirectDescKey = $redirect[1];
                 $redirectContents = $redirect[2];
                 $redirectFilePath = $redirectFilesDir . DIRECTORY_SEPARATOR . $redirectFile;
                 if (FileManager::writeFile($redirectFilePath, $redirectContents) !== false) {
                     $redirectReadme .= "{$redirectFile}\n";
                     $redirectReadme .= "-- " . Locale::translate($redirectDescKey) . "\n\n";
                 } else {
                     $errors = true;
                     $redirectSummary .= "\n\nError writing {$redirectFilePath}. Please ensure that the user running this script has write permission to the OJS 2 files directory.";
                 }
             }
             if (!$errors) {
                 FileManager::writeFile($redirectFilesDir . DIRECTORY_SEPARATOR . 'README', $redirectReadme);
             }
         }
         // Get conflicts from user import
         $conflictSummary = '';
         if (!empty($conflicts)) {
             $conflictSummary = "\n\n" . Locale::translate('admin.journals.importOJS1.conflict.desc') . "\n";
             while (list($key, $conflict) = each($conflicts)) {
                 $firstUser = $conflict[0];
                 $secondUser = $conflict[1];
                 $conflictSummary .= "\n* " . Locale::translate('admin.journals.importOJS1.conflict', array("firstUsername" => $firstUser->getUsername(), "firstName" => $firstUser->getFullName(), "secondUsername" => $secondUser->getUsername(), "secondName" => $secondUser->getFullName()));
             }
         }
         printf("Import completed\n" . "Users imported:     %u\n" . "Issues imported:    %u\n" . "Articles imported:  %u\n" . "%s\n", $importer->userCount, $importer->issueCount, $importer->articleCount, $redirectSummary . $conflictSummary);
     } else {
         printf("Import failed!\nERROR: %s\n", $importer->error());
     }
 }
Пример #2
0
 function saveLocaleFile($args)
 {
     $this->validate();
     $plugin =& PluginRegistry::getPlugin('generic', 'CustomLocalePlugin');
     $this->setupTemplate($plugin, true);
     $locale = array_shift($args);
     if (!Locale::isLocaleValid($locale)) {
         $path = array($plugin->getCategory(), $plugin->getName(), 'index');
         Request::redirect(null, null, null, $path);
     }
     $filename = urldecode(urldecode(array_shift($args)));
     if (!CustomLocaleAction::isLocaleFile($locale, $filename)) {
         $path = array($plugin->getCategory(), $plugin->getName(), 'edit', $locale);
         Request::redirect(null, null, null, $path);
     }
     $journal =& Request::getJournal();
     $journalId = $journal->getId();
     $changes = Request::getUserVar('changes');
     $customFilesDir = Config::getVar('files', 'public_files_dir') . DIRECTORY_SEPARATOR . 'journals' . DIRECTORY_SEPARATOR . $journalId . DIRECTORY_SEPARATOR . CUSTOM_LOCALE_DIR . DIRECTORY_SEPARATOR . $locale;
     $customFilePath = $customFilesDir . DIRECTORY_SEPARATOR . $filename;
     // Create empty custom locale file if it doesn't exist
     import('file.FileManager');
     import('file.EditableLocaleFile');
     if (!FileManager::fileExists($customFilePath)) {
         $numParentDirs = substr_count($customFilePath, DIRECTORY_SEPARATOR);
         $parentDirs = '';
         for ($i = 0; $i < $numParentDirs; $i++) {
             $parentDirs .= '..' . DIRECTORY_SEPARATOR;
         }
         $newFileContents = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
         $newFileContents .= '<!DOCTYPE locale SYSTEM "' . $parentDirs . 'lib' . DIRECTORY_SEPARATOR . 'pkp' . DIRECTORY_SEPARATOR . 'dtd' . DIRECTORY_SEPARATOR . 'locale.dtd' . '">' . "\n";
         $newFileContents .= '<locale name="' . $locale . '">' . "\n";
         $newFileContents .= '</locale>';
         FileManager::writeFile($customFilePath, $newFileContents);
     }
     $file = new EditableLocaleFile($locale, $customFilePath);
     while (!empty($changes)) {
         $key = array_shift($changes);
         $value = $this->correctCr(array_shift($changes));
         if (!empty($value)) {
             if (!$file->update($key, $value)) {
                 $file->insert($key, $value);
             }
         } else {
             $file->delete($key);
         }
     }
     $file->write();
     Request::redirectUrl(Request::getUserVar('redirectUrl'));
 }
Пример #3
0
 /**
  * Register objects
  * @param $objects array
  * @param $filter string
  * @param $journal Journal
  * @param $objectsFileNamePart string
  */
 function _registerObjects($objects, $filter, $journal, $objectsFileNamePart)
 {
     $plugin = $this->_plugin;
     import('lib.pkp.classes.file.FileManager');
     $fileManager = new FileManager();
     // export XML
     $exportXml = $plugin->exportXML($objects, $filter, $journal);
     // Write the XML to a file.
     $exportFileName = $plugin->getExportFileName($plugin->getExportPath(), $objectFileNamePart, $journal, '.xml');
     $fileManager->writeFile($exportFileName, $exportXml);
     // Deposit the XML file.
     $result = $plugin->depositXML($objects, $journal, $exportFileName);
     if ($result !== true) {
         $this->_addLogEntry($result);
     }
     // Remove all temporary files.
     $fileManager->deleteFile($exportFileName);
 }
Пример #4
0
 /**
  * Register objects
  * @param $objects array
  * @param $filter string
  * @param $journal Journal
  * @param $objectsFileNamePart string
  */
 function _registerObjects($objects, $filter, $journal, $objectsFileNamePart)
 {
     $plugin = $this->_plugin;
     import('lib.pkp.classes.file.FileManager');
     $fileManager = new FileManager();
     foreach ($objects as $object) {
         // export XML
         $exportXml = $plugin->exportXML($object, $filter, $journal);
         // Write the XML to a file.
         // export file name example: datacite-20160723-160036-articles-1-1.xml
         $objectFileNamePart = $objectsFileNamePart . '-' . $object->getId();
         $exportFileName = $plugin->getExportFileName($plugin->getExportPath(), $objectFileNamePart, $journal, '.xml');
         $fileManager->writeFile($exportFileName, $exportXml);
         // Deposit the XML file.
         $result = $plugin->depositXML($object, $journal, $exportFileName);
         if ($result !== true) {
             $this->_addLogEntry($result);
         }
         // Remove all temporary files.
         $fileManager->deleteFile($exportFileName);
     }
 }
Пример #5
0
 /**
  * Display the plugin.
  * @param $args array
  * @param $request PKPRequest
  */
 function display($args, $request)
 {
     $templateMgr = TemplateManager::getManager($request);
     $press = $request->getPress();
     parent::display($args, $request);
     $templateMgr->assign('plugin', $this);
     switch (array_shift($args)) {
         case 'index':
         case '':
             $templateMgr->display($this->getTemplatePath() . 'index.tpl');
             break;
         case 'uploadImportXML':
             $user = $request->getUser();
             import('lib.pkp.classes.file.TemporaryFileManager');
             $temporaryFileManager = new TemporaryFileManager();
             $temporaryFile = $temporaryFileManager->handleUpload('uploadedFile', $user->getId());
             if ($temporaryFile) {
                 $json = new JSONMessage(true);
                 $json->setAdditionalAttributes(array('temporaryFileId' => $temporaryFile->getId()));
             } else {
                 $json = new JSONMessage(false, __('common.uploadFailed'));
             }
             return $json->getString();
         case 'importBounce':
             $json = new JSONMessage(true);
             $json->setEvent('addTab', array('title' => __('plugins.importexport.native.results'), 'url' => $request->url(null, null, null, array('plugin', $this->getName(), 'import'), array('temporaryFileId' => $request->getUserVar('temporaryFileId')))));
             return $json->getString();
         case 'import':
             AppLocale::requireComponents(LOCALE_COMPONENT_PKP_SUBMISSION);
             $temporaryFileId = $request->getUserVar('temporaryFileId');
             $temporaryFileDao = DAORegistry::getDAO('TemporaryFileDAO');
             $user = $request->getUser();
             $temporaryFile = $temporaryFileDao->getTemporaryFile($temporaryFileId, $user->getId());
             if (!$temporaryFile) {
                 $json = new JSONMessage(true, __('plugins.inportexport.native.uploadFile'));
                 return $json->getString();
             }
             $temporaryFilePath = $temporaryFile->getFilePath();
             $deployment = new NativeImportExportDeployment($press, $user);
             libxml_use_internal_errors(true);
             $submissions = $this->importSubmissions(file_get_contents($temporaryFilePath), $deployment);
             $templateMgr->assign('submissions', $submissions);
             $validationErrors = array_filter(libxml_get_errors(), create_function('$a', 'return $a->level == LIBXML_ERR_ERROR ||  $a->level == LIBXML_ERR_FATAL;'));
             $templateMgr->assign('validationErrors', $validationErrors);
             libxml_clear_errors();
             // Are there any submissions import errors
             $processedSubmissionsIds = $deployment->getProcessedObjectsIds(ASSOC_TYPE_SUBMISSION);
             if (!empty($processedSubmissionsIds)) {
                 $submissionsErrors = array_filter($processedSubmissionsIds, create_function('$a', 'return !empty($a);'));
                 if (!empty($submissionsErrors)) {
                     $templateMgr->assign('submissionsErrors', $processedSubmissionsIds);
                 }
             }
             // If there are any submissions or validataion errors
             // delete imported submissions.
             if (!empty($submissionsErrors) || !empty($validationErrors)) {
                 // remove all imported sumissions
                 $deployment->removeImportedObjects(ASSOC_TYPE_SUBMISSION);
             }
             // Display the results
             $json = new JSONMessage(true, $templateMgr->fetch($this->getTemplatePath() . 'results.tpl'));
             return $json->getString();
         case 'export':
             $exportXml = $this->exportSubmissions((array) $request->getUserVar('selectedSubmissions'), $request->getContext(), $request->getUser());
             import('lib.pkp.classes.file.FileManager');
             $fileManager = new FileManager();
             $exportFileName = $this->getExportFileName($this->getExportPath(), 'monographs', $press, '.xml');
             $fileManager->writeFile($exportFileName, $exportXml);
             $fileManager->downloadFile($exportFileName);
             $fileManager->deleteFile($exportFileName);
             break;
         default:
             $dispatcher = $request->getDispatcher();
             $dispatcher->handle404();
     }
 }
Пример #6
0
 /**
  * Save settings. 
  */
 function execute()
 {
     $plugin =& $this->plugin;
     $journalId = $this->journalId;
     $css = '';
     // Header and footer colours
     $customThemeHeaderColour = $this->getData('customThemeHeaderColour');
     $plugin->updateSetting($journalId, 'customThemeHeaderColour', $customThemeHeaderColour, 'string');
     $css .= "#header {background-color: {$customThemeHeaderColour};}\n";
     $css .= "#footer {background-color: {$customThemeHeaderColour};}\n";
     $css .= "table.listing tr.fastTracked {background-color: {$customThemeHeaderColour};}\n";
     // Link colours
     $customThemeLinkColour = $this->getData('customThemeLinkColour');
     $plugin->updateSetting($journalId, 'customThemeLinkColour', $customThemeLinkColour, 'string');
     $css .= "a {color: {$customThemeLinkColour};}\n";
     $css .= "a:link {color: {$customThemeLinkColour};}\n";
     $css .= "a:active {color: {$customThemeLinkColour};}\n";
     $css .= "a:visited {color: {$customThemeLinkColour};}\n";
     $css .= "a:hover {color: {$customThemeLinkColour};}\n";
     $css .= "input.defaultButton {color: {$customThemeLinkColour};}\n";
     // Background colours
     $customThemeBackgroundColour = $this->getData('customThemeBackgroundColour');
     $plugin->updateSetting($journalId, 'customThemeBackgroundColour', $customThemeBackgroundColour, 'string');
     $css .= "body {background-color: {$customThemeBackgroundColour};}\n";
     $css .= "input.defaultButton {background-color: {$customThemeBackgroundColour};}\n";
     // Foreground colours
     $customThemeForegroundColour = $this->getData('customThemeForegroundColour');
     $plugin->updateSetting($journalId, 'customThemeForegroundColour', $customThemeForegroundColour, 'string');
     $css .= "body {color: {$customThemeForegroundColour};}\n";
     $css .= "input.defaultButton {color: {$customThemeForegroundColour};}\n";
     import('file.FileManager');
     FileManager::writeFile(dirname(__FILE__) . '/custom.css', $css);
 }
 /**
  * Display the plugin.
  * @param $args array
  * @param $request PKPRequest
  */
 function display($args, $request)
 {
     $templateMgr = TemplateManager::getManager($request);
     $press = $request->getPress();
     parent::display($args, $request);
     $templateMgr->assign('plugin', $this);
     switch (array_shift($args)) {
         case 'index':
         case '':
             $templateMgr->display($this->getTemplatePath() . 'index.tpl');
             break;
         case 'export':
             $exportXml = $this->exportSubmissions((array) $request->getUserVar('selectedSubmissions'), $request->getContext(), $request->getUser());
             import('lib.pkp.classes.file.FileManager');
             $fileManager = new FileManager();
             $exportFileName = $this->getExportFileName($this->getExportPath(), 'monographs', $press, '.xml');
             $fileManager->writeFile($exportFileName, $exportXml);
             $fileManager->downloadFile($exportFileName);
             $fileManager->deleteFile($exportFileName);
             break;
         default:
             $dispatcher = $request->getDispatcher();
             $dispatcher->handle404();
     }
 }
Пример #8
0
 /**
  * @copydoc PubObjectsExportPlugin::executeExportAction()
  */
 function executeExportAction($request, $objects, $filter, $tab, $objectsFileNamePart)
 {
     $context = $request->getContext();
     $path = array('plugin', $this->getName());
     if ($request->getUserVar(EXPORT_ACTION_DEPOSIT)) {
         assert($filter != null);
         // Get the XML
         $exportXml = $this->exportXML($objects, $filter, $context);
         // Write the XML to a file.
         // export file name example: crossref-20160723-160036-articles-1.xml
         import('lib.pkp.classes.file.FileManager');
         $fileManager = new FileManager();
         $exportFileName = $this->getExportFileName($this->getExportPath(), $objectsFileNamePart, $context, '.xml');
         $fileManager->writeFile($exportFileName, $exportXml);
         // Deposit the XML file.
         $result = $this->depositXML($objects, $context, $exportFileName);
         // send notifications
         if ($result === true) {
             $this->_sendNotification($request->getUser(), $this->getDepositSuccessNotificationMessageKey(), NOTIFICATION_TYPE_SUCCESS);
         } else {
             if (is_array($result)) {
                 foreach ($result as $error) {
                     assert(is_array($error) && count($error) >= 1);
                     $this->_sendNotification($request->getUser(), $error[0], NOTIFICATION_TYPE_ERROR, isset($error[1]) ? $error[1] : null);
                 }
             }
         }
         // Remove all temporary files.
         $fileManager->deleteFile($exportFileName);
         // redirect back to the right tab
         $request->redirect(null, null, null, $path, null, $tab);
     }
     parent::executeExportAction($request, $objects, $filter, $tab, $objectsFileNamePart);
 }
Пример #9
0
 /**
  * @copydoc PKPImportExportPlugin::executeCLI()
  */
 function executeCLICommand($scriptName, $command, $context, $outputFile, $objects, $filter, $objectsFileNamePart)
 {
     import('lib.pkp.classes.file.FileManager');
     $fileManager = new FileManager();
     switch ($command) {
         case 'export':
             $result = $this->_checkForTar();
             if ($result === true) {
                 $exportedFiles = array();
                 foreach ($objects as $object) {
                     // Get the XML
                     $exportXml = $this->exportXML($object, $filter, $context);
                     // Write the XML to a file.
                     // export file name example: datacite-20160723-160036-articles-1-1.xml
                     $objectFileNamePart = $objectsFileNamePart . '-' . $object->getId();
                     $exportFileName = $this->getExportFileName($this->getExportPath(), $objectFileNamePart, $context, '.xml');
                     $fileManager->writeFile($exportFileName, $exportXml);
                     $exportedFiles[] = $exportFileName;
                 }
                 // If we have more than one export file we package the files
                 // up as a single tar before going on.
                 assert(count($exportedFiles) >= 1);
                 if (count($exportedFiles) > 1) {
                     // tar file name: e.g. datacite-20160723-160036-articles-1.tar.gz
                     $finalExportFileName = $this->getExportFileName($this->getExportPath(), $objectFileNamePart, $context, '.tar.gz');
                     $finalExportFileType = DATACITE_EXPORT_FILE_TAR;
                     $this->_tarFiles($this->getExportPath(), $finalExportFileName, $exportedFiles);
                 } else {
                     $finalExportFileName = array_shift($exportedFiles);
                     $finalExportFileType = DATACITE_EXPORT_FILE_XML;
                 }
                 $outputFileExtension = $finalExportFileType == DATACITE_EXPORT_FILE_TAR ? '.tar.gz' : '.xml';
                 if (substr($outputFile, -strlen($outputFileExtension)) != $outputFileExtension) {
                     $outputFile .= $outputFileExtension;
                 }
                 $fileManager->copyFile($finalExportFileName, $outputFile);
                 foreach ($exportedFiles as $exportedFile) {
                     $fileManager->deleteFile($exportedFile);
                 }
                 $fileManager->deleteFile($finalExportFileName);
             } else {
                 echo __('plugins.importexport.common.cliError') . "\n";
                 echo __('manager.plugins.tarCommandNotFound') . "\n\n";
                 $this->usage($scriptName);
             }
             break;
         case 'register':
             $resultErrors = array();
             foreach ($objects as $object) {
                 // Get the XML
                 $exportXml = $this->exportXML($object, $filter, $context);
                 // Write the XML to a file.
                 // export file name example: datacite-20160723-160036-articles-1-1.xml
                 $objectFileNamePart = $objectsFileNamePart . '-' . $object->getId();
                 $exportFileName = $this->getExportFileName($this->getExportPath(), $objectFileNamePart, $context, '.xml');
                 $fileManager->writeFile($exportFileName, $exportXml);
                 // Deposit the XML file.
                 $result = $this->depositXML($object, $context, $exportFileName);
                 if (is_array($result)) {
                     $resultErrors[] = $result;
                 }
                 // Remove all temporary files.
                 $fileManager->deleteFile($exportFileName);
             }
             if (empty($resultErrors)) {
                 echo __('plugins.importexport.common.register.success') . "\n";
             } else {
                 echo __('plugins.importexport.common.cliError') . "\n";
                 foreach ($resultErrors as $errors) {
                     foreach ($errors as $error) {
                         assert(is_array($error) && count($error) >= 1);
                         $errorMessage = __($error[0], array('param' => isset($error[1]) ? $error[1] : null));
                         echo "*** {$errorMessage}\n";
                     }
                 }
                 echo "\n";
                 $this->usage($scriptName);
             }
             break;
     }
 }
Пример #10
0
 function saveLocaleFile($args, &$request)
 {
     $this->validate();
     $plugin =& $this->plugin;
     $this->setupTemplate($request, $plugin, true);
     $locale = array_shift($args);
     if (!AppLocale::isLocaleValid($locale)) {
         $path = array($plugin->getCategory(), $plugin->getName(), 'index');
         $request->redirect(null, null, null, null, $path);
     }
     $filename = urldecode(urldecode(array_shift($args)));
     if (!CustomLocaleAction::isLocaleFile($locale, $filename)) {
         $path = array($plugin->getCategory(), $plugin->getName(), 'edit', $locale);
         $request->redirect(null, null, null, null, $path);
     }
     $conference =& $request->getConference();
     $conferenceId = $conference->getId();
     $changes = $request->getUserVar('changes');
     $customFilesDir = Config::getVar('files', 'public_files_dir') . DIRECTORY_SEPARATOR . 'conferences' . DIRECTORY_SEPARATOR . $conferenceId . DIRECTORY_SEPARATOR . CUSTOM_LOCALE_DIR . DIRECTORY_SEPARATOR . $locale;
     $customFilePath = $customFilesDir . DIRECTORY_SEPARATOR . $filename;
     // Create empty custom locale file if it doesn't exist
     import('lib.pkp.classes.file.FileManager');
     $fileManager = new FileManager();
     import('classes.i18n.EditableLocaleFile');
     if (!$fileManager->fileExists($customFilePath)) {
         $numParentDirs = substr_count($customFilePath, DIRECTORY_SEPARATOR);
         $parentDirs = '';
         for ($i = 0; $i < $numParentDirs; $i++) {
             $parentDirs .= '..' . DIRECTORY_SEPARATOR;
         }
         $newFileContents = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
         $newFileContents .= '<!DOCTYPE locale SYSTEM "' . $parentDirs . 'locale' . DIRECTORY_SEPARATOR . 'locale.dtd' . '">' . "\n";
         $newFileContents .= '<locale name="' . $locale . '">' . "\n";
         $newFileContents .= '</locale>';
         $fileManager->writeFile($customFilePath, $newFileContents);
     }
     $file = new EditableLocaleFile($locale, $customFilePath);
     while (!empty($changes)) {
         $key = array_shift($changes);
         $value = $this->correctCr(array_shift($changes));
         if (!empty($value)) {
             if (!$file->update($key, $value)) {
                 $file->insert($key, $value);
             }
         } else {
             $file->delete($key);
         }
     }
     $file->write();
     $request->redirectUrl($request->getUserVar('redirectUrl'));
 }
Пример #11
0
 /**
  * Display the plugin.
  * @param $args array
  * @param $request PKPRequest
  */
 function display($args, $request)
 {
     $templateMgr = TemplateManager::getManager($request);
     $context = $request->getContext();
     parent::display($args, $request);
     $templateMgr->assign('plugin', $this);
     switch (array_shift($args)) {
         case 'index':
         case '':
             $templateMgr->display($this->getTemplatePath() . 'index.tpl');
             break;
         case 'uploadImportXML':
             $user = $request->getUser();
             import('lib.pkp.classes.file.TemporaryFileManager');
             $temporaryFileManager = new TemporaryFileManager();
             $temporaryFile = $temporaryFileManager->handleUpload('uploadedFile', $user->getId());
             if ($temporaryFile) {
                 $json = new JSONMessage(true);
                 $json->setAdditionalAttributes(array('temporaryFileId' => $temporaryFile->getId()));
             } else {
                 $json = new JSONMessage(false, __('common.uploadFailed'));
             }
             return $json->getString();
         case 'importBounce':
             $json = new JSONMessage(true);
             $json->setEvent('addTab', array('title' => __('plugins.importexport.users.results'), 'url' => $request->url(null, null, null, array('plugin', $this->getName(), 'import'), array('temporaryFileId' => $request->getUserVar('temporaryFileId')))));
             return $json->getString();
         case 'import':
             $temporaryFileId = $request->getUserVar('temporaryFileId');
             $temporaryFileDao = DAORegistry::getDAO('TemporaryFileDAO');
             $user = $request->getUser();
             $temporaryFile = $temporaryFileDao->getTemporaryFile($temporaryFileId, $user->getId());
             if (!$temporaryFile) {
                 $json = new JSONMessage(true, __('plugins.importexport.users.uploadFile'));
                 return $json->getString();
             }
             $temporaryFilePath = $temporaryFile->getFilePath();
             libxml_use_internal_errors(true);
             $users = $this->importUsers(file_get_contents($temporaryFilePath), $context, $user);
             $validationErrors = array_filter(libxml_get_errors(), create_function('$a', 'return $a->level == LIBXML_ERR_ERROR ||  $a->level == LIBXML_ERR_FATAL;'));
             $templateMgr->assign('validationErrors', $validationErrors);
             libxml_clear_errors();
             $templateMgr->assign('users', $users);
             $json = new JSONMessage(true, $templateMgr->fetch($this->getTemplatePath() . 'results.tpl'));
             return $json->getString();
         case 'export':
             $exportXml = $this->exportUsers((array) $request->getUserVar('selectedUsers'), $request->getContext(), $request->getUser());
             import('lib.pkp.classes.file.FileManager');
             $fileManager = new FileManager();
             $exportFileName = $this->getExportFileName($this->getExportPath(), 'users', $context, '.xml');
             $fileManager->writeFile($exportFileName, $exportXml);
             $fileManager->downloadFile($exportFileName);
             $fileManager->deleteFile($exportFileName);
             break;
         case 'exportAllUsers':
             $exportXml = $this->exportAllUsers($request->getContext(), $request->getUser());
             import('lib.pkp.classes.file.TemporaryFileManager');
             $fileManager = new TemporaryFileManager();
             $exportFileName = $this->getExportFileName($this->getExportPath(), 'users', $context, '.xml');
             $fileManager->writeFile($exportFileName, $exportXml);
             $fileManager->downloadFile($exportFileName);
             $fileManager->deleteFile($exportFileName);
             break;
         default:
             $dispatcher = $request->getDispatcher();
             $dispatcher->handle404();
     }
 }
Пример #12
0
 function save()
 {
     global $settings, $rules;
     $hasLeaguePref = mysql_fetch_object(mysql_query("SELECT f_lid from league_prefs where f_lid={$this->lid}"));
     if ($hasLeaguePref) {
         $query = "UPDATE league_prefs SET prime_tid={$this->p_tour}, league_name='" . mysql_real_escape_string($this->league_name) . "', forum_url='" . mysql_real_escape_string($this->forum_url) . "' , welcome='" . mysql_real_escape_string($this->welcome) . "' , rules='" . mysql_real_escape_string($this->rules) . "'  WHERE f_lid={$this->lid}";
     } else {
         $query = "INSERT INTO league_prefs (f_lid, prime_tid, second_tid, league_name, forum_url, welcome, rules) VALUE ({$this->lid}, {$this->p_tour}, {$this->s_tour}, '" . mysql_real_escape_string($this->league_name) . "', '" . mysql_real_escape_string($this->forum_url) . "', '" . mysql_real_escape_string($this->welcome) . "', '" . mysql_real_escape_string($this->rules) . "')";
     }
     FileManager::writeFile(FileManager::getCssDirectoryName() . "/league_override_{$this->lid}.css", $this->theme_css);
     $settingsFileContents = FileManager::readFile(FileManager::getSettingsDirectoryName() . "/settings_{$this->lid}.php");
     $settingsFileContents = preg_replace("/settings\\['stylesheet'\\]\\s*=\\s['A-Za-z0-9_]+/", "settings['stylesheet'] = {$this->core_theme_id}", $settingsFileContents);
     $settingsFileContents = preg_replace("/settings\\['lang'\\]\\s*=\\s['A-Za-z0-9_\\-]+/", "settings['lang'] = '{$this->language}'", $settingsFileContents);
     $settingsFileContents = preg_replace("/rules\\['initial_treasury'\\]\\s*=\\s['A-Za-z0-9_]+/", "rules['initial_treasury'] = {$this->tv}", $settingsFileContents);
     $settingsFileContents = preg_replace("/settings\\['core_rules_file'\\]\\s*=\\s[\\.\\/'A-Za-z0-9_]+/", "settings['core_rules_file'] = '{$this->core_rules_file}'", $settingsFileContents);
     FileManager::writeFile(FileManager::getSettingsDirectoryName() . "/settings_{$this->lid}.php", $settingsFileContents);
     $settings['stylesheet'] = $this->core_theme_id;
     $settings['lang'] = $this->language;
     $rules['initial_treasury'] = $this->tv;
     $settings['core_rules_file'] = $this->core_rules_file;
     return mysql_query($query);
 }
Пример #13
0
 /**
  * Execute the CLI command
  * @param $scriptName The name of the command-line script (displayed as usage info)
  * @param $command string (export or register)
  * @param $context Context
  * @param $outputFile string Path to the file where the exported XML should be saved
  * @param $objects array Objects to be exported or registered
  * @param $filter string Filter to use
  * @param $objectsFileNamePart string Export file name part for this kind of objects
  */
 function executeCLICommand($scriptName, $command, $context, $outputFile, $objects, $filter, $objectsFileNamePart)
 {
     $exportXml = $this->exportXML($objects, $filter, $context);
     if ($command == 'export' && $outputFile) {
         file_put_contents($outputFile, $exportXml);
     }
     if ($command == 'register') {
         import('lib.pkp.classes.file.FileManager');
         $fileManager = new FileManager();
         $exportFileName = $this->getExportFileName($this->getExportPath(), $objectsFileNamePart, $context, '.xml');
         $fileManager->writeFile($exportFileName, $exportXml);
         $result = $this->depositXML($objects, $context, $exportFileName);
         if ($result === true) {
             echo __('plugins.importexport.common.register.success') . "\n";
         } else {
             echo __('plugins.importexport.common.cliError') . "\n";
             if (is_array($result)) {
                 foreach ($result as $error) {
                     assert(is_array($error) && count($error) >= 1);
                     $errorMessage = __($error[0], array('param' => isset($error[1]) ? $error[1] : null));
                     echo "*** {$errorMessage}\n";
                 }
                 echo "\n";
             } else {
                 echo __('plugins.importexport.common.register.error.mdsError', array('param' => ' - ')) . "\n\n";
             }
             $this->usage($scriptName);
         }
         $fileManager->deleteFile($exportFileName);
     }
 }