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