diff --git a/e107_handlers/comment_class.php b/e107_handlers/comment_class.php
index 0992d09e9..80fb2b028 100644
--- a/e107_handlers/comment_class.php
+++ b/e107_handlers/comment_class.php
@@ -56,13 +56,14 @@ class comment
function form_comment($action, $table, $id, $subject, $content_type, $return = FALSE, $rating = FALSE, $tablerender = TRUE)
{
//rating : boolean, to show rating system in comment
- global $pref,$sql,$tp;
- if (isset($pref['comments_disabled']) && $pref['comments_disabled'] == TRUE)
+ global $pref, $sql, $tp;
+ if(isset($pref['comments_disabled']) && $pref['comments_disabled'] == TRUE)
{
return;
}
- require_once (e_HANDLER."ren_help.php");
- if (ANON == TRUE || USER == TRUE)
+
+ require_once(e_HANDLER."ren_help.php");
+ if ($this->getCommentPermissions() == 'rw')
{
$itemid = $id;
$ns = new e107table;
@@ -84,6 +85,7 @@ class comment
{
$text2 = "\n";
}
+
if (isset($_GET['comment']) && $_GET['comment'] == 'edit')
{
$eaction = 'edit';
@@ -94,6 +96,7 @@ class comment
$eaction = 'edit';
$tmp = explode(".", e_QUERY);
$count = 0;
+
foreach ($tmp as $t)
{
if ($t == "edit")
@@ -121,7 +124,7 @@ class comment
if ($prid != USERID || !USER)
{ // Editing not allowed
echo "
".COMLAN_329."
";
- require_once (FOOTERF);
+ require_once(FOOTERF);
exit;
}
$caption = COMLAN_318;
@@ -133,12 +136,13 @@ class comment
$caption = COMLAN_9;
$comval = "";
}
+
//add the rating select box/result ?
$rate = "";
if ($rating == TRUE && !(ANON == TRUE && USER == FALSE))
{
global $rater;
- require_once (e_HANDLER."rate_class.php");
+ require_once(e_HANDLER."rate_class.php");
if (!is_object($rater))
{
$rater = new rater;
@@ -146,6 +150,7 @@ class comment
$rate = $rater->composerating($table, $itemid, $enter = TRUE, USERID, TRUE);
$rate = "".COMLAN_327.": | \n".$rate." |
\n";
} //end rating area
+
if (ANON == TRUE && USER == FALSE)
{ // Box for author name (anonymous comments - if allowed)
$text .= "\n".COMLAN_16." | \n\n\n | \n
";
@@ -164,15 +169,16 @@ class comment
{ // Comment entry not allowed - point to signup link
$text = "
";
}
- if ($return)
- {
- return $text;
- }
- else
- {
- echo $text;
- }
+ if ($return)
+ {
+ return $text;
+ }
+ else
+ {
+ echo $text;
+ }
}
+
/**
* Enter description here...
*
@@ -190,8 +196,8 @@ class comment
function render_comment($row, $table, $action, $id, $width, $subject, $addrating = FALSE)
{
//addrating : boolean, to show rating system in rendered comment
- global $sql,$sc_style,$comment_shortcodes,$COMMENTSTYLE,$rater,$gen;
- global $pref,$comrow,$tp,$NEWIMAGE,$USERNAME,$RATING,$datestamp;
+ global $sql, $sc_style, $comment_shortcodes, $COMMENTSTYLE, $rater, $gen;
+ global $pref, $comrow, $tp, $NEWIMAGE, $USERNAME, $RATING, $datestamp;
global $thisaction,$thistable,$thisid,$e107;
if (isset($pref['comments_disabled']) && $pref['comments_disabled'] == TRUE)
{
@@ -203,7 +209,7 @@ class comment
$thisaction = $action;
if ($addrating === TRUE)
{
- require_once (e_HANDLER."rate_class.php");
+ require_once(e_HANDLER."rate_class.php");
if (!$rater || !is_object($rater))
{
$rater = new rater;
@@ -331,13 +337,14 @@ class comment
} // End (nested comment handling)
return $text;
}
+
/**
- * Enter description here...
+ * Add a comment to an item
*
* @param unknown_type $author_name
* @param unknown_type $comment
* @param unknown_type $table
- * @param unknown_type $id
+ * @param integer $id - reference of item in source table to which comment is linked
* @param unknown_type $pid
* @param unknown_type $subject
* @param unknown_type $rateindex
@@ -354,11 +361,8 @@ class comment
$tp = e107::getParser();
$e107cache = e107::getCache();
+ if ($this->getCommentPermissions() != 'rw') return;
- if (isset($pref['comments_disabled']) && $pref['comments_disabled'] == TRUE)
- {
- return;
- }
if (isset($_GET['comment']) && $_GET['comment'] == 'edit')
{
$eaction = 'edit';
@@ -522,6 +526,7 @@ class comment
}
return false;
}
+
/**
* Enter description here...
*
@@ -558,13 +563,13 @@ class comment
case "bugtrack":
$type = 6;
break;
- default:
+ default :
$type = $table;
break;
/****************************************
- Add your comment type here in same format as above, ie ...
- case "your_comment_type"; $type = your_type_id; break;
- ****************************************/
+ Add your comment type here in same format as above, ie ...
+ case "your_comment_type"; $type = your_type_id; break;
+ ****************************************/
}
return $type;
}
@@ -589,122 +594,158 @@ class comment
}
}
- /**
- * Enter description here...
- *
- * @param unknown_type $table
- * @param unknown_type $id
- * @return unknown
- */
+ /**
+ * Enter description here...
+ *
+ * @param unknown_type $table
+ * @param unknown_type $id
+ * @return unknown
+ */
+ function count_comments($table, $id)
+ {
+ global $sql, $tp;
+ $type = $this->getCommentType($table);
+ $count_comments = $sql->db_Count("comments", "(*)", "WHERE comment_item_id='".intval($id)."' AND comment_type='".$tp->toDB($type, true)."' ");
+ return $count_comments;
+ }
+ /**
+ * Get comment permissions; may be:
+ * - FALSE - no permission
+ * - 'ro' - read-only (Can't create)
+ * - 'rw' - can create and see
+ *
+ * This is an embryonic routine which is expected to evolve
+ */
+ function getCommentPermissions()
+ {
+ global $pref;
- function count_comments($table, $id)
+ if(isset($pref['comments_disabled']) && $pref['comments_disabled'] == TRUE)
{
- global $sql,$tp;
- $type = $this->getCommentType($table);
- $count_comments = $sql->db_Count("comments", "(*)", "WHERE comment_item_id='".intval($id)."' AND comment_type='".$tp->toDB($type, true)."' ");
- return $count_comments;
+ return FALSE;
}
- /**
- * Enter description here...
- *
- * @param unknown_type $table - the source table for the associated item
- * @param unknown_type $action - usually 'comment' or 'reply'
- * @param unknown_type $id - ID of item associated with comments (e.g. news ID)
- * @param unknown_type $width - appears to not be used
- * @param unknown_type $subject
- * @param unknown_type $rate
- */
-
-
- function compose_comment($table, $action, $id, $width, $subject, $rate = FALSE, $return = FALSE, $tablerender = TRUE)
+ if (isset($pref['comments_class']))
{
- //compose comment : single call function will render the existing comments and show the form_comment
- //rate : boolean, to show/hide rating system in comment, default FALSE
- global $pref,$ns,$e107cache,$tp,$totcc;
- if (isset($pref['comments_disabled']) && $pref['comments_disabled'] == TRUE)
+ if (!check_class($pref['comments_class']))
{
- return;
+ return FALSE;
}
- $sql = e107::getDb();
- // Query no longer used
- // $count_comments = $this -> count_comments($table, $id, $pid=FALSE);
- $type = $this->getCommentType($table);
- $query = $pref['nested_comments'] ?
- "SELECT c.*, u.*, ue.* FROM #comments AS c
- LEFT JOIN #user AS u ON c.comment_author_id = u.user_id
- LEFT JOIN #user_extended AS ue ON c.comment_author_id = ue.user_extended_id
- WHERE c.comment_item_id='".intval($id)."' AND c.comment_type='".$tp->toDB($type, true)."' AND c.comment_pid='0' ORDER BY c.comment_datestamp"
- :
- "SELECT c.*, u.*, ue.* FROM #comments AS c
- LEFT JOIN #user AS u ON c.comment_author_id = u.user_id
- LEFT JOIN #user_extended AS ue ON c.comment_author_id = ue.user_extended_id
- WHERE c.comment_item_id='".intval($id)."' AND c.comment_type='".$tp->toDB($type, true)."' ORDER BY c.comment_datestamp";
+ return 'rw';
+ }
+ else
+ {
+ if (USER) return 'rw'; // Only allow anonymous comments if specifically enabled.
+ if (ANON) return 'rw';
+ }
+ return 'ro';
+ }
- $text = "";
- $comment = '';
- $modcomment = '';
- $lock = '';
- $ret['comment'] = '';
- if ($comment_total = $sql->db_Select_gen($query))
+
+ /**
+ * Displays existing comments, and a comment entry form
+ *
+ * @param unknown_type $table - the source table for the associated item
+ * @param unknown_type $action - usually 'comment' or 'reply'
+ * @param unknown_type $id - ID of item associated with comments (e.g. news ID)
+ * @param unknown_type $width - appears to not be used
+ * @param unknown_type $subject
+ * @param unknown_type $rate
+ */
+
+
+ function compose_comment($table, $action, $id, $width, $subject, $rate = FALSE, $return = FALSE, $tablerender = TRUE)
+ {
+ //compose comment : single call function will render the existing comments and show the form_comment
+ //rate : boolean, to show/hide rating system in comment, default FALSE
+ global $pref, $ns, $e107cache, $tp, $totcc;
+ if ($this->getCommentPermissions() === FALSE) return;
+
+ $sql = e107::getDb();
+ $type = $this->getCommentType($table);
+ $query = $pref['nested_comments'] ?
+ "SELECT c.*, u.*, ue.* FROM #comments AS c
+ LEFT JOIN #user AS u ON c.comment_author_id = u.user_id
+ LEFT JOIN #user_extended AS ue ON c.comment_author_id = ue.user_extended_id
+ WHERE c.comment_item_id='".intval($id)."' AND c.comment_type='".$tp->toDB($type, true)."' AND c.comment_pid='0' ORDER BY c.comment_datestamp"
+ :
+ "SELECT c.*, u.*, ue.* FROM #comments AS c
+ LEFT JOIN #user AS u ON c.comment_author_id = u.user_id
+ LEFT JOIN #user_extended AS ue ON c.comment_author_id = ue.user_extended_id
+ WHERE c.comment_item_id='".intval($id)."' AND c.comment_type='".$tp->toDB($type, true)."' ORDER BY c.comment_datestamp";
+
+ $text = "";
+ $comment = '';
+ $modcomment = '';
+ $lock = '';
+ $ret['comment'] = '';
+
+ if ($comment_total = $sql->db_Select_gen($query))
+ {
+ $width = 0;
+ //Shortcodes could use $sql, so just grab all results
+ $rows = $sql->db_getList();
+
+ //while ($row = $sql->db_Fetch())
+ foreach ($rows as $row)
{
- $width = 0;
- //Shortcodes could use $sql, so just grab all results
- $rows = $sql->db_getList();
-
- //while ($row = $sql->db_Fetch())
- foreach ($rows as $row)
+ $lock = $row['comment_lock'];
+ // $subject = $tp->toHTML($subject);
+ if ($pref['nested_comments'])
{
- $lock = $row['comment_lock'];
- // $subject = $tp->toHTML($subject);
- if ($pref['nested_comments'])
- {
- $text .= $this->render_comment($row, $table, $action, $id, $width, $tp->toHTML($subject), $rate);
- }
- else
- {
- $text .= $this->render_comment($row, $table, $action, $id, $width, $tp->toHTML($subject), $rate);
- }
- }
- if ($tablerender)
- {
- $text = $ns->tablerender(COMLAN_99, $text, '', TRUE);
- }
- if (!$return)
- {
- echo $text;
+ $text .= $this->render_comment($row, $table, $action, $id, $width, $tp->toHTML($subject), $rate);
}
else
{
- $ret['comment'] = $text;
- }
- if (ADMIN && getperms("B"))
- {
- $modcomment = "
";
+ $text .= $this->render_comment($row, $table, $action, $id, $width, $tp->toHTML($subject), $rate);
}
}
- if ($lock != "1")
+
+ if ($tablerender)
{
- $comment = $this->form_comment($action, $table, $id, $subject, "", TRUE, $rate, $tablerender);
+ $text = $ns->tablerender(COMLAN_99, $text, '', TRUE);
+ }
+
+ if (!$return)
+ {
+ echo $text;
}
else
{
- $comment = "
".COMLAN_328."
";
+ $ret['comment'] = $text;
}
- if (!$return)
+
+ if (ADMIN && getperms("B"))
{
- echo $modcomment.$comment;
+ $modcomment = "
";
}
- $ret['comment'] .= $modcomment;
- $ret['comment_form'] = $comment;
- $ret['caption'] = COMLAN_99;
- return (!$return) ? "" : $ret;
}
-
- function recalc_user_comments($id)
+ if (($lock != '1') && ($this->getCommentPermissions() === 'rw'))
{
- global $sql;
+ $comment = $this->form_comment($action, $table, $id, $subject, "", TRUE, $rate, $tablerender);
+ }
+ else
+ {
+ $comment = "
".COMLAN_328."
";
+ }
+
+ if (!$return)
+ {
+ echo $modcomment.$comment;
+ }
+
+ $ret['comment'] .= $modcomment;
+ $ret['comment_form'] = $comment;
+ $ret['caption'] = COMLAN_99;
+
+ return (!$return) ? "" : $ret;
+ }
+
+
+ function recalc_user_comments($id)
+ {
+ global $sql;
if (is_array($id))
{
foreach ($id as $_id)
@@ -963,22 +1004,22 @@ class comment
}
}
} // End Switch
- if (varset($ret['comment_title']))
- {
- $reta[] = $ret;
- $valid++;
- }
- if ($amount && $valid >= $amount)
- {
- return $reta;
- }
- }
- //loop if less records found than given $amount - probably because we discarded some
- if ($amount && ($valid < $amount))
- {
- $reta = $this->getCommentData($amount, $from + $amount, $qry, $valid, $reta);
- }
+ if (varset($ret['comment_title']))
+ {
+ $reta[] = $ret;
+ $valid++;
+ }
+ if ($amount && $valid >= $amount)
+ {
+ return $reta;
}
- return $reta;
}
- } //end class
+ //loop if less records found than given $amount - probably because we discarded some
+ if ($amount && ($valid < $amount))
+ {
+ $reta = $this->getCommentData($amount, $from + $amount, $qry, $valid, $reta);
+ }
+ }
+ return $reta;
+ }
+} //end class