16 import(
'lib.pkp.classes.plugins.ImportExportPlugin');
23 function register($category, $path, $mainContextId =
null) {
24 $success = parent::register($category, $path, $mainContextId);
26 import(
'lib.pkp.' . str_replace(
'/',
'.', $this->
getPluginPath()) .
'.PKPUserImportExportDeployment');
36 return 'UserImportExportPlugin';
44 return __(
'plugins.importexport.users.displayName');
52 return __(
'plugins.importexport.users.description');
73 $templateMgr->assign(
'plugin', $this);
75 switch (array_shift($args)) {
80 case 'uploadImportXML':
82 import(
'lib.pkp.classes.file.TemporaryFileManager');
84 $temporaryFile = $temporaryFileManager->handleUpload(
'uploadedFile', $user->getId());
87 $json->setAdditionalAttributes(array(
88 'temporaryFileId' => $temporaryFile->getId()
91 $json =
new JSONMessage(
false, __(
'common.uploadFailed'));
94 header(
'Content-Type: application/json');
95 return $json->getString();
98 $json->setEvent(
'addTab', array(
99 'title' => __(
'plugins.importexport.users.results'),
100 'url' =>
$request->url(
null,
null,
null, array(
'plugin', $this->
getName(),
'import'), array(
'temporaryFileId' =>
$request->getUserVar(
'temporaryFileId'))),
102 header(
'Content-Type: application/json');
103 return $json->getString();
105 $temporaryFileId =
$request->getUserVar(
'temporaryFileId');
108 $temporaryFile = $temporaryFileDao->getTemporaryFile($temporaryFileId, $user->getId());
109 if (!$temporaryFile) {
110 $json =
new JSONMessage(
true, __(
'plugins.importexport.users.uploadFile'));
111 header(
'Content-Type: application/json');
112 return $json->getString();
114 $temporaryFilePath = $temporaryFile->getFilePath();
115 libxml_use_internal_errors(
true);
118 $users = $this->
importUsers(file_get_contents($temporaryFilePath), $context, $user, $filter);
119 $validationErrors = array_filter(libxml_get_errors(),
function($a) {
120 return $a->level == LIBXML_ERR_ERROR || $a->level == LIBXML_ERR_FATAL;
122 $templateMgr->assign(
'validationErrors', $validationErrors);
123 libxml_clear_errors();
124 if ($filter->hasErrors()) {
125 $templateMgr->assign(
'filterErrors', $filter->getErrors());
127 $templateMgr->assign(
'users', $users);
128 $json =
new JSONMessage(
true, $templateMgr->fetch($this->getTemplateResource(
'results.tpl')));
129 header(
'Content-Type: application/json');
130 return $json->getString();
135 (array)
$request->getUserVar(
'selectedUsers'),
140 import(
'lib.pkp.classes.file.FileManager');
143 $fileManager->writeFile($exportFileName, $exportXml);
144 $fileManager->downloadByPath($exportFileName);
145 $fileManager->deleteByPath($exportFileName);
147 case 'exportAllUsers':
155 import(
'lib.pkp.classes.file.FileManager');
158 $fileManager->writeFile($exportFileName, $exportXml);
159 $fileManager->downloadByPath($exportFileName);
160 $fileManager->deleteByPath($exportFileName);
163 $dispatcher =
$request->getDispatcher();
164 $dispatcher->handle404();
177 $users = $userGroupDao->getUsersByContextId($context->getId());
182 return $this->
exportUsers($users->toArray(), $context, $user, $filter);
202 foreach ($ids as $id) {
203 if (is_a($id,
'User')) {
206 $user = $userDao->getById($id, $context->getId());
207 if ($user) $users[] = $user;
212 $userXml = $filter->execute($users);
213 if ($userXml) $xml = $userXml->saveXml();
226 function importUsers($importXml, $context, $user, &$filter =
null) {
231 return $filter->execute($importXml);
245 $userFilters = $filterDao->getObjectsByGroup(
'user-xml=>user');
247 $userFilters = $filterDao->getObjectsByGroup(
'user=>user-xml');
250 assert(count($userFilters) == 1);
251 $filter = array_shift($userFilters);