/* * Copyright (C) 2003-2007 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.forum.service.conf; import java.util.TimeZone; import org.exoplatform.commons.utils.ExoProperties; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.container.xml.InitParams; import org.exoplatform.container.xml.PropertiesParam; import org.exoplatform.forum.service.ForumService; import org.exoplatform.forum.service.UserProfile; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import org.exoplatform.services.organization.User; import org.exoplatform.services.organization.UserEventListener; /** * Created by The eXo Platform SARL Author : Hung Nguyen Quang * hung.nguyen@exoplatform.com Nov 23, 2007 3:09:21 PM */ public class NewUserListener extends UserEventListener { private static Log log = ExoLogger.getLogger(NewUserListener.class); private UserProfile profileTemplate; public NewUserListener(InitParams params) throws Exception { if (params == null) return; PropertiesParam propsParams = params.getPropertiesParam("user.profile.setting"); ExoProperties props = propsParams.getProperties(); profileTemplate = new UserProfile(); String timeZoneNumber = props.getProperty("timeZone") != null ? props.getProperty("timeZone") : "GMT"; double timeZone = 0.0; timeZone = -TimeZone.getTimeZone(timeZoneNumber).getRawOffset() * 1.0 / 3600000; profileTemplate.setTimeZone(timeZone); String shortDateFormat = props.getProperty("shortDateFormat") != null ? props.getProperty("shortDateFormat") : "MM/dd/yyyy"; profileTemplate.setShortDateFormat(shortDateFormat); String longDateFormat = props.getProperty("longDateFormat") != null ? props.getProperty("longDateFormat") : "DDD,MMM dd,yyyy"; profileTemplate.setLongDateFormat(longDateFormat); String timeFormat = (props.getProperty("timeFormat") != null) ? props.getProperty("timeFormat") : "hh:mm a"; profileTemplate.setTimeFormat(timeFormat); String strMaxTopic = props.getProperty("maxTopic"); int maxTopic = 10; try { maxTopic = Integer.parseInt(strMaxTopic); } catch (NumberFormatException nfe) { log.warn("maxTopic is not in format", nfe); } profileTemplate.setMaxTopicInPage(maxTopic); String strMaxPost = props.getProperty("maxPost"); int maxPost = 10; try { maxPost = Integer.parseInt(strMaxPost); } catch (NumberFormatException nfe) { log.warn("maxPost is not in format", nfe); } profileTemplate.setMaxPostInPage(maxPost); String strShowForumJump = props.getProperty("isShowForumJump"); boolean isShowForumJump = true; isShowForumJump = Boolean.parseBoolean(strShowForumJump); profileTemplate.setIsShowForumJump(isShowForumJump); } public void postSave(User user, boolean isNew) throws Exception { if (isNew) { try { getForumService().addMember(user, profileTemplate); } catch (Exception e) { log.warn("Error while adding new forum member: ", e); } } else { try { getForumService().updateUserProfile(user); } catch (Exception e) { log.warn("Error while updating forum profile: ", e); } } } private ForumService getForumService() { return (ForumService) ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(ForumService.class); } @Override public void postDelete(User user) throws Exception { try { getForumService().removeMember(user); } catch (Exception e) { log.warn("failed to remove member : ", e); } } }