diff --git a/admin/adminCommentView.php b/admin/adminCommentView.php index 88dfb16..2849c67 100644 --- a/admin/adminCommentView.php +++ b/admin/adminCommentView.php @@ -70,7 +70,7 @@ while ($oRow = mysql_fetch_object($commentIds)) $hResult = query_parameters($sQuery, $oRow->commentId); /* call view_app_comment to display the comment */ $oComment_row = mysql_fetch_object($hResult); - view_app_comment($oComment_row); + Comment::view_app_comment($oComment_row); } /* display page selection links */ diff --git a/include/comment.php b/include/comment.php index 7a7dc05..04c19f2 100644 --- a/include/comment.php +++ b/include/comment.php @@ -186,8 +186,243 @@ class Comment { } return false; } -} + /** + * class static functions + */ + + /** + * display a single comment (in $oRow) + */ + function view_app_comment($oRow) + { + echo html_frame_start('','98%'); + echo '',"\n"; + + // message header + echo "\n"; + + // delete message button, for admins + if ($_SESSION['current']->hasPriv("admin") + || $_SESSION['current']->isMaintainer($oRow->versionId) + || $_SESSION['current']->isSuperMaintainer($oRow->appId)) + { + echo ""; + echo ""; + } + + echo "
commentId.">\n"; + echo " ".$oRow->subject."
\n"; + echo " by ".forum_lookup_user($oRow->userId)." on ".$oRow->time."
\n"; + echo "
\n"; + + // body + echo htmlify_urls($oRow->body), "

\n"; + + // only add RE: once + if(eregi("RE:", $oRow->subject)) + $subject = $oRow->subject; + else + $subject = "RE: ".$oRow->subject; + + // reply post buttons + echo " [appId&iVersionId=$oRow->versionId\">post new] \n"; + echo " [appId&iVersionId=$oRow->versionId&sSubject=". + urlencode("$subject")."&iThread=$oRow->commentId\">reply to this] \n"; + + echo "
\n"; + echo "commentId\" />"; + echo "
\n"; + echo "
\n"; + + echo html_frame_end(); + } + + /** + * grab comments for appId / versionId + * if parentId is not -1 only comments for that thread are returned + */ + function grab_comments($versionId, $parentId = -1) + { + /* escape input so we can use query_appdb() without concern */ + $versionId = mysql_real_escape_string($versionId); + $parentId = mysql_real_escape_string($parentId); + + $extra = ""; + if($parentId != -1) + $extra = "AND parentId = $parentId "; + + $qstring = "SELECT from_unixtime(unix_timestamp(appComments.time), \"%W %M %D %Y, %k:%i\") as time, ". + "appComments.commentId, appComments.parentId, appComments.versionId, appComments.userId, appComments.subject, appComments.body, appVersion.appId ". + "FROM appComments, appVersion WHERE appComments.versionId = appVersion.versionId AND appComments.versionId = '$versionId' ". + $extra. + "ORDER BY appComments.time ASC"; + $hResult = query_appdb($qstring); + + return $hResult; + } + + /** + * display nested comments + * handle is a db result set + */ + function do_display_comments_nested($hResult) + { + while($oRow = mysql_fetch_object($hResult)) + { + Comment::view_app_comment($oRow); + $hResult2 = Comment::grab_comments($oRow->versionId, $oRow->commentId); + if($hResult && mysql_num_rows($hResult2)) + { + echo "
\n"; + Comment::do_display_comments_nested($hResult2); + echo "
\n"; + } + } + } + + function display_comments_nested($versionId, $threadId) + { + $hResult = Comment::grab_comments($versionId, $threadId); + Comment::do_display_comments_nested($hResult); + } + + /** + * display threaded comments + * handle is a db result set + */ + function do_display_comments_threaded($hResult, $is_main) + { + if (!$is_main) + echo "\n"; + } + + function display_comments_threaded($versionId, $threadId = 0) + { + $hResult = Comment::grab_comments($versionId, $threadId); + + Comment::do_display_comments_threaded($hResult, 1); + } + + /** + * display flat comments + */ + function display_comments_flat($versionId) + { + $hResult = Comment::grab_comments($versionId); + if ($hResult) + { + while($oRow = mysql_fetch_object($hResult)) + { + Comment::view_app_comment($oRow); + } + } + } + + function view_app_comments($versionId, $threadId = 0) + { + $aClean = array(); //array of filtered user input + + $aClean['sCmode'] = makeSafe($_REQUEST['sCmode']); + $aClean['sMode'] = makeSafe($_REQUEST['sMode']); + + // count posts + $hResult = query_parameters("SELECT commentId FROM appComments WHERE versionId = '?'", $versionId); + $messageCount = mysql_num_rows($hResult); + + //start comment format table + echo html_frame_start("","98%",'',0); + echo '',"\n"; + + echo '',"\n"; + echo '
',"\n"; + + // message display mode changer + if ($_SESSION['current']->isLoggedIn()) + { + // FIXME we need to change this so not logged in users can change current view as well + if (!empty($aClean['sCmode'])) + $_SESSION['current']->setPref("comments:mode", $aClean['sCmode']); + + $sel[$_SESSION['current']->getPref("comments:mode", "threaded")] = 'selected'; + echo '',"\n"; + } + + // blank space + echo '',"\n"; + + // post new message button + echo '',"\n"; + + //end comment format table + echo '
',"\n"; + echo "Application Comments $messageCount total comments "; + echo 'Mode ',"\n"; + echo '
 
',"\n"; + echo '
',"\n"; + echo html_frame_end(); + + if( $messageCount > 0 ) + { + echo '

The following comments are owned by whoever posted them. WineHQ is not responsible for what they say.

'."\n"; + } + + //start comments + echo '
',"\n"; + + //hide or display depending on pref + if ($_SESSION['current']->isLoggedIn()) + $mode = $_SESSION['current']->getPref("comments:mode", "threaded"); + else + $mode = "threaded"; /* default non-logged in users to threaded comment display mode */ + + if ($aClean['sMode']=="nested") + $mode = "nested"; + + switch ($mode) + { + case "flat": + Comment::display_comments_flat($versionId); + break; + case "nested": + Comment::display_comments_nested($versionId, $threadId); + break; + case "threaded": + Comment::display_comments_threaded($versionId, $threadId); + break; + } + + echo '
',"\n"; + } +} /* @@ -211,245 +446,4 @@ function forum_lookup_user($iUserId) return $sMailto; } -/** - * display a single comment (in $oRow) - */ -function view_app_comment($oRow) -{ - - echo html_frame_start('','98%'); - echo '',"\n"; - - // message header - echo "\n"; - - // delete message button, for admins - if ($_SESSION['current']->hasPriv("admin") - || $_SESSION['current']->isMaintainer($oRow->versionId) - || $_SESSION['current']->isSuperMaintainer($oRow->appId)) - { - echo ""; - echo ""; - } - - echo "
commentId.">\n"; - echo " ".$oRow->subject."
\n"; - echo " by ".forum_lookup_user($oRow->userId)." on ".$oRow->time."
\n"; - echo "
\n"; - - // body - echo htmlify_urls($oRow->body), "

\n"; - - // only add RE: once - if(eregi("RE:", $oRow->subject)) - $subject = $oRow->subject; - else - $subject = "RE: ".$oRow->subject; - - // reply post buttons - echo " [appId&iVersionId=$oRow->versionId\">post new] \n"; - echo " [appId&iVersionId=$oRow->versionId&sSubject=". - urlencode("$subject")."&iThread=$oRow->commentId\">reply to this] \n"; - - echo "
\n"; - echo "commentId\" />"; - echo "
\n"; - echo "
\n"; - - echo html_frame_end(); -} - - -/** - * grab comments for appId / versionId - * if parentId is not -1 only comments for that thread are returned - */ -function grab_comments($versionId, $parentId = -1) -{ - /* escape input so we can use query_appdb() without concern */ - $versionId = mysql_real_escape_string($versionId); - $parentId = mysql_real_escape_string($parentId); - - $extra = ""; - if($parentId != -1) - $extra = "AND parentId = $parentId "; - - $qstring = "SELECT from_unixtime(unix_timestamp(appComments.time), \"%W %M %D %Y, %k:%i\") as time, ". - "appComments.commentId, appComments.parentId, appComments.versionId, appComments.userId, appComments.subject, appComments.body, appVersion.appId ". - "FROM appComments, appVersion WHERE appComments.versionId = appVersion.versionId AND appComments.versionId = '$versionId' ". - $extra. - "ORDER BY appComments.time ASC"; - $hResult = query_appdb($qstring); - - return $hResult; -} - - -/** - * display nested comments - * handle is a db result set - */ -function do_display_comments_nested($hResult) -{ - while($oRow = mysql_fetch_object($hResult)) - { - view_app_comment($oRow); - $hResult2 = grab_comments($oRow->versionId, $oRow->commentId); - if($hResult && mysql_num_rows($hResult2)) - { - echo "
\n"; - do_display_comments_nested($hResult2); - echo "
\n"; - } - } -} - - -function display_comments_nested($versionId, $threadId) -{ - $hResult = grab_comments($versionId, $threadId); - - do_display_comments_nested($hResult); -} - - -/** - * display threaded comments - * handle is a db result set - */ -function do_display_comments_threaded($hResult, $is_main) -{ - if (!$is_main) - echo "\n"; -} - - -function display_comments_threaded($versionId, $threadId = 0) -{ - $hResult = grab_comments($versionId, $threadId); - - do_display_comments_threaded($hResult, 1); -} - - -/** - * display flat comments - */ -function display_comments_flat($versionId) -{ - $hResult = grab_comments($versionId); - if ($hResult) - { - while($oRow = mysql_fetch_object($hResult)) - { - view_app_comment($oRow); - } - } -} - - -function view_app_comments($versionId, $threadId = 0) -{ - - $aClean = array(); //array of filtered user input - - $aClean['sCmode'] = makeSafe($_REQUEST['sCmode']); - $aClean['sMode'] = makeSafe($_REQUEST['sMode']); - - // count posts - $hResult = query_parameters("SELECT commentId FROM appComments WHERE versionId = '?'", $versionId); - $messageCount = mysql_num_rows($hResult); - - //start comment format table - echo html_frame_start("","98%",'',0); - echo '',"\n"; - - echo '',"\n"; - echo '
',"\n"; - - // message display mode changer - if ($_SESSION['current']->isLoggedIn()) - { - // FIXME we need to change this so not logged in users can change current view as well - if (!empty($aClean['sCmode'])) - $_SESSION['current']->setPref("comments:mode", $aClean['sCmode']); - - $sel[$_SESSION['current']->getPref("comments:mode", "threaded")] = 'selected'; - echo '',"\n"; - } - - // blank space - echo '',"\n"; - - // post new message button - echo '',"\n"; - - //end comment format table - echo '
',"\n"; - echo "Application Comments $messageCount total comments "; - echo 'Mode ',"\n"; - echo '
 
',"\n"; - echo '
',"\n"; - echo html_frame_end(); - - if( $messageCount > 0 ) - { - echo '

The following comments are owned by whoever posted them. WineHQ is not responsible for what they say.

'."\n"; - } - - //start comments - echo '
',"\n"; - - //hide or display depending on pref - if ($_SESSION['current']->isLoggedIn()) - $mode = $_SESSION['current']->getPref("comments:mode", "threaded"); - else - $mode = "threaded"; /* default non-logged in users to threaded comment display mode */ - - if ($aClean['sMode']=="nested") - $mode = "nested"; - - switch ($mode) - { - case "flat": - display_comments_flat($versionId); - break; - case "nested": - display_comments_nested($versionId, $threadId); - break; - case "threaded": - display_comments_threaded($versionId, $threadId); - break; - } - - echo '
',"\n"; -} ?> diff --git a/include/version.php b/include/version.php index 9771d73..6cbacde 100644 --- a/include/version.php +++ b/include/version.php @@ -819,7 +819,7 @@ class Version { } // Comments Section - view_app_comments($this->iVersionId); + Comment::view_app_comments($this->iVersionId); } function lookup_name($versionId)