function onProfileAvatarUpdate($userid, $old_avatar_path, $new_avatar_path) { // When admin is removing a user's avatar // we need to apply default avatar of profiletype $isAdmin = XiptHelperUtils::isAdmin(JFactory::getUser()->id); $view = JRequest::getVar('view', '', 'GET'); $task = JRequest::getVar('task', '', 'GET'); $new_avatar_path = XiptHelperUtils::getRealPath($new_avatar_path); if ($isAdmin && $view == 'profile' && $task == 'removepicture') { //setup $new_avatar $ptype = XiptLibProfiletypes::getUserData($userid, 'PROFILETYPE'); $avatar = XiptLibProfiletypes::getProfiletypeData($ptype, 'avatar'); //if users avatar is custom avatar then thumb is stored as thumb_XXXX.png //else if it is a default avatar(JomSocial OR Profiletype) then stored as XXX_thumb.png //HERE the new_avatar will be default jomsocial avatar so search _thumb if (JString::stristr($new_avatar_path, 'thumb')) { $new_avatar_path = XiptHelperImage::getThumbAvatarFromFull($avatar); } else { $new_avatar_path = $avatar; } } //check if avatar is ptype default avatar if (XiptLibProfiletypes::isDefaultAvatarOfProfileType($old_avatar_path, false)) { //HERE we should search for _thumb, not for thumb_ /**XITODO:: Properly test following:: * In JS2.2 :: When our default avatar is user.png then JS delete this avatar from(Community/assets/user.png) * becoz at delete time its only consider default.jpg (components/com_community/assets/default.jpg)as default value and * if avatar is user.png (Community/assets/user.png) then this path is not set into database * but it saved by XiPT 3.1. * JS2.2 does not delete default.jpg(Community/assets/default.jpg) So we changed path. * (Not understanding:: Call 2 manish) :) */ if (JString::stristr($old_avatar_path, 'thumb')) { //$old_avatar_path = DEFAULT_AVATAR_THUMB; $old_avatar_path = 'components/com_community/assets/default_thumb.jpg'; } else { //$old_avatar_path = DEFAULT_AVATAR; $old_avatar_path = 'components/com_community/assets/default.jpg'; } } //Now apply watermark to images // for that we don't require to add watermark // XITODO : format it in proper way if (!XiptLibProfiletypes::getParams(XiptLibProfiletypes::getUserData($userid), 'watermarkparams')->get('enableWaterMark', 0)) { return true; } //check if uploadable avatar is not default ptype avatar /**XITODO:: Properly testing following * In JS 2.2:: user.png consider as a default avatar for every user and dont save this avatar path in community user table * So XiPT 3.1 also consider user.png as default avatar * But may be Xipt installed on existing data then at reset all time, may b apply watr-mrk on * community/assets/defauult.jpg (not usr.png). * Need properly testing and if get above thing then restict. :) */ if (XiptLibProfiletypes::isDefaultAvatarOfProfileType($new_avatar_path, true)) { return true; } //check what is new image , if thumb or original $what = JString::stristr($new_avatar_path, 'thumb') ? 'thumb' : 'avatar'; $watermarkInfo = XiptHelperImage::getWatermark($userid); if (false == $watermarkInfo) { return true; } XiptHelperImage::addWatermarkOnAvatar($userid, $new_avatar_path, $watermarkInfo, $what); return true; }
function restoreBackUpAvatar($currImagePath) { $currImagePath = XiptHelperUtils::getRealPath($currImagePath); $avatarFileName = JFile::getName($currImagePath); if (JFile::exists(USER_AVATAR_BACKUP . DS . $avatarFileName) && JFile::copy(USER_AVATAR_BACKUP . DS . $avatarFileName, JPATH_ROOT . DS . $currImagePath)) { return true; } if (JFactory::getConfig()->getValue('debug')) { XiptError::raiseWarning("XIPT-SYSTEM-WARNING", "User avatar {" . USER_AVATAR_BACKUP . DS . $avatarFileName . "} in backup folder does not exist."); } return false; }
function addWatermarkOnAvatar($userid, $originalImage, $waterMark, $what) { //Original Image in machine formate $originalImage = XiptHelperUtils::getRealPath($originalImage); //IMP : do not modify original image. $image = JPATH_ROOT . DS . $originalImage; // Load image helper library as it is needed. require_once JPATH_ROOT . DS . 'components' . DS . 'com_community' . DS . 'helpers' . DS . 'image.php'; //ini_set('gd.jpeg_ignore_warning', 1); $ptype = XiptLibProfiletypes::getUserData($userid, 'PROFILETYPE'); $watermarkParams = XiptLibProfiletypes::getParams($ptype, 'watermarkparams'); if ($what == 'thumb') { $waterMark = self::getThumbAvatarFromFull($waterMark); } $waterMark = JPATH_ROOT . DS . $waterMark; $type = self::getImageType($image); $wType = self::getImageType($waterMark); if ($wType == 'image/jpg') { JFactory::getApplication()->enqueueMessage("Watermark must be PNG or GIF image, no watermark applied"); return false; } $imageInfo = getimagesize($image); if ($imageInfo == false) { JFactory::getApplication()->enqueueMessage("Unable to open through getimage the file {$image}"); return false; } $imageWidth = $imageInfo[0]; //imagesx( $image ); $imageHeight = $imageInfo[1]; // imagesy( $image ); if ($what == 'avatar') { $watermarkWidth = WATERMARK_HEIGHT; $watermarkHeight = WATERMARK_WIDTH; } if ($what == 'thumb') { $watermarkWidth = $watermarkParams->get('xiThumbWidth', 0); $watermarkHeight = $watermarkParams->get('xiThumbHeight', 0); //XITODO : here we need to trick as per the JomSocial // we need to modify the code when things changes, currently // the image informationfor thumbs does not come correctly $imageWidth = AVATAR_WIDTH_THUMB; $imageHeight = AVATAR_HEIGHT_THUMB; } if (!JFile::exists($image) || !JFile::exists($waterMark)) { return false; } // if warter marking is not enable for profile type then return /*First copy user old avatar b'coz we don't want to overwrite watermark */ $avatarFileName = JFile::getName($originalImage); if (JFile::exists(USER_AVATAR_BACKUP . DS . $avatarFileName)) { JFile::copy(USER_AVATAR_BACKUP . DS . $avatarFileName, JPATH_ROOT . DS . $originalImage); } // if watermarking is not enable for profile type then return if ($watermarkParams->get('enableWaterMark', 0) == false) { return; } $newimagepath = self::showWatermarkOverImage($image, $waterMark, 'tmp', $watermarkParams->get('xiWatermarkPosition', 'br')); /*copy user original avatar at one place to remove destroy */ //here check if folder exist or not. if not then create it. $avatarPath = USER_AVATAR_BACKUP; if (JFolder::exists($avatarPath) == false) { JFolder::create($avatarPath); } JFile::copy(JPATH_ROOT . DS . $originalImage, $avatarPath . DS . JFile::getName(JPATH_ROOT . DS . $originalImage)); JFile::move(JPATH_ROOT . DS . $newimagepath, JPATH_ROOT . DS . $originalImage); return; }
function _removeProfilePicture($id, $pType, $newPath, $type = 'avatar') { $db = JFactory::getDBO(); // Test if the record exists. $oldAvatar = self::getUserInfo($id); //If avatar is default then not remove it if (JString::stristr($oldAvatar, $newPath)) { JFactory::getApplication()->enqueueMessage(XiptText::_("YOU_CANNOT_REMOVE_DEFAULT_AVATAR")); return; } //get avatar_PROFILE-TYPE_thumb.jpg path if (JString::substr($newPath, -4) == ".png") { $thumbPath = JString::str_ireplace(".png", "_thumb.png", $newPath); } else { $thumbPath = JString::str_ireplace(".jpg", "_thumb.jpg", $newPath); } //if (Applied)Avatar is default user.png (JomSocial default Profile pix) then not insert our default avatar (user.png) path in database. if (JString::stristr($newPath, DEFAULT_AVATAR) && JString::stristr($thumbPath, DEFAULT_AVATAR_THUMB)) { $newPath = ''; $thumbPath = ''; } // create query for update Avatar and thumb $query = 'UPDATE ' . $db->nameQuote('#__community_users') . ' ' . 'SET ' . $db->nameQuote($type) . '=' . $db->Quote($newPath) . ', ' . '`thumb` = ' . $db->Quote($thumbPath) . ' ' . 'WHERE ' . $db->nameQuote('userid') . '=' . $db->Quote($id); $db->setQuery($query); $db->query($query); if ($db->getErrorNum()) { JError::raiseError(500, $db->stderr()); } //get thumb Path $oldAvatarThumb = self::getUserInfo($id, '_thumb'); // If old file is default avatar thumb or default avatar , we should not remove it. // if old file is not default avatar then remove it. // Need proper way to test it if (!JString::stristr($oldAvatar, $newPath) && !JString::stristr($oldAvatarThumb, $thumbPath)) { // File exists, try to remove old files first. $oldAvatar = XiptHelperUtils::getRealPath($oldAvatar); $oldAvatarThumb = XiptHelperUtils::getRealPath($oldAvatarThumb); if (JFile::exists($oldAvatar)) { JFile::delete($oldAvatar); JFile::delete($oldAvatarThumb); } } return true; }