Ver código fonte

#186 - Akismet isn't working

Alex Trofimov 11 anos atrás
pai
commit
6f1a316ea5

+ 11 - 0
inc/classes/BxDolProfile.php

@@ -82,6 +82,17 @@ class BxDolProfile extends BxDol implements iBxDolProfile
         return self::getInstance($aProfile['id']);
     }
 
+    /**
+     * Get singleton instance of Profile by Account id (currently active profile is returned)
+     */
+    public static function getInstanceByAccount($iAccountId = false)
+    {
+        $oQuery = BxDolProfileQuery::getInstance();
+        $mixedProfileId = $oQuery->getCurrentProfileByAccount($iAccountId);
+
+        return self::getInstance($mixedProfileId);
+    }
+
     /**
      * Get singleton instance of Profile by profile id
      */

+ 10 - 3
inc/utils.inc.php

@@ -636,13 +636,20 @@ function bx_autoload($sClassName)
  * @param array $aModule an array with module description. Is used when the requested class is located in some module.
  * @return unknown
  */
-function bx_instance($sClassName, $aParams = array(), $aModule = array())
+function bx_instance($sClassName, $aParams = array(), $mixedModule = array())
 {
     if(isset($GLOBALS['bxDolClasses'][$sClassName]))
         return $GLOBALS['bxDolClasses'][$sClassName];
 
-    if ($aModule)
-        bx_import((empty($aModule) ? $sClassName : str_replace($aModule['class_prefix'], '', $sClassName)), $aModule);
+    if ($mixedModule) {
+        if (!is_array($mixedModule)) {
+            $o = BxDolModule::getInstance($mixedModule);
+            $mixedModule = $o->_aModule;
+        }
+        $sClassName = bx_ltrim_str($sClassName, $mixedModule['class_prefix']);
+        bx_import($sClassName, $mixedModule);
+        $sClassName = $mixedModule['class_prefix'] . $sClassName;
+    }
 
     $oClass = new ReflectionClass($sClassName);
 

+ 9 - 9
modules/boonex/antispam/classes/BxAntispamAkismet.php

@@ -16,19 +16,19 @@ class BxAntispamAkismet extends BxDol
 {
     protected $oAkismet = null;
 
-    public function __construct($iProfileID = 0)
+    public function __construct($iAccoutId = 0)
     {
         parent::__construct();
         $sKey = getParam('bx_antispam_akismet_api_key');
-        if ($sKey) {
+        if ($sKey && $oAccount = BxDolAccount::getInstance((int)$iAccoutId)) {
             require_once (BX_DIRECTORY_PATH_PLUGINS . 'akismet/Akismet.class.php');
             $this->oAkismet = new Akismet(BX_DOL_URL_ROOT, $sKey);
-            $aProfile = getProfileInfo($iProfileID);
-            if ($aProfile) {
-                $this->oAkismet->setCommentAuthor($aProfile['NickName']);
-                $this->oAkismet->setCommentAuthorEmail($aProfile['Email']);
-                $this->oAkismet->setCommentAuthorURL(getProfileLink($aProfile['ID']));
-            }
+
+            $oProfile = BxDolProfile::getInstanceByAccount((int)$iAccoutId);
+
+            $this->oAkismet->setCommentAuthorEmail($oAccount->getEmail());
+            $this->oAkismet->setCommentAuthor($oProfile->getDisplayName());
+            $this->oAkismet->setCommentAuthorURL($oProfile->getUrl());
         }
     }
 
@@ -46,7 +46,7 @@ class BxAntispamAkismet extends BxDol
 
     public function onPositiveDetection ($sExtraData = '')
     {
-        $o = bx_instance('BxAntispamDNSBlacklists', array(), 'bx_antispam');
+        $o = bx_instance('DNSBlacklists', array(), 'bx_antispam');
         $o->onPositiveDetection (getVisitorIP(), $sExtraData, 'akismet');
     }
 }

+ 1 - 1
modules/boonex/antispam/classes/BxAntispamStopForumSpam.php

@@ -95,7 +95,7 @@ class BxAntispamStopForumSpam extends BxDol
 
     public function onPositiveDetection ($sExtraData = '')
     {
-        $o = bx_instance('BxAntispamDNSBlacklists', array(), 'bx_antispam');
+        $o = bx_instance('DNSBlacklists', array(), 'bx_antispam');
         $o->onPositiveDetection (getVisitorIP(false), $sExtraData, 'stopforumspam');
     }
 }