Пример #1
0
 function display(&$args, $request)
 {
     $templateMgr = TemplateManager::getManager($request);
     parent::display($args, $request);
     $templateMgr->assign('roleOptions', array('' => 'manager.people.doNotEnroll', 'manager' => 'user.role.manager', 'editor' => 'user.role.editor', 'sectionEditor' => 'user.role.sectionEditor', 'layoutEditor' => 'user.role.layoutEditor', 'reviewer' => 'user.role.reviewer', 'copyeditor' => 'user.role.copyeditor', 'proofreader' => 'user.role.proofreader', 'author' => 'user.role.author', 'reader' => 'user.role.reader', 'subscriptionManager' => 'user.role.subscriptionManager'));
     $roleDao = DAORegistry::getDAO('RoleDAO');
     $journal = $request->getJournal();
     set_time_limit(0);
     switch (array_shift($args)) {
         case 'confirm':
             $this->import('UserXMLParser');
             $sendNotify = (bool) $request->getUserVar('sendNotify');
             $continueOnError = (bool) $request->getUserVar('continueOnError');
             import('lib.pkp.classes.file.FileManager');
             $fileManager = new FileManager();
             if (($userFile = $fileManager->getUploadedFilePath('userFile')) !== false) {
                 // Import the uploaded file
                 $parser = new UserXMLParser($journal->getId());
                 $users =& $parser->parseData($userFile);
                 $i = 0;
                 $usersRoles = array();
                 foreach ($users as $user) {
                     $usersRoles[$i] = array();
                     foreach ($user->getRoles() as $role) {
                         array_push($usersRoles[$i], $role->getRoleName());
                     }
                     $i++;
                 }
                 $templateMgr->assign('users', $users);
                 $templateMgr->assign('usersRoles', $usersRoles);
                 $templateMgr->assign('sendNotify', $sendNotify);
                 $templateMgr->assign('continueOnError', $continueOnError);
                 $templateMgr->assign('errors', $parser->errors);
                 // Show confirmation form
                 $templateMgr->display($this->getTemplatePath() . 'importUsersConfirm.tpl');
             }
             break;
         case 'import':
             $this->import('UserXMLParser');
             $roleDao = DAORegistry::getDAO('RoleDAO');
             $userKeys = $request->getUserVar('userKeys');
             if (!is_array($userKeys)) {
                 $userKeys = array();
             }
             $sendNotify = (bool) $request->getUserVar('sendNotify');
             $continueOnError = (bool) $request->getUserVar('continueOnError');
             $users = array();
             foreach ($userKeys as $i) {
                 $newUser = new ImportedUser();
                 $newUser->setFirstName($request->getUserVar($i . '_firstName'));
                 $newUser->setMiddleName($request->getUserVar($i . '_middleName'));
                 $newUser->setLastName($request->getUserVar($i . '_lastName'));
                 $newUser->setUsername($request->getUserVar($i . '_username'));
                 $newUser->setEmail($request->getUserVar($i . '_email'));
                 $locales = array();
                 if ($request->getUserVar($i . '_locales') != null || is_array($request->getUserVar($i . '_locales'))) {
                     foreach ($request->getUserVar($i . '_locales') as $locale) {
                         array_push($locales, $locale);
                     }
                 }
                 $newUser->setLocales($locales);
                 $newUser->setSignature($request->getUserVar($i . '_signature'), null);
                 $newUser->setBiography($request->getUserVar($i . '_biography'), null);
                 $newUser->setTemporaryInterests($request->getUserVar($i . '_interests'));
                 $newUser->setGossip($request->getUserVar($i . '_gossip'), null);
                 $newUser->setCountry($request->getUserVar($i . '_country'));
                 $newUser->setMailingAddress($request->getUserVar($i . '_mailingAddress'));
                 $newUser->setFax($request->getUserVar($i . '_fax'));
                 $newUser->setPhone($request->getUserVar($i . '_phone'));
                 $newUser->setUrl($request->getUserVar($i . '_url'));
                 $newUser->setAffiliation($request->getUserVar($i . '_affiliation'), null);
                 $newUser->setGender($request->getUserVar($i . '_gender'));
                 $newUser->setInitials($request->getUserVar($i . '_initials'));
                 $newUser->setSalutation($request->getUserVar($i . '_salutation'));
                 $newUser->setPassword($request->getUserVar($i . '_password'));
                 $newUser->setMustChangePassword($request->getUserVar($i . '_mustChangePassword'));
                 $newUser->setUnencryptedPassword($request->getUserVar($i . '_unencryptedPassword'));
                 $newUserRoles = $request->getUserVar($i . '_roles');
                 if (is_array($newUserRoles) && count($newUserRoles) > 0) {
                     foreach ($newUserRoles as $newUserRole) {
                         if ($newUserRole != '') {
                             $role = new Role();
                             $role->setRoleId($roleDao->getRoleIdFromPath($newUserRole));
                             $newUser->addRole($role);
                         }
                     }
                 }
                 array_push($users, $newUser);
             }
             $parser = new UserXMLParser($journal->getId());
             $parser->setUsersToImport($users);
             if (!$parser->importUsers($sendNotify, $continueOnError)) {
                 // Failures occurred
                 $templateMgr->assign('isError', true);
                 $templateMgr->assign('errors', $parser->getErrors());
             }
             $templateMgr->assign('importedUsers', $parser->getImportedUsers());
             $templateMgr->display($this->getTemplatePath() . 'importUsersResults.tpl');
             break;
         case 'exportAll':
             $this->import('UserExportDom');
             $userGroupDao = DAORegistry::getDAO('UserGroupDAO');
             $users = $userGroupDao->getUsersByContextId($journal->getId());
             $users = $users->toArray();
             $userExportDom = new UserExportDom();
             $doc = $userExportDom->exportUsers($journal, $users);
             header("Content-Type: application/xml");
             header("Cache-Control: private");
             header("Content-Disposition: attachment; filename=\"users.xml\"");
             echo XMLCustomWriter::getXML($doc);
             break;
         case 'exportByRole':
             $this->import('UserExportDom');
             $users = array();
             $rolePaths = array();
             foreach ($request->getUserVar('roles') as $rolePath) {
                 $roleId = $roleDao->getRoleIdFromPath($rolePath);
                 $thisRoleUsers = $roleDao->getUsersByRoleId($roleId, $journal->getId());
                 foreach ($thisRoleUsers->toArray() as $user) {
                     $users[$user->getId()] = $user;
                 }
                 $rolePaths[] = $rolePath;
             }
             $users = array_values($users);
             $userExportDom = new UserExportDom();
             $doc =& $userExportDom->exportUsers($journal, $users, $rolePaths);
             header("Content-Type: application/xml");
             header("Cache-Control: private");
             header("Content-Disposition: attachment; filename=\"users.xml\"");
             echo XMLCustomWriter::getXML($doc);
             break;
         default:
             $templateMgr->display($this->getTemplatePath() . 'index.tpl');
     }
 }
Пример #2
0
 function display(&$args)
 {
     $templateMgr =& TemplateManager::getManager();
     parent::display($args);
     $templateMgr->assign('roleOptions', array('' => 'manager.people.doNotEnroll', 'manager' => 'user.role.manager', 'director' => 'user.role.director', 'trackDirector' => 'user.role.trackDirector', 'reviewer' => 'user.role.reviewer', 'author' => 'user.role.author', 'reader' => 'user.role.reader'));
     $roleDao =& DAORegistry::getDAO('RoleDAO');
     $schedConf =& Request::getSchedConf();
     switch (array_shift($args)) {
         case 'confirm':
             $this->import('UserXMLParser');
             $templateMgr->assign('helpTopicId', 'conference.currentConference.importExport');
             $sendNotify = (bool) Request::getUserVar('sendNotify');
             $continueOnError = (bool) Request::getUserVar('continueOnError');
             import('file.FileManager');
             if (($userFile = FileManager::getUploadedFilePath('userFile')) !== false) {
                 // Import the uploaded file
                 $parser = new UserXMLParser($schedConf->getConferenceId(), $schedConf->getId());
                 $users =& $parser->parseData($userFile);
                 $i = 0;
                 $usersRoles = array();
                 foreach ($users as $user) {
                     $usersRoles[$i] = array();
                     foreach ($user->getRoles() as $role) {
                         array_push($usersRoles[$i], $role->getRoleName());
                     }
                     $i++;
                 }
                 $templateMgr->assign_by_ref('users', $users);
                 $templateMgr->assign_by_ref('usersRoles', $usersRoles);
                 $templateMgr->assign('sendNotify', $sendNotify);
                 $templateMgr->assign('continueOnError', $continueOnError);
                 $templateMgr->assign('errors', $parser->errors);
                 // Show confirmation form
                 $templateMgr->display($this->getTemplatePath() . 'importUsersConfirm.tpl');
             }
             break;
         case 'import':
             $this->import('UserXMLParser');
             $userKeys = Request::getUserVar('userKeys');
             if (!is_array($userKeys)) {
                 $userKeys = array();
             }
             $sendNotify = (bool) Request::getUserVar('sendNotify');
             $continueOnError = (bool) Request::getUserVar('continueOnError');
             $users = array();
             foreach ($userKeys as $i) {
                 $newUser = new ImportedUser();
                 $newUser->setFirstName(Request::getUserVar($i . '_firstName'));
                 $newUser->setMiddleName(Request::getUserVar($i . '_middleName'));
                 $newUser->setLastName(Request::getUserVar($i . '_lastName'));
                 $newUser->setUsername(Request::getUserVar($i . '_username'));
                 $newUser->setEmail(Request::getUserVar($i . '_email'));
                 $locales = array();
                 if (Request::getUserVar($i . '_locales') != null || is_array(Request::getUserVar($i . '_locales'))) {
                     foreach (Request::getUserVar($i . '_locales') as $locale) {
                         array_push($locales, $locale);
                     }
                 }
                 $newUser->setLocales($locales);
                 $newUser->setSignature(Request::getUserVar($i . '_signature'), null);
                 $newUser->setBiography(Request::getUserVar($i . '_biography'), null);
                 $newUser->setInterests(Request::getUserVar($i . '_interests'), null);
                 $newUser->setCountry(Request::getUserVar($i . '_country'));
                 $newUser->setMailingAddress(Request::getUserVar($i . '_mailingAddress'));
                 $newUser->setFax(Request::getUserVar($i . '_fax'));
                 $newUser->setPhone(Request::getUserVar($i . '_phone'));
                 $newUser->setUrl(Request::getUserVar($i . '_url'));
                 $newUser->setAffiliation(Request::getUserVar($i . '_affiliation'));
                 $newUser->setGender(Request::getUserVar($i . '_gender'));
                 $newUser->setInitials(Request::getUserVar($i . '_initials'));
                 $newUser->setSalutation(Request::getUserVar($i . '_salutation'));
                 $newUser->setPassword(Request::getUserVar($i . '_password'));
                 $newUser->setMustChangePassword(Request::getUserVar($i . '_mustChangePassword'));
                 $newUser->setUnencryptedPassword(Request::getUserVar($i . '_unencryptedPassword'));
                 $newUserRoles = Request::getUserVar($i . '_roles');
                 if (is_array($newUserRoles) && count($newUserRoles) > 0) {
                     foreach ($newUserRoles as $newUserRole) {
                         if ($newUserRole != '') {
                             $role = new Role();
                             $role->setRoleId(RoleDAO::getRoleIdFromPath($newUserRole));
                             $newUser->AddRole($role);
                         }
                     }
                 }
                 array_push($users, $newUser);
             }
             $parser = new UserXMLParser($schedConf->getConferenceId(), $schedConf->getId());
             $parser->setUsersToImport($users);
             if (!$parser->importUsers($sendNotify, $continueOnError)) {
                 // Failures occurred
                 $templateMgr->assign('isError', true);
                 $templateMgr->assign('errors', $parser->getErrors());
             }
             $templateMgr->assign('importedUsers', $parser->getImportedUsers());
             $templateMgr->display($this->getTemplatePath() . 'importUsersResults.tpl');
             break;
         case 'exportAll':
             $this->import('UserExportDom');
             $users =& $roleDao->getUsersBySchedConfId($schedConf->getId());
             $users =& $users->toArray();
             $doc =& UserExportDom::exportUsers($schedConf, $users);
             header("Content-Type: application/xml");
             header("Cache-Control: private");
             header("Content-Disposition: attachment; filename=\"users.xml\"");
             echo XMLCustomWriter::getXML($doc);
             break;
         case 'exportByRole':
             $this->import('UserExportDom');
             $users = array();
             $rolePaths = array();
             foreach (Request::getUserVar('roles') as $rolePath) {
                 $roleId = $roleDao->getRoleIdFromPath($rolePath);
                 $thisRoleUsers =& $roleDao->getUsersByRoleId($roleId, $schedConf->getId());
                 foreach ($thisRoleUsers->toArray() as $user) {
                     $users[$user->getId()] = $user;
                 }
                 $rolePaths[] = $rolePath;
             }
             $users = array_values($users);
             $doc =& UserExportDom::exportUsers($schedConf, $users, $rolePaths);
             header("Content-Type: application/xml");
             header("Cache-Control: private");
             header("Content-Disposition: attachment; filename=\"users.xml\"");
             echo XMLCustomWriter::getXML($doc);
             break;
         default:
             $this->setBreadcrumbs();
             $templateMgr->display($this->getTemplatePath() . 'index.tpl');
     }
 }
Пример #3
0
 /**
  * Upload a custom email template file
  * @param $args array
  * @param $request PKPRequest
  */
 function uploadEmails($args, $request)
 {
     $this->validate();
     import('lib.pkp.classes.file.FileManager');
     $fileManager = new FileManager();
     $journal = $request->getJournal();
     $journalId = $journal->getId();
     $uploadName = 'email_file';
     $fileName = $fileManager->getUploadedFileName($uploadName);
     if (!$fileName) {
         $request->redirect(null, null, 'emails');
     }
     $filesDir = Config::getVar('files', 'files_dir');
     $filePath = $filesDir . '/journals/' . $journalId . '/' . $fileName;
     if (!$fileManager->uploadError($uploadName)) {
         if ($fileManager->uploadedFileExists($uploadName)) {
             $uploadedFilePath = $fileManager->getUploadedFilePath($uploadName);
             if ($this->_saveEmailTemplates($uploadedFilePath, $journal)) {
                 if ($fileManager->deleteFile($uploadedFilePath)) {
                     $this->_showMessage($request);
                     $request->redirect(null, null, 'emails');
                 }
             }
         }
     }
     $this->_showMessage($request, false);
     $request->redirect(null, null, 'emails');
 }