16 import(
'lib.pkp.classes.scheduledTask.ScheduledTask');
24 return __(
'admin.scheduledTask.openAccessNotification');
34 if ($users->getCount() != 0) {
36 import(
'lib.pkp.classes.mail.MailTemplate');
37 $email =
new MailTemplate(
'OPEN_ACCESS_NOTIFY', $journal->getPrimaryLocale(), $journal,
false);
39 $email->setSubject($email->getSubject($journal->getPrimaryLocale()));
40 $email->setReplyTo(
null);
41 $email->setFrom($journal->getData(
'contactEmail'), $journal->getData(
'contactName'));
42 $email->addRecipient($journal->getData(
'contactEmail'), $journal->getData(
'contactName'));
46 'journalName' => $journal->getLocalizedName(),
47 'journalUrl' => $request->url($journal->getPath()),
48 'editorialContactSignature' => $journal->getData(
'contactName') .
"\n" . $journal->getLocalizedName(),
50 $email->assignParams($paramArray);
52 $submissions =
Services::get(
'submission')->getInSections($issue->getId());
53 $mimeBoundary =
'==boundary_' . md5(microtime());
56 $templateMgr->assign(array(
57 'body' => $email->getBody($journal->getPrimaryLocale()),
58 'templateSignature' => $journal->getData(
'emailSignature'),
59 'mimeBoundary' => $mimeBoundary,
61 'publishedSubmissions' => $submissions,
64 $email->addHeader(
'MIME-Version',
'1.0');
65 $email->setContentType(
'multipart/alternative; boundary="'.$mimeBoundary.
'"');
66 $email->setBody($templateMgr->fetch(
'subscription/openAccessNotifyEmail.tpl'));
68 while ($user = $users->next()) {
69 $email->addBcc($user->getEmail(), $user->getFullName());
82 if ($journal->getData(
'publishingMode') == PUBLISHING_MODE_SUBSCRIPTION && $journal->getData(
'enableOpenAccessNotification')) {
84 $curYear = $curDate[
'year'];
85 $curMonth = $curDate[
'month'];
86 $curDay = $curDate[
'day'];
90 $issues = $issueDao->getPublishedIssues($journal->getId());
92 while ($issue = $issues->next()) {
93 $accessStatus = $issue->getAccessStatus();
94 $openAccessDate = $issue->getOpenAccessDate();
96 if ($accessStatus == ISSUE_ACCESS_SUBSCRIPTION && !empty($openAccessDate) && strtotime($openAccessDate) == mktime(0,0,0,$curMonth, $curDay, $curYear)) {
99 $users = $userSettingsDao->getUsersBySetting(
'openAccessNotification',
true,
'bool', $journal->getId());
111 $journals = $journalDao->getAll(
true);
115 'month' => date(
'n'),
119 while ($journal = $journals->next()) {
127 $shortMonths = array(2,4,6,9,11);
129 if (($todayDate[
'day'] == 1) && in_array(($todayDate[
'month'] - 1), $shortMonths)) {
131 $curDate[
'day'] = 31;
132 $curDate[
'month'] = $todayDate[
'month'] - 1;
134 if ($curDate[
'month'] == 0) {
135 $curDate[
'month'] = 12;
136 $curDate[
'year'] = $todayDate[
'year'] - 1;
138 $curDate[
'year'] = $todayDate[
'year'];
141 $journals = $journalDao->getAll(
true);
142 while ($journal = $journals->next()) {
150 if (($todayDate[
'day'] == 1) && ($todayDate[
'month'] == 3)) {
152 $curDate[
'day'] = 30;
153 $curDate[
'month'] = 2;
154 $curDate[
'year'] = $todayDate[
'year'];
156 $journals = $journalDao->getAll(
true);
157 while ($journal = $journals->next()) {
163 if (date(
"L", mktime(0,0,0,0,0,$curDate[
'year'])) !=
'1') {
165 $curDate[
'day'] = 29;
167 $journals = $journalDao->getAll(
true);
168 while ($journal = $journals->next()) {