function sendNotification($users, $journal, $issue) { if ($users->getCount() != 0) { import('lib.pkp.classes.mail.MailTemplate'); $email = new MailTemplate('OPEN_ACCESS_NOTIFY', $journal->getPrimaryLocale()); $email->setSubject($email->getSubject($journal->getPrimaryLocale())); $email->setReplyTo(null); $email->addRecipient($journal->getSetting('contactEmail'), $journal->getSetting('contactName')); $paramArray = array('journalName' => $journal->getLocalizedName(), 'journalUrl' => Request::url($journal->getPath()), 'editorialContactSignature' => $journal->getSetting('contactName') . "\n" . $journal->getLocalizedName()); $email->assignParams($paramArray); $publishedArticleDao = DAORegistry::getDAO('PublishedArticleDAO'); $publishedArticles = $publishedArticleDao->getPublishedArticlesInSections($issue->getId()); $mimeBoundary = '==boundary_' . md5(microtime()); $templateMgr = TemplateManager::getManager(); $templateMgr->assign('body', $email->getBody($journal->getPrimaryLocale())); $templateMgr->assign('templateSignature', $journal->getSetting('emailSignature')); $templateMgr->assign('mimeBoundary', $mimeBoundary); $templateMgr->assign('issue', $issue); $templateMgr->assign('publishedArticles', $publishedArticles); $email->addHeader('MIME-Version', '1.0'); $email->setContentType('multipart/alternative; boundary="' . $mimeBoundary . '"'); $email->setBody($templateMgr->fetch('subscription/openAccessNotifyEmail.tpl')); while ($user = $users->next()) { $email->addBcc($user->getEmail(), $user->getFullName()); } $email->send(); } }
function sendReminder($subscription, $journal, $emailKey) { $userDao = DAORegistry::getDAO('UserDAO'); $subscriptionTypeDao = DAORegistry::getDAO('SubscriptionTypeDAO'); $journalName = $journal->getLocalizedName(); $user = $userDao->getById($subscription->getUserId()); if (!isset($user)) { return false; } $subscriptionType = $subscriptionTypeDao->getSubscriptionType($subscription->getTypeId()); $subscriptionName = $journal->getSetting('subscriptionName'); $subscriptionEmail = $journal->getSetting('subscriptionEmail'); $subscriptionPhone = $journal->getSetting('subscriptionPhone'); $subscriptionMailingAddress = $journal->getSetting('subscriptionMailingAddress'); $subscriptionContactSignature = $subscriptionName; AppLocale::requireComponents(LOCALE_COMPONENT_PKP_USER, LOCALE_COMPONENT_APP_COMMON); if ($subscriptionMailingAddress != '') { $subscriptionContactSignature .= "\n" . $subscriptionMailingAddress; } if ($subscriptionPhone != '') { $subscriptionContactSignature .= "\n" . AppLocale::Translate('user.phone') . ': ' . $subscriptionPhone; } $subscriptionContactSignature .= "\n" . AppLocale::Translate('user.email') . ': ' . $subscriptionEmail; $paramArray = array('subscriberName' => $user->getFullName(), 'journalName' => $journalName, 'subscriptionType' => $subscriptionType->getSummaryString(), 'expiryDate' => $subscription->getDateEnd(), 'username' => $user->getUsername(), 'subscriptionContactSignature' => $subscriptionContactSignature); import('lib.pkp.classes.mail.MailTemplate'); $mail = new MailTemplate($emailKey, $journal->getPrimaryLocale(), $journal, false); $mail->setReplyTo($subscriptionEmail, $subscriptionName); $mail->addRecipient($user->getEmail(), $user->getFullName()); $mail->setSubject($mail->getSubject($journal->getPrimaryLocale())); $mail->setBody($mail->getBody($journal->getPrimaryLocale())); $mail->assignParams($paramArray); $mail->send(); }
/** * Send email to a book for review author */ function sendReminder($book, $journal, $emailKey) { $journalId = $journal->getId(); $paramArray = array('authorName' => strip_tags($book->getUserFullName()), 'bookForReviewTitle' => '"' . strip_tags($book->getLocalizedTitle()) . '"', 'bookForReviewDueDate' => date('l, F j, Y', strtotime($book->getDateDue())), 'submissionUrl' => Request::url(null, 'author', 'submit'), 'editorialContactSignature' => strip_tags($book->getEditorContactSignature())); import('classes.mail.MailTemplate'); $mail = new MailTemplate($emailKey); $mail->setReplyTo($book->getEditorEmail(), $book->getEditorFullName()); $mail->addRecipient($book->getUserEmail(), $book->getUserFullName()); $mail->setSubject($mail->getSubject($journal->getPrimaryLocale())); $mail->setBody($mail->getBody($journal->getPrimaryLocale())); $mail->assignParams($paramArray); $mail->send(); }
public function addTemplate(MailTemplate $templateToAdd) { $database = Database::getInstance(); if (!$database->isConnected()) { return false; } $name = $database->escapeString($templateToAdd->getName()); $subject = $database->escapeString($templateToAdd->getSubject()); $body = $database->escapeString($templateToAdd->getBody()); $senderName = $database->escapeString($templateToAdd->getSenderName()); $senderEmail = $database->escapeString($templateToAdd->getSenderEmail()); $modifier = $database->escapeString($templateToAdd->getModifier()); if (!$database->insertData('mailTemplate', 'name, subject, body, senderName, senderEmail, modifier', "'{$name}', '{$subject}', '{$body}', '{$senderName}', '{$senderEmail}', {$modifier}")) { return false; } return true; }
/** * Send email to object for review author * @param $ofrAssignment ObjectForReviewAssignment * @param $journal Journal * @param $emailKey string */ function sendReminder($ofrAssignment, $journal, $emailKey) { $journalId = $journal->getId(); $author =& $ofrAssignment->getUser(); $objectForReview =& $ofrAssignment->getObjectForReview(); $editor =& $objectForReview->getEditor(); $paramArray = array('authorName' => strip_tags($author->getFullName()), 'objectForReviewTitle' => '"' . strip_tags($objectForReview->getTitle()) . '"', 'objectForReviewDueDate' => date('l, F j, Y', strtotime($ofrAssignment->getDateDue())), 'submissionUrl' => Request::url($journal->getPath(), 'author', 'submit'), 'editorialContactSignature' => strip_tags($editor->getContactSignature())); import('classes.mail.MailTemplate'); $mail = new MailTemplate($emailKey); $mail->setReplyTo($editor->getEmail(), $editor->getFullName()); $mail->addRecipient($author->getEmail(), $author->getFullName()); $mail->setSubject($mail->getSubject($journal->getPrimaryLocale())); $mail->setBody($mail->getBody($journal->getPrimaryLocale())); $mail->assignParams($paramArray); $mail->send(); $ofrAssignment->setDateReminded(Core::getCurrentDate()); $ofrAssignmentDao =& DAORegistry::getDAO('ObjectForReviewAssignmentDAO'); $ofrAssignmentDao->updateObject($ofrAssignment); }
function sendReminder($registration, $conference, $schedConf, $emailKey) { $userDao =& DAORegistry::getDAO('UserDAO'); $registrationTypeDao =& DAORegistry::getDAO('RegistrationTypeDAO'); $schedConfName = $schedConf->getSchedConfTitle(); $schedConfId = $schedConf->getId(); $user =& $userDao->getUser($registration->getUserId()); if (!isset($user)) { return false; } $registrationType =& $registrationTypeDao->getRegistrationType($registration->getTypeId()); $registrationName = $schedConf->getSetting('registrationName'); $registrationEmail = $schedConf->getSetting('registrationEmail'); $registrationPhone = $schedConf->getSetting('registrationPhone'); $registrationFax = $schedConf->getSetting('registrationFax'); $registrationMailingAddress = $schedConf->getSetting('registrationMailingAddress'); $registrationContactSignature = $registrationName; if ($registrationMailingAddress != '') { $registrationContactSignature .= "\n" . $registrationMailingAddress; } if ($registrationPhone != '') { $registrationContactSignature .= "\n" . AppLocale::Translate('user.phone') . ': ' . $registrationPhone; } if ($registrationFax != '') { $registrationContactSignature .= "\n" . AppLocale::Translate('user.fax') . ': ' . $registrationFax; } $registrationContactSignature .= "\n" . AppLocale::Translate('user.email') . ': ' . $registrationEmail; $paramArray = array('registrantName' => $user->getFullName(), 'conferenceName' => $conferenceName, 'schedConfName' => $schedConfName, 'registrationType' => $registrationType->getSummaryString(), 'expiryDate' => $registration->getDateEnd(), 'username' => $user->getUsername(), 'registrationContactSignature' => $registrationContactSignature); import('mail.MailTemplate'); $mail = new MailTemplate($emailKey, $conference->getPrimaryLocale()); $mail->setFrom($registrationEmail, $registrationName); $mail->addRecipient($user->getEmail(), $user->getFullName()); $mail->setSubject($mail->getSubject($conference->getPrimaryLocale())); $mail->setBody($mail->getBody($conference->getPrimaryLocale())); $mail->assignParams($paramArray); $mail->send(); }
/** * Internal function to prepare notification email */ function &_prepareNotificationEmail($mailTemplateKey) { $userDao =& DAORegistry::getDAO('UserDAO'); $subscriptionTypeDao =& DAORegistry::getDAO('SubscriptionTypeDAO'); $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO'); $journal =& Request::getJournal(); $journalName = $journal->getLocalizedTitle(); $journalId = $journal->getId(); $user =& $userDao->getUser($this->subscription->getUserId()); $subscriptionType =& $subscriptionTypeDao->getSubscriptionType($this->subscription->getTypeId()); $subscriptionName = $journalSettingsDao->getSetting($journalId, 'subscriptionName'); $subscriptionEmail = $journalSettingsDao->getSetting($journalId, 'subscriptionEmail'); $subscriptionPhone = $journalSettingsDao->getSetting($journalId, 'subscriptionPhone'); $subscriptionFax = $journalSettingsDao->getSetting($journalId, 'subscriptionFax'); $subscriptionMailingAddress = $journalSettingsDao->getSetting($journalId, 'subscriptionMailingAddress'); $subscriptionContactSignature = $subscriptionName; if ($subscriptionMailingAddress != '') { $subscriptionContactSignature .= "\n" . $subscriptionMailingAddress; } if ($subscriptionPhone != '') { $subscriptionContactSignature .= "\n" . Locale::translate('user.phone') . ': ' . $subscriptionPhone; } if ($subscriptionFax != '') { $subscriptionContactSignature .= "\n" . Locale::translate('user.fax') . ': ' . $subscriptionFax; } $subscriptionContactSignature .= "\n" . Locale::translate('user.email') . ': ' . $subscriptionEmail; $paramArray = array('subscriberName' => $user->getFullName(), 'journalName' => $journalName, 'subscriptionType' => $subscriptionType->getSummaryString(), 'username' => $user->getUsername(), 'subscriptionContactSignature' => $subscriptionContactSignature); import('classes.mail.MailTemplate'); $mail = new MailTemplate($mailTemplateKey); $mail->setFrom($subscriptionEmail, $subscriptionName); $mail->addRecipient($user->getEmail(), $user->getFullName()); $mail->setSubject($mail->getSubject($journal->getPrimaryLocale())); $mail->setBody($mail->getBody($journal->getPrimaryLocale())); $mail->assignParams($paramArray); return $mail; }
/** * Fetch the form. * @param $request Request * @param $template string the template to render the form * @return string the rendered form */ function fetch($request, $template = CITATION_FORM_FULL_TEMPLATE) { // Instantiate objects used throughout. $user =& $request->getUser(); $router =& $request->getRouter(); $context =& $router->getContext($request); $citation =& $this->getCitation(); $assocObject =& $this->getAssocObject(); $citationDao =& DAORegistry::getDAO('CitationDAO'); /* @var $citationDao CitationDAO */ ///////////////////////////////////////////////////// // Raw citation editing and citation comparison // (comparison template and full template): // // 1) Messages // // Add the citation to the template. $templateMgr =& TemplateManager::getManager($request); $templateMgr->assign_by_ref('citation', $citation); // Does the form contain unsaved changes? $templateMgr->assign('unsavedChanges', $this->getUnsavedChanges()); if ($citation->getId()) { // // 2) Citation output preview // // Either the initData() or validate() method should have prepared // a meta-data representation of the citation. // NB: Our template and output filters currently only handle // one meta-data description. Any others but the first one are ignored. assert(!empty($this->_metadataDescriptions)); $metadataDescription = array_pop($this->_metadataDescriptions); // Generate the formatted citation output from the description. $citationOutputFilter =& $citationDao->instantiateCitationOutputFilter($context); $generatedCitation = $citationOutputFilter->execute($metadataDescription); foreach ($citationOutputFilter->getErrors() as $citationGenerationError) { $this->addError('rawCitation', $citationGenerationError); } $citationOutputFilter->clearErrors(); // Strip formatting and the Google Scholar tag so that we get a plain // text string that is comparable with the raw citation. $generatedCitation = trim(str_replace(GOOGLE_SCHOLAR_TAG, '', strip_tags($generatedCitation))); // Compare the raw and the formatted citation and add the result to the template. $citationDiff = String::diff($this->getData('rawCitation'), $generatedCitation); $templateMgr->assign('citationDiff', $citationDiff); $templateMgr->assign('currentOutputFilter', $citationOutputFilter->getDisplayName()); // // 3) Raw citation editing // // Retrieve all available citation filters $availableParserFilters =& $citationDao->getCitationFilterInstances($context->getId(), CITATION_PARSER_FILTER_GROUP, array(), true); $templateMgr->assign_by_ref('availableParserFilters', $availableParserFilters); $availableLookupFilters =& $citationDao->getCitationFilterInstances($context->getId(), CITATION_LOOKUP_FILTER_GROUP, array(), true); $templateMgr->assign_by_ref('availableLookupFilters', $availableLookupFilters); // Did the user disable the raw citation editing warning? $userSettingsDao =& DAORegistry::getDAO('UserSettingsDAO'); $rawCitationEditingWarningHide = (bool) $userSettingsDao->getSetting($user->getId(), 'citation-editor-hide-raw-editing-warning'); $templateMgr->assign('rawCitationEditingWarningHide', $rawCitationEditingWarningHide); } if ($template == CITATION_FORM_FULL_TEMPLATE) { ///////////////////////////////////////////////////// // Citation improvement options // (full template only): // // 1) Manual editing // // Available fields $availableFields = array(); foreach ($this->_citationProperties as $fieldName => $property) { // Prepare property information for the view. $availableFields[$fieldName] = array('displayName' => __($property->getDisplayName()), 'required' => $property->getMandatory() ? 'true' : 'false'); // In the case of vocabulary based properties: Retrieve // the vocabulary to be displayed as a drop down. $availableFields[$fieldName]['options'] = null; $controlledVocabDao = null; foreach ($property->getAllowedTypes() as $allowedType => $allowedTypeParams) { if ($allowedType == METADATA_PROPERTY_TYPE_VOCABULARY) { assert(count($allowedTypeParams) == 1); $vocabName = $allowedTypeParams[0]; $vocabNameParts = explode(':', $vocabName); $vocabNamePartsCount = count($vocabNameParts); assert($vocabNamePartsCount == 1 || $vocabNamePartsCount == 3); if ($vocabNamePartsCount == 1) { // assume a site-wide vocabulary $symbolic = $vocabName; $assocType = $assocId = 0; } else { // assume a context-specific vocabulary list($symbolic, $assocType, $assocId) = $vocabNameParts; } // Enumerate the identified vocabulary. if (is_null($controlledVocabDao)) { $controlledVocabDao =& DAORegistry::getDAO('ControlledVocabDAO'); } $availableFields[$fieldName]['options'] = $controlledVocabDao->enumerateBySymbolic($symbolic, $assocType, $assocId); } } } // Sort available fields alphabetically. $availableFields = $this->_orderByDisplayName($availableFields); $templateMgr->assign_by_ref('availableFields', $availableFields); // // 2) Citation Services Query // // Nothing to do: Lookup filters have already been assigned for // raw citation editing (see above). // // 3) Google Scholar // // Nothing to do. // // 4) Author Query // // Add the author query text to the template. $author =& $assocObject->getUser(); $user =& $request->getUser(); $emailParams = array('authorFirstName' => strip_tags($author->getFirstName()), 'authorLastName' => strip_tags($author->getLastName()), 'userFirstName' => strip_tags($user->getFirstName()), 'userLastName' => strip_tags($user->getLastName()), 'articleTitle' => strip_tags($assocObject->getLocalizedTitle()), 'rawCitation' => strip_tags($citation->getRawCitation())); import('classes.mail.MailTemplate'); $mail = new MailTemplate('CITATION_EDITOR_AUTHOR_QUERY', null, false, null, true, true); $mail->assignParams($emailParams); $templateMgr->assign('authorQuerySubject', $mail->getSubject()); $templateMgr->assign('authorQueryBody', $mail->getBody()); ///////////////////////////////////////////////////// // Expert Citation Services Results // (full template only): // // Citation source tabs $citationSourceTabs = array(); $locale = AppLocale::getLocale(); // Run through all source descriptions and extract statements. $sourceDescriptions =& $citation->getSourceDescriptions(); assert(is_array($sourceDescriptions)); foreach ($sourceDescriptions as $sourceDescription) { $sourceDescriptionId = $sourceDescription->getId(); $metadataSchema =& $sourceDescription->getMetadataSchema(); // Use the display name of the description for the tab. // We can safely use the 'displayName' key here as // the keys representing statements will be namespaced. $citationSourceTabs[$sourceDescriptionId]['displayName'] = $sourceDescription->getDisplayName(); // Prepare the description's statements as a sub-array. $thisDescription = array(); foreach ($sourceDescription->getStatements() as $propertyName => $value) { $property =& $metadataSchema->getProperty($propertyName); // Handle translation if ($property->getTranslated()) { assert(isset($value[$locale])); $value = $value[$locale]; } $sourcePropertyId = $sourceDescriptionId . '-' . $metadataSchema->getNamespacedPropertyId($propertyName); $sourcePropertyValue = $this->_getStringValueFromMetadataStatement($property, $value); $thisDescription[$sourcePropertyId] = array('displayName' => $property->getDisplayName(), 'value' => $sourcePropertyValue); } // Order description properties in the sub-array by display name. $thisDescription = $this->_orderByDisplayName($thisDescription); // Add the description sub-array to the descriptons list. $citationSourceTabs[$sourceDescriptionId]['statements'] = $thisDescription; unset($thisDescription); // Remove source descriptions that don't have data. if (!isset($citationSourceTabs[$sourceDescriptionId]['statements'])) { unset($citationSourceTabs[$sourceDescriptionId]); } } $templateMgr->assign_by_ref('citationSourceTabs', $citationSourceTabs); ///////////////////////////////////////////////////// // Form level actions // (full template only): // // Set the approval state. $citationApproved = $citation->getCitationState() == CITATION_APPROVED ? true : false; $templateMgr->assign('citationApproved', $citationApproved); // Auto-add client-side validation // FIXME: Move to JS framework's AjaxFormHandler, also see #6442 $templateMgr->assign('validateId', 'citationForm'); } return parent::fetch($request, $template); }
/** * Send notification email to Subscription Manager when online payment is completed. */ function sendOnlinePaymentNotificationEmail(&$subscription, $mailTemplateKey) { $validKeys = array('SUBSCRIPTION_PURCHASE_INDL', 'SUBSCRIPTION_PURCHASE_INSTL', 'SUBSCRIPTION_RENEW_INDL', 'SUBSCRIPTION_RENEW_INSTL'); if (!in_array($mailTemplateKey, $validKeys)) { return false; } $journal =& Request::getJournal(); $subscriptionContactName = $journal->getSetting('subscriptionName'); $subscriptionContactEmail = $journal->getSetting('subscriptionEmail'); if (empty($subscriptionContactEmail)) { $subscriptionContactEmail = $journal->getSetting('contactEmail'); $subscriptionContactName = $journal->getSetting('contactName'); } if (empty($subscriptionContactEmail)) { return false; } $userDao =& DAORegistry::getDAO('UserDAO'); $user =& $userDao->getUser($subscription->getUserId()); $subscriptionTypeDao =& DAORegistry::getDAO('SubscriptionTypeDAO'); $subscriptionType =& $subscriptionTypeDao->getSubscriptionType($subscription->getTypeId()); $roleDao =& DAORegistry::getDAO('RoleDAO'); if ($roleDao->getJournalUsersRoleCount($journal->getId(), ROLE_ID_SUBSCRIPTION_MANAGER) > 0) { $rolePath = $roleDao->getRolePath(ROLE_ID_SUBSCRIPTION_MANAGER); } else { $rolePath = $roleDao->getRolePath(ROLE_ID_JOURNAL_MANAGER); } $paramArray = array('subscriptionType' => $subscriptionType->getSummaryString(), 'userDetails' => $user->getContactSignature(), 'membership' => $subscription->getMembership()); switch ($mailTemplateKey) { case 'SUBSCRIPTION_PURCHASE_INDL': case 'SUBSCRIPTION_RENEW_INDL': $paramArray['subscriptionUrl'] = Request::url($journal->getPath(), $rolePath, 'editSubscription', 'individual', array($subscription->getId())); break; case 'SUBSCRIPTION_PURCHASE_INSTL': case 'SUBSCRIPTION_RENEW_INSTL': $paramArray['subscriptionUrl'] = Request::url($journal->getPath(), $rolePath, 'editSubscription', 'institutional', array($subscription->getId())); $paramArray['institutionName'] = $subscription->getInstitutionName(); $paramArray['institutionMailingAddress'] = $subscription->getInstitutionMailingAddress(); $paramArray['domain'] = $subscription->getDomain(); $paramArray['ipRanges'] = $subscription->getIPRangesString(); break; } import('classes.mail.MailTemplate'); $mail = new MailTemplate($mailTemplateKey); $mail->setFrom($subscriptionContactEmail, $subscriptionContactName); $mail->addRecipient($subscriptionContactEmail, $subscriptionContactName); $mail->setSubject($mail->getSubject($journal->getPrimaryLocale())); $mail->setBody($mail->getBody($journal->getPrimaryLocale())); $mail->assignParams($paramArray); $mail->send(); }