#1431066 by Blogook: stream showing unpublished comments.
authorStalski
Sat, 11 Feb 2012 18:11:10 +0000 (19:11 +0100)
committerStalski
Sat, 11 Feb 2012 18:11:10 +0000 (19:11 +0100)
heartbeat.module
includes/heartbeatactivity.inc
includes/heartbeatstream.inc
modules/heartbeat_rules/heartbeat_rules.inc
modules/heartbeat_rules/heartbeat_rules.rules.inc

index 8dd72df..e6942e1 100755 (executable)
@@ -799,6 +799,7 @@ function heartbeat_api_log($message_id, $uid, $uid_target = 0, $nid = 0, $nid_ta
   $data['uid_target'] = $uid_target;
   $data['nid'] = $nid;
   $data['nid_target'] = $nid_target;
+  $data['cid'] = isset($variables['cid']) ? $variables['cid'] : 0;
   $data['access'] = $access;
   $data['in_group'] = $in_group;
   $data['timestamp'] = $time == 0 ? $_SERVER['REQUEST_TIME'] : $time;
@@ -1599,8 +1600,24 @@ function _heartbeat_map_assoc($options, $field, $value) {
  * of the Template or the User setting.
  */
 function _heartbeat_activity_get_access($uid, $template) {
+
   $templates = heartbeat_user_templates_load($uid);
-  $access = isset($templates[$template->message_id]) ? $templates[$template->message_id]->status : (isset($templates['0']) ? $templates['0']->status : $template->perms);
+
+  // If the user has configured access to this type, use it.
+  if (isset($templates[$template->message_id])) {
+    $access = $templates[$template->message_id]->status;
+  }
+  else {
+    // If the user configured general access.
+    if (isset($templates['0'])) {
+      $access = $templates['0']->status;
+    }
+    // Use the general permission for this template.
+    else {
+      $access = $template->perms;
+    }
+  }
+
   return $access;
 }
 
index d0803ae..c4b8e38 100644 (file)
@@ -100,6 +100,10 @@ class HeartbeatActivity extends stdClass {
       $this->nid_target = $data['nid_target'];\r
     }\r
 \r
+    if (isset($data['cid'])) {\r
+      $this->cid = $data['cid'];\r
+    }\r
+\r
     if (isset($data['in_group'])) {\r
       $this->in_group = $data['in_group'];\r
     }\r
index 705ae26..91a68d1 100644 (file)
@@ -517,6 +517,10 @@ abstract class HeartbeatStream {
     $access_expression = "LEAST ( IFNULL ( ha.access, " . HEARTBEAT_PUBLIC_TO_ALL . "), IFNULL ( hut.status, " . HEARTBEAT_PUBLIC_TO_ALL . "))";\r
     $this->query->addExpression($access_expression, 'user_access');\r
 \r
+    // Exclude unpublished comments.\r
+    $this->query->leftJoin('comment', 'c', 'ha.cid = c.cid');\r
+    $this->query->where("c.status = 1 OR ha.cid = 0");\r
+\r
     $db_or = db_or();\r
     foreach ($this->getCurrentLanguages() as $lang_code) {\r
       $db_or->condition('ha.language', $lang_code, "=");\r
@@ -581,6 +585,7 @@ abstract class HeartbeatStream {
       $this->query->condition($or);\r
     }\r
 \r
+    // Exclude denied message templates.\r
     if (!empty($this->templates_denied)) {\r
       $this->query->where("ha.message_id NOT IN (:messages)", array(':messages' => array_unique($this->templates_denied)));\r
     }\r
@@ -598,7 +603,7 @@ abstract class HeartbeatStream {
    */\r
   protected function executeQuery() {\r
 \r
-    // dqm($this->query);\r
+    //  dqm($this->query);\r
     $result = $this->query->execute()->fetchAll();\r
     $messages = array();\r
 \r
index affdf3a..ba4d61d 100755 (executable)
@@ -46,7 +46,7 @@ function rules_action_heartbeat_activity_log() {
       $variables[$key] = $val;
     }
 
-    if (in_array($key, array('nid', 'uid', 'nid_target', 'uid_target'))) {
+    if (in_array($key, array('nid', 'uid', 'nid_target', 'uid_target', 'cid'))) {
       $variables[$key] = (int) $variables[$key];
     }
   }
index 50ebadd..b50f858 100755 (executable)
@@ -35,6 +35,7 @@ function heartbeat_rules_rules_action_info() {
     'uid' => array('type' => 'text', 'label' => t('User ID')),
     'nid_target' => array('type' => 'text', 'label' => t('Entity target ID'), 'optional' => TRUE),
     'uid_target' => array('type' => 'text', 'label' => t('User target ID'), 'optional' => TRUE),
+    'cid' => array('type' => 'text', 'label' => t('Comment ID'), 'optional' => TRUE),
   );
   $actions = array();