Example usage for com.liferay.portal.util PropsValues ANNOUNCEMENTS_EMAIL_TO_ADDRESS

List of usage examples for com.liferay.portal.util PropsValues ANNOUNCEMENTS_EMAIL_TO_ADDRESS

Introduction

In this page you can find the example usage for com.liferay.portal.util PropsValues ANNOUNCEMENTS_EMAIL_TO_ADDRESS.

Prototype

String ANNOUNCEMENTS_EMAIL_TO_ADDRESS

To view the source code for com.liferay.portal.util PropsValues ANNOUNCEMENTS_EMAIL_TO_ADDRESS.

Click Source Link

Usage

From source file:com.liferay.portlet.announcements.service.impl.AnnouncementsEntryLocalServiceImpl.java

License:Open Source License

protected void notifyUsers(AnnouncementsEntry entry) throws PortalException, SystemException {

    Company company = companyPersistence.findByPrimaryKey(entry.getCompanyId());

    String className = entry.getClassName();
    long classPK = entry.getClassPK();

    String fromName = PrefsPropsUtil.getStringFromNames(entry.getCompanyId(),
            PropsKeys.ANNOUNCEMENTS_EMAIL_FROM_NAME, PropsKeys.ADMIN_EMAIL_FROM_NAME);
    String fromAddress = PrefsPropsUtil.getStringFromNames(entry.getCompanyId(),
            PropsKeys.ANNOUNCEMENTS_EMAIL_FROM_ADDRESS, PropsKeys.ADMIN_EMAIL_FROM_ADDRESS);

    String toName = PropsValues.ANNOUNCEMENTS_EMAIL_TO_NAME;
    String toAddress = PropsValues.ANNOUNCEMENTS_EMAIL_TO_ADDRESS;

    LinkedHashMap<String, Object> params = new LinkedHashMap<String, Object>();

    params.put("announcementsDeliveryEmailOrSms", entry.getType());

    if (classPK > 0) {
        if (className.equals(Group.class.getName())) {
            Group group = groupPersistence.findByPrimaryKey(classPK);

            toName = group.getName();//from w  w w. j av a  2  s  .  c o m

            params.put("usersGroups", classPK);
        } else if (className.equals(Organization.class.getName())) {
            Organization organization = organizationPersistence.findByPrimaryKey(classPK);

            toName = organization.getName();

            params.put("usersOrgs", classPK);
        } else if (className.equals(Role.class.getName())) {
            Role role = rolePersistence.findByPrimaryKey(classPK);

            toName = role.getName();

            params.put("usersRoles", classPK);
        } else if (className.equals(UserGroup.class.getName())) {
            UserGroup userGroup = userGroupPersistence.findByPrimaryKey(classPK);

            toName = userGroup.getName();

            params.put("usersUserGroups", classPK);
        }
    }

    List<User> users = null;

    if (className.equals(User.class.getName())) {
        User user = userPersistence.findByPrimaryKey(classPK);

        toName = user.getFullName();
        toAddress = user.getEmailAddress();

        users = new ArrayList<User>();

        if (Validator.isNotNull(toAddress)) {
            users.add(user);
        }
    } else {
        users = userLocalService.search(company.getCompanyId(), null, WorkflowConstants.STATUS_APPROVED, params,
                QueryUtil.ALL_POS, QueryUtil.ALL_POS, (OrderByComparator) null);
    }

    if (_log.isDebugEnabled()) {
        _log.debug("Notifying " + users.size() + " users");
    }

    boolean notifyUsers = false;

    SubscriptionSender subscriptionSender = new SubscriptionSender();

    for (User user : users) {
        AnnouncementsDelivery announcementsDelivery = announcementsDeliveryLocalService
                .getUserDelivery(user.getUserId(), entry.getType());

        if (announcementsDelivery.isEmail()) {
            subscriptionSender.addRuntimeSubscribers(user.getEmailAddress(), user.getFullName());

            notifyUsers = true;
        }

        if (announcementsDelivery.isSms()) {
            String smsSn = user.getContact().getSmsSn();

            subscriptionSender.addRuntimeSubscribers(smsSn, user.getFullName());

            notifyUsers = true;
        }
    }

    if (!notifyUsers) {
        return;
    }

    String subject = ContentUtil.get(PropsValues.ANNOUNCEMENTS_EMAIL_SUBJECT);
    String body = ContentUtil.get(PropsValues.ANNOUNCEMENTS_EMAIL_BODY);

    subscriptionSender.setBody(body);
    subscriptionSender.setCompanyId(entry.getCompanyId());
    subscriptionSender.setContextAttributes("[$ENTRY_CONTENT$]", entry.getContent(), "[$ENTRY_ID$]",
            entry.getEntryId(), "[$ENTRY_TITLE$]", entry.getTitle(), "[$ENTRY_TYPE$]",
            LanguageUtil.get(company.getLocale(), entry.getType()), "[$ENTRY_URL$]", entry.getUrl(),
            "[$PORTLET_NAME$]",
            LanguageUtil.get(company.getLocale(), (entry.isAlert() ? "alert" : "announcement")));
    subscriptionSender.setFrom(fromAddress, fromName);
    subscriptionSender.setHtmlFormat(true);
    subscriptionSender.setMailId("announcements_entry", entry.getEntryId());
    subscriptionSender.setPortletId(PortletKeys.ANNOUNCEMENTS);
    subscriptionSender.setScopeGroupId(entry.getGroupId());
    subscriptionSender.setSubject(subject);
    subscriptionSender.setUserId(entry.getUserId());

    subscriptionSender.addRuntimeSubscribers(toAddress, toName);

    subscriptionSender.flushNotificationsAsync();
}