Example #1
0
 /**
  * Validate that user has admin privileges and is not trying to access the admin module with a journal selected.
  * Redirects to the user index page if not properly authenticated.
  */
 function validate()
 {
     parent::validate();
     if (!Validation::isSiteAdmin() || Request::getRequestedJournalPath() != 'index') {
         Validation::redirectLogin();
     }
 }
 /**
  * Display reviewer index page.
  */
 function index($args)
 {
     $this->validate();
     $this->setupTemplate();
     $journal =& Request::getJournal();
     //%CBP% redirect or set var as appropriate
     $CBPPlatformDao =& DAORegistry::getDAO('CBPPlatformDAO');
     $workshop = $CBPPlatformDao->getWorkshop($journal->getJournalId());
     if ($workshop != "structured") {
         $workshop = 1;
     }
     if ($workshop == 1) {
         Request::redirect(Request::getRequestedJournalPath(), 'user');
     }
     $user =& Request::getUser();
     $reviewerSubmissionDao =& DAORegistry::getDAO('ReviewerSubmissionDAO');
     $rangeInfo = Handler::getRangeInfo('submissions');
     $page = isset($args[0]) ? $args[0] : '';
     switch ($page) {
         case 'completed':
             $active = false;
             break;
         default:
             $page = 'active';
             $active = true;
     }
     $sort = Request::getUserVar('sort');
     $sort = isset($sort) ? $sort : 'title';
     $sortDirection = Request::getUserVar('sortDirection');
     if ($sort == 'decision') {
         $submissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($user->getId(), $journal->getId(), $active, $rangeInfo);
         // Sort all submissions by status, which is too complex to do in the DB
         $submissionsArray = $submissions->toArray();
         $compare = create_function('$s1, $s2', 'return strcmp($s1->getMostRecentDecision(), $s2->getMostRecentDecision());');
         usort($submissionsArray, $compare);
         if ($sortDirection == SORT_DIRECTION_DESC) {
             $submissionsArray = array_reverse($submissionsArray);
         }
         // Convert submission array back to an ItemIterator class
         import('lib.pkp.classes.core.ArrayItemIterator');
         $submissions =& ArrayItemIterator::fromRangeInfo($submissionsArray, $rangeInfo);
     } else {
         $submissions = $reviewerSubmissionDao->getReviewerSubmissionsByReviewerId($user->getId(), $journal->getId(), $active, $rangeInfo, $sort, $sortDirection);
     }
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions());
     $templateMgr->assign('pageToDisplay', $page);
     $templateMgr->assign_by_ref('submissions', $submissions);
     import('classes.submission.reviewAssignment.ReviewAssignment');
     $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions());
     import('classes.issue.IssueAction');
     $issueAction = new IssueAction();
     $templateMgr->register_function('print_issue_id', array($issueAction, 'smartyPrintIssueId'));
     $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.submissions');
     $templateMgr->assign('sort', $sort);
     $templateMgr->assign('sortDirection', $sortDirection);
     $templateMgr->display('reviewer/index.tpl');
 }
Example #3
0
 function index($args, $request)
 {
     $this->validate();
     PluginRegistry::loadCategory('oaiMetadataFormats', true);
     $oai = new JournalOAI(new OAIConfig($request->url(null, 'oai'), Config::getVar('oai', 'repository_id')));
     if (!$request->getJournal() && Request::getRequestedJournalPath() != 'index') {
         $dispatcher = $request->getDispatcher();
         return $dispatcher->handle404();
     }
     $oai->execute();
 }
Example #4
0
 /**
  * Get the journal associated with the current request.
  * @return Journal
  */
 function &getJournal()
 {
     static $journal;
     if (!isset($journal)) {
         $path = Request::getRequestedJournalPath();
         if ($path != 'index') {
             $journalDao =& DAORegistry::getDAO('JournalDAO');
             $journal = $journalDao->getJournalByPath(Request::getRequestedJournalPath());
         }
     }
     return $journal;
 }
Example #5
0
 /**
  * If no journal is selected, display list of journals.
  * Otherwise, display the index page for the selected journal.
  */
 function index($args)
 {
     parent::validate();
     $templateMgr =& TemplateManager::getManager();
     $journalDao =& DAORegistry::getDAO('JournalDAO');
     $journalPath = Request::getRequestedJournalPath();
     $templateMgr->assign('helpTopicId', 'user.home');
     if ($journalPath != 'index' && $journalDao->journalExistsByPath($journalPath)) {
         $journal =& Request::getJournal();
         // Assign header and content for home page
         $templateMgr->assign('displayPageHeaderTitle', $journal->getJournalPageHeaderTitle(true));
         $templateMgr->assign('displayPageHeaderLogo', $journal->getJournalPageHeaderLogo(true));
         $templateMgr->assign('additionalHomeContent', $journal->getLocalizedSetting('additionalHomeContent'));
         $templateMgr->assign('homepageImage', $journal->getLocalizedSetting('homepageImage'));
         $templateMgr->assign('journalDescription', $journal->getLocalizedSetting('description'));
         $displayCurrentIssue = $journal->getSetting('displayCurrentIssue');
         $issueDao =& DAORegistry::getDAO('IssueDAO');
         $issue =& $issueDao->getCurrentIssue($journal->getJournalId());
         if ($displayCurrentIssue && isset($issue)) {
             import('pages.issue.IssueHandler');
             // The current issue TOC/cover page should be displayed below the custom home page.
             IssueHandler::setupIssueTemplate($issue);
         }
         // Display creative commons logo/licence if enabled
         $templateMgr->assign('displayCreativeCommons', $journal->getSetting('includeCreativeCommons'));
         $enableAnnouncements = $journal->getSetting('enableAnnouncements');
         if ($enableAnnouncements) {
             $enableAnnouncementsHomepage = $journal->getSetting('enableAnnouncementsHomepage');
             if ($enableAnnouncementsHomepage) {
                 $numAnnouncementsHomepage = $journal->getSetting('numAnnouncementsHomepage');
                 $announcementDao =& DAORegistry::getDAO('AnnouncementDAO');
                 $announcements =& $announcementDao->getNumAnnouncementsNotExpiredByJournalId($journal->getJournalId(), $numAnnouncementsHomepage);
                 $templateMgr->assign('announcements', $announcements);
                 $templateMgr->assign('enableAnnouncementsHomepage', $enableAnnouncementsHomepage);
             }
         }
         $templateMgr->display('index/journal.tpl');
     } else {
         $siteDao =& DAORegistry::getDAO('SiteDAO');
         $site =& $siteDao->getSite();
         if ($site->getRedirect() && ($journal = $journalDao->getJournal($site->getJournalRedirect())) != null) {
             Request::redirect($journal->getPath());
         }
         $templateMgr->assign('intro', $site->getSiteIntro());
         $templateMgr->assign('journalFilesPath', Request::getBaseUrl() . '/' . Config::getVar('files', 'public_files_dir') . '/journals/');
         $journals =& $journalDao->getEnabledJournals();
         $templateMgr->assign_by_ref('journals', $journals);
         $templateMgr->setCacheability(CACHEABILITY_PUBLIC);
         $templateMgr->display('index/site.tpl');
     }
 }
 /**
  * Index.
  */
 function booksForReview()
 {
     $this->validate();
     $this->setupTemplate();
     $journal =& Request::getJournal();
     $journalId = $journal->getJournalId();
     $user =& Request::getUser();
     $templateMgr =& TemplateManager::getManager();
     $issueDao =& DAORegistry::getDAO('IssueDAO');
     $CBPPlatformDao =& DAORegistry::getDAO('CBPPlatformDAO');
     $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO');
     $userDao =& DAORegistry::getDAO('UserDAO');
     $pendingIssuesList = $CBPPlatformDao->getPendingIssues($journalId);
     if (Request::getUserVar('issueId')) {
         $issueId = Request::getUserVar('issueId');
         function in_array_r($needle, $haystack)
         {
             foreach ($haystack as $item) {
                 if ($item === $needle || is_array($item) && in_array_r($needle, $item)) {
                     return true;
                 }
             }
             return false;
         }
         if (in_array_r($issueId, $pendingIssuesList)) {
             $comment = Request::getUserVar('comment');
             $CBPPlatformDao->setReviewerIssueComment($issueId, $user->getUserId(), $comment);
             Request::redirect(Request::getRequestedJournalPath(), Request::getRequestedPage(), Request::getRequestedOp());
         }
     }
     if (count($pendingIssuesList) > 1) {
         foreach ($pendingIssuesList as $pendingIssue) {
             $issues[] = $issueDao->getIssueById($pendingIssue['issue_id']);
             $issueObject = $CBPPlatformDao->getFedoraIssueObjectInformation($pendingIssue['issue_id']);
             $issueComments[$pendingIssue['issue_id']] = $CBPPlatformDao->getReviewerIssueComments($pendingIssue['issue_id']);
             $issueObjects[$pendingIssue['issue_id']]['pid'] = $issueObject['fedora_namespace'] . ":" . $issueObject['fedora_pid'];
             $issueObjects[$pendingIssue['issue_id']]['dsid'] = $issueObject['fedora_dsid'];
             $publishedArticles[$pendingIssue['issue_id']] = $publishedArticleDao->getPublishedArticles($pendingIssue['issue_id']);
         }
         $pendingIssues = $issues;
     } else {
         $pendingIssues = 0;
     }
     $templateMgr->assign('user', $userDao);
     $templateMgr->assign('pendingIssues', $pendingIssues);
     $templateMgr->assign('issueComments', $issueComments);
     $templateMgr->assign('publishedArticles', $publishedArticles);
     $templateMgr->assign('issueObjects', $issueObjects);
     $templateMgr->display('reviewer/booksForReview.tpl');
 }
Example #7
0
 function _handleOjsUrl($matchArray)
 {
     $url = $matchArray[2];
     $anchor = null;
     if (($i = strpos($url, '#')) !== false) {
         $anchor = substr($url, $i + 1);
         $url = substr($url, 0, $i);
     }
     $urlParts = explode('/', $url);
     if (isset($urlParts[0])) {
         switch (String::strtolower($urlParts[0])) {
             case 'journal':
                 $url = Request::url(isset($urlParts[1]) ? $urlParts[1] : Request::getRequestedJournalPath(), null, null, null, null, $anchor);
                 break;
             case 'article':
                 if (isset($urlParts[1])) {
                     $url = Request::url(null, 'article', 'view', $urlParts[1], null, $anchor);
                 }
                 break;
             case 'issue':
                 if (isset($urlParts[1])) {
                     $url = Request::url(null, 'issue', 'view', $urlParts[1], null, $anchor);
                 } else {
                     $url = Request::url(null, 'issue', 'current', null, null, $anchor);
                 }
                 break;
             case 'suppfile':
                 if (isset($urlParts[1]) && isset($urlParts[2])) {
                     $url = Request::url(null, 'article', 'downloadSuppFile', array($urlParts[1], $urlParts[2]), null, $anchor);
                 }
                 break;
             case 'sitepublic':
                 array_shift($urlParts);
                 import('file.PublicFileManager');
                 $publicFileManager =& new PublicFileManager();
                 $url = Request::getBaseUrl() . '/' . $publicFileManager->getSiteFilesPath() . '/' . implode('/', $urlParts) . ($anchor ? '#' . $anchor : '');
                 break;
             case 'public':
                 array_shift($urlParts);
                 $journal =& Request::getJournal();
                 import('file.PublicFileManager');
                 $publicFileManager =& new PublicFileManager();
                 $url = Request::getBaseUrl() . '/' . $publicFileManager->getJournalFilesPath($journal->getJournalId()) . '/' . implode('/', $urlParts) . ($anchor ? '#' . $anchor : '');
                 break;
         }
     }
     return $matchArray[1] . $url . $matchArray[3];
 }
Example #8
0
 /**
  * Show advanced search form.
  */
 function advanced()
 {
     parent::validate();
     SearchHandler::setupTemplate(false);
     $templateMgr =& TemplateManager::getManager();
     if (Request::getJournal() == null) {
         $journalDao =& DAORegistry::getDAO('JournalDAO');
         $journals =& $journalDao->getEnabledJournalTitles();
         //Enabled added
         $templateMgr->assign('siteSearch', true);
         $templateMgr->assign('journalOptions', array('' => Locale::Translate('search.allJournals')) + $journals);
         $journalPath = Request::getRequestedJournalPath();
     }
     SearchHandler::assignAdvancedSearchParameters($templateMgr);
     $templateMgr->display('search/advancedSearch.tpl');
 }
Example #9
0
 /**
  * Generate an XML sitemap for webcrawlers
  * Creates a sitemap index if in site context, else creates a sitemap
  */
 function index()
 {
     if (Request::getRequestedJournalPath() == 'index') {
         $doc = $this->_createSitemapIndex();
         header("Content-Type: application/xml");
         header("Cache-Control: private");
         header("Content-Disposition: inline; filename=\"sitemap_index.xml\"");
         XMLCustomWriter::printXML($doc);
     } else {
         $doc = $this->_createJournalSitemap();
         header("Content-Type: application/xml");
         header("Cache-Control: private");
         header("Content-Disposition: inline; filename=\"sitemap.xml\"");
         XMLCustomWriter::printXML($doc);
     }
 }
 /**
  * Display about index page.
  */
 function index()
 {
     $this->validate();
     $this->setupTemplate();
     $templateMgr =& TemplateManager::getManager();
     $journalDao =& DAORegistry::getDAO('JournalDAO');
     $journalPath = Request::getRequestedJournalPath();
     if ($journalPath != 'index' && $journalDao->journalExistsByPath($journalPath)) {
         $journal =& Request::getJournal();
         $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO');
         $templateMgr->assign_by_ref('journalSettings', $journalSettingsDao->getJournalSettings($journal->getId()));
         $customAboutItems =& $journalSettingsDao->getSetting($journal->getId(), 'customAboutItems');
         if (isset($customAboutItems[AppLocale::getLocale()])) {
             $templateMgr->assign('customAboutItems', $customAboutItems[AppLocale::getLocale()]);
         } elseif (isset($customAboutItems[AppLocale::getPrimaryLocale()])) {
             $templateMgr->assign('customAboutItems', $customAboutItems[AppLocale::getPrimaryLocale()]);
         }
         foreach ($this->getPublicStatisticsNames() as $name) {
             if ($journal->getSetting($name)) {
                 $templateMgr->assign('publicStatisticsEnabled', true);
                 break;
             }
         }
         // Hide membership if the payment method is not configured
         import('classes.payment.ojs.OJSPaymentManager');
         $paymentManager =& OJSPaymentManager::getManager();
         $templateMgr->assign('paymentConfigured', $paymentManager->isConfigured());
         $groupDao =& DAORegistry::getDAO('GroupDAO');
         $groups =& $groupDao->getGroups(ASSOC_TYPE_JOURNAL, $journal->getId(), GROUP_CONTEXT_PEOPLE);
         $templateMgr->assign_by_ref('peopleGroups', $groups);
         $templateMgr->assign('helpTopicId', 'user.about');
         $templateMgr->display('about/index.tpl');
     } else {
         $site =& Request::getSite();
         $about = $site->getLocalizedAbout();
         $templateMgr->assign('about', $about);
         $journals =& $journalDao->getEnabledJournals();
         //Enabled Added
         $templateMgr->assign_by_ref('journals', $journals);
         $templateMgr->display('about/site.tpl');
     }
 }
Example #11
0
 /**
  * Show advanced search form.
  */
 function advanced()
 {
     $this->validate();
     $this->setupTemplate(false);
     $templateMgr =& TemplateManager::getManager();
     $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO');
     if (Request::getJournal() == null) {
         $journalDao =& DAORegistry::getDAO('JournalDAO');
         $journals =& $journalDao->getJournalTitles(true);
         $templateMgr->assign('siteSearch', true);
         $templateMgr->assign('journalOptions', array('' => Locale::Translate('search.allJournals')) + $journals);
         $journalPath = Request::getRequestedJournalPath();
         $yearRange = $publishedArticleDao->getArticleYearRange(null);
     } else {
         $journal =& Request::getJournal();
         $yearRange = $publishedArticleDao->getArticleYearRange($journal->getId());
     }
     $this->_assignAdvancedSearchParameters($templateMgr, $yearRange);
     $templateMgr->display('search/advancedSearch.tpl');
 }
 /**
  * Display about index page.
  */
 function index()
 {
     parent::validate();
     $templateMgr =& TemplateManager::getManager();
     $journalDao =& DAORegistry::getDAO('JournalDAO');
     $journalPath = Request::getRequestedJournalPath();
     if ($journalPath != 'index' && $journalDao->journalExistsByPath($journalPath)) {
         $journal =& Request::getJournal();
         $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO');
         $templateMgr->assign_by_ref('journalSettings', $journalSettingsDao->getJournalSettings($journal->getJournalId()));
         $customAboutItems =& $journalSettingsDao->getSetting($journal->getJournalId(), 'customAboutItems');
         if (isset($customAboutItems[Locale::getLocale()])) {
             $templateMgr->assign('customAboutItems', $customAboutItems[Locale::getLocale()]);
         } elseif (isset($customAboutItems[Locale::getPrimaryLocale()])) {
             $templateMgr->assign('customAboutItems', $customAboutItems[Locale::getPrimaryLocale()]);
         }
         foreach (AboutHandler::getPublicStatisticsNames() as $name) {
             if ($journal->getSetting($name)) {
                 $templateMgr->assign('publicStatisticsEnabled', true);
                 break;
             }
         }
         $groupDao =& DAORegistry::getDAO('GroupDAO');
         $groups =& $groupDao->getGroups($journal->getJournalId(), GROUP_CONTEXT_PEOPLE);
         $templateMgr->assign_by_ref('peopleGroups', $groups);
         $templateMgr->assign('helpTopicId', 'user.about');
         $templateMgr->display('about/index.tpl');
     } else {
         $site =& Request::getSite();
         $about = $site->getSiteAbout();
         $templateMgr->assign('about', $about);
         $journals =& $journalDao->getEnabledJournals();
         //Enabled Added
         $templateMgr->assign_by_ref('journals', $journals);
         $templateMgr->display('about/site.tpl');
     }
 }
 /**
  * Display the submission review page.
  * @param $args array
  */
 function submission($args)
 {
     $journal =& Request::getJournal();
     $journalId = $journal->getJournalId();
     $session =& Request::getSession();
     //%CBP% get the journal/imprint type and set var approriately
     $CBPPlatformDao =& DAORegistry::getDAO('CBPPlatformDAO');
     $workshop = $CBPPlatformDao->getWorkshop($journalId);
     if ($workshop != "structured") {
         $workshop = 1;
     }
     $args = Request::getRequestedArgs();
     if ($workshop == 1) {
         $args = Request::getRequestedArgs();
         if (!$args[1]) {
             $articleId = $args[0];
             $user =& Request::getUser();
             if ($workshop == 1 && !$session->getSessionVar('workshopReview_' . $articleId)) {
                 $reviewId = $CBPPlatformDao->setWorkshopReviewer($articleId, $user->getUserId());
                 $session->setSessionVar('workshopReview_' . $articleId, $articleId);
             } else {
                 if ($workshop == 1 && $session->getSessionVar('workshopReview_' . $articleId)) {
                     $reviewId = $CBPPlatformDao->getWorkshopReviewId($articleId, $user->getUserId());
                     if ($CBPPlatformDao->getWorkshopReviewCompleted($reviewId) != null) {
                         $reviewId = $CBPPlatformDao->setWorkshopReviewer($articleId, $user->getUserId());
                         $session->setSessionVar('workshopReview_' . $articleId, $articleId);
                     }
                 }
             }
             Request::redirect(Request::getRequestedJournalPath(), Request::getRequestedPage(), Request::getRequestedOp(), array("review" => $reviewId, "redirect" => 1));
         }
     }
     $reviewId = $args[0];
     $this->validate($reviewId);
     $user =& $this->user;
     $submission =& $this->submission;
     $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
     $reviewAssignment = $reviewAssignmentDao->getById($reviewId);
     $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO');
     if ($workshop == 1) {
         $confirmedStatus = 1;
     } else {
         if ($submission->getDateConfirmed() == null) {
             $confirmedStatus = 0;
         } else {
             $confirmedStatus = 1;
         }
     }
     $this->setupTemplate(true, $reviewAssignment->getSubmissionId(), $reviewId);
     $templateMgr =& TemplateManager::getManager();
     $templateMgr->assign_by_ref('user', $user);
     $templateMgr->assign_by_ref('submission', $submission);
     $templateMgr->assign_by_ref('reviewAssignment', $reviewAssignment);
     $templateMgr->assign('confirmedStatus', $confirmedStatus);
     $templateMgr->assign('declined', $submission->getDeclined());
     $templateMgr->assign('reviewFormResponseExists', $reviewFormResponseDao->reviewFormResponseExists($reviewId));
     $templateMgr->assign_by_ref('reviewFile', $reviewAssignment->getReviewFile());
     $templateMgr->assign_by_ref('reviewerFile', $submission->getReviewerFile());
     $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles());
     $templateMgr->assign_by_ref('journal', $journal);
     $templateMgr->assign_by_ref('reviewGuidelines', $journal->getLocalizedSetting('reviewGuidelines'));
     $templateMgr->assign_by_ref('workshop', $workshop);
     import('classes.submission.reviewAssignment.ReviewAssignment');
     $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions());
     $templateMgr->assign('helpTopicId', 'editorial.reviewersRole.review');
     $templateMgr->display('reviewer/submission.tpl');
 }
 /**
  * Unenroll a user from a role.
  */
 function unEnroll($args)
 {
     $roleId = isset($args[0]) ? $args[0] : 0;
     parent::validate();
     $journalDao =& DAORegistry::getDAO('JournalDAO');
     $journal =& $journalDao->getJournalByPath(Request::getRequestedJournalPath());
     $roleDao =& DAORegistry::getDAO('RoleDAO');
     if ($roleId != $roleDao->getRoleIdFromPath('admin')) {
         $roleDao->deleteRoleByUserId(Request::getUserVar('userId'), $journal->getJournalId(), $roleId);
     }
     Request::redirect(null, null, 'people');
 }
Example #15
0
 /**
  * Assigns values to e-mail parameters.
  * @param $paramArray array
  * @return void
  */
 function assignParams($paramArray = array())
 {
     $subject = $this->getSubject();
     $body = $this->getBody();
     // Add commonly-used variables to the list
     if (isset($this->journal)) {
         // FIXME Include affiliation, title, etc. in signature?
         $paramArray['journalName'] = $this->journal->getJournalTitle();
         $paramArray['principalContactSignature'] = $this->journal->getSetting('contactName');
     } else {
         $site =& Request::getSite();
         $paramArray['principalContactSignature'] = $site->getSiteContactName();
     }
     if (!isset($paramArray['journalUrl'])) {
         $paramArray['journalUrl'] = Request::url(Request::getRequestedJournalPath());
     }
     // Replace variables in message with values
     foreach ($paramArray as $key => $value) {
         if (!is_object($value)) {
             $subject = str_replace('{$' . $key . '}', $value, $subject);
             $body = str_replace('{$' . $key . '}', $value, $body);
         }
     }
     $this->setSubject($subject);
     $this->setBody($body);
 }
 /**
  * Display a list of pending issues
  */
 function issue()
 {
     $this->validate();
     $this->setupTemplate();
     $templateMgr =& TemplateManager::getManager();
     $issueDao =& DAORegistry::getDAO('IssueDAO');
     $CBPPlatformDao =& DAORegistry::getDAO('CBPPlatformDAO');
     $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO');
     $user =& Request::getUser();
     $userDao =& DAORegistry::getDAO('UserDAO');
     $journalDao =& DAORegistry::getDAO('JournalDAO');
     if (Request::getUserVar('filter')) {
         $filter = (int) Request::getUserVar('filter');
     }
     $pendingIssuesList = $CBPPlatformDao->getPendingIssues();
     foreach ($pendingIssuesList as $pendingIssue) {
         $journal = $journalDao->getJournal($pendingIssue['journal_id']);
         $journalsWithPendingIssues[$journal->getJournalTitle()] = $journal->getId();
     }
     ksort($journalsWithPendingIssues);
     $pendingIssuesList = $CBPPlatformDao->getPendingIssues($filter);
     function in_array_r($needle, $haystack)
     {
         foreach ($haystack as $item) {
             if ($item === $needle || is_array($item) && in_array_r($needle, $item)) {
                 return true;
             }
         }
         return false;
     }
     //%CBP% if the admin has asked to publish a book, validate its prescence in the pending array
     if (Request::getUserVar('publish')) {
         $issueId = Request::getUserVar('publish');
         if (in_array_r($issueId, $pendingIssuesList)) {
             $issue = $issueDao->getIssueById($issueId);
             $issue->setPublished(1);
             $issue->setDatePublished(Core::getCurrentDate());
             $issue->setCurrent(1);
             $issueDao->updateCurrentIssue($issue->getJournalId(), $issue);
             $CBPPlatformDao->setIssuePending($issueId, 0);
             //TODO enable CBP notifications
             // %CBP% send notifications to users that book has been published
             /*import('lib.pkp.classes.notification.NotificationManager');
             		$notificationManager = new NotificationManager();
             		$roleDao =& DAORegistry::getDAO('RoleDAO');
             		$notificationUsers = array();
             		$allUsers = $roleDao->getUsersByJournalId($issue->getJournalId());
             		while (!$allUsers->eof()) {
             			$user =& $allUsers->next();
             			$notificationUsers[] = array('id' => $user->getId());
             			unset($user);
             		}
             		$url = Request::url(null, 'issue', 'current');
             		foreach ($notificationUsers as $userRole) {
             			$notificationManager->createNotification(
             				$userRole['id'], 'notification.type.issuePublished',
             				null, $url, 1, NOTIFICATION_TYPE_PUBLISHED_ISSUE
             			);
             		}*/
             /*$notificationManager->sendToMailingList(
             			$notificationManager->createNotification(
             				0, 'notification.type.issuePublished',
             				null, $url, 1, NOTIFICATION_TYPE_PUBLISHED_ISSUE
             			)
             		);*/
             Request::redirect(Request::getRequestedJournalPath(), Request::getRequestedPage(), Request::getRequestedOp());
         }
     }
     if (Request::getUserVar('issueId')) {
         $issueId = Request::getUserVar('issueId');
         if (in_array_r($issueId, $pendingIssuesList)) {
             $comment = Request::getUserVar('comment');
             $CBPPlatformDao->setReviewerIssueComment($issueId, $user->getUserId(), $comment);
             Request::redirect(Request::getRequestedJournalPath(), Request::getRequestedPage(), Request::getRequestedOp());
         }
     }
     foreach ($pendingIssuesList as $pendingIssue) {
         $issues[] = $issueDao->getIssueById($pendingIssue['issue_id']);
         $issueComments[$pendingIssue['issue_id']] = $CBPPlatformDao->getReviewerIssueComments($pendingIssue['issue_id']);
         $issueObject = $CBPPlatformDao->getFedoraIssueObjectInformation($pendingIssue['issue_id']);
         $issueObjects[$pendingIssue['issue_id']]['pid'] = $issueObject['fedora_namespace'] . ":" . $issueObject['fedora_pid'];
         $issueObjects[$pendingIssue['issue_id']]['dsid'] = $issueObject['fedora_dsid'];
         $publishedArticles[$pendingIssue['issue_id']] = $publishedArticleDao->getPublishedArticles($pendingIssue['issue_id']);
     }
     $pendingIssues = $issues;
     $templateMgr->assign('journalsWithPendingIssues', $journalsWithPendingIssues);
     $templateMgr->assign('pendingIssues', $pendingIssues);
     $templateMgr->assign('publishedArticles', $publishedArticles);
     $templateMgr->assign('issueObjects', $issueObjects);
     $templateMgr->assign('issueComments', $issueComments);
     $templateMgr->assign('user', $userDao);
     $templateMgr->assign('filter', $filter);
     $templateMgr->display('admin/issue.tpl');
 }
Example #17
0
 /**
  * Enroll a user in a role.
  */
 function enroll($args)
 {
     $this->validate();
     $roleId = (int) (isset($args[0]) ? $args[0] : Request::getUserVar('roleId'));
     // Get a list of users to enroll -- either from the
     // submitted array 'users', or the single user ID in
     // 'userId'
     $users = Request::getUserVar('users');
     if (!isset($users) && Request::getUserVar('userId') != null) {
         $users = array(Request::getUserVar('userId'));
     }
     $journalDao =& DAORegistry::getDAO('JournalDAO');
     $journal =& $journalDao->getJournalByPath(Request::getRequestedJournalPath());
     $roleDao =& DAORegistry::getDAO('RoleDAO');
     $rolePath = $roleDao->getRolePath($roleId);
     if ($users != null && is_array($users) && $rolePath != '' && $rolePath != 'admin') {
         for ($i = 0; $i < count($users); $i++) {
             if (!$roleDao->userHasRole($journal->getId(), $users[$i], $roleId)) {
                 $role = new Role();
                 $role->setJournalId($journal->getId());
                 $role->setUserId($users[$i]);
                 $role->setRoleId($roleId);
                 $roleDao->insertRole($role);
             }
         }
     }
     Request::redirect(null, null, 'people', empty($rolePath) ? null : $rolePath . 's');
 }
Example #18
0
 /**
  * Enroll a user in a role.
  * Last update: EL on February 14th 2013
  */
 function enroll($args)
 {
     $this->validate();
     $roleId = (int) (isset($args[0]) ? $args[0] : Request::getUserVar('roleId'));
     // Get a list of users to enroll -- either from the
     // submitted array 'users', or the single user ID in
     // 'userId'
     $users = Request::getUserVar('users');
     if (!isset($users) && Request::getUserVar('userId') != null) {
         $users = array(Request::getUserVar('userId'));
     }
     $journalDao =& DAORegistry::getDAO('JournalDAO');
     $journal =& $journalDao->getJournalByPath(Request::getRequestedJournalPath());
     $roleDao =& DAORegistry::getDAO('RoleDAO');
     $rolePath = $roleDao->getRolePath($roleId);
     // Added by EL on April 24, 2012
     // Management of the ERC Member Status
     $sectionEditorsDAO =& DAORegistry::getDAO('SectionEditorsDAO');
     // Added by EL on February 13th 2013
     // Management of the erc for the reviewers
     $ercReviewersDAO =& DAORegistry::getDAO('ErcReviewersDAO');
     $ercMemberStatus =& Request::getUserVar('ercMemberStatus');
     $ethicsCommitteeId =& Request::getUserVar('ethicsCommittee');
     // the role path "reviewer" includes all the erc members but also the secretaries
     // if the enrollment concern secretaries, the role path and the role id is further modified
     if ($users != null && is_array($users) && $rolePath == 'reviewer') {
         // Check if info provided
         if (!empty($ethicsCommitteeId) && !empty($ercMemberStatus) && $ethicsCommitteeId != "NA" && $ercMemberStatus != "NA") {
             if ($ercMemberStatus == "Chair" or $ercMemberStatus == "Vice-Chair" or $ercMemberStatus == "Member") {
                 $reviewers = $ercReviewersDAO->getReviewersBySectionId($journal->getId(), $ethicsCommitteeId);
                 $chairs = $ercReviewersDAO->getReviewersBySectionIdByStatus($journal->getId(), $ethicsCommitteeId, 1);
                 $viceChairs = $ercReviewersDAO->getReviewersBySectionIdByStatus($journal->getId(), $ethicsCommitteeId, 2);
                 // Here the number of members per committee is set to 20,
                 // and of chair or vice-chair to 1
                 if (count($reviewers) + count($users) < 21 && $ercMemberStatus == "Member" || count($chairs) + count($users) < 2 && $ercMemberStatus == "Chair" || count($viceChairs) + count($users) < 2 && $ercMemberStatus == "Vice-Chair") {
                     for ($i = 0; $i < count($users); $i++) {
                         if (!$ercReviewersDAO->ercReviewerExists($journal->getId(), $ethicsCommitteeId, $users[$i])) {
                             if (!$roleDao->roleExists($journal->getId(), $users[$i], $roleId)) {
                                 // Create the role and insert it
                                 $role = new Role();
                                 $role->setJournalId($journal->getId());
                                 $role->setUserId($users[$i]);
                                 $role->setRoleId($roleId);
                                 $roleDao->insertRole($role);
                             }
                             // Assign the reviewer to the specified committee
                             if ($ercMemberStatus == "Chair") {
                                 $status = 1;
                             } elseif ($ercMemberStatus == "Vice-Chair") {
                                 $status = 2;
                             } elseif ($ercMemberStatus == "Member") {
                                 $status = 3;
                             }
                             $ercReviewersDAO->insertReviewer($journal->getId(), $ethicsCommitteeId, $users[$i], $status);
                         }
                     }
                 }
             } elseif ($ercMemberStatus == "Secretary") {
                 //Get all the secretaries already enrolled in this particular committee
                 $secretaries = $sectionEditorsDAO->getEditorsBySectionId($journal->getId(), $ethicsCommitteeId);
                 // The role id and the role path is modified
                 $roleId = ROLE_ID_SECTION_EDITOR;
                 $rolePath = $roleDao->getRolePath($roleId);
                 //Here, the number of secretaries per committee is limited to 5
                 if (count($secretaries) + count($users) < 6) {
                     for ($i = 0; $i < count($users); $i++) {
                         if (!$roleDao->roleExists($journal->getId(), $users[$i], $roleId) && !$sectionEditorsDAO->ercSecretaryExists($ethicsCommitteeId, $users[$i])) {
                             // Create the role and insert it
                             $role = new Role();
                             $role->setJournalId($journal->getId());
                             $role->setUserId($users[$i]);
                             $role->setRoleId($roleId);
                             $roleDao->insertRole($role);
                             // Assign the secretary to the specified committee
                             $sectionEditorsDAO->insertEditor($journal->getId(), $ethicsCommitteeId, $users[$i], 1, 1);
                         }
                     }
                 }
             }
         } else {
             Request::redirect(null, null, 'enrollSearch');
         }
     } else {
         if ($users != null && is_array($users) && $roleId == 'ExtReviewer') {
             $roleId = '4096';
             $rolePath = 'extReviewer';
             $userDAO =& DAORegistry::getDAO('UserDAO');
             for ($i = 0; $i < count($users); $i++) {
                 if (!$ercReviewersDAO->ercReviewerExists($journal->getId(), 0, $users[$i])) {
                     if (!$roleDao->roleExists($journal->getId(), $users[$i], $roleId)) {
                         $role = new Role();
                         $role->setJournalId($journal->getId());
                         $role->setUserId($users[$i]);
                         $role->setRoleId($roleId);
                         $roleDao->insertRole($role);
                     }
                     $ercReviewersDAO->insertReviewer($journal->getId(), 0, $users[$i], 0);
                 }
             }
         } elseif ($users != null && is_array($users) && $rolePath != '') {
             for ($i = 0; $i < count($users); $i++) {
                 if (!$roleDao->roleExists($journal->getId(), $users[$i], $roleId)) {
                     $role = new Role();
                     $role->setJournalId($journal->getId());
                     $role->setUserId($users[$i]);
                     $role->setRoleId($roleId);
                     $roleDao->insertRole($role);
                 }
             }
         }
     }
     Request::redirect(null, null, 'people', empty($rolePath) ? null : $rolePath . 's');
 }
Example #19
0
 /**
  * Assigns values to e-mail parameters.
  * @param $paramArray array
  * @return void
  */
 function assignParams($paramArray = array())
 {
     // Add commonly-used variables to the list
     if (isset($this->journal)) {
         // FIXME Include affiliation, title, etc. in signature?
         $paramArray['journalName'] = $this->journal->getLocalizedTitle();
         $paramArray['principalContactSignature'] = $this->journal->getSetting('contactName');
     } else {
         $site =& Request::getSite();
         $paramArray['principalContactSignature'] = $site->getLocalizedContactName();
     }
     if (!isset($paramArray['journalUrl'])) {
         $paramArray['journalUrl'] = Request::url(Request::getRequestedJournalPath());
     }
     return parent::assignParams($paramArray);
 }
Example #20
0
 /**
  * Generate a unique-ish hash of the page's identity, including all
  * context that differentiates it from other similar pages (e.g. all
  * articles vs. all articles starting with "l").
  * @param $contextData array A set of information identifying the page
  * @return string hash
  */
 function hashPageContext($contextData = array())
 {
     return md5(Request::getRequestedJournalPath() . ',' . Request::getRequestedPage() . ',' . Request::getRequestedOp() . ',' . serialize($contextData));
 }