/**
  * @see	\wcf\system\worker\IWorker::execute()
  */
 public function execute()
 {
     parent::execute();
     $users = $userIDs = array();
     foreach ($this->getObjectList() as $user) {
         $users[] = new UserEditor($user);
         $userIDs[] = $user->userID;
     }
     // update user ranks
     if (!empty($users)) {
         $action = new UserProfileAction($users, 'updateUserOnlineMarking');
         $action->executeAction();
     }
     if (!empty($userIDs)) {
         // update activity points
         UserActivityPointHandler::getInstance()->updateUsers($userIDs);
         // update like counter
         if (MODULE_LIKE) {
             $conditionBuilder = new PreparedStatementConditionBuilder();
             $conditionBuilder->add('user_table.userID IN (?)', array($userIDs));
             $sql = "UPDATE\twcf" . WCF_N . "_user user_table\n\t\t\t\t\tSET\tlikesReceived = (\n\t\t\t\t\t\t\tSELECT\tCOUNT(*)\n\t\t\t\t\t\t\tFROM\twcf" . WCF_N . "_like\n\t\t\t\t\t\t\tWHERE\tobjectUserID = user_table.userID\n\t\t\t\t\t\t\t\tAND likeValue = " . Like::LIKE . "\n\t\t\t\t\t\t)\n\t\t\t\t\t" . $conditionBuilder;
             $statement = WCF::getDB()->prepareStatement($sql);
             $statement->execute($conditionBuilder->getParameters());
         }
     }
 }
Пример #2
0
 /**
  * Add users to given groups.
  */
 public function addToGroups()
 {
     if (empty($this->objects)) {
         $this->readObjects();
     }
     $groupIDs = $this->parameters['groups'];
     $deleteOldGroups = $addDefaultGroups = true;
     if (isset($this->parameters['deleteOldGroups'])) {
         $deleteOldGroups = $this->parameters['deleteOldGroups'];
     }
     if (isset($this->parameters['addDefaultGroups'])) {
         $addDefaultGroups = $this->parameters['addDefaultGroups'];
     }
     foreach ($this->objects as $userEditor) {
         $userEditor->addToGroups($groupIDs, $deleteOldGroups, $addDefaultGroups);
     }
     //reread objects
     $this->objects = array();
     UserEditor::resetCache();
     $this->readObjects();
     if (MODULE_USER_RANK) {
         $action = new UserProfileAction($this->objects, 'updateUserRank');
         $action->executeAction();
     }
     if (MODULE_USERS_ONLINE) {
         $action = new UserProfileAction($this->objects, 'updateUserOnlineMarking');
         $action->executeAction();
     }
 }
Пример #3
0
 /**
  * @see	\wcf\form\IForm::save()
  */
 public function save()
 {
     AbstractForm::save();
     // handle avatar
     if ($this->avatarType != 'custom') {
         // delete custom avatar
         if ($this->user->avatarID) {
             $action = new UserAvatarAction(array($this->user->avatarID), 'delete');
             $action->executeAction();
         }
     }
     switch ($this->avatarType) {
         case 'none':
             $avatarData = array('avatarID' => null, 'enableGravatar' => 0);
             break;
         case 'custom':
             $avatarData = array('enableGravatar' => 0);
             break;
         case 'gravatar':
             $avatarData = array('avatarID' => null, 'enableGravatar' => 1);
             break;
     }
     $this->additionalFields = array_merge($this->additionalFields, $avatarData);
     // add default groups
     $defaultGroups = UserGroup::getAccessibleGroups(array(UserGroup::GUESTS, UserGroup::EVERYONE, UserGroup::USERS));
     $oldGroupIDs = $this->user->getGroupIDs();
     foreach ($oldGroupIDs as $oldGroupID) {
         if (isset($defaultGroups[$oldGroupID])) {
             $this->groupIDs[] = $oldGroupID;
         }
     }
     $this->groupIDs = array_unique($this->groupIDs);
     // save user
     $saveOptions = $this->optionHandler->save();
     $data = array('data' => array_merge($this->additionalFields, array('username' => $this->username, 'email' => $this->email, 'password' => $this->password, 'languageID' => $this->languageID, 'userTitle' => $this->userTitle, 'signature' => $this->signature, 'signatureEnableBBCodes' => $this->signatureEnableBBCodes, 'signatureEnableSmilies' => $this->signatureEnableSmilies, 'signatureEnableHtml' => $this->signatureEnableHtml)), 'groups' => $this->groupIDs, 'languageIDs' => $this->visibleLanguages, 'options' => $saveOptions);
     // handle ban
     if (WCF::getSession()->getPermission('admin.user.canBanUser')) {
         if ($this->banExpires) {
             $this->banExpires = strtotime($this->banExpires);
         } else {
             $this->banExpires = 0;
         }
         $data['data']['banned'] = $this->banned;
         $data['data']['banReason'] = $this->banReason;
         $data['data']['banExpires'] = $this->banExpires;
     }
     // handle disabled signature
     if (WCF::getSession()->getPermission('admin.user.canDisableSignature')) {
         if ($this->disableSignatureExpires) {
             $this->disableSignatureExpires = strtotime($this->disableSignatureExpires);
         } else {
             $this->disableSignatureExpires = 0;
         }
         $data['data']['disableSignature'] = $this->disableSignature;
         $data['data']['disableSignatureReason'] = $this->disableSignatureReason;
         $data['data']['disableSignatureExpires'] = $this->disableSignatureExpires;
     }
     // handle disabled avatar
     if (WCF::getSession()->getPermission('admin.user.canDisableAvatar')) {
         if ($this->disableAvatarExpires) {
             $this->disableAvatarExpires = strtotime($this->disableAvatarExpires);
         } else {
             $this->disableAvatarExpires = 0;
         }
         $data['data']['disableAvatar'] = $this->disableAvatar;
         $data['data']['disableAvatarReason'] = $this->disableAvatarReason;
         $data['data']['disableAvatarExpires'] = $this->disableAvatarExpires;
     }
     $this->objectAction = new UserAction(array($this->userID), 'update', $data);
     $this->objectAction->executeAction();
     // update user rank
     $editor = new UserEditor(new User($this->userID));
     if (MODULE_USER_RANK) {
         $action = new UserProfileAction(array($editor), 'updateUserRank');
         $action->executeAction();
     }
     if (MODULE_USERS_ONLINE) {
         $action = new UserProfileAction(array($editor), 'updateUserOnlineMarking');
         $action->executeAction();
     }
     // remove assignments
     $sql = "DELETE FROM\twcf" . WCF_N . "_moderation_queue_to_user\n\t\t\tWHERE\t\tuserID = ?";
     $statement = WCF::getDB()->prepareStatement($sql);
     $statement->execute(array($this->user->userID));
     // reset moderation count
     ModerationQueueManager::getInstance()->resetModerationCount($this->user->userID);
     $this->saved();
     // reset password
     $this->password = $this->confirmPassword = '';
     // show success message
     WCF::getTPL()->assign('success', true);
 }
Пример #4
0
<?php

use wcf\data\user\UserEditor;
use wcf\data\user\UserProfileAction;
use wcf\system\dashboard\DashboardHandler;
use wcf\system\WCF;
// set dashboard default values
DashboardHandler::setDefaultValues('com.woltlab.wcf.user.DashboardPage', array('com.woltlab.wcf.user.recentActivity' => 1, 'com.woltlab.wcf.user.registerButton' => 1, 'com.woltlab.wcf.user.signedInAs' => 2, 'com.woltlab.wcf.user.statsSidebar' => 3));
DashboardHandler::setDefaultValues('com.woltlab.wcf.user.MembersListPage', array('com.woltlab.wcf.user.newestMembers' => 1, 'com.woltlab.wcf.user.mostActiveMembers' => 2));
// update administrator user rank and user online marking
$editor = new UserEditor(WCF::getUser());
$action = new UserProfileAction(array($editor), 'updateUserRank');
$action->executeAction();
$action = new UserProfileAction(array($editor), 'updateUserOnlineMarking');
$action->executeAction();
 /**
  * Updates the user ranks for the given users.
  * 
  * @param	array<integer>		$userIDs
  */
 protected function updateUserRanks(array $userIDs)
 {
     $action = new UserProfileAction($userIDs, 'updateUserRank');
     $action->executeAction();
 }