コード例 #1
0
ファイル: model.php プロジェクト: nickmancol/forkcms-rhcloud
 /**
  * General method to check if something is spam
  *
  * @param string $content The content that was submitted.
  * @param string $permaLink The permanent location of the entry the comment was submitted to.
  * @param string[optional] $author Commenters name.
  * @param string[optional] $email Commenters email address.
  * @param string[optional] $URL Commenters URL.
  * @param string[optional] $type May be blank, comment, trackback, pingback, or a made up value like "registration".
  * @return bool|string Will return a boolean, except when we can't decide the status (unknown will be returned in that case)
  */
 public static function isSpam($content, $permaLink, $author = null, $email = null, $URL = null, $type = 'comment')
 {
     // get some settings
     $akismetKey = self::getModuleSetting('core', 'akismet_key');
     // invalid key, so we can't detect spam
     if ($akismetKey === '') {
         return false;
     }
     // require the class
     require_once PATH_LIBRARY . '/external/akismet.php';
     // create new instance
     $akismet = new Akismet($akismetKey, SITE_URL);
     // set properties
     $akismet->setTimeOut(10);
     $akismet->setUserAgent('Fork CMS/' . FORK_VERSION);
     // try it, to decide if the item is spam
     try {
         // check with Akismet if the item is spam
         return $akismet->isSpam($content, $author, $email, $URL, $permaLink, $type);
     } catch (Exception $e) {
         // in debug mode we want to see exceptions, otherwise the fallback will be triggered
         if (SPOON_DEBUG) {
             throw $e;
         }
         // return unknown status
         return 'unknown';
     }
     // when everything fails
     return false;
 }
コード例 #2
0
ファイル: spam_control.php プロジェクト: biggtfish/Sandbox
 function report_ham($c)
 {
     $spam = $this->db->quick_query('SELECT * FROM %pspam WHERE spam_id=%d', $c);
     if (!$spam) {
         return $this->message('Spam Control', 'There is no such spam comment.', 'Continue', '/index.php?a=spam_control');
     }
     if ($this->user['user_level'] == USER_CONTRIBUTOR) {
         $user = null;
         if ($spam['spam_type'] == COMMENT_BLOG) {
             $user = $this->db->quick_query('SELECT post_user FROM %blogposts WHERE post_id=%d', $spam['spam_post']);
         } else {
             if ($spam['spam_type'] == COMMENT_GALLERY) {
                 $user = $this->db->quick_query('SELECT photo_user FROM %pphotogallery WHERE photo_id=%d', $spam['spam_post']);
             } else {
                 if ($spam['spam_type'] == COMMENT_FILE) {
                     $user = $this->db->quick_query('SELECT file_user FROM %pfilelist WHERE file_id=%d', $spam['spam_post']);
                 }
             }
         }
         if (!$user) {
             return $this->error('Access Denied: You do not own the entry you are trying to report.');
         }
     }
     $svars = json_decode($spam['spam_server'], true);
     // Setup and deliver the information to flag this comment as legit with Akismet.
     require_once 'lib/akismet.php';
     $akismet = new Akismet($this->settings['site_address'], $this->settings['wordpress_api_key'], $this->version);
     $akismet->setCommentAuthor($spam['spam_author']);
     $akismet->setCommentAuthorURL($spam['spam_url']);
     $akismet->setCommentContent($spam['spam_message']);
     $akismet->setUserIP($spam['spam_ip']);
     $akismet->setReferrer($svars['HTTP_REFERER']);
     $akismet->setUserAgent($svars['HTTP_USER_AGENT']);
     $akismet->setCommentType('comment');
     $akismet->submitHam();
     $q = $spam['spam_post'];
     $author = $spam['spam_user'];
     $author_name = $spam['spam_author'];
     $message = $spam['spam_message'];
     $url = $spam['spam_url'];
     $time = $spam['spam_date'];
     $ip = $spam['spam_ip'];
     $type = $spam['spam_type'];
     $this->settings['spam_count']--;
     $this->settings['ham_count']++;
     $this->save_settings();
     $this->db->dbquery("INSERT INTO %pblogcomments\n\t\t   (comment_post, comment_user, comment_author, comment_message, comment_date, comment_ip, comment_type)\n\t\t   VALUES ( %d, %d, '%s', '%s', %d, '%s', %d)", $q, $author, $author_name, $message, $time, $ip, $type);
     if ($type == COMMENT_BLOG) {
         $this->db->dbquery('UPDATE %pblogposts SET post_comment_count=post_comment_count+1 WHERE post_id=%d', $q);
     } elseif ($type == COMMENT_GALLERY) {
         $this->db->dbquery('UPDATE %pphotogallery SET photo_comment_count=photo_comment_count+1 WHERE photo_id=%d', $q);
     } elseif ($type == COMMENT_FILE) {
         $this->db->dbquery('UPDATE %pfilelist SET file_comment_count=file_comment_count+1 WHERE file_id=%d', $q);
     }
     $this->db->dbquery('DELETE FROM %pspam WHERE spam_id=%d', $c);
     return $this->message('Spam Control', 'Comment has been posted and Akismet notified of a false positive.', 'Continue', $this->settings['site_address'] . 'index.php?a=spam_control');
 }
コード例 #3
0
ファイル: model.php プロジェクト: netconstructor/forkcms
 /**
  * Submit spam, his call is for submitting comments that weren't marked as spam but should have been.
  *
  * @return	bool						If everything went fine true will be returned, otherwise an exception will be triggered.
  * @param	string $userIp				IP address of the comment submitter.
  * @param	string $userAgent			User agent information.
  * @param	string[optional] $content	The content that was submitted.
  * @param	string[optional] $author	Submitted name with the comment.
  * @param	string[optional] $email		Submitted email address.
  * @param	string[optional] $url		Commenter URL.
  * @param	string[optional] $permalink	The permanent location of the entry the comment was submitted to.
  * @param	string[optional] $type		May be blank, comment, trackback, pingback, or a made up value like "registration".
  * @param	string[optional] $referrer	The content of the HTTP_REFERER header should be sent here.
  * @param	array[optional] $others		Other data (the variables from $_SERVER).
  */
 public static function submitSpam($userIp, $userAgent, $content, $author = null, $email = null, $url = null, $permalink = null, $type = null, $referrer = null, $others = null)
 {
     // get some settings
     $akismetKey = self::getModuleSetting('core', 'akismet_key');
     // invalid key, so we can't detect spam
     if ($akismetKey === '') {
         return false;
     }
     // require the class
     require_once PATH_LIBRARY . '/external/akismet.php';
     // create new instance
     $akismet = new Akismet($akismetKey, SITE_URL);
     // set properties
     $akismet->setTimeOut(10);
     $akismet->setUserAgent('Fork CMS/2.1');
     // try it to decide it the item is spam
     try {
         // check with Akismet if the item is spam
         return $akismet->submitSpam($userIp, $userAgent, $content, $author = null, $email = null, $url = null, $permalink = null, $type = null, $referrer = null, $others = null);
     } catch (Exception $e) {
         // in debug mode we want to see exceptions, otherwise the fallback will be triggered
         if (SPOON_DEBUG) {
             throw $e;
         }
     }
     // when everything fails
     return false;
 }