public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { if (request.getParameter("cmd") != null && request.getParameter("cmd").equals(Constants.ADD)) { ActionErrors ae = super.validate(mapping, request); if (!UtilMethods.isSet(mailingList) && !UtilMethods.isSet(userFilterInode)) { ae.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("Please-select-a-Mailing-List")); } if ((UtilMethods.isSet(webExpirationDate)) && (expirationDate == null)) { ae.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.campaign.error.expiration.date.incomplete")); } if (expirationDate != null && (expirationDate.before(new Date()))) { ae.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.campaign.error.wrong.expiration.date")); } return ae; } return null; }
@SuppressWarnings("unchecked") public ActionForward unspecified( ActionMapping rMapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionErrors errors = new ActionErrors(); // Email parameters HttpSession session = request.getSession(); Host currentHost = hostWebAPI.getCurrentHost(request); User currentUser = (User) session.getAttribute(WebKeys.CMS_USER); String method = request.getMethod(); String errorURL = request.getParameter("errorURL"); errorURL = (!UtilMethods.isSet(errorURL) ? request.getHeader("referer") : errorURL); if (errorURL.indexOf("?") > -1) { errorURL = errorURL.substring(0, errorURL.lastIndexOf("?")); } String x = request.getRequestURI(); if (request.getParameterMap().size() < 2) { return null; } // Checking for captcha boolean useCaptcha = Config.getBooleanProperty("FORCE_CAPTCHA", true); if (!useCaptcha) { useCaptcha = new Boolean(request.getParameter("useCaptcha")).booleanValue(); } String captcha = request.getParameter("captcha"); if (useCaptcha) { Captcha captchaObj = (Captcha) session.getAttribute(Captcha.NAME); String captchaSession = captchaObj != null ? captchaObj.getAnswer() : null; if (captcha == null && Config.getBooleanProperty("FORCE_CAPTCHA", true)) { response .getWriter() .write( "Captcha is required to submit this form ( FORCE_CAPTCHA=true ).<br>To change this, edit the dotmarketing-config.properties and set FORCE_CAPTCHA=false"); return null; } if (!UtilMethods.isSet(captcha) || !UtilMethods.isSet(captchaSession) || !captcha.equals(captchaSession)) { errors.add( Globals.ERROR_KEY, new ActionMessage("message.contentlet.required", "Validation Image")); request.setAttribute(Globals.ERROR_KEY, errors); session.setAttribute(Globals.ERROR_KEY, errors); String queryString = request.getQueryString(); String invalidCaptchaURL = request.getParameter("invalidCaptchaReturnUrl"); if (!UtilMethods.isSet(invalidCaptchaURL)) { invalidCaptchaURL = errorURL; } ActionForward af = new ActionForward(); af.setRedirect(true); if (UtilMethods.isSet(queryString)) { af.setPath(invalidCaptchaURL + "?" + queryString + "&error=Validation-Image"); } else { af.setPath(invalidCaptchaURL + "?error=Validation-Image"); } return af; } } Map<String, Object> parameters = null; if (request instanceof UploadServletRequest) { UploadServletRequest uploadReq = (UploadServletRequest) request; parameters = new HashMap<String, Object>(uploadReq.getParameterMap()); for (Entry<String, Object> entry : parameters.entrySet()) { if (entry.getKey().toLowerCase().indexOf("file") > -1 && !entry.getKey().equals("attachFiles")) { parameters.put(entry.getKey(), uploadReq.getFile(entry.getKey())); } } } else { parameters = new HashMap<String, Object>(request.getParameterMap()); } Set<String> toValidate = new java.util.HashSet<String>(parameters.keySet()); // Enhancing the ignored parameters not to be send in the email String ignoredParameters = (String) EmailFactory.getMapValue("ignore", parameters); if (ignoredParameters == null) { ignoredParameters = ""; } ignoredParameters += ":useCaptcha:captcha:invalidCaptchaReturnUrl:return:returnUrl:errorURL:ignore:to:from:cc:bcc:dispatch:order:prettyOrder:autoReplyTo:autoReplyFrom:autoReplyText:autoReplySubject:"; parameters.put("ignore", ignoredParameters); // getting categories from inodes // getting parent category name and child categories name // and replacing the "categories" parameter String categories = ""; String[] categoriesArray = request.getParameterValues("categories"); if (categoriesArray != null) { HashMap hashCategories = new HashMap<String, String>(); for (int i = 0; i < categoriesArray.length; i++) { Category node = (Category) InodeFactory.getInode(categoriesArray[i], Category.class); Category parent = (Category) InodeFactory.getParentOfClass(node, Category.class); String parentCategoryName = parent.getCategoryName(); if (hashCategories.containsKey(parentCategoryName)) { String childCategoryName = (String) hashCategories.get(parentCategoryName); if (UtilMethods.isSet(childCategoryName)) { childCategoryName += ", "; } childCategoryName += node.getCategoryName(); hashCategories.put(parentCategoryName, childCategoryName); } else { hashCategories.put(parentCategoryName, node.getCategoryName()); } } Set<String> keySet = hashCategories.keySet(); for (String stringKey : keySet) { if (UtilMethods.isSet(categories)) { categories += "; "; } categories += stringKey + " : " + (String) hashCategories.get(stringKey); parameters.put(stringKey, (String) hashCategories.get(stringKey)); } parameters.remove("categories"); } WebForm webForm = new WebForm(); try { /*validation parameter should ignore the returnUrl and erroURL field in the spam check*/ String[] removeParams = ignoredParameters.split(":"); for (String param : removeParams) { toValidate.remove(param); } parameters.put("request", request); parameters.put("response", response); // Sending the email webForm = EmailFactory.sendParameterizedEmail(parameters, toValidate, currentHost, currentUser); webForm.setCategories(categories); if (UtilMethods.isSet(request.getParameter("createAccount")) && request.getParameter("createAccount").equals("true")) { // if we create account set to true we create a user account and add user comments. createAccount(webForm, request); try { String userInode = webForm.getUserInode(); String customFields = webForm.getCustomFields(); customFields += " User Inode = " + String.valueOf(userInode) + " | "; webForm.setCustomFields(customFields); } catch (Exception e) { } } if (UtilMethods.isSet(webForm.getFormType())) { HibernateUtil.saveOrUpdate(webForm); } if (request.getParameter("return") != null) { ActionForward af = new ActionForward(SecurityUtils.stripReferer(request, request.getParameter("return"))); af.setRedirect(true); return af; } else if (request.getParameter("returnUrl") != null) { ActionForward af = new ActionForward( SecurityUtils.stripReferer(request, request.getParameter("returnUrl"))); af.setRedirect(true); return af; } else { return rMapping.findForward("thankYouPage"); } } catch (DotRuntimeException e) { errors.add(Globals.ERROR_KEY, new ActionMessage("error.processing.your.email")); request.getSession().setAttribute(Globals.ERROR_KEY, errors); String queryString = request.getQueryString(); if (queryString == null) { java.util.Enumeration<String> parameterNames = request.getParameterNames(); queryString = ""; String parameterName; for (; parameterNames.hasMoreElements(); ) { parameterName = parameterNames.nextElement(); if (0 < queryString.length()) { queryString = queryString + "&" + parameterName + "=" + UtilMethods.encodeURL(request.getParameter(parameterName)); } else { queryString = parameterName + "=" + UtilMethods.encodeURL(request.getParameter(parameterName)); } } } ActionForward af; if (UtilMethods.isSet(queryString)) { af = new ActionForward(SecurityUtils.stripReferer(request, errorURL + "?" + queryString)); } else { af = new ActionForward(SecurityUtils.stripReferer(request, errorURL)); } af.setRedirect(true); return af; } }