/**
  * Marks member(s) as spam
  *
  * @note	Exceptions CAN bubble up, so you should still capture exceptions from calls to this method
  * @param	array 	Array of member ids
  * @return	string	Confirmation message
  */
 public function markMembersAsSpam($ids)
 {
     /* Grab members */
     $members = IPSMember::load($ids);
     /* Load moderator's library */
     $classToLoad = IPSLib::loadLibrary(IPSLib::getAppDir('forums') . '/sources/classes/moderate.php', 'moderatorLibrary', 'forums');
     $modLibrary = new $classToLoad($this->registry);
     /* Load custom profile fields class */
     $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/customfields/profileFields.php', 'customProfileFields');
     $fields = new $classToLoad();
     /* Load language file */
     $this->registry->getClass('class_localization')->loadLanguageFile(array('public_mod'), 'forums');
     /* Cycle all members */
     foreach ($members as $member_id => $member) {
         /* Protected group? */
         if (IPSMember::isInGroup($member, explode(',', ipsRegistry::$settings['warn_protected']))) {
             continue;
         }
         /**
          * Update member group and then flag as spammer,
          * we're removing them from the validating queue anyway
          * 
          * We must run this query here before they're flagged as spammer because
          * the 'onProfileUpdate' member sync call could edit further their group
          */
         $this->DB->update('members', array('member_group_id' => $this->settings['member_group']), 'member_id=' . $member['member_id']);
         $member['member_group_id'] = $this->settings['member_group'];
         # Change group here too to reflect the update just in case
         IPSMember::flagMemberAsSpammer($member, $this->memberData, FALSE);
     }
     /* Remove validating rows */
     $this->DB->delete('validating', "member_id IN (" . implode(",", $ids) . ")");
     /* Reset last member */
     IPSMember::resetLastRegisteredMember();
     $message = sprintf($this->lang->words['t_setasspammers'], count($ids));
     ipsRegistry::getClass('adminFunctions')->saveAdminLog($message);
     return $message;
 }
Exemple #2
0
 /**
  * Toggle member spam [process]
  *
  * @return	@e void
  */
 protected function _memberToggleSpam()
 {
     /* INIT */
     $toSave = array();
     $this->request['member_id'] = intval($this->request['member_id']);
     if (!$this->request['member_id']) {
         $this->registry->output->showError($this->lang->words['m_specify'], 11228);
     }
     $member = IPSMember::load($this->request['member_id']);
     if (!$member['member_id']) {
         $this->registry->output->showError($this->lang->words['m_noid'], 11229);
     }
     //-----------------------------------------
     // Allowed to spam administrators?
     //-----------------------------------------
     if ($member['g_access_cp'] and !$this->registry->getClass('class_permissions')->checkPermission('member_ban_admin')) {
         $this->registry->output->global_message = $this->lang->words['m_banadmin'];
         $this->_memberView();
         return;
     }
     /* Load mod lib */
     $classToLoad = IPSLib::loadLibrary(IPSLib::getAppDir('forums') . '/sources/classes/moderate.php', 'moderatorLibrary', 'forums');
     $this->modLibrary = new $classToLoad($this->registry);
     /* Spam or not ? */
     if ($member['bw_is_spammer']) {
         $toSave['core']['bw_is_spammer'] = 0;
         $toSave['core']['restrict_post'] = 0;
         $toSave['core']['members_disable_pm'] = 0;
         /* Flag them as not a spammer */
         IPSMember::save($member['member_id'], $toSave);
         /* Un-spammed ;) */
         IPSLib::runMemberSync('onUnSetAsSpammer', $member);
     } else {
         IPSMember::flagMemberAsSpammer($member, $this->memberData);
     }
     //-----------------------------------------
     // Redirect
     //-----------------------------------------
     ipsRegistry::getClass('adminFunctions')->saveAdminLog(sprintf($this->lang->words['t_log_spam'], $member['members_display_name']));
     $this->registry->output->global_message = $this->lang->words['t_log_spam'];
     $this->registry->output->silentRedirectWithMessage($this->settings['base_url'] . $this->form_code . '&do=viewmember&member_id=' . $member['member_id']);
 }
 /**
  * Flag a user account as a spammer
  *
  * @return	@e void
  */
 protected function _setAsSpammer()
 {
     //-----------------------------------------
     // Init
     //-----------------------------------------
     $member_id = intval($this->request['member_id']);
     $toSave = array('core' => array('bw_is_spammer' => 1));
     $topicId = intval($this->request['t']);
     $topic = array();
     if ($topicId) {
         $topic = $this->DB->buildAndFetch(array('select' => 'tid, title_seo, forum_id', 'from' => 'topics', 'where' => 'tid=' . $topicId));
     }
     //-----------------------------------------
     // Load member
     //-----------------------------------------
     $member = IPSMember::load($member_id);
     if (!$member['member_id']) {
         $this->registry->output->showError('moderate_no_permission', 10311900, true, null, 404);
     }
     if (!$this->memberData['g_access_cp'] and $member['g_access_cp']) {
         return $this->registry->getClass('output')->getTemplate('modcp')->modcpMessage($this->lang->words['mod_cannot_edit_admin']);
     }
     //-----------------------------------------
     // Check permissions
     //-----------------------------------------
     if (!$this->memberData['g_is_supmod'] and !$this->memberData['forumsModeratorData'][$topic['forum_id']]['bw_flag_spammers']) {
         $this->registry->output->showError('moderate_no_permission', 103119, true, null, 403);
     }
     if (IPSMember::isInGroup($member, explode(',', $this->settings['warn_protected']))) {
         $this->registry->output->showError('moderate_no_permission', 10311901, true, null, 403);
     }
     if ($this->request['auth_key'] != $this->member->form_hash) {
         $this->registry->output->showError('moderate_no_permission', 10311902, null, null, 403);
     }
     //-----------------------------------------
     // Do it
     //-----------------------------------------
     IPSMember::flagMemberAsSpammer($member, $this->memberData);
     //-----------------------------------------
     // Redirect
     //-----------------------------------------
     if ($topicId) {
         $this->registry->output->redirectScreen($this->lang->words['flag_spam_done'], $this->settings['base_url'] . "showtopic=" . $topic['tid'] . "&st=" . intval($this->request['st']), $topic['title_seo'], 'showtopic');
     } else {
         $this->registry->output->redirectScreen($this->lang->words['flag_spam_done'], $this->settings['base_url'] . "showuser=" . $member['member_id'], $member['members_seo_name'], 'showuser');
     }
 }