Dotclear


Ignore:
Timestamp:
03/08/18 17:58:39 (8 years ago)
Author:
franck <carnet.franck.paul@…>
Branch:
default
Message:

Code formatting (PSR-2)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins/antispam/inc/lib.dc.antispam.php

    r3627 r3730  
    1010# 
    1111# -- END LICENSE BLOCK ----------------------------------------- 
    12 if (!defined('DC_RC_PATH')) { return; } 
     12if (!defined('DC_RC_PATH')) {return;} 
    1313 
    1414class dcAntispam 
    1515{ 
    16      public static $filters; 
    17  
    18      public static function initFilters() 
    19      { 
    20           global $core; 
    21  
    22           if (!isset($core->spamfilters)) { 
    23                return; 
    24           } 
    25  
    26           self::$filters = new dcSpamFilters($core); 
    27           self::$filters->init($core->spamfilters); 
    28      } 
    29  
    30      public static function isSpam($cur) 
    31      { 
    32           self::initFilters(); 
    33           self::$filters->isSpam($cur); 
    34      } 
    35  
    36      public static function trainFilters($blog,$cur,$rs) 
    37      { 
    38           $status = null; 
    39           # From ham to spam 
    40           if ($rs->comment_status != -2 && $cur->comment_status == -2) { 
    41                $status = 'spam'; 
    42           } 
    43  
    44           # From spam to ham 
    45           if ($rs->comment_status == -2 && $cur->comment_status == 1) { 
    46                $status = 'ham'; 
    47           } 
    48  
    49           # the status of this comment has changed 
    50           if ($status) 
    51           { 
    52                $filter_name = $rs->exists('comment_spam_filter') ? $rs->comment_spam_filter : null; 
    53  
    54                self::initFilters(); 
    55                self::$filters->trainFilters($rs,$status,$filter_name); 
    56           } 
    57      } 
    58  
    59      public static function statusMessage($rs) 
    60      { 
    61           if ($rs->exists('comment_status') && $rs->comment_status == -2) 
    62           { 
    63                $filter_name = $rs->exists('comment_spam_filter') ? $rs->comment_spam_filter : null; 
    64  
    65                self::initFilters(); 
    66  
    67                return 
    68                '<p><strong>'.__('This comment is a spam:').'</strong> '. 
    69                self::$filters->statusMessage($rs,$filter_name).'</p>'; 
    70           } 
    71      } 
    72  
    73      public static function dashboardIcon($core, $icons) 
    74      { 
    75           if (($count = self::countSpam($core)) > 0) { 
    76                $str = ($count > 1) ? __('(including %d spam comments)') : __('(including %d spam comment)'); 
    77                $icons['comments'][0] .= '</span></a> <br /><a href="'.$core->adminurl->get('admin.comments',array('status' => '-2')).'"><span>'. 
    78                     sprintf($str,$count); 
    79           } 
    80      } 
    81  
    82      public static function dashboardIconTitle($core) 
    83      { 
    84           if (($count = self::countSpam($core)) > 0) { 
    85                $str = ($count > 1) ? __('(including %d spam comments)') : __('(including %d spam comment)'); 
    86                return '</span></a> <br /><a href="'.$core->adminurl->get('admin.comments',array('status' => '-2')).'"><span>'. 
    87                     sprintf($str,$count); 
    88           } else { 
    89                return ''; 
    90           } 
    91      } 
    92  
    93      public static function countSpam($core) 
    94      { 
    95           return $core->blog->getComments(array('comment_status'=>-2),true)->f(0); 
    96      } 
    97  
    98      public static function countPublishedComments($core) 
    99      { 
    100           return $core->blog->getComments(array('comment_status'=>1),true)->f(0); 
    101      } 
    102  
    103      public static function delAllSpam($core, $beforeDate = null) 
    104      { 
    105           $strReq = 
    106           'SELECT comment_id '. 
    107           'FROM '.$core->prefix.'comment C '. 
    108           'JOIN '.$core->prefix.'post P ON P.post_id = C.post_id '. 
    109           "WHERE blog_id = '".$core->con->escape($core->blog->id)."' ". 
    110           'AND comment_status = -2 '; 
    111           if ($beforeDate) { 
    112                $strReq .= 'AND comment_dt < \''.$beforeDate.'\' '; 
    113           } 
    114  
    115           $rs = $core->con->select($strReq); 
    116           $r = array(); 
    117           while ($rs->fetch()) { 
    118                $r[] = (integer) $rs->comment_id; 
    119           } 
    120  
    121           if (empty($r)) { 
    122                return; 
    123           } 
    124  
    125           $strReq = 
    126           'DELETE FROM '.$core->prefix.'comment '. 
    127           'WHERE comment_id '.$core->con->in($r).' '; 
    128  
    129           $core->con->execute($strReq); 
    130      } 
    131  
    132      public static function getUserCode($core) 
    133      { 
    134           $code = 
    135           pack('a32',$core->auth->userID()). 
    136           pack('H*',$core->auth->cryptLegacy($core->auth->getInfo('user_pwd'))); 
    137           return bin2hex($code); 
    138      } 
    139  
    140      public static function checkUserCode($core,$code) 
    141      { 
    142           $code = pack('H*',$code); 
    143  
    144           $user_id = trim(@pack('a32',substr($code,0,32))); 
    145           $pwd = @unpack('H*hex',substr($code,32)); 
    146  
    147           if ($user_id === false || $pwd === false) { 
    148                return false; 
    149           } 
    150  
    151           $pwd = $pwd['hex']; 
    152  
    153           $strReq = 'SELECT user_id, user_pwd '. 
    154                     'FROM '.$core->prefix.'user '. 
    155                     "WHERE user_id = '".$core->con->escape($user_id)."' "; 
    156  
    157           $rs = $core->con->select($strReq); 
    158  
    159           if ($rs->isEmpty()) { 
    160                return false; 
    161           } 
    162  
    163           if ($core->auth->cryptLegacy($rs->user_pwd) != $pwd) { 
    164                return false; 
    165           } 
    166  
    167           $permissions = $core->getBlogPermissions($core->blog->id); 
    168  
    169           if ( empty($permissions[$rs->user_id]) ) { 
    170                return false; 
    171           } 
    172  
    173           return $rs->user_id; 
    174      } 
    175  
    176      public static function purgeOldSpam($core) 
    177      { 
    178           $defaultDateLastPurge = time(); 
    179           $defaultModerationTTL = '7'; 
    180           $init = false; 
    181  
    182           // settings 
    183           $core->blog->settings->addNamespace('antispam'); 
    184  
    185           $dateLastPurge = $core->blog->settings->antispam->antispam_date_last_purge; 
    186           if ($dateLastPurge === null) { 
    187                $init = true; 
    188                $core->blog->settings->antispam->put('antispam_date_last_purge',$defaultDateLastPurge,'integer','Antispam Date Last Purge (unix timestamp)',true,false); 
    189                $dateLastPurge = $defaultDateLastPurge; 
    190           } 
    191           $moderationTTL = $core->blog->settings->antispam->antispam_moderation_ttl; 
    192           if ($moderationTTL === null) { 
    193                $core->blog->settings->antispam->put('antispam_moderation_ttl',$defaultModerationTTL,'integer','Antispam Moderation TTL (days)',true,false); 
    194                $moderationTTL = $defaultModerationTTL; 
    195           } 
    196  
    197           if ($moderationTTL < 0) { 
    198                // disabled 
    199                return; 
    200           } 
    201  
    202           // we call the purge every day 
    203           if ((time()-$dateLastPurge) > (86400)) { 
    204                // update dateLastPurge 
    205                if (!$init) { 
    206                     $core->blog->settings->antispam->put('antispam_date_last_purge',time(),null,null,true,false); 
    207                } 
    208                $date = date('Y-m-d H:i:s', time() - $moderationTTL*86400); 
    209                dcAntispam::delAllSpam($core, $date); 
    210           } 
    211      } 
     16    public static $filters; 
     17 
     18    public static function initFilters() 
     19    { 
     20        global $core; 
     21 
     22        if (!isset($core->spamfilters)) { 
     23            return; 
     24        } 
     25 
     26        self::$filters = new dcSpamFilters($core); 
     27        self::$filters->init($core->spamfilters); 
     28    } 
     29 
     30    public static function isSpam($cur) 
     31    { 
     32        self::initFilters(); 
     33        self::$filters->isSpam($cur); 
     34    } 
     35 
     36    public static function trainFilters($blog, $cur, $rs) 
     37    { 
     38        $status = null; 
     39        # From ham to spam 
     40        if ($rs->comment_status != -2 && $cur->comment_status == -2) { 
     41            $status = 'spam'; 
     42        } 
     43 
     44        # From spam to ham 
     45        if ($rs->comment_status == -2 && $cur->comment_status == 1) { 
     46            $status = 'ham'; 
     47        } 
     48 
     49        # the status of this comment has changed 
     50        if ($status) { 
     51            $filter_name = $rs->exists('comment_spam_filter') ? $rs->comment_spam_filter : null; 
     52 
     53            self::initFilters(); 
     54            self::$filters->trainFilters($rs, $status, $filter_name); 
     55        } 
     56    } 
     57 
     58    public static function statusMessage($rs) 
     59    { 
     60        if ($rs->exists('comment_status') && $rs->comment_status == -2) { 
     61            $filter_name = $rs->exists('comment_spam_filter') ? $rs->comment_spam_filter : null; 
     62 
     63            self::initFilters(); 
     64 
     65            return 
     66            '<p><strong>' . __('This comment is a spam:') . '</strong> ' . 
     67            self::$filters->statusMessage($rs, $filter_name) . '</p>'; 
     68        } 
     69    } 
     70 
     71    public static function dashboardIcon($core, $icons) 
     72    { 
     73        if (($count = self::countSpam($core)) > 0) { 
     74            $str = ($count > 1) ? __('(including %d spam comments)') : __('(including %d spam comment)'); 
     75            $icons['comments'][0] .= '</span></a> <br /><a href="' . $core->adminurl->get('admin.comments', array('status' => '-2')) . '"><span>' . 
     76            sprintf($str, $count); 
     77        } 
     78    } 
     79 
     80    public static function dashboardIconTitle($core) 
     81    { 
     82        if (($count = self::countSpam($core)) > 0) { 
     83            $str = ($count > 1) ? __('(including %d spam comments)') : __('(including %d spam comment)'); 
     84            return '</span></a> <br /><a href="' . $core->adminurl->get('admin.comments', array('status' => '-2')) . '"><span>' . 
     85            sprintf($str, $count); 
     86        } else { 
     87            return ''; 
     88        } 
     89    } 
     90 
     91    public static function countSpam($core) 
     92    { 
     93        return $core->blog->getComments(array('comment_status' => -2), true)->f(0); 
     94    } 
     95 
     96    public static function countPublishedComments($core) 
     97    { 
     98        return $core->blog->getComments(array('comment_status' => 1), true)->f(0); 
     99    } 
     100 
     101    public static function delAllSpam($core, $beforeDate = null) 
     102    { 
     103        $strReq = 
     104        'SELECT comment_id ' . 
     105        'FROM ' . $core->prefix . 'comment C ' . 
     106        'JOIN ' . $core->prefix . 'post P ON P.post_id = C.post_id ' . 
     107        "WHERE blog_id = '" . $core->con->escape($core->blog->id) . "' " . 
     108            'AND comment_status = -2 '; 
     109        if ($beforeDate) { 
     110            $strReq .= 'AND comment_dt < \'' . $beforeDate . '\' '; 
     111        } 
     112 
     113        $rs = $core->con->select($strReq); 
     114        $r  = array(); 
     115        while ($rs->fetch()) { 
     116            $r[] = (integer) $rs->comment_id; 
     117        } 
     118 
     119        if (empty($r)) { 
     120            return; 
     121        } 
     122 
     123        $strReq = 
     124        'DELETE FROM ' . $core->prefix . 'comment ' . 
     125        'WHERE comment_id ' . $core->con->in($r) . ' '; 
     126 
     127        $core->con->execute($strReq); 
     128    } 
     129 
     130    public static function getUserCode($core) 
     131    { 
     132        $code = 
     133        pack('a32', $core->auth->userID()) . 
     134        pack('H*', $core->auth->cryptLegacy($core->auth->getInfo('user_pwd'))); 
     135        return bin2hex($code); 
     136    } 
     137 
     138    public static function checkUserCode($core, $code) 
     139    { 
     140        $code = pack('H*', $code); 
     141 
     142        $user_id = trim(@pack('a32', substr($code, 0, 32))); 
     143        $pwd     = @unpack('H*hex', substr($code, 32)); 
     144 
     145        if ($user_id === false || $pwd === false) { 
     146            return false; 
     147        } 
     148 
     149        $pwd = $pwd['hex']; 
     150 
     151        $strReq = 'SELECT user_id, user_pwd ' . 
     152        'FROM ' . $core->prefix . 'user ' . 
     153        "WHERE user_id = '" . $core->con->escape($user_id) . "' "; 
     154 
     155        $rs = $core->con->select($strReq); 
     156 
     157        if ($rs->isEmpty()) { 
     158            return false; 
     159        } 
     160 
     161        if ($core->auth->cryptLegacy($rs->user_pwd) != $pwd) { 
     162            return false; 
     163        } 
     164 
     165        $permissions = $core->getBlogPermissions($core->blog->id); 
     166 
     167        if (empty($permissions[$rs->user_id])) { 
     168            return false; 
     169        } 
     170 
     171        return $rs->user_id; 
     172    } 
     173 
     174    public static function purgeOldSpam($core) 
     175    { 
     176        $defaultDateLastPurge = time(); 
     177        $defaultModerationTTL = '7'; 
     178        $init                 = false; 
     179 
     180        // settings 
     181        $core->blog->settings->addNamespace('antispam'); 
     182 
     183        $dateLastPurge = $core->blog->settings->antispam->antispam_date_last_purge; 
     184        if ($dateLastPurge === null) { 
     185            $init = true; 
     186            $core->blog->settings->antispam->put('antispam_date_last_purge', $defaultDateLastPurge, 'integer', 'Antispam Date Last Purge (unix timestamp)', true, false); 
     187            $dateLastPurge = $defaultDateLastPurge; 
     188        } 
     189        $moderationTTL = $core->blog->settings->antispam->antispam_moderation_ttl; 
     190        if ($moderationTTL === null) { 
     191            $core->blog->settings->antispam->put('antispam_moderation_ttl', $defaultModerationTTL, 'integer', 'Antispam Moderation TTL (days)', true, false); 
     192            $moderationTTL = $defaultModerationTTL; 
     193        } 
     194 
     195        if ($moderationTTL < 0) { 
     196            // disabled 
     197            return; 
     198        } 
     199 
     200        // we call the purge every day 
     201        if ((time() - $dateLastPurge) > (86400)) { 
     202            // update dateLastPurge 
     203            if (!$init) { 
     204                $core->blog->settings->antispam->put('antispam_date_last_purge', time(), null, null, true, false); 
     205            } 
     206            $date = date('Y-m-d H:i:s', time() - $moderationTTL * 86400); 
     207            dcAntispam::delAllSpam($core, $date); 
     208        } 
     209    } 
    212210} 
Note: See TracChangeset for help on using the changeset viewer.

Sites map