1 22 23 package org.cofax.cms; 24 25 import org.cofax.*; 26 import org.cofax.cds.*; 27 import javax.servlet.http.*; 28 import java.util.*; 29 import javax.mail.*; 30 import javax.mail.internet.*; 31 32 43 44 public class CofaxToolsWorkflow { 45 46 51 public static String validateArticle(DataStore db, HttpServletRequest req, HttpSession session) { 52 53 String itemID = (String ) req.getAttribute("ITEMID"); 54 String fileName = (String ) req.getAttribute("FILENAME"); 55 String delete = (String ) req.getAttribute("DELETEARTICLE"); 56 if ((itemID != null) && (!(itemID.equals("")))) { 57 String message = CofaxToolsDbUtils.setArticle(db, req, session, "1"); 59 if ((delete != null) && (delete.equals("on"))) 60 return (message); 61 } 62 String requestedUrl = req.getScheme() + "://" + req.getHeader("host"); 63 64 CofaxToolsUser user = (CofaxToolsUser) (session.getAttribute("user")); 66 String userFirstName = (String ) user.userInfoHash.get("FIRSTNAME"); 67 String userLastName = (String ) user.userInfoHash.get("LASTNAME"); 68 69 String emailList = getArticleValidators(db, req, session, itemID); 70 if (!(emailList.equals(""))) { 71 String subject = CofaxToolsUtil.getI18NMessage(req.getLocale(),"workflow_mail_subject_new_article_to_validate"); 72 subject=subject.replaceAll("%fileName%",fileName); 73 subject=subject.replaceAll("%itemID%",itemID); 74 75 String mailFrom = getAdminEmail(db, session); 76 77 String messageBody = CofaxToolsUtil.getI18NMessage(req.getLocale(),"workflow_mail_body_new_article_to_validate"); 78 messageBody = messageBody.replaceAll("%userFirstName%", userFirstName); 79 messageBody = messageBody.replaceAll("%userLastName%", userLastName); 80 messageBody = messageBody.replaceAll("%publication%", (String ) req.getAttribute("PUBNAME")); 81 messageBody = messageBody.replaceAll("%headline%", (String ) req.getAttribute("HEADLINE")); 82 messageBody = messageBody.replaceAll("%itemID%", itemID); 83 84 boolean bln = sendMail(emailList, mailFrom, subject, messageBody); 85 86 if (bln) 87 emailList = CofaxToolsUtil.getI18NMessage(req.getLocale(),"workflow_mail_has_been_sent_to") + emailList; 88 else 89 emailList = CofaxToolsUtil.getI18NMessage(req.getLocale(),"workflow_error_while_sending_mail") + emailList; 90 } 91 return ("'" + fileName + "' (" + itemID + ") : " + CofaxToolsUtil.getI18NMessage(req.getLocale(), "tools_articlevalidated") + " " + emailList + "."); 92 93 } 94 95 101 public static String publishArticle(DataStore db, HttpServletRequest req, HttpSession session) { 102 103 String itemID = (String ) req.getAttribute("ITEMID"); 104 String fileName = (String ) req.getAttribute("FILENAME"); 105 String delete = (String ) req.getAttribute("DELETEARTICLE"); 106 if ((itemID != null) && (!(itemID.equals("")))) { 107 String message = CofaxToolsDbUtils.setArticle(db, req, session, "2"); 109 if ((delete != null) && (delete.equals("on"))) 110 return (message); 111 else { 112 113 message = "Article " + fileName + " (" + itemID + ") "+ CofaxToolsUtil.getI18NMessage(req.getLocale(),"workflow_has_been_saved_and_published");; 114 String approved = (String ) req.getAttribute("APPROVED"); 116 CofaxToolsUser user = (CofaxToolsUser) (session.getAttribute("user")); 117 String userName = (String ) user.userInfoHash.get("USERNAME"); 118 String userFirstName = (String ) user.userInfoHash.get("FIRSTNAME"); 119 String userLastName = (String ) user.userInfoHash.get("LASTNAME"); 120 if (!(userName.equals(approved))) { 121 HashMap fillReq = new HashMap(); 122 fillReq.put("USERNAME", approved); 123 String tag = CofaxToolsDbUtils.fillTag(db, "getUserInfoByUserName"); 124 HashMap results = CofaxToolsDbUtils.getNameValuePackageHash(db, fillReq, tag); 125 String emailList = (String ) results.get("EMAIL"); 126 127 if ((emailList != null) && !(emailList.equals(""))) { 128 129 String mailFrom = getAdminEmail(db, session); 130 131 String subject = CofaxToolsUtil.getI18NMessage(req.getLocale(),"workflow_mail_subject_published_article"); 132 subject=subject.replaceAll("%fileName%",fileName); 133 subject=subject.replaceAll("%itemID%",itemID); 134 135 String messageBody = CofaxToolsUtil.getI18NMessage(req.getLocale(),"workflow_mail_body_published_article"); 136 messageBody = messageBody.replaceAll("%userFirstName%", userFirstName); 137 messageBody = messageBody.replaceAll("%userLastName%", userLastName); 138 messageBody = messageBody.replaceAll("%publication%", (String ) req.getAttribute("PUBNAME")); 139 messageBody = messageBody.replaceAll("%headline%", (String ) req.getAttribute("HEADLINE")); 140 messageBody = messageBody.replaceAll("%itemID%", itemID); 141 142 boolean bln = sendMail(emailList, mailFrom, subject, messageBody); 143 144 if (bln) 145 message += CofaxToolsUtil.getI18NMessage(req.getLocale(),"workflow_mail_has_been_sent_to") + emailList; 146 else 147 message += CofaxToolsUtil.getI18NMessage(req.getLocale(),"workflow_error_while_sending_mail_to") + emailList; 148 } 149 } 150 return (message); 151 } 152 } else { 153 return ("ERROR : no itemID found"); 155 } 156 157 } 158 159 public static String getArticleValidators(DataStore db, HttpServletRequest req, HttpSession session, String itemID) { 160 String listEmail = ""; 161 162 CofaxToolsUser user = (CofaxToolsUser) (session.getAttribute("user")); 163 164 HashMap ht = new HashMap(); 165 ht.put("ITEMID", (String ) req.getAttribute("ITEMID")); 166 ht.put("PUBID", user.workingPub); 167 168 ht = CofaxToolsUtil.getPublicationInfo(db, user.workingPub); 169 String Wlevels = smile.stored.utils.getString(ht, "WORKFLOW_LEVELS", "0"); 170 String Wmail = smile.stored.utils.getString(ht, "WORKFLOW_MAIL", "1"); 171 String WadminEmail = smile.stored.utils.getString(ht, "WORKFLOW_ADMINEMAIL", ""); 172 if (Wmail.equals("1")) { 173 if (Wlevels.equals("1")) { 174 return (WadminEmail); 177 } else { 178 String tag1 = "select S.mappingCode "; 181 tag1 = tag1 + "from tblsections AS S, "; 182 tag1 = tag1 + "tblarticles AS A "; 183 tag1 = tag1 + "where S.pubName=A.pubName "; 184 tag1 = tag1 + "and S.section = A.section "; 185 tag1 = tag1 + "and A.itemID=" + (String ) req.getAttribute("ITEMID") + " "; 186 HashMap fillReq = new HashMap(); 187 Vector mappingCodeVect = CofaxToolsDbUtils.getPackageVector(db, fillReq, tag1); 188 String mappingCode = mappingCodeVect.get(0) + ""; 189 190 while (listEmail.equals("") && (!(mappingCode.equals("0"))) && (!(mappingCode.equals("0")))) { 191 String tag = "select PU.email "; 192 tag = tag + "from tblpermusersection AS PUS, tblpermusers AS PU "; 193 tag = tag + "where PUS.manager=1 "; 194 tag = tag + "and PUS.userID = PU.userID "; 195 tag = tag + "and PUS.mappingCode=" + mappingCode + " "; 196 Vector emailVect2 = CofaxToolsDbUtils.getPackageVector(db, fillReq, tag); 197 int emailSize2 = emailVect2.size(); 198 for (int i = 0; i < emailSize2; i++) { 199 if (!(listEmail.equals(""))) 200 listEmail += ";"; 201 listEmail += emailVect2.get(i) + ""; 202 } 203 if (listEmail.equals("")) { 204 String tag3 = "select tblsections.subMapOf "; 205 tag3 = tag3 + "from tblsections "; 206 tag3 = tag3 + "where tblsections.mappingCode=" + mappingCode + " "; 207 mappingCodeVect = CofaxToolsDbUtils.getPackageVector(db, fillReq, tag3); 208 mappingCode = mappingCodeVect.get(0) + ""; 209 } 210 } 211 if (listEmail.equals("")) 212 listEmail = WadminEmail; 213 return (listEmail); 214 } 215 } else { 216 return (""); 218 } 219 } 220 221 public static String getAdminEmail(DataStore db, HttpSession session) { 222 223 CofaxToolsUser user = (CofaxToolsUser) (session.getAttribute("user")); 224 String adminEmail = "cofax@cofax.org"; 225 try { 226 HashMap ht = new HashMap(); 227 ht.put("PUBID", user.workingPub); 228 229 ht = CofaxToolsUtil.getPublicationInfo(db, user.workingPub); 230 adminEmail = smile.stored.utils.getString(ht, "WORKFLOW_ADMINEMAIL", ""); 231 } catch (Exception e) { 232 CofaxToolsUtil.log("CofaxToolsWorkflow : getAdminEmail : error " + e); 233 } 234 return (adminEmail); 235 } 236 237 246 public static boolean sendMail(String mailList, String mailFrom, String subject, String messageBody) { 247 248 try { 249 Session smtpSession; 250 Properties props = new Properties(); 251 props.put("mail.smtp.host", CDSServlet.mailHost); 252 smtpSession = Session.getDefaultInstance(props, null); 253 String mailTo = ""; 254 if (mailList.indexOf(";") > 0) { 255 while (mailList.indexOf(";") > 0) { 256 try { 257 mailTo = mailList.substring(0, mailList.indexOf(";")); 258 mailList = mailList.substring(mailList.indexOf(";") + 1); 259 260 MimeMessage message = new MimeMessage(smtpSession); 262 message.setFrom(new InternetAddress(mailFrom)); 263 message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo)); 264 message.setSubject(subject); 265 message.setContent(messageBody, "text/html"); 266 267 CofaxToolsUtil.log("Sending mail to " + mailTo + "..."); 269 Transport.send(message); 270 CofaxToolsUtil.log("Sending mail to " + mailTo + "...OK"); 271 } catch (Exception e) { 272 CofaxToolsUtil.log("Error while sending mail to " + mailTo + " : " + e); 273 } 274 } 275 MimeMessage message = new MimeMessage(smtpSession); 277 message.setFrom(new InternetAddress(mailFrom)); 278 message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailList)); 279 message.setSubject(subject); 280 message.setContent(messageBody, "text/html"); 281 282 CofaxToolsUtil.log("Sending mail to " + mailList + "..."); 284 Transport.send(message); 285 CofaxToolsUtil.log("Sending mail to " + mailList + "...OK"); 286 } else { 287 try { 288 MimeMessage message = new MimeMessage(smtpSession); 290 message.setFrom(new InternetAddress(mailFrom)); 291 message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailList)); 292 message.setSubject(MimeUtility.encodeText(subject, "ISO-8859-1", null)); 293 message.setHeader("Content-Type", "text/html; charset=ISO-8859-1"); 294 message.setContent(messageBody, "text/html; charset=ISO-8859-1"); 295 296 CofaxToolsUtil.log("Sending mail to " + mailList + "..."); 298 Transport.send(message); 299 CofaxToolsUtil.log("Sending mail to " + mailList + "...OK"); 300 } catch (Exception e) { 301 CofaxToolsUtil.log("Error while sending mail to " + mailList + " : " + e); 302 } 303 } 304 305 } catch (Exception e) { 306 return false; 307 } 308 return true; 309 } 310 311 public static Vector disableArticle(HashMap ht, String disableArticle, String validated, DataStore db, boolean permission) { 312 int toValidOrPubtemp = 0; 313 Vector disable = new Vector(2); 314 int check = 0; 315 316 if (disableArticle != null && disableArticle.equals("on")) { 317 if (validated.equals("0")) { 318 toValidOrPubtemp = 0; 319 check = 1; 320 321 } else if (validated.equals("1")) { 322 toValidOrPubtemp = 1; 323 check = 1; 324 } else if (validated.equals("2")) { 325 if (permission) { 326 toValidOrPubtemp = 2; 327 check = 1; 328 } else { 329 toValidOrPubtemp = 0; 330 check = 0; 331 } 332 } else { 333 toValidOrPubtemp = 0; 334 check = 1; 335 } 336 } else { 337 if (validated.equals("2")) { 338 if (permission) { 339 StringBuffer tag_get = new StringBuffer (); 340 tag_get 341 .append("SELECT disableArticle FROM tblactivearticles WHERE pubName='req:PUBNAME' and section='req:SECTION' AND itemID='req:ITEMID' AND filename='req:FILENAME'"); 342 ht = CofaxToolsDbUtils.getNameValuePackageHash(db, ht, tag_get.toString()); 343 String disableArticleOld = (String ) ht.get("DISABLEARTICLE"); 344 345 if (disableArticleOld.equals("1")) { 346 toValidOrPubtemp = 2; 347 check = 1; 348 } else { 349 toValidOrPubtemp = 0; 350 check = 1; 351 } 352 } else { 353 toValidOrPubtemp = 0; 354 check = 1; 355 } 356 } else { 357 toValidOrPubtemp = 0; 358 check = 1; 359 } 360 } 361 362 Integer toValidOrPub = new Integer (toValidOrPubtemp); 363 Integer check2 = new Integer (check); 364 disable.add(toValidOrPub); 365 disable.add(check2); 366 return (disable); 367 } 368 369 } 370 | Popular Tags |