1 53 54 106 107 package com.Yasna.forum.tags; 108 109 import java.io.*; 110 import java.util.*; 111 import javax.servlet.*; 112 import javax.servlet.jsp.*; 113 import javax.servlet.jsp.tagext.*; 114 import javax.servlet.http.*; 115 import com.Yasna.forum.*; 116 import com.Yasna.forum.tags.*; 117 118 169 170 public class ForumTag extends TagSupport implements YazdProperty, 171 ChangeForum, NewMessages 172 { 173 private YazdState js = null; 174 private YazdRequest jr = null; 175 private Forum cf = null; 176 private int prevForumID = -1; 178 private int nextForumID = -1; 179 private boolean trackVisits = false; 181 private Map match = new HashMap(); 183 private ForumsLoopTag forumsLoop; 184 185 190 public final int doStartTag() throws JspException 191 { 192 forumsLoop = null; 193 try { 194 forumsLoop = (ForumsLoopTag)this.findAncestorWithClass(this, 195 Class.forName("com.Yasna.forum.tags.ForumsLoopTag")); 196 } catch(Exception e) { 197 } 198 199 if (forumsLoop != null) { 200 cf = forumsLoop.getForum(); 201 pageContext.setAttribute(id, this, PageContext.PAGE_SCOPE); 202 return EVAL_BODY_INCLUDE; 203 } else { 204 205 js = (YazdState) pageContext.getAttribute("yazdUserState", 207 PageContext.SESSION_SCOPE); 208 if (js == null) { 209 throw new JspException( 210 "Yazd forum tag could not get yazd state."); 211 } 212 213 jr = (YazdRequest) pageContext.getAttribute("yazdUserRequest", 215 PageContext.REQUEST_SCOPE); 216 if (jr == null) 217 throw new JspException("Yazd forum tag, could not find request"); 218 219 ForumLoopTag fl = null; 221 try { 222 fl = (ForumLoopTag)this.findAncestorWithClass(this, 223 Class.forName("com.Yasna.forum.tags.ForumLoopTag")); 224 } 225 catch (Exception e) { 226 } 227 228 if (fl != null) { 229 cf = fl.getForum(); 230 if (fl.getMatch() != null) 231 match = fl.getMatch(); 232 } 233 else { 234 cf = jr.getForum(); 236 } 237 238 if (cf == null || !cf.hasPermission(ForumPermissions.READ)) 239 return SKIP_BODY; 240 241 List forums = jr.getForums(match); 243 int nextid; 244 int previd = -1; 245 int size = forums.size(); 246 for (int i = 0; i < size; i++) { 247 nextid = ( (Forum) forums.get(i)).getID(); 248 if (nextid == cf.getID()) { 249 prevForumID = previd; 250 if ( (i + 1) < size) 251 nextForumID = ( (Forum) forums.get(i + 1)).getID(); 252 break; 253 } 254 previd = nextid; 255 } 256 257 if (trackVisits) { 259 js.setNextForumVisitDate(pageContext, cf.getID()); 260 } 261 262 pageContext.setAttribute(id, this, PageContext.PAGE_SCOPE); 264 return EVAL_BODY_INCLUDE; 265 } 266 } 267 268 272 public final void setTrackVisits(String a) 273 { 274 if( a.equals("true") ) 275 trackVisits=true; 276 } 277 278 284 public final String getForumid() 285 { 286 return "" + cf.getID(); 287 } 288 289 295 public final String getDescription() 296 { 297 return cf.getDescription(); 298 } 299 300 306 public final String getMessagecount() 307 { 308 return "" + cf.getMessageCount(); 309 } 310 311 317 public final String getThreadcount() 318 { 319 return "" + cf.getThreadCount(); 320 } 321 322 328 public final String getName() 329 { 330 return cf.getName(); 331 } 332 333 340 public final String getCreationDate() 341 { 342 return "" + cf.getCreationDate().getTime(); 343 } 344 345 352 public final String getModifiedDate() 353 { 354 return "" + cf.getModifiedDate().getTime(); 355 } 356 357 364 public final String getLastForumVisitDate() 365 { 366 return "" + js.getLastForumVisitDate(cf,jr).getTime(); 367 } 368 369 375 public final String getNextForumid() 376 { 377 return "" + nextForumID; 378 } 379 380 386 public final String getPrevForumid() 387 { 388 return "" + prevForumID; 389 } 390 391 396 public final Forum getForum() 397 { 398 return cf; 399 } 400 401 407 public final String getProperty(String name) 408 { 409 String tmp = cf.getProperty(name); 410 if( tmp != null )return tmp; 411 return ""; 412 } 413 414 418 public final void setProperty(String name, String value) 419 { 420 try { 421 cf.setProperty(name,value); 422 } catch(UnauthorizedException ue) { 423 } 424 } 425 426 429 public final void setMatch(String mtch) 430 { 431 MatchTag fmt = 432 (MatchTag)pageContext.getAttribute(mtch,PageContext.PAGE_SCOPE); 433 if( fmt != null && fmt.getMatch() != null ) 434 match = fmt.getMatch(); 435 } 436 437 440 public final void changeForum(Forum apf) 441 { 442 cf = apf; 443 } 444 445 450 public final boolean newMessages() 451 { 452 if( js.getLastForumVisitDate(cf,jr).getTime() < 453 cf.getModifiedDate().getTime() ) 454 return true; 455 return false; 456 } 457 458 463 public final boolean prevForum() 464 { 465 if( prevForumID > 0 ) 466 return true; 467 return false; 468 } 469 470 475 public final boolean nextForum() 476 { 477 if( nextForumID > 0 ) 478 return true; 479 return false; 480 } 481 482 485 public final void release() 486 { 487 if( id != null && id.length() > 0 ) 488 pageContext.removeAttribute(id,PageContext.PAGE_SCOPE); 489 } 490 491 } 492 | Popular Tags |