\n";
$sToRender .= " graphicsUrl/widgets/addcomment.gif\" border=\"0\" /> | \n";
$sToRender .= " graphicsUrl/widgets/back.gif\" border=\"0\" /> | \n";
$sToRender .= "
\n";
return $sToRender;
}
// If there are no threads to view for a document
function getViewFailPage($sMessage) {
global $default;
if ( strlen($sMessage)>0 ) {
$sToRender = $sMessage;
} else {
$sToRender = "Current document has no discussion. Press the ADD button to start a discussion.";
}
return $sToRender;
}
/**
* Page to create a new thread
*
* @param $fDocumentID -> a valid document ID
*/
function getNewThreadOption($fDocumentID) {
global $default;
$sToRender .= "Would you like to create a new Discussion thread for this document?";
$sToRender .= " ";
$sToRender .= "
graphicsUrl/widgets/new.gif\" border=\"0\">";
$sToRender .= "
graphicsUrl/widgets/cancel.gif\" border=\"0\">";
return $sToRender;
}
/**
* Views the list of comments for a document
* Prints out 1 comment
* User needs to call this function many times to list all comments
*
* @param $iNum -> its the iterative index of the current comment
* @param $iThread -> a valid Thread Object
* @param $oComment -> a valid Comment Object
*/
function getViewComment($iNum, $oThread, $oComment, $sIndent) {
global $default;
$iSubjectChars = 59;
// If iNum is odd then highlight it
if (($iNum%2) == 1) $BGcolor = "#F5F6EE";
if (($iNum%2) == 0) $UserBGcolor = "#F5F6EE";
$sUserName = "";
$oUser = User::get($oComment->getUserID());
if ($oUser) {
$sUserName = $oUser->getName();
}
// If the Subject string is too long
if (strlen($oComment->getSubject())>$iSubjectChars ) $dotdot = " ...";
$sToRender .= "\n";
$sToRender .= "\t| \n";
$sToRender .= "\t\t$sIndentgetID() . "&iDocumentID=" . $oThread->getDocumentID()) . "\" title=\"" . $oComment->getSubject() . "\">\n";
$sToRender .= substr($oComment->getSubject(),0,$iSubjectChars ) . $dotdot . " | \n";
$sToRender .= "\t\n";
$sToRender .= "\t\t$sUserName | \n";
$sToRender .= "\t" . $oComment->getDate() . " | |
\n";
return $sToRender;
}
/**
* Prints out the list of discussion comments
*/
function getPage($iDocumentID, $aDocumentThreads) {
global $default;
$sToRender .= renderHeading("Document Discussion Comments");
$sToRender .= displayDocumentPath($iDocumentID);
$sToRender .= getPageButtons($iDocumentID);
$sToRender .= "\n";
$sToRender .= "\n";
$sToRender .= "| Subject | \n";
$sToRender .= "Author | \n";
$sToRender .= "Date | \n";
$sToRender .= "
\n";
$iCount = 0;
// for each thread, retrieve all comments
for ($i=0; $igetID(), -1);
// now loop through the comments, and indent comments that have the same reply_to at the same level .... ??
for ($j=0; $jlog->info("commentTree[$j][comment]=" . $aCommentTree[$j]["comment"]);
$sToRender .= getViewComment($iCount++, $aDocumentThreads[$i], $aCommentTree[$j]["comment"], getIndent($aCommentTree[$j]["level"]));
}
}
}
$sToRender .= "\n
\n\n";
return $sToRender;
}
/**
* Returns the comments for a particular thread
*/
function getCommentTree($iThreadID, $iReplyTo, $iLevel = 0) {
global $default;
// find all comments for the specified thread and reply
$aComments = DiscussionComment::getList("thread_id = $iThreadID AND in_reply_to = $iReplyTo ORDER BY id");
// loop through these and find their children
for ($i=0; $i $aComments[$i], "level" => $iLevel);
$aChildren = getCommentTree($iThreadID, $aComments[$i]->getID(), $iLevel+1);
if (count($aChildren) > 0) {
$aTree = array_merge($aTree, $aChildren);
}
}
$default->log->debug("getCommentTree($iThreadID, $iReplyTo, $iLevel), returning " . arrayToString($aTree));
return $aTree;
}
/**
* Returns an indent string of appropriate length for the specified comment level
*/
function getIndent($iLevel) {
global $default;
$sToRender = "";
for ($i=0; $i<$iLevel; $i++) {
$sToRender .= " ";
}
$default->log->info("indent($iLevel) = " . $sToRender);
return $sToRender;
}
?>