示例#1
0
 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;
 }
示例#2
0
 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;
 }
示例#3
0
 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;
 }
示例#4
0
 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;
 }