29 assert(is_a($issue,
'Issue'));
30 assert(is_a($journal,
'Journal'));
31 assert($journal->getId() == $issue->getJournalId());
34 $result = $journal->getData(
'publishingMode') == PUBLISHING_MODE_SUBSCRIPTION &&
35 $issue->getAccessStatus() != ISSUE_ACCESS_OPEN && (
36 is_null($issue->getOpenAccessDate()) ||
37 strtotime($issue->getOpenAccessDate()) > time()
39 HookRegistry::call(
'IssueAction::subscriptionRequired', array(&$journal, &$issue, &$result));
54 if ($user && $journal) {
55 $journalId = $journal->getId();
56 $userId = $user->getId();
59 $stageAssignments = $stageAssignmentDao->getBySubmissionAndRoleId($submission->getId(), ROLE_ID_AUTHOR,
null, $userId);
60 $stageAssignment = $stageAssignments->next();
61 if ($stageAssignment)
return true;
85 function subscribedUser($user, $journal, $issueId =
null, $articleId =
null) {
88 $submission = $submissionDao->getById($articleId);
90 if (isset($user) && isset($journal)) {
94 $result = $subscriptionDao->isValidIndividualSubscription($user->getId(), $journal->getId());
100 if (!$result && $journal->getData(
'subscriptionExpiryPartial')) {
101 if (isset($submission) && !empty($submission->getData(
'publications'))) {
102 import(
'classes.subscription.SubscriptionDAO');
103 foreach ($submission->getData(
'publications') as $publication) {
104 if ($subscriptionDao->isValidIndividualSubscription($user->getId(), $journal->getId(), SUBSCRIPTION_DATE_END, $publication->getData(
'datePublished'))) {
109 }
else if (isset($issueId)) {
111 $issue = $issueDao->getById($issueId);
112 if (isset($issue) && $issue->getPublished()) {
113 import(
'classes.subscription.SubscriptionDAO');
114 $result = $subscriptionDao->isValidIndividualSubscription($user->getId(), $journal->getId(), SUBSCRIPTION_DATE_END, $issue->getDatePublished());
119 HookRegistry::call(
'IssueAction::subscribedUser', array(&$user, &$journal, &$issueId, &$articleId, &$result));
134 if (isset($journal)) {
135 $result = $subscriptionDao->isValidInstitutionalSubscription($request->getRemoteDomain(), $request->getRemoteAddr(), $journal->getId());
139 if (!$result && $journal->getData(
'subscriptionExpiryPartial')) {
140 if (isset($articleId)) {
142 if ($submission->getData(
'status') === STATUS_PUBLISHED) {
143 import(
'classes.subscription.SubscriptionDAO');
144 $result = $subscriptionDao->isValidInstitutionalSubscription($request->getRemoteDomain(), $request->getRemoteAddr(), $journal->getId(), SUBSCRIPTION_DATE_END, $submission->getDatePublished());
146 }
else if (isset($issueId)) {
148 $issue = $issueDao->getById($issueId);
149 if (isset($issue) && $issue->getPublished()) {
150 import(
'classes.subscription.SubscriptionDAO');
151 $result = $subscriptionDao->isValidInstitutionalSubscription($request->getRemoteDomain(), $request->getRemoteAddr(), $journal->getId(), SUBSCRIPTION_DATE_END, $issue->getDatePublished());
156 HookRegistry::call(
'IssueAction::subscribedDomain', array(&$request, &$journal, &$issueId, &$articleId, &$result));
157 return (
boolean) $result;
169 if ($user && $journal) {
170 $journalId = $journal->getId();
171 $userId = $user->getId();
172 $subscriptionAssumedRoles = array(
176 ROLE_ID_SUBSCRIPTION_MANAGER
179 $roles = $roleDao->getByUserId($userId, $journalId);
180 foreach ($roles as $role) {
181 if (in_array($role->getRoleId(), $subscriptionAssumedRoles))
return true;