AntonLV 5 anni fa
parent
commit
40d12afa85

+ 5 - 1
modules/boonex/timeline/classes/BxTimelineDb.php

@@ -14,7 +14,7 @@ class BxTimelineDb extends BxBaseModNotificationsDb
     protected $_sTableCache;
 
     protected $_sTableEvent2User;
-    protected $_sTablesRepostTrack;
+    protected $_sTableRepostsTrack;
     protected $_sTableHotTrack;
 
     protected $_aTablesMedia;
@@ -672,6 +672,10 @@ class BxTimelineDb extends BxBaseModNotificationsDb
                 $sLimitClause = "LIMIT 1";
                 break;
 
+            case 'reposted_by_track':
+                $sJoinClause = $this->prepareAsString("INNER JOIN `" . $this->_sTableRepostsTrack . "` AS `trt` ON `{$this->_sTable}`.`id`=`trt`.`event_id` AND `trt`.`reposted_id`=?", $aParams['value']);
+                break;
+
             case 'reposted_by_descriptor':
             	$sWhereClause = "";
 

+ 15 - 13
modules/boonex/timeline/classes/BxTimelineModule.php

@@ -3673,19 +3673,21 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
 
         //--- Find and delete repost events when parent event was deleted.
         $bSystem = $this->_oConfig->isSystem($aEvent['type'], $aEvent['action']);
-	    $aRepostEvents = $this->_oDb->getEvents(array('browse' => 'reposted_by_descriptor', 'type' => $aEvent['type']));
-		foreach($aRepostEvents as $aRepostEvent) {
-			$aContent = unserialize($aRepostEvent['content']);
-			if(isset($aContent['type']) && $aContent['type'] == $aEvent['type'] && isset($aContent['object_id']) && (($bSystem && (int)$aContent['object_id'] == (int)$aEvent['object_id']) || (!$bSystem  && (int)$aContent['object_id'] == (int)$aEvent[$CNF['FIELD_ID']])) && (int)$this->_oDb->deleteEvent(array('id' => (int)$aRepostEvent[$CNF['FIELD_ID']])) > 0) {
-			    $oComments = $this->getCmtsObject($sCommonPostComment, $aRepostEvent[$CNF['FIELD_ID']]);
-                if($oComments !== false)
-                    $oComments->onObjectDelete($aRepostEvent[$CNF['FIELD_ID']]);
-
-                bx_alert($this->_oConfig->getObject('alert'), 'delete_repost', $aEvent[$CNF['FIELD_ID']], $iUserId, array(
-                    'repost_id' => $aRepostEvent[$CNF['FIELD_ID']],
-                ));
-            }
-		}
+        $aRepostEvents = $this->_oDb->getEvents(array('browse' => 'reposted_by_track', 'value' => $aEvent[$CNF['FIELD_ID']]));
+        foreach($aRepostEvents as $aRepostEvent) {
+            if((int)$this->_oDb->deleteEvent(array('id' => (int)$aRepostEvent[$CNF['FIELD_ID']])) == 0) 
+                continue;
+
+            $this->_oDb->deleteRepostTrack($aRepostEvent[$CNF['FIELD_ID']]);
+
+            $oComments = $this->getCmtsObject($sCommonPostComment, $aRepostEvent[$CNF['FIELD_ID']]);
+            if($oComments !== false)
+                $oComments->onObjectDelete($aRepostEvent[$CNF['FIELD_ID']]);
+
+            bx_alert($this->_oConfig->getObject('alert'), 'delete_repost', $aEvent[$CNF['FIELD_ID']], $iUserId, array(
+                'repost_id' => $aRepostEvent[$CNF['FIELD_ID']],
+            ));
+        }
 
         //--- Delete associated meta.
         $oMetatags = BxDolMetatags::getObjectInstance($this->_oConfig->getObject('metatags'));