PKPStageParticipantNotifyForm::sendMessage PHP Method

sendMessage() public method

Send a message to a user.
public sendMessage ( $userId, $submission, $request )
$userId int the user id to send email to.
$submission Submission
$request PKPRequest
    function sendMessage($userId, $submission, $request)
    {
        $template = $this->getData('template');
        $fromUser = $request->getUser();
        $email = $this->_getMailTemplate($submission, $template, false);
        $email->setReplyTo($fromUser->getEmail(), $fromUser->getFullName());
        import('lib.pkp.controllers.grid.submissions.SubmissionsListGridCellProvider');
        $dispatcher = $request->getDispatcher();
        $userDao = DAORegistry::getDAO('UserDAO');
        $user = $userDao->getById($userId);
        if (isset($user)) {
            $email->addRecipient($user->getEmail(), $user->getFullName());
            $email->setBody($this->getData('message'));
            $submissionUrl = SubmissionsListGridCellProvider::getUrlByUserRoles($request, $submission, $user->getId());
            // Parameters for various emails
            $email->assignParams(array('participantName' => $user->getFullName(), 'participantUsername' => $user->getUsername(), 'submissionUrl' => $submissionUrl, 'editorialContactName' => $user->getFullname(), 'editorUsername' => $user->getUsername()));
            $email->send($request);
            // remove the INDEX_ and LAYOUT_ tasks if a user has sent the appropriate _COMPLETE email
            switch ($template) {
                case 'COPYEDIT_REQUEST':
                    $this->_addAssignmentTaskNotification($request, NOTIFICATION_TYPE_COPYEDIT_ASSIGNMENT, $user->getId(), $submission->getId());
                    break;
                case 'LAYOUT_REQUEST':
                    $this->_addAssignmentTaskNotification($request, NOTIFICATION_TYPE_LAYOUT_ASSIGNMENT, $user->getId(), $submission->getId());
                    break;
                case 'INDEX_REQUEST':
                    $this->_addAssignmentTaskNotification($request, NOTIFICATION_TYPE_INDEX_ASSIGNMENT, $user->getId(), $submission->getId());
                    break;
            }
            // Create a query
            $queryDao = DAORegistry::getDAO('QueryDAO');
            $query = $queryDao->newDataObject();
            $query->setAssocType(ASSOC_TYPE_SUBMISSION);
            $query->setAssocId($submission->getId());
            $query->setStageId($this->_stageId);
            $query->setSequence(REALLY_BIG_NUMBER);
            $queryDao->insertObject($query);
            $queryDao->resequence(ASSOC_TYPE_SUBMISSION, $submission->getId());
            // Add the current user and message recipient as participants.
            $queryDao->insertParticipant($query->getId(), $user->getId());
            if ($user->getId() != $request->getUser()->getId()) {
                $queryDao->insertParticipant($query->getId(), $request->getUser()->getId());
            }
            // Create a head note
            $noteDao = DAORegistry::getDAO('NoteDAO');
            $headNote = $noteDao->newDataObject();
            $headNote->setUserId($request->getUser()->getId());
            $headNote->setAssocType(ASSOC_TYPE_QUERY);
            $headNote->setAssocId($query->getId());
            $headNote->setDateCreated(Core::getCurrentDate());
            $headNote->setTitle($email->getSubject());
            $headNote->setContents($email->getBody());
            $noteDao->insertObject($headNote);
            $notificationMgr = new NotificationManager();
            $notificationMgr->updateNotification($request, array(NOTIFICATION_TYPE_ASSIGN_COPYEDITOR, NOTIFICATION_TYPE_AWAITING_COPYEDITS, NOTIFICATION_TYPE_ASSIGN_PRODUCTIONUSER, NOTIFICATION_TYPE_AWAITING_REPRESENTATIONS), null, ASSOC_TYPE_SUBMISSION, $submission->getId());
        }
    }