\n";
$sToRender .= " | \n";
$sToRender .= " | \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 $iDocumentID -> a valid document ID
*/
function getNewThreadOption($iDocumentID) {
global $default;
$sToRender .= _("Would you like to create a new Discussion thread for this document?");
$sToRender .= " ";
$sToRender .= "
";
$sToRender .= "
";
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() . "&fDocumentID=" . $oThread->getDocumentID() . "&fThreadID=" . $oThread->getID()) . "\" 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]=" . arrayToString($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
$aWhereClause = array("thread_id = ? AND in_reply_to = ? ORDER BY id", array($iThreadID, $iReplyTo));
$aComments = DiscussionComment::getList($aWhereClause);/*ok*/
// 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;
}
?>