16 import(
'lib.pkp.plugins.importexport.native.filter.NativeExportFilter');
25 parent::__construct($filterGroup);
36 return 'lib.pkp.plugins.importexport.users.filter.PKPUserUserXmlFilter';
50 $doc =
new DOMDocument(
'1.0');
53 $rootNode = $doc->createElementNS($deployment->getNamespace(),
'PKPUsers');
57 $usersNode = $doc->createElementNS($deployment->getNamespace(),
'users');
58 foreach ($users as $user) {
61 $rootNode->appendChild($usersNode);
62 $doc->appendChild($rootNode);
63 $rootNode->setAttributeNS(
'http://www.w3.org/2000/xmlns/',
'xmlns:xsi',
'http://www.w3.org/2001/XMLSchema-instance');
64 $rootNode->setAttribute(
'xsi:schemaLocation', $deployment->getNamespace() .
' ' . $deployment->getSchemaFilename());
80 $context = $deployment->getContext();
83 $userNode = $doc->createElementNS($deployment->getNamespace(),
'user');
91 $userNode->appendChild($doc->createElementNS($deployment->getNamespace(),
'email', htmlspecialchars($user->getEmail(), ENT_COMPAT,
'UTF-8')));
94 if (is_array($user->getBiography(
null))) {
98 $userNode->appendChild($doc->createElementNS($deployment->getNamespace(),
'username', htmlspecialchars($user->getUsername(), ENT_COMPAT,
'UTF-8')));
102 if (is_array($user->getSignature(
null))) {
106 $passwordNode = $doc->createElementNS($deployment->getNamespace(),
'password');
107 $passwordNode->setAttribute(
'is_disabled', $user->getDisabled() ?
'true' :
'false');
108 $passwordNode->setAttribute(
'must_change', $user->getMustChangePassword() ?
'true' :
'false');
109 $passwordNode->setAttribute(
'encryption',
Config::getVar(
'security',
'encryption'));
110 $passwordNode->appendChild($doc->createElementNS($deployment->getNamespace(),
'value', htmlspecialchars($user->getPassword(), ENT_COMPAT,
'UTF-8')));
112 $userNode->appendChild($passwordNode);
114 $this->
createOptionalNode($doc, $userNode,
'date_registered', $user->getDateRegistered());
115 $this->
createOptionalNode($doc, $userNode,
'date_last_login', $user->getDateLastLogin());
116 $this->
createOptionalNode($doc, $userNode,
'date_last_email', $user->getDateLastEmail());
117 $this->
createOptionalNode($doc, $userNode,
'date_validated', $user->getDateValidated());
118 $this->
createOptionalNode($doc, $userNode,
'inline_help', $user->getInlineHelp() ?
'true' :
'false');
122 $this->
createOptionalNode($doc, $userNode,
'mailing_address', $user->getMailingAddress());
123 $this->
createOptionalNode($doc, $userNode,
'billing_address', $user->getBillingAddress());
125 if ($user->getDisabled()) {
126 $this->
createOptionalNode($doc, $userNode,
'disabled_reason', $user->getDisabledReason());
131 $assignedGroups = $userGroupAssignmentDao->getByUserId($user->getId(), $context->getId());
132 while ($assignedGroup = $assignedGroups->next()) {
133 $userGroup = $userGroupDao->getById($assignedGroup->getUserGroupId());
135 $userNode->appendChild($doc->createElementNS($deployment->getNamespace(),
'user_group_ref', htmlspecialchars($userGroup->getName($context->getPrimaryLocale()), ENT_COMPAT,
'UTF-8')));
140 import(
'lib.pkp.classes.user.InterestManager');
142 $interests = $interestManager->getInterestsString($user);
150 $context = $deployment->getContext();
151 $userGroupsNode = $doc->createElementNS($deployment->getNamespace(),
'user_groups');
154 $userGroups = $userGroupDao->getByContextId($context->getId());
156 $userGroupExportFilters = $filterDao->getObjectsByGroup(
'usergroup=>user-xml');
157 assert(count($userGroupExportFilters)==1);
158 $exportFilter = array_shift($userGroupExportFilters);
161 $userGroupsArray = $userGroups->toArray();
162 $userGroupsDoc = $exportFilter->execute($userGroupsArray);
163 if ($userGroupsDoc->documentElement instanceof DOMElement) {
164 $clone = $doc->importNode($userGroupsDoc->documentElement,
true);
165 $rootNode->appendChild($clone);