http://www.basef.com.br/index.php?title=M%C3%A9todo_para_trocar_avatar_de_usu%C3%A1rio_(Jom_Social)&feed=atom&action=history
Método para trocar avatar de usuário (Jom Social) - Histórico de revisão
2024-03-29T13:00:11Z
Histórico de revisões para esta página neste wiki
MediaWiki 1.26alpha
http://www.basef.com.br/index.php?title=M%C3%A9todo_para_trocar_avatar_de_usu%C3%A1rio_(Jom_Social)&diff=406&oldid=prev
Admin: Criou página com 'Para trocar o avatar do usuário logado (sistema Jom Social), usar o seguinte código: <source lang="php"> // Atualiza o avatar do Jom Social para o usuário atualmente l...'
2015-09-09T17:12:29Z
<p>Criou página com 'Para trocar o avatar do usuário logado (sistema Jom Social), usar o seguinte código: <source lang="php"> // Atualiza o avatar do Jom Social para o usuário atualmente l...'</p>
<p><b>Página nova</b></p><div>Para trocar o avatar do usuário logado (sistema Jom Social), usar o seguinte código:<br />
<br />
<source lang="php"><br />
// Atualiza o avatar do Jom Social para o usuário atualmente logado. A localização da imagem deve ser informada por $pathImagem<br />
public static function jsAtualizarAvatar( $pathImagem = '' ) {<br />
<br />
require_once(JPATH_SITE . '/components/com_community/helpers/image.php');<br />
<br />
$my = CFactory::getUser();<br />
<br />
$userid = $my->id;<br />
<br />
$size = getimagesize( $pathImagem );<br />
$file['tmp_name'] = $pathImagem;<br />
$file['type'] = $size['mime'];<br />
<br />
<br />
$config = CFactory::getConfig();<br />
$uploadLimit = (double) $config->get('maxuploadsize');<br />
$uploadLimit = ( $uploadLimit * 1024 * 1024 );<br />
<br />
// @rule: Limit image size based on the maximum upload allowed.<br />
if (filesize($file['tmp_name']) > $uploadLimit && $uploadLimit != 0) {<br />
return false;<br />
}<br />
<br />
if (!CImageHelper::isValidType($file['type'])) {<br />
$mainframe->enqueueMessage(JText::_('CC IMAGE FILE NOT SUPPORTED'), 'error');<br />
<br />
return false;<br />
}<br />
<br />
if (!CImageHelper::isValid($file['tmp_name'])) {<br />
$mainframe->enqueueMessage(JText::_('CC IMAGE FILE NOT SUPPORTED'), 'error');<br />
<br />
return false;<br />
} else {<br />
// @todo: configurable width?<br />
$imageMaxWidth = 160;<br />
<br />
// Get a hash for the file name.<br />
$profileType = $my->getProfileType();<br />
$fileName = JUtility::getHash($file['tmp_name'] . time());<br />
$hashFileName = JString::substr($fileName, 0, 24);<br />
$multiprofile = & JTable::getInstance('MultiProfile', 'CTable');<br />
$multiprofile->load($profileType);<br />
<br />
$useWatermark = $profileType != COMMUNITY_DEFAULT_PROFILE && $config->get('profile_multiprofile') && !empty($multiprofile->watermark) ? true : false;<br />
//@todo: configurable path for avatar storage?<br />
<br />
$storage = JPATH_ROOT . DS . $config->getString('imagefolder') . DS . 'avatar';<br />
$storageImage = $storage . DS . $hashFileName . CImageHelper::getExtension($file['type']);<br />
$storageThumbnail = $storage . DS . 'thumb_' . $hashFileName . CImageHelper::getExtension($file['type']);<br />
$image = $config->getString('imagefolder') . '/avatar/' . $hashFileName . CImageHelper::getExtension($file['type']);<br />
$thumbnail = $config->getString('imagefolder') . '/avatar/' . 'thumb_' . $hashFileName . CImageHelper::getExtension($file['type']);<br />
<br />
$userModel = CFactory::getModel('user');<br />
<br />
<br />
// Only resize when the width exceeds the max.<br />
if (!CImageHelper::resizeProportional($file['tmp_name'], $storageImage, $file['type'], $imageMaxWidth)) {<br />
$mainframe->enqueueMessage(JText::sprintf('CC ERROR MOVING UPLOADED FILE', $storageImage), 'error');<br />
<br />
return false;<br />
}<br />
<br />
// Generate thumbnail<br />
if (!CImageHelper::createThumb($file['tmp_name'], $storageThumbnail, $file['type'])) {<br />
$mainframe->enqueueMessage(JText::sprintf('CC ERROR MOVING UPLOADED FILE', $storageThumbnail), 'error');<br />
<br />
return false;<br />
}<br />
<br />
if ($useWatermark) {<br />
// @rule: Before adding the watermark, we should copy the user's original image so that when the admin tries to reset the avatar,<br />
// it will be able to grab the original picture.<br />
JFile::copy($storageImage, JPATH_ROOT . DS . 'images' . DS . 'watermarks' . DS . 'original' . DS . md5($my->id . '_avatar') . CImageHelper::getExtension($file['type']));<br />
JFile::copy($storageThumbnail, JPATH_ROOT . DS . 'images' . DS . 'watermarks' . DS . 'original' . DS . md5($my->id . '_thumb') . CImageHelper::getExtension($file['type']));<br />
<br />
$watermarkPath = JPATH_ROOT . DS . JString::str_ireplace('/', DS, $multiprofile->watermark);<br />
<br />
list( $watermarkWidth, $watermarkHeight ) = getimagesize($watermarkPath);<br />
list( $avatarWidth, $avatarHeight ) = getimagesize($storageImage);<br />
list( $thumbWidth, $thumbHeight ) = getimagesize($storageThumbnail);<br />
<br />
$watermarkImage = $storageImage;<br />
$watermarkThumbnail = $storageThumbnail;<br />
<br />
// Avatar Properties<br />
$avatarPosition = CImageHelper::getPositions($multiprofile->watermark_location, $avatarWidth, $avatarHeight, $watermarkWidth, $watermarkHeight);<br />
<br />
// The original image file will be removed from the system once it generates a new watermark image.<br />
CImageHelper::addWatermark($storageImage, $watermarkImage, 'image/jpg', $watermarkPath, $avatarPosition->x, $avatarPosition->y);<br />
<br />
//Thumbnail Properties<br />
$thumbPosition = CImageHelper::getPositions($multiprofile->watermark_location, $thumbWidth, $thumbHeight, $watermarkWidth, $watermarkHeight);<br />
<br />
// The original thumbnail file will be removed from the system once it generates a new watermark image.<br />
CImageHelper::addWatermark($storageThumbnail, $watermarkThumbnail, 'image/jpg', $watermarkPath, $thumbPosition->x, $thumbPosition->y);<br />
<br />
$my->set('_watermark_hash', $multiprofile->watermark_hash);<br />
$my->save();<br />
}<br />
<br />
$userModel->setImage($userid, $image, 'avatar');<br />
$userModel->setImage($userid, $thumbnail, 'thumb');<br />
<br />
// Update the user object so that the profile picture gets updated.<br />
$my->set('_avatar', $image);<br />
$my->set('_thumb', $thumbnail);<br />
<br />
// @rule: once user changes their profile picture, storage method should always be file.<br />
$my->set('_storage', 'file');<br />
<br />
}<br />
}<br />
</source><br />
<br />
[[Category:Joomla]]</div>
Admin