}
for (; parameterNames.hasMoreElements();) {
parameterName = parameterNames.nextElement();
Field field = st.getFieldVar(parameterName);
String fieldTypeStr = field!=null?field.getFieldType():"";
Field.FieldType fieldType = Field.FieldType.getFieldType(fieldTypeStr);
String[] fieldValues = request.getParameterValues(parameterName);
String value = "";
if(fieldValues.length>1){
for(String val:fieldValues){
value+=","+val;
}
parameters.put(parameterName,value.substring(1));
}else{
parameters.put(parameterName,fieldValues[0]);
}
if(fieldType == null || (fieldType!=null && !fieldType.equals(Field.FieldType.IMAGE) && !fieldType.equals(Field.FieldType.FILE)&& !fieldType.equals(Field.FieldType.BINARY))){
parametersName.add(parameterName);
String[] vals = request.getParameterValues(parameterName);
values.add(vals);
if(!parameterName.equals("dispatch") && !parameterName.equals("captcha") && !parameterName.equals("options") && !parameterName.equals("structure") && !parameterName.equals("userId") && !parameterName.equals("referrer")){
if(!SubmitContentUtil.imageOrFileParam(st, parameterName) && !UtilMethods.isImage(parameterName)){
for(String val : vals){
if(val.length() < 512) {
paramsBuff.append("&").append(parameterName).append("=").append(encoder.encode(val));
}
}
}
}
}
else {
parametersfileName.add(parameterName);
String[] vals = request.getParameterValues(parameterName);
filevalues.add(vals);
if(!parameterName.equals("dispatch") && !parameterName.equals("captcha") && !parameterName.equals("options") && !parameterName.equals("structure") && !parameterName.equals("userId") && !parameterName.equals("referrer")){
if(!SubmitContentUtil.imageOrFileParam(st, parameterName)){
for(String val : vals){
paramsBuff.append("&").append(parameterName).append("=").append(encoder.encode(val));
}
}
}
}
}
params=paramsBuff.toString();
/*
* Checking for captcha
*/
if(useCaptcha){
if(!CaptchaUtil.isValidImageCaptcha(request)){
User user = com.liferay.portal.util.PortalUtil.getUser(request);
String mes=LanguageUtil.get(user, "org.dotcms.frontend.content.submission.captcha.validation.image");
mes = mes.replace(":", "");
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.contentlet.required", mes));
saveMessages(session, errors);
if(errors.size() > 0 && UtilMethods.isSet(params)){
referrer=referrer+"?"+params.substring(1);
af = new ActionForward(referrer);
af.setRedirect(true);
}
return af;
}
}
if(useAudioCaptcha){
if(!CaptchaUtil.isValidAudioCaptcha(request)){
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.contentlet.required","Validation Sound"));
saveMessages(session, errors);
if(errors.size() > 0 && UtilMethods.isSet(params)){
referrer=referrer+"?"+params.substring(1);
af = new ActionForward(referrer);
af.setRedirect(true);
}
return af;
}
}
/**
* Get Categories
*/
ArrayList<Category> cats = new ArrayList<Category>();
String[] arr = request.getParameterValues("categories") == null?new String[0]:request.getParameterValues("categories");
if (arr != null && arr.length > 0) {
for (int i = 0; i < arr.length; i++) {
if(UtilMethods.isSet(arr[i])){
Category c = catAPI.find(arr[i], SubmitContentUtil.getUserFromId(userId), true);
if(UtilMethods.isSet(c))
cats.add(c);
}
}
}
for (int i = 0; i < parametersName.size(); ++i) {
Field field = st.getFieldVar(parametersName.get(i));
String[] fieldValue = values.get(i);
int size = 0;
if(fieldValue!= null && !fieldValue[0].equals("") ){
size=1;
if (fieldValue[0].contains(",")) {
String[] fieldValueaux = fieldValue[0].split(",");
fieldValue = fieldValueaux;
size = fieldValue.length;
}
}
for (int j = 0; j < size; j++) {
if ((field != null)&& (field.getFieldType() != null)&& (field.getFieldType().equals(Field.FieldType.CATEGORY.toString()))){
Category c = catAPI.find(com.dotmarketing.util.VelocityUtil.cleanVelocity(fieldValue[j].trim()),SubmitContentUtil.getUserFromId(userId), true);
if(UtilMethods.isSet(c))
cats.add(c);
}
}
}
List<Map<String,Object>> fileParameters = new ArrayList<Map<String,Object>>();
DotContentletValidationException cve = new DotContentletValidationException("Contentlet's fields are not valid");
boolean hasError = false;
/**
* Get image fields
*/
imageFields = StructureFactory.getImagesFieldsList(st, parametersfileName, filevalues);
if(imageFields.size() > 0){
for(Field f : imageFields){
java.io.File uploadedFile = uploadReq.getFile(f.getVelocityVarName());
String title = uploadReq.getFileName(f.getVelocityVarName());
if(f.isRequired() && !UtilMethods.isSet(title)){
cve.addRequiredField(f);
hasError = true;
continue;
}
if(uploadedFile!=null && uploadedFile.length()> 0){
String contentType = uploadReq.getContentType(f.getVelocityVarName());
if(contentType.equals("image/png") || contentType.equals("image/gif") || contentType.equals("image/jpeg")){
Map<String,Object> temp = new HashMap<String,Object>();
temp.put("field", f);
temp.put("title", title);
temp.put("file", uploadedFile);
temp.put("host", host);
fileParameters.add(temp);
}else{
cve.addBadTypeField(f);
hasError = true;
imageNames.add(title);
continue;
}
}
}
}
/**
* Get file fields
*/
//http://jira.dotmarketing.net/browse/DOTCMS-3463
Map <String, Object> tempBinaryValues= new HashMap <String, Object>();
fileFields = StructureFactory.getFilesFieldsList(st, parametersfileName, filevalues);
List <Field> fields = st.getFields();
for(Field field:fields){
Map <String, Object> binaryvalues= new HashMap <String, Object>();
if (field.getFieldType().equals("binary"))
{
tempBinaryValues=processBinaryTempFileUpload( field.getVelocityVarName(), request, field.getFieldContentlet()) ;
binaryvalues.put("field", field);
parametersName.add(tempBinaryValues.get("parameterName").toString());
Object ob = tempBinaryValues.get("parameterValues");
if(ob != null){
File f = (File)ob;
binaryvalues.put("file", f);
values.add(new String []{f.getAbsolutePath()});
}else{
binaryvalues.put(field.getVelocityVarName(), null);
values.add(new String []{""});
}
fileParameters.add(binaryvalues);
}