00001 <?php
00002
00015
00016
00017
00018 import('xml.XMLCustomWriter');
00019
00020 define('USERS_DTD_URL', 'http://pkp.sfu.ca/ojs/dtds/users.dtd');
00021 define('USERS_DTD_ID', '-//PKP/OJS Users XML//EN');
00022
00023 class UserExportDom {
00024 function &exportUsers(&$journal, &$users, $allowedRoles = null) {
00025 $roleDao = &DAORegistry::getDAO('RoleDAO');
00026
00027 $doc = &XMLCustomWriter::createDocument('users', USERS_DTD_ID, USERS_DTD_URL);
00028 $root = &XMLCustomWriter::createElement($doc, 'users');
00029
00030 foreach ($users as $user) {
00031 $userNode = &XMLCustomWriter::createElement($doc, 'user');
00032
00033 XMLCustomWriter::createChildWithText($doc, $userNode, 'username', $user->getUserName(), false);
00034 $passwordNode =& XMLCustomWriter::createChildWithText($doc, $userNode, 'password', $user->getPassword());
00035 XMLCustomWriter::setAttribute($passwordNode, 'encrypted', Config::getVar('security', 'encryption'));
00036 XMLCustomWriter::createChildWithText($doc, $userNode, 'salutation', $user->getSalutation(), false);
00037 XMLCustomWriter::createChildWithText($doc, $userNode, 'first_name', $user->getFirstName());
00038 XMLCustomWriter::createChildWithText($doc, $userNode, 'middle_name', $user->getMiddleName(), false);
00039 XMLCustomWriter::createChildWithText($doc, $userNode, 'last_name', $user->getLastName());
00040 XMLCustomWriter::createChildWithText($doc, $userNode, 'initials', $user->getInitials(), false);
00041 XMLCustomWriter::createChildWithText($doc, $userNode, 'gender', $user->getGender(), false);
00042 XMLCustomWriter::createChildWithText($doc, $userNode, 'affiliation', $user->getAffiliation(), false);
00043 XMLCustomWriter::createChildWithText($doc, $userNode, 'email', $user->getEmail());
00044 XMLCustomWriter::createChildWithText($doc, $userNode, 'url', $user->getUrl(), false);
00045 XMLCustomWriter::createChildWithText($doc, $userNode, 'phone', $user->getPhone(), false);
00046 XMLCustomWriter::createChildWithText($doc, $userNode, 'fax', $user->getFax(), false);
00047 XMLCustomWriter::createChildWithText($doc, $userNode, 'mailing_address', $user->getMailingAddress(), false);
00048 XMLCustomWriter::createChildWithText($doc, $userNode, 'country', $user->getCountry(), false);
00049 if (is_array($user->getSignature(null))) {
00050 foreach($user->getSignature(null) as $locale => $value) {
00051 $signatureNode =& XMLCustomWriter::createChildWithText($doc, $userNode, 'signature', $value, false);
00052 if ($signatureNode) {
00053 XMLCustomWriter::setAttribute($signatureNode, 'locale', $locale);
00054 }
00055 unset($signatureNode);
00056 }
00057 }
00058 if (is_array($user->getInterests(null))) {
00059 foreach($user->getInterests(null) as $locale => $value) {
00060 $interestsNode =& XMLCustomWriter::createChildWithText($doc, $userNode, 'interests', $value, false);
00061 if ($interestsNode) {
00062 XMLCustomWriter::setAttribute($interestsNode, 'locale', $locale);
00063 }
00064 unset($interestsNode);
00065 }
00066 }
00067 if (is_array($user->getBiography(null))) {
00068 foreach($user->getBiography(null) as $locale => $value) {
00069 $biographyNode =& XMLCustomWriter::createChildWithText($doc, $userNode, 'biography', $value, false);
00070 if ($biographyNode) {
00071 XMLCustomWriter::setAttribute($biographyNode, 'locale', $locale);
00072 }
00073 unset($biographyNode);
00074 }
00075 }
00076 XMLCustomWriter::createChildWithText($doc, $userNode, 'locales', join(':', $user->getLocales()), false);
00077 $roles = &$roleDao->getRolesByUserId($user->getUserId(), $journal->getJournalId());
00078 foreach ($roles as $role) {
00079 $rolePath = $role->getRolePath();
00080 if ($allowedRoles !== null && !in_array($rolePath, $allowedRoles)) {
00081 continue;
00082 }
00083 $roleNode = &XMLCustomWriter::createElement($doc, 'role');
00084 XMLCustomWriter::setAttribute($roleNode, 'type', $rolePath);
00085 XMLCustomWriter::appendChild($userNode, $roleNode);
00086 unset($roleNode);
00087 }
00088
00089 XMLCustomWriter::appendChild($root, $userNode);
00090 }
00091
00092 XMLCustomWriter::appendChild($doc, $root);
00093
00094 return $doc;
00095 }
00096 }
00097
00098 ?>