• Main Page
  • Modules
  • Classes
  • Files
  • File List

plugins/importexport/users/UserExportDom.inc.php

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 ?>

Generated on Mon Sep 17 2012 13:58:56 for Open Monograph Press by  doxygen 1.7.1