ソースを参照

Ticket #5653 - Notifications: Improve grouping for notifications with the same source. Connections.

AntonLV 1 ヶ月 前
親
コミット
c1fee85c66

+ 10 - 3
inc/classes/BxDolConnection.php

@@ -404,17 +404,24 @@ class BxDolConnection extends BxDolFactory implements iBxDolFactoryObject
         if (null !== $aAlertExtras['override_result'])
             return $aAlertExtras['override_result'];
 
-        if (!$this->_oQuery->addConnection($iInitiator, $iContent, $iMutual))
+        $iId = 0;
+        if(!($iId = $this->_oQuery->addConnection($iInitiator, $iContent, $iMutual)))
             return false;
 
+        $iAlertSender = bx_get_logged_profile_id() ?: $iInitiator;
+        $aAlertExtras = array_merge($aAlertExtras, [
+            'source' => $this->_sObject . '_' . $iId,
+            'source_mac' => $this->_sObject . '_' . $iAlertSender . '_' . $iId
+        ]);
+
         /**
          * @hooks
          * @hookdef hook-bx_dol_connection-connection_added '{object_name}', 'connection_added' - hook after connection was added. Connection params can be overridden
          * It's equivalent to @ref hook-bx_dol_connection-connection_before_add
          * @hook @ref hook-bx_dol_connection-connection_added
          */
-        bx_alert($this->_sObject, 'connection_added', 0, false, $aAlertExtras);
-        bx_alert('system', 'connection_added', 0, false, array_merge($aAlertExtras, ['object_name' => $this->_sObject]));
+        bx_alert($this->_sObject, 'connection_added', 0, $iAlertSender, $aAlertExtras);
+        bx_alert('system', 'connection_added', 0, $iAlertSender, array_merge($aAlertExtras, ['object_name' => $this->_sObject]));
 
         $this->onAdded($iInitiator, $iContent, $iMutual);
 

+ 4 - 3
inc/classes/BxDolConnectionQuery.php

@@ -352,7 +352,7 @@ class BxDolConnectionQuery extends BxDolDb
         if ($this->getConnection($iInitiator, $iContent)) // connection already exists
             return false;
 
-		$aBindings = array();
+        $aBindings = [];
 
         $iMutual = 0;
         $sMutualField = '';
@@ -368,6 +368,8 @@ class BxDolConnectionQuery extends BxDolDb
         if (!$this->query($sQuery, array_merge($aBindings, array('initiator' => $iInitiator, 'content' => $iContent, 'added' => time()))))
             return false;
 
+        $iId = $this->lastId();
+
         if ($iMutual) // in case of mutual connection update 'mutual' field
             $this->updateConnectionMutual($iContent, $iInitiator, $iMutual);
 
@@ -375,8 +377,7 @@ class BxDolConnectionQuery extends BxDolDb
             $iMutualParam = $iMutual;
 
         $this->cleanMemory('BxDolConnectionQuery::getConnection' . $this->_sTable . $iInitiator . '_' . $iContent);
-            
-        return true;
+        return $iId;
     }
 
     public function updateConnection ($iInitiator, $iContent, $aSet)

+ 3 - 1
inc/classes/BxDolConnectionRelationQuery.php

@@ -31,11 +31,13 @@ class BxDolConnectionRelationQuery extends BxDolConnectionQuery
             'added' => time()
         ))) return false;
 
+        $iId = $this->lastId();
+
         if($iMutualParam !== null)
             $iMutualParam = $iMutual;
 
         $this->cleanMemory('BxDolConnectionQuery::getConnection' . $this->_sTable . $iInitiator . '_' . $iContent);
-        return true;
+        return $iId;
     }
 
     public function removeConnection ($iInitiator, $iContent)