/**
  * @see Action::execute()
  */
 public function execute()
 {
     parent::execute();
     // delete old user avatar if necessary
     if ($this->avatarType == 'user') {
         $this->avatar->delete();
         $this->avatar = null;
     }
     // update user
     $sql = "UPDATE\twcf" . WCF_N . "_user\n\t\t\tSET\tavatarID = 0,\n\t\t\t\tgravatar = ''\n\t\t\tWHERE\tuserID = " . WCF::getUser()->userID;
     WCF::getDB()->sendQuery($sql);
     // reset session
     WCF::getSession()->resetUserData();
     // forward
     if (empty($_REQUEST['ajax'])) {
         HeaderUtil::redirect('index.php?form=AvatarEdit' . SID_ARG_2ND_NOT_ENCODED);
         exit;
     }
 }
 /**
  * @see Action::execute()
  */
 public function execute()
 {
     parent::execute();
     // check permission
     WCF::getUser()->checkPermission('admin.avatar.canDeleteAvatar');
     // delete avatar
     require_once WCF_DIR . 'lib/data/user/avatar/AvatarEditor.class.php';
     $avatar = new AvatarEditor($this->avatarID);
     if (!$avatar->avatarID) {
         throw new IllegalLinkException();
     }
     $avatar->delete();
     if (!$avatar->userID) {
         $sql = "UPDATE\twcf" . WCF_N . "_user\n\t\t\t\tSET\tavatarID = 0\n\t\t\t\tWHERE\tavatarID = " . $this->avatarID;
         WCF::getDB()->sendQuery($sql);
     }
     $this->executed();
     // forward to list page
     HeaderUtil::redirect('index.php?page=AvatarList&deletedAvatarID=' . $this->avatarID . '&type=' . $this->type . '&pageNo=' . $this->pageNo . '&packageID=' . PACKAGE_ID . SID_ARG_2ND_NOT_ENCODED);
     exit;
 }
 /**
  * @see AbstractLostAndFounDatabaseItem::delete()	 
  */
 public function delete()
 {
     $editor = new AvatarEditor($this->objectID);
     $editor->delete();
 }
 /**
  * @see EventListener::execute()
  */
 public function execute($eventObj, $className, $eventName)
 {
     if (MODULE_AVATAR == 1) {
         if ($eventName == 'readFormParameters') {
             if (isset($_POST['avatarID'])) {
                 $this->avatarID = intval($_POST['avatarID']);
             }
             if (isset($_POST['disableAvatar'])) {
                 $this->disableAvatar = intval($_POST['disableAvatar']);
             }
             if (isset($_POST['disableAvatarReason'])) {
                 $this->disableAvatarReason = $_POST['disableAvatarReason'];
             }
             if (isset($_POST['useAvatar'])) {
                 $this->useAvatar = intval($_POST['useAvatar']);
             }
             if (isset($_POST['avatarURL'])) {
                 $this->avatarURL = StringUtil::trim($_POST['avatarURL']);
             }
             if (isset($_FILES['avatarUpload'])) {
                 $this->avatarUpload = $_FILES['avatarUpload'];
             }
             if (MODULE_GRAVATAR == 1 && isset($_POST['gravatar'])) {
                 $this->gravatar = StringUtil::trim($_POST['gravatar']);
             }
         } else {
             if ($eventName == 'validate') {
                 try {
                     if ($this->useAvatar == 1) {
                         if (empty($this->gravatar)) {
                             // upload or download avatar
                             if ($this->avatarUpload && $this->avatarUpload['error'] != 4) {
                                 if ($this->avatarUpload['error'] != 0) {
                                     throw new UserInputException('avatarUpload', 'uploadFailed');
                                 }
                                 $this->avatarID = AvatarEditor::create($this->avatarUpload['tmp_name'], $this->avatarUpload['name'], 'avatarUpload', $eventObj->userID);
                             } else {
                                 if ($this->avatarURL != 'http://') {
                                     if (StringUtil::indexOf($this->avatarURL, 'http://') !== 0) {
                                         throw new UserInputException('avatarURL', 'downloadFailed');
                                     }
                                     try {
                                         $tmpName = FileUtil::downloadFileFromHttp($this->avatarURL, 'avatar');
                                     } catch (SystemException $e) {
                                         throw new UserInputException('avatarURL', 'downloadFailed');
                                     }
                                     $this->avatarID = AvatarEditor::create($tmpName, $this->avatarURL, 'avatarURL', $eventObj->userID);
                                 } else {
                                     $this->avatarID = $eventObj->user->avatarID;
                                 }
                             }
                         }
                     } else {
                         if ($this->useAvatar == 2) {
                             // use a default avatar
                             $avatar = new AvatarEditor($this->avatarID);
                             if (!$avatar->avatarID || $avatar->userID || $avatar->groupID && !in_array($avatar->groupID, $eventObj->user->getGroupIDs()) || $avatar->neededPoints > $eventObj->user->activityPoints) {
                                 throw new UserInputException('availableAvatars', 'invalid');
                             }
                         } else {
                             $this->avatarID = 0;
                         }
                     }
                 } catch (UserInputException $e) {
                     $eventObj->errorType[$e->getField()] = $e->getType();
                 }
             } else {
                 if ($eventName == 'save') {
                     // delete old avatar if necessary
                     if ($eventObj->user->avatarID) {
                         $currentAvatar = new AvatarEditor($eventObj->user->avatarID);
                         if ($currentAvatar->userID && $this->avatarID != $currentAvatar->avatarID) {
                             $currentAvatar->delete();
                         }
                     }
                     // update user
                     $eventObj->additionalFields['avatarID'] = $this->avatarID;
                     $eventObj->additionalFields['disableAvatar'] = $this->disableAvatar;
                     $eventObj->additionalFields['disableAvatarReason'] = $this->disableAvatarReason;
                     $eventObj->additionalFields['gravatar'] = $this->gravatar;
                 } else {
                     if ($eventName == 'show') {
                         // get default values
                         if (!count($_POST)) {
                             $this->avatarID = $eventObj->user->avatarID;
                             $this->disableAvatar = $eventObj->user->disableAvatar;
                             $this->disableAvatarReason = $eventObj->user->disableAvatarReason;
                             $this->gravatar = $eventObj->user->gravatar;
                         }
                         $currentAvatar = null;
                         if ($this->avatarID) {
                             $currentAvatar = new AvatarEditor($this->avatarID);
                             $this->useAvatar = $currentAvatar->userID ? 1 : 2;
                         } else {
                             if ($this->gravatar) {
                                 require_once WCF_DIR . 'lib/data/user/avatar/Gravatar.class.php';
                                 $currentAvatar = new Gravatar($this->gravatar);
                                 $this->useAvatar = 1;
                             }
                         }
                         $availableAvatarCategories = $this->getAvailableAvatars(implode(',', $eventObj->user->getGroupIDs()), intval($eventObj->user->activityPoints));
                         $avatarCount = 0;
                         foreach ($availableAvatarCategories as $availableAvatarCategory) {
                             $avatarCount += count($availableAvatarCategory['avatars']);
                         }
                         WCF::getTPL()->assign(array('avatarID' => $this->avatarID, 'disableAvatar' => $this->disableAvatar, 'disableAvatarReason' => $this->disableAvatarReason, 'avatarURL' => $this->avatarURL, 'currentAvatar' => $currentAvatar, 'avatarCategories' => $availableAvatarCategories, 'items' => $avatarCount, 'useAvatar' => $this->useAvatar, 'gravatar' => $this->gravatar));
                         WCF::getTPL()->append(array('additionalTabs' => '<li id="avatar"><a onclick="tabMenu.showSubTabMenu(\'avatar\');"><span>' . WCF::getLanguage()->get('wcf.user.avatar') . '</span></a></li>', 'additionalTabContents' => WCF::getTPL()->fetch('userEditAvatar')));
                     }
                 }
             }
         }
     }
 }