From: <sy...@us...> - 2009-02-11 18:04:30
|
Revision: 16701 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=16701&view=rev Author: sylvieg Date: 2009-02-11 18:04:26 +0000 (Wed, 11 Feb 2009) Log Message: ----------- [MOD]forum: avoid a query to get the sticky before + add regexp for forum attachment for sumo need Modified Paths: -------------- trunk/comments.php trunk/lib/commentslib.php trunk/lib/setup/prefs.php trunk/templates/comments.tpl trunk/templates/tiki-admin-include-forums.tpl trunk/templates/tiki-view_forum.tpl trunk/tiki-admin_include_forums.php trunk/tiki-view_forum.php Modified: trunk/comments.php =================================================================== --- trunk/comments.php 2009-02-11 16:20:44 UTC (rev 16700) +++ trunk/comments.php 2009-02-11 18:04:26 UTC (rev 16701) @@ -250,6 +250,11 @@ // PROCESS ATTACHMENT HERE if ( $qId && isset($_FILES['userfile1']) && ! empty($_FILES['userfile1']['name']) ) { if ( is_uploaded_file($_FILES['userfile1']['tmp_name']) ) { + if (!empty($prefs['forum_match_regex']) && !preg_match($prefs['forum_match_regex'], $_FILES['userfile1']['name'])) { + $smarty->assign('msg', 'Invalid filename (using filters for filenames)'); + $smarty->display("error.tpl"); + die; + } check_ticket('view-forum'); $fp = fopen($_FILES['userfile1']['tmp_name'], "rb"); $commentslib->add_thread_attachment( @@ -319,6 +324,11 @@ || ($forum_info['att'] == 'att_admin' && $tiki_p_admin_forum == 'y') || ($forum_info['att'] == 'att_perm' && $tiki_p_forum_attach == 'y')) && isset($_FILES['userfile1']) && is_uploaded_file($_FILES['userfile1']['tmp_name'])){ + if (!empty($prefs['forum_match_regex']) && !preg_match($prefs['forum_match_regex'], $_FILES['userfile1']['name'])) { + $smarty->assign('msg', 'Invalid filename (using filters for filenames)'); + $smarty->display("error.tpl"); + die; + } $fp = fopen($_FILES['userfile1']['tmp_name'], "rb"); $data = ''; Modified: trunk/lib/commentslib.php =================================================================== --- trunk/lib/commentslib.php 2009-02-11 16:20:44 UTC (rev 16700) +++ trunk/lib/commentslib.php 2009-02-11 18:04:26 UTC (rev 16701) @@ -667,58 +667,54 @@ if ($reply_state == 'none') { $time_cond .= ' and (SELECT count(b.`threadId`) as replies from `tiki_comments` b where `parentId`=a.`threadId`) =0 '; } - if (empty($type)) { - $operators = array('=', '<>'); - $type = 's'; - } else { - $operators = array('='); + if (!empty($type)) { + $time_cond .= ' and a.`type` = ? '; + $bind_time[] = $type; } $ret = array(); - foreach ($operators as $stickytest) { - $query = "select a.`threadId`,a.`object`,a.`objectType`,a.`parentId`, + $query = "select a.`threadId`,a.`object`,a.`objectType`,a.`parentId`, a.`userName`,a.`commentDate`,a.`hits`,a.`type`,a.`points`, a.`votes`,a.`average`,a.`title`,a.`data`,a.`hash`,a.`user_ip`, a.`summary`,a.`smiley`,a.`message_id`,a.`in_reply_to`,a.`comment_rating`,". $this->ifNull("a.`archived`", "'n'")." as `archived`,". - $this->ifNull("max(b.`commentDate`)","a.`commentDate`")." as `lastPost`, + $this->ifNull("max(b.`commentDate`)","a.`commentDate`")." as `lastPost`,". + $this->ifNull("a.`type`", "'s'")." as `sticky`, count(b.`threadId`) as `replies` from `tiki_comments` a left join `tiki_comments` b on b.`parentId`=a.`threadId` where a.`object`=?" .(( $include_archived ) ? '' : ' and (a.`archived` is null or a.`archived`=?)') - ." and a.`type` $stickytest ? and a.`objectType` = 'forum' + ." and a.`objectType` = 'forum' and a.`parentId` = ? $time_cond group by a.`threadId`"; - if($this->driver != 'sybase') { + if($this->driver != 'sybase') { $query .=",a.`object`,a.`objectType`,a.`parentId`,a.`userName`,a.`commentDate`,a.`hits`,a.`type`,a.`points`,a.`votes`,a.`average`,a.`title`,a.`data`,a.`hash`,a.`user_ip`,a.`summary`,a.`smiley`,a.`message_id`,a.`in_reply_to`,a.`comment_rating` "; - } - $query .="order by ".$this->convert_sortmode($sort_mode).", `threadId`"; + } + $query .="order by `sticky` desc, ".$this->convert_sortmode($sort_mode).", `threadId`"; - $bind_vars = array((string) $forumId); - if ( ! $include_archived ) $bind_vars[] = 'n'; - $bind_vars[] = $type; - $bind_vars[] = 0; + $bind_vars = array((string) $forumId); + if ( ! $include_archived ) $bind_vars[] = 'n'; + $bind_vars[] = 0; - $result = $this->query($query, array_merge($bind_vars, $bind_time), $max, $offset); + $result = $this->query($query, array_merge($bind_vars, $bind_time), $max, $offset); - while ($res = $result->fetchRow()) { + while ($res = $result->fetchRow()) { $tid = $res['threadId']; if ($res["lastPost"]!=$res["commentDate"]) { - // last post data is for tiki-view_forum.php. - // you can see the title and author of last post - $query = "select * from `tiki_comments` + // last post data is for tiki-view_forum.php. + // you can see the title and author of last post + $query = "select * from `tiki_comments` where `parentId` = ? and `commentDate` = ? order by `threadId` desc"; - $r2 = $this->query($query, array($tid, $res['lastPost'])); - $res['lastPostData'] = $r2->fetchRow(); + $r2 = $this->query($query, array($tid, $res['lastPost'])); + $res['lastPostData'] = $r2->fetchRow(); } // Has the user read it? $res['is_marked'] = $this->is_marked($tid); $ret[] = $res; - } } return $ret; Modified: trunk/lib/setup/prefs.php =================================================================== --- trunk/lib/setup/prefs.php 2009-02-11 16:20:44 UTC (rev 16700) +++ trunk/lib/setup/prefs.php 2009-02-11 18:04:26 UTC (rev 16701) @@ -431,6 +431,7 @@ 'forum_comments_no_title_prefix' => 'n', 'forum_thread_style' => 'commentStyle_plain', 'forum_thread_sort_mode' => 'commentDate_asc', + 'forum_match_regex' => '', // articles 'feature_articles' => 'n', Modified: trunk/templates/comments.tpl =================================================================== --- trunk/templates/comments.tpl 2009-02-11 16:20:44 UTC (rev 16700) +++ trunk/templates/comments.tpl 2009-02-11 18:04:26 UTC (rev 16701) @@ -330,7 +330,7 @@ <tr> <td class="formcolor">{tr}Attach file{/tr}</td> <td class="formcolor"> - <input type="hidden" name="MAX_FILE_SIZE" value="{$forum_info.att_max_size|escape}" /><input name="userfile1" type="file" /> + <input type="hidden" name="MAX_FILE_SIZE" value="{$forum_info.att_max_size|escape}" /><input name="userfile1" type="file" />{tr}Maximum size:{/tr} {$forum_info.att_max_size|kbsize} </td> </tr> {/if} Modified: trunk/templates/tiki-admin-include-forums.tpl =================================================================== --- trunk/templates/tiki-admin-include-forums.tpl 2009-02-11 16:20:44 UTC (rev 16700) +++ trunk/templates/tiki-admin-include-forums.tpl 2009-02-11 18:04:26 UTC (rev 16701) @@ -81,11 +81,14 @@ <td><label>{tr}Search method when searching in content: Non-Tiki search local to a forum{/tr}</label></td> <td><input type="checkbox" name="feature_forum_local_search" {if $prefs.feature_forum_local_search eq 'y'}checked="checked"{/if}/></td> - </tr><tr class="form"> + </tr><tr class="form"> <td><label>{tr}Do not prefix messages titles by 'Re: '{/tr}</label></td> <td><input type="checkbox" name="forum_comments_no_title_prefix" {if $prefs.forum_comments_no_title_prefix eq 'y'}checked="checked"{/if}/></td> </tr><tr class="form"> + <td><label>{tr}Uploaded filenames must match regex:{/tr}</label></td> + <td><input type="text" name="forum_match_regex" value="{$prefs.forum_match_regex|escape}"/></td> + </tr><tr class="form"> <td colspan="2" class="input_submit_container"><input type="submit" name="forumprefs" value="{tr}Change preferences{/tr}" /></td> </tr></table> Modified: trunk/templates/tiki-view_forum.tpl =================================================================== --- trunk/templates/tiki-view_forum.tpl 2009-02-11 16:20:44 UTC (rev 16700) +++ trunk/templates/tiki-view_forum.tpl 2009-02-11 18:04:26 UTC (rev 16701) @@ -551,7 +551,7 @@ <label for="show_archived">{tr}Show archived posts{/tr}</label> </th> <td> - <input style="margin-left:20px" type="checkbox" id="show_archived" name="show_archived" {if $show_archived eq 'y' }checked="checked"{/if} onchange="javascript:document.getElementById('time_control').submit();" /> + <input style="margin-left:20px" type="checkbox" id="show_archived" name="show_archived" {if $show_archived eq 'y' }checked="checked"{/if} /> </td> </tr> {/if} @@ -603,7 +603,7 @@ </form> </td> <td style="text-align:right;"> - {if $prefs.feature_forum_quickjump eq 'y'} + {if $prefs.feature_forum_quickjump eq 'y' and count($all_forums) > 1} <form id='quick' method="post" action="tiki-view_forum.php"> <small>{tr}Jump to forum{/tr}:</small> <select name="forumId" onchange="javascript:document.getElementById('quick').submit();"> Modified: trunk/tiki-admin_include_forums.php =================================================================== --- trunk/tiki-admin_include_forums.php 2009-02-11 16:20:44 UTC (rev 16700) +++ trunk/tiki-admin_include_forums.php 2009-02-11 18:04:26 UTC (rev 16701) @@ -36,6 +36,7 @@ foreach ( $pref_toggles as $toggle) simple_set_toggle($toggle); simple_set_value('forums_ordering'); + simple_set_value('forum_match_regex'); } if (isset($_REQUEST["forumlistprefs"])) { Modified: trunk/tiki-view_forum.php =================================================================== --- trunk/tiki-view_forum.php 2009-02-11 16:20:44 UTC (rev 16700) +++ trunk/tiki-view_forum.php 2009-02-11 18:04:26 UTC (rev 16701) @@ -240,7 +240,8 @@ $comments_prefix_var = 'forum:'; $comments_object_var = 'forumId'; -$commentslib->process_inbound_mail($_REQUEST['forumId']); +if (isset($forum_info['inbound_pop_server']) && !empty($forum_info['inbound_pop_server'])) + $commentslib->process_inbound_mail($_REQUEST['forumId']); /******************************/ if (!isset($_REQUEST['comments_threshold'])) { @@ -300,7 +301,6 @@ if ($forum_info['forum_use_password'] != 'n' && $_REQUEST['password'] != $forum_info['forum_password']) { $smarty->assign('msg', tra("Wrong password. Cannot post comment")); - $smarty->display("error.tpl"); die; } @@ -313,26 +313,7 @@ $user, $_REQUEST["comments_title"], $_REQUEST["comments_data"], $_REQUEST["comment_topictype"], $_REQUEST['comment_topicsmiley'], $_REQUEST["comment_topicsummary"], $_REQUEST["comments_title"], ''); - // PROCESS ATTACHMENT HERE - if ($qId && isset($_FILES['userfile1']) && !empty($_FILES['userfile1']['name'])) { - if (is_uploaded_file($_FILES['userfile1']['tmp_name'])) { - check_ticket('view-forum'); - $fp = fopen($_FILES['userfile1']['tmp_name'], "rb"); - $commentslib->add_thread_attachment( - $forum_info, $qId, $fp, '', - $_FILES['userfile1']['name'], - $_FILES['userfile1']['type'], - $_FILES['userfile1']['size'] ); - } - else { - $smarty->assign('msg', $tikilib->uploaded_file_error($_FILES['userfile1']['error'])); - $smarty->display("error.tpl"); - die; - } - } - //END ATTACHMENT PROCESSING - // Now process attchement here (queued attachment) - } else { + } else { // not in queue mode $smarty->assign('was_queued', 'n'); if ($_REQUEST["comments_threadId"] == 0) { @@ -381,19 +362,6 @@ $cat_href="tiki-view_forum_thread.php?comments_parentId=" . $threadId . "&forumId=" . $_REQUEST["forumId"]; include_once ("freetag_apply.php"); - // PROCESS ATTACHMENT HERE - if ($threadId && isset($_FILES['userfile1']) && !empty($_FILES['userfile1']['name'])) { - if (is_uploaded_file($_FILES['userfile1']['tmp_name'])) { - check_ticket('view-forum'); - $fp = fopen($_FILES['userfile1']['tmp_name'], "rb"); - $commentslib->add_thread_attachment($forum_info, $threadId, $fp, '', $_FILES['userfile1']['name'], $_FILES['userfile1']['type'], $_FILES['userfile1']['size'] ); - } else { - $smarty->assign('msg', $tikilib->uploaded_file_error($_FILES['userfile1']['error'])); - $smarty->display("error.tpl"); - die; - } - } //END ATTACHMENT PROCESSING - if( $threadId ) { // Deal with mail notifications. include_once('lib/notifications/notificationemaillib.php'); sendForumEmailNotification('forum_post_topic', $_REQUEST['forumId'], $forum_info, $_REQUEST['comments_title'], $_REQUEST['comments_data'], $user, $_REQUEST['comments_title'], $message_id, '', $threadId, isset($_REQUEST['comments_parentId'])?$_REQUEST['comments_parentId']: 0, isset($_REQUEST['contributions'])? $_REQUEST['contributions']: '' ); @@ -405,6 +373,25 @@ $smarty->assign('duplic', 'y'); unset($_REQUEST['comments_postComment']);// not to go in the topic redirection } + // PROCESS ATTACHMENT HERE + if ((!empty($qId) || !empty($threadId)) && isset($_FILES['userfile1']) && !empty($_FILES['userfile1']['name'])) { + if (is_uploaded_file($_FILES['userfile1']['tmp_name'])) { + if (!empty($prefs['forum_match_regex']) && !preg_match($prefs['forum_match_regex'], $_FILES['userfile1']['name'])) { + $smarty->assign('msg', 'Invalid filename (using filters for filenames)'); + $smarty->display("error.tpl"); + die; + } + check_ticket('view-forum'); + $fp = fopen($_FILES['userfile1']['tmp_name'], "rb"); + $commentslib->add_thread_attachment($forum_info, !empty($qId)?$qid: $threadId, $fp, '', $_FILES['userfile1']['name'], $_FILES['userfile1']['type'], $_FILES['userfile1']['size'] ); + } + else { + $smarty->assign('msg', $tikilib->uploaded_file_error($_FILES['userfile1']['error'])); + $smarty->display("error.tpl"); + die; + } + } + //END ATTACHMENT PROCESSING $commentslib->register_forum_post($_REQUEST["forumId"], 0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |