Explorar o código

Ticket #4603 - Antispam: Integrate Lasso Moderation API.

AntonLV %!s(int64=2) %!d(string=hai) anos
pai
achega
a85016905d

+ 58 - 57
modules/boonex/antispam/classes/BxAntispamLassoModeration.php

@@ -104,54 +104,12 @@ class BxAntispamLassoModeration extends BxDol
                     break;
             }
 
-            if($bNotify && $sModule != '' && $iContentId != 0)
+            if($this->_bNotify && $sModule != '' && $iContentId != 0)
                 $this->_onHarmfulContentFound($sModule, $iContentId);
         }
 
         return 200;
     }
-    
-    protected function _getId($s)
-    {
-        return (int)substr($s, strrpos($s, '_') + 1);
-    }
-
-    protected function _processEventContent($sModule, $iContentId, $sStatus, $aAnalysis)
-    {
-        $sFldStatus = 'status_admin';
-
-        $aContentInfo = bx_srv($sModule, 'get_info', [$iContentId, false]);
-        if(!isset($aContentInfo[$sFldStatus]))
-            return;
-
-        $sStatus = '';
-        switch($sStatus) {
-            case 'allowed':
-                if($aContentInfo[$sFldStatus] != 'active')
-                    $sStatus = 'active';
-                break;
-
-            case 'hidden':
-                if($aContentInfo[$sFldStatus] != 'hidden' && $this->_sAction == 'disapprove')
-                    $sStatus = 'hidden';
-                break;
-
-            case 'flagged':
-                foreach($this->_aThresholds as $sName => $iThreshold) {
-                    if(100 * $aAnalysis[$sName] < $iThreshold) 
-                        continue;
-
-                    if($aContentInfo[$sFldStatus] != 'hidden' && $this->_sAction == 'disapprove') {
-                        $sStatus = 'hidden';
-                        break;
-                    }
-                }
-                break;
-        }
-
-        if(!empty($sStatus))
-            bx_srv($sModule, 'set_status', [$iContentId, $sStatus, $sFldStatus]);
-    }
 
     public function addContent($sModule, $iId, $aData = [])
     {
@@ -217,25 +175,63 @@ class BxAntispamLassoModeration extends BxDol
 
         return true;
     }
-    
-    protected function _onHarmfulContentFound($sModule, $iContentId)
-    {        
-        if(!$sModule || $this->_oConfig->getAntispamOption('lm_report') != 'on') 
+
+    protected function _processEventContent($sModule, $iContentId, $sStatus, $aAnalysis)
+    {
+        $sFldStatus = 'status_admin';
+
+        $aContentInfo = bx_srv($sModule, 'get_info', [$iContentId, false]);
+        if(!isset($aContentInfo[$sFldStatus]))
             return;
 
+        $sContentStatus = '';
+        switch($sStatus) {
+            case 'allowed':
+                if($aContentInfo[$sFldStatus] != 'active')
+                    $sContentStatus = 'active';
+                break;
+
+            case 'hidden':
+                if($aContentInfo[$sFldStatus] != 'hidden' && $this->_sAction == 'disapprove')
+                    $sContentStatus = 'hidden';
+                break;
+
+            case 'flagged':
+                foreach($this->_aThresholds as $sName => $iThreshold) {
+                    if(100 * $aAnalysis[$sName] < $iThreshold) 
+                        continue;
+
+                    if($aContentInfo[$sFldStatus] != 'hidden' && $this->_sAction == 'disapprove') {
+                        $sContentStatus = 'hidden';
+                        break;
+                    }
+                }
+                break;
+        }
+
+        if(!empty($sContentStatus))
+            bx_srv($sModule, 'set_status', [$iContentId, $sContentStatus, $sFldStatus]);
+    }
+
+    protected function _onHarmfulContentFound($sModule, $iContentId)
+    {
+        $oPermalinks = BxDolPermalinks::getInstance();
         $oModule = BxDolModule::getInstance($sModule);
+
         $CNF = &$oModule->_oConfig->CNF;
-        $sContentUrl = isset($CNF['URI_VIEW_ENTRY']) ? bx_absolute_url(BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . $iContentId)) : false;
-        $sManageContentUrl = isset($CNF['URL_MANAGE_ADMINISTRATION']) ? bx_absolute_url(BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URL_MANAGE_ADMINISTRATION'])) : false;
 
-        $oProfile = BxDolProfile::getInstance();
-        if(!$oProfile)
-            return;
+        $sContentUrl = isset($CNF['URI_VIEW_ENTRY']) ? bx_absolute_url($oPermalinks->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . $iContentId)) : false;
+        $sManageContentUrl = isset($CNF['URL_MANAGE_ADMINISTRATION']) ? bx_absolute_url($oPermalinks->permalink('page.php?i=' . $CNF['URL_MANAGE_ADMINISTRATION'])) : false;
+
+        $iAuthorId = 0;
+        if(bx_is_srv($sModule, 'get_author'))
+            $iAuthorId = bx_srv($sModule, 'get_author', [$iContentId]);
+
+        $oAuthor = BxDolProfile::getInstanceMagic($iAuthorId);
 
-        $aPlus = array(
-            'AuthorUrl' => $oProfile->getUrl(),
-            'AuthorNickName' => $oProfile->getDisplayName(),
-            'Page' => htmlspecialchars_adv($_SERVER['PHP_SELF']),
+        $aPlus = [
+            'AuthorUrl' => $oAuthor->getUrl(),
+            'AuthorNickName' => $oAuthor->getDisplayName(),
             'bx_if:content_url' => [
                 'condition' => boolval($sContentUrl),
                 'content' => ['c_url' => $sContentUrl],
@@ -244,7 +240,7 @@ class BxAntispamLassoModeration extends BxDol
                 'condition' => boolval($sManageContentUrl),
                 'content' => ['m_url' => $sManageContentUrl],
             ],
-        );
+        ];
 
         $aTemplate = BxDolEmailTemplates::getInstance()->parseTemplate('bx_antispam_lasso_moderation_report', $aPlus);
         if(!$aTemplate)
@@ -258,6 +254,11 @@ class BxAntispamLassoModeration extends BxDol
             'entry_url' => $sContentUrl,
         ]);
     }
+
+    protected function _getId($s)
+    {
+        return (int)substr($s, strrpos($s, '_') + 1);
+    }
 }
 
 /** @} */

+ 1 - 3
modules/boonex/antispam/classes/BxAntispamModule.php

@@ -279,9 +279,7 @@ class BxAntispamModule extends BxDolModule
             $this->serviceOnToxicContentPosted($sModule, $iEntry);
         }
 
-        if($this->_oConfig->getAntispamOption('lm_enable') == 'on') {
-            $oModule = BxDolModule::getInstance($sModule);
-
+        if($this->_oConfig->getAntispamOption('lm_enable') == 'on' && (bx_srv('system', 'is_module_content', [$sModule]) || bx_srv('system', 'is_module_context', [$sModule])) && ($oModule = BxDolModule::getInstance($sModule)) !== null) {
             $CNF = &$oModule->_oConfig->CNF;
 
             $iAuthorId = bx_get_logged_profile_id();

+ 0 - 1
modules/boonex/antispam/install/langs/en.xml

@@ -223,7 +223,6 @@ This antispam method scan submitted content for the URLs and check them if any o
     <string name="_bx_antispam_et_lasso_moderation_report_subject"><![CDATA[Harmful content has been posted]]></string>
     <string name="_bx_antispam_et_lasso_moderation_report_body"><![CDATA[{email_header}
 <b>Profile:</b> <a href="{AuthorUrl}">{AuthorNickName}</a><br />
-<b>Page:</b> {Page}<br /><br />
 <bx_if:content_url>
 	<b>Content:</b> <a href="{c_url}">{c_url}</a><br /><br />
 </bx_if:content_url>

+ 0 - 1
modules/boonex/russian/data/langs/bx_antispam/ru.xml

@@ -224,7 +224,6 @@ URI DNSBL - это DNSBL, которые перечисляют доменные
     <string name="_bx_antispam_et_lasso_moderation_report_subject"><![CDATA[Размещен вредоносный контент]]></string>
     <string name="_bx_antispam_et_lasso_moderation_report_body"><![CDATA[{email_header}
 <b>Профиль:</b> <a href="{AuthorUrl}">{AuthorNickName}</a><br />
-<b>Страница:</b> {Page}<br /><br />
 <bx_if:content_url>
     <b>Ссылка:</b> <a href="{c_url}">{c_url}</a><br /><br />
 </bx_if:content_url>