91 lines
2.8 KiB
PHP
91 lines
2.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file plugins/importexport/users/UserImportExportPlugin.php
|
|
*
|
|
* Copyright (c) 2014-2021 Simon Fraser University
|
|
* Copyright (c) 2003-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class UserImportExportPlugin
|
|
*
|
|
* @ingroup plugins_importexport_user
|
|
*
|
|
* @brief User XML import/export plugin
|
|
*/
|
|
|
|
namespace APP\plugins\importexport\users;
|
|
|
|
use APP\journal\JournalDAO;
|
|
use PKP\db\DAORegistry;
|
|
|
|
class UserImportExportPlugin extends \PKP\plugins\importexport\users\PKPUserImportExportPlugin
|
|
{
|
|
/**
|
|
* @copydoc PKPImportExportPlugin::usage
|
|
*/
|
|
public function usage($scriptName)
|
|
{
|
|
echo __('plugins.importexport.users.cliUsage', [
|
|
'scriptName' => $scriptName,
|
|
'pluginName' => $this->getName()
|
|
]) . "\n\n";
|
|
echo __('plugins.importexport.users.cliUsage.examples', [
|
|
'scriptName' => $scriptName,
|
|
'pluginName' => $this->getName()
|
|
]) . "\n\n";
|
|
}
|
|
|
|
/**
|
|
* @see PKPImportExportPlugin::executeCLI()
|
|
*/
|
|
public function executeCLI($scriptName, &$args)
|
|
{
|
|
$command = array_shift($args);
|
|
$xmlFile = array_shift($args);
|
|
$journalPath = array_shift($args);
|
|
|
|
$journalDao = DAORegistry::getDAO('JournalDAO'); /** @var JournalDAO $journalDao */
|
|
|
|
$journal = $journalDao->getByPath($journalPath);
|
|
|
|
if (!$journal) {
|
|
if ($journalPath != '') {
|
|
echo __('plugins.importexport.common.cliError') . "\n";
|
|
echo __('plugins.importexport.common.error.unknownContext', ['contextPath' => $journalPath]) . "\n\n";
|
|
}
|
|
$this->usage($scriptName);
|
|
return;
|
|
}
|
|
|
|
if ($xmlFile && $this->isRelativePath($xmlFile)) {
|
|
$xmlFile = PWD . '/' . $xmlFile;
|
|
}
|
|
$outputDir = dirname($xmlFile);
|
|
if (!is_writable($outputDir) || (file_exists($xmlFile) && !is_writable($xmlFile))) {
|
|
echo __('plugins.importexport.common.cliError') . "\n";
|
|
echo __('plugins.importexport.common.export.error.outputFileNotWritable', ['param' => $xmlFile]) . "\n\n";
|
|
$this->usage($scriptName);
|
|
return;
|
|
}
|
|
|
|
switch ($command) {
|
|
case 'import':
|
|
$this->importUsers(file_get_contents($xmlFile), $journal, null);
|
|
return;
|
|
case 'export':
|
|
if ($xmlFile != '') {
|
|
if (empty($args)) {
|
|
file_put_contents($xmlFile, $this->exportAllUsers($journal, null));
|
|
return;
|
|
} else {
|
|
file_put_contents($xmlFile, $this->exportUsers($args, $journal, null));
|
|
return;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
$this->usage($scriptName);
|
|
}
|
|
}
|