public function resetAvatar($type = 'avatar') { $usercontext = vB::getUserContext(); if (!($userid = $usercontext->fetchUserId()) or !$usercontext->hasPermission('genericpermissions', 'canuseavatar') or !$usercontext->hasPermission('genericpermissions', 'canmodifyprofile')) { throw new vB_Exception_API('no_permission_use_avatar'); } $userpic = new vB_DataManager_Userpic_Avatar(vB_DataManager_Constants::ERRTYPE_ARRAY_UNPROCESSED); $userpic->condition = array('userid' => $userid); $userpic->delete(); if ($userpic->has_errors(false)) { throw $userpic->get_exception(); } return vB_Api::instanceInternal('user')->fetchAvatar($userid, $type); }
/** * Update avatar * * @param integer $userid User ID whose avatar is going to be updated * @param integer $avatarid Predefined avatar ID. -1 means to remove avatar * from the user. 0 means use custom avatar defined in $avatardata * @param array $data Avatar data. It should be an array contains * the following items: 'filename', 'width', 'height', 'filedata', 'location' */ public function updateAvatar($userid, $avatarid, $data = array(), $cropped = false) { $userContext = vB::getUserContext(); $currentUserId = $userContext->fetchUserId(); $userid = intval($userid); if ($userid <= 0 and $currentUserId) { $userid = $currentUserId; } // Check if current user canadminusers try { $this->checkHasAdminPermission('canadminusers'); } catch (Exception $e) { // No. Then we need to do something here. if ($currentUserId != $userid) { // If current user isn't the same as passed $userid throw new vB_Exception_Api('no_permission'); } } $useavatar = $avatarid == -1 ? 0 : 1; $bf_ugp_genericpermissions = vB::getDatastore()->getValue('bf_ugp_genericpermissions'); $userinfo = vB_User::fetchUserInfo(intval($userid)); if (!$userinfo) { throw new vB_Exception_Api('invalid_user_specified'); } // init user datamanager $userdata = new vB_Datamanager_User(vB_DataManager_Constants::ERRTYPE_ARRAY_UNPROCESSED); $userdata->set_existing($userinfo); if ($useavatar) { if (!$avatarid) { $userpic = new vB_DataManager_Userpic(vB_DataManager_Constants::ERRTYPE_ARRAY_UNPROCESSED); // user's group doesn't have permission to use custom avatars so set override if (!$this->userContext->hasPermission('genericpermissions', 'canuseavatar')) { // init user datamanager $userdata->set_bitfield('adminoptions', 'adminavatar', 1); } $userpic->set('userid', $userinfo['userid']); $userpic->set('dateline', vB::getRequest()->getTimeNow()); $userpic->set('width', $data['width']); $userpic->set('height', $data['height']); if (empty($data['extension'])) { $filebits = explode('.', $data['filename']); $data['extension'] = end($filebits); } $userpic->set('extension', $data['extension']); if (vB::getDatastore()->getOption('usefileavatar')) { $avatarpath = vB::getDatastore()->getOption('avatarpath'); $prev_dir = getcwd(); chdir(DIR); $oldavatarfilename = "avatar{$userid}_{$userinfo['avatarrevision']}.{$data['extension']}"; $avatarrevision = $userinfo['avatarrevision'] + 1; $avatarfilename = "avatar{$userid}_{$avatarrevision}.{$data['extension']}"; @unlink($avatarpath . '/' . $oldavatarfilename); @unlink($avatarpath . '/thumbs/' . $oldavatarfilename); $avatarres = @fopen("{$avatarpath}/{$avatarfilename}", 'wb'); $userpic->set('filename', $avatarfilename); fwrite($avatarres, $data['filedata']); @fclose($avatarres); if (!empty($data['filedata_thumb'])) { $thumbres = @fopen("{$avatarpath}/thumbs/{$avatarfilename}", 'wb'); fwrite($thumbres, $data['filedata_thumb']); @fclose($thumbres); $userpic->set('width_thumb', $data['width_thumb']); $userpic->set('height_thumb', $data['height_thumb']); } chdir($prev_dir); $userpic->set('filesize', $data['filesize']); $userdata->set('avatarrevision', $userinfo['avatarrevision'] + 1); } else { $avatarfilename = "avatar{$userid}_{$userinfo['avatarrevision']}.{$data['extension']}"; $userpic->setr('filedata', $data['filedata']); $userpic->set('filename', $avatarfilename); $imageHandler = vB_Image::instance(); if (!$cropped) { $thumb = $imageHandler->fetchThumbNail($data['name'], $data['location']); } if (!$cropped) { $userpic->set('filedata_thumb', $thumb['filedata']); $userpic->set('width_thumb', $thumb['width']); $userpic->set('height_thumb', $thumb['height']); } else { $userpic->set('filedata_thumb', $data['filedata_thumb']); $userpic->set('width_thumb', $data['width_thumb']); $userpic->set('height_thumb', $data['height_thumb']); } } $userpic->save(); } else { // predefined avatar $userpic = new vB_DataManager_Userpic_Avatar(vB_DataManager_Constants::ERRTYPE_ARRAY_UNPROCESSED); $userpic->condition = array('userid' => $userinfo['userid']); $userpic->delete(); if ($userpic->has_errors(false)) { throw $userpic->get_exception(); } } } else { // not using an avatar $avatarid = 0; $userpic = new vB_DataManager_Userpic_Avatar(vB_DataManager_Constants::ERRTYPE_ARRAY_UNPROCESSED); $userpic->condition = array('userid' => $userinfo['userid']); $userpic->delete(); if ($userpic->has_errors(false)) { throw $userpic->get_exception(); } } $userdata->set('avatarid', $avatarid); if (!$userdata->save()) { throw $userpic->get_exception(); } unset($this->avatarsCache['avatar'][$userid]); unset($this->avatarsCache['thumb'][$userid]); return true; }
$upload->maxwidth = $userinfo['permissions']['avatarmaxwidth']; $upload->maxheight = $userinfo['permissions']['avatarmaxheight']; } if (!$upload->process_upload($vbulletin->GPC['avatarurl'])) { print_modcp_stop_message2(array('there_were_errors_encountered_with_your_upload_x', $upload->fetch_error())); } } else { // predefined avatar $userpic = new vB_DataManager_Userpic_Avatar($vbulletin, vB_DataManager_Constants::ERRTYPE_CP); $userpic->condition = "userid = " . $userinfo['userid']; $userpic->delete(); } } else { // not using an avatar $vbulletin->GPC['avatarid'] = 0; $userpic = new vB_DataManager_Userpic_Avatar($vbulletin, vB_DataManager_Constants::ERRTYPE_CP); $userpic->condition = "userid = " . $userinfo['userid']; $userpic->delete(); } $userdata->set('avatarid', $vbulletin->GPC['avatarid']); $userdata->save(); if (can_moderate(0, 'canviewprofile')) { $file = 'user'; $args = array('do' => 'viewuser', 'u' => $vbulletin->GPC['userid']); } else { $file = 'index'; $args = array('do' => 'home'); } print_modcp_stop_message2('saved_avatar_successfully', $file, $args); } // ###################### Start Moderate Group Join Requests #######################