Esempio n. 1
0
 /**
  * Process Uploaded Photo Cover
  * @return [JSON OBJECT] [description]
  */
 public function ajaxCoverUpload()
 {
     $jinput = JFactory::getApplication()->input;
     $parentId = $jinput->get->get('parentId', null, 'Int');
     $type = strtolower($jinput->get->get('type', null, 'String'));
     $file = $jinput->files->get('uploadCover');
     $config = CFactory::getConfig();
     $my = CFactory::getUser();
     $now = new JDate();
     $addStream = true;
     if (!CImageHelper::checkImageSize(filesize($file['tmp_name']))) {
         $msg['error'] = JText::sprintf('COM_COMMUNITY_VIDEOS_IMAGE_FILE_SIZE_EXCEEDED_MB', CFactory::getConfig()->get('maxuploadsize'));
         echo json_encode($msg);
         exit;
     }
     //check if file is allwoed
     if (!CImageHelper::isValidType($file['type'])) {
         $msg['error'] = JText::_('COM_COMMUNITY_IMAGE_FILE_NOT_SUPPORTED');
         echo json_encode($msg);
         exit;
     }
     CImageHelper::autoRotate($file['tmp_name']);
     $album = JTable::getInstance('Album', 'CTable');
     if (!($albumId = $album->isCoverExist($type, $parentId))) {
         $albumId = $album->addCoverAlbum($type, $parentId);
     }
     $imgMaxWidht = 1140;
     // Get a hash for the file name.
     $fileName = JApplication::getHash($file['tmp_name'] . time());
     $hashFileName = JString::substr($fileName, 0, 24);
     if (!JFolder::exists(JPATH_ROOT . '/' . $config->getString('imagefolder') . '/cover/' . $type . '/' . $parentId . '/')) {
         JFolder::create(JPATH_ROOT . '/' . $config->getString('imagefolder') . '/cover/' . $type . '/' . $parentId . '/');
     }
     $dest = JPATH_ROOT . '/' . $config->getString('imagefolder') . '/cover/' . $type . '/' . $parentId . '/' . md5($type . '_cover' . time()) . CImageHelper::getExtension($file['type']);
     $thumbPath = JPATH_ROOT . '/' . $config->getString('imagefolder') . '/cover/' . $type . '/' . $parentId . '/thumb_' . md5($type . '_cover' . time()) . CImageHelper::getExtension($file['type']);
     // Generate full image
     if (!CImageHelper::resizeProportional($file['tmp_name'], $dest, $file['type'], $imgMaxWidht)) {
         $msg['error'] = JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageImage);
         echo json_encode($msg);
         exit;
     }
     CPhotos::generateThumbnail($file['tmp_name'], $thumbPath, $file['type']);
     $cTable = JTable::getInstance(ucfirst($type), 'CTable');
     $cTable->load($parentId);
     if ($cTable->setCover(str_replace(JPATH_ROOT . '/', '', $dest))) {
         $photo = JTable::getInstance('Photo', 'CTable');
         $photo->albumid = $albumId;
         $photo->image = str_replace(JPATH_ROOT . '/', '', $dest);
         $photo->caption = $file['name'];
         $photo->filesize = $file['size'];
         $photo->creator = $my->id;
         $photo->created = $now->toSql();
         $photo->published = 1;
         $photo->thumbnail = str_replace(JPATH_ROOT . '/', '', $thumbPath);
         if ($photo->store()) {
             $album->load($albumId);
             $album->photoid = $photo->id;
             $album->store();
         }
         $msg['success'] = true;
         $msg['path'] = JURI::root() . str_replace(JPATH_ROOT . '/', '', $dest);
         $msg['cancelbutton'] = JText::_('COM_COMMUNITY_CANCEL_BUTTON');
         $msg['savebutton'] = JText::_("COM_COMMUNITY_SAVE_BUTTON");
         // Generate activity stream.
         $act = new stdClass();
         $act->cmd = 'cover.upload';
         $act->actor = $my->id;
         $act->target = 0;
         $act->title = '';
         $act->content = '';
         $act->access = $type == 'profile' ? $my->_cparams->get("privacyPhotoView") : 0;
         $act->app = 'cover.upload';
         $act->cid = $photo->id;
         $act->comment_id = CActivities::COMMENT_SELF;
         $act->comment_type = 'cover.upload';
         $act->groupid = $type == 'group' ? $parentId : 0;
         $act->eventid = $type == 'event' ? $parentId : 0;
         $act->group_access = $type == 'group' ? $cTable->approvals : 0;
         $act->event_access = $type == 'event' ? $cTable->permission : 0;
         $act->like_id = CActivities::LIKE_SELF;
         $act->like_type = 'cover.upload';
         $params = new JRegistry();
         $params->set('attachment', str_replace(JPATH_ROOT . '/', '', $dest));
         $params->set('type', $type);
         $params->set('album_id', $albumId);
         $params->set('photo_id', $photo->id);
         //assign points based on types.
         switch ($type) {
             case 'group':
                 $addStream = CUserPoints::assignPoint('group.cover.upload');
                 break;
             case 'event':
                 $addStream = CUserPoints::assignPoint('event.cover.upload');
                 break;
             default:
                 $addStream = CUserPoints::assignPoint('profile.cover.upload');
         }
         if ($type == 'event') {
             $event = JTable::getInstance('Event', 'CTable');
             $event->load($parentId);
             $group = JTable::getInstance('Group', 'CTable');
             $group->load($event->contentid);
             if ($group->approvals == 1) {
                 $addStream = false;
             }
         }
         if ($addStream) {
             // Add activity logging
             if ($type != 'profile' || $type == 'profile' && $parentId == $my->id) {
                 CActivityStream::add($act, $params->toString());
             }
         }
         echo json_encode($msg);
         exit;
     }
 }
Esempio n. 2
0
 public function uploadAvatar()
 {
     $mainframe = JFactory::getApplication();
     $document = JFactory::getDocument();
     $viewType = $document->getType();
     $jinput = $mainframe->input;
     $viewName = $jinput->get('view', $this->getName(), 'String');
     $view = $this->getView($viewName, '', $viewType);
     $eventid = $jinput->request->get('eventid', 0, 'Int');
     $model = $this->getModel('events');
     $event = JTable::getInstance('Event', 'CTable');
     $event->load($eventid);
     $handler = CEventHelper::getHandler($event);
     if (!$handler->manageable()) {
         echo JText::_('COM_COMMUNITY_ACCESS_FORBIDDEN');
         return;
     }
     if ($jinput->getMethod() == 'POST') {
         JSession::checkToken() or jexit(JText::_('COM_COMMUNITY_INVALID_TOKEN'));
         //CFactory::load( 'libraries' , 'apps' );
         $my = CFactory::getUser();
         $config = CFactory::getConfig();
         $appsLib = CAppPlugins::getInstance();
         $saveSuccess = $appsLib->triggerEvent('onFormSave', array('jsform-events-uploadavatar'));
         if (empty($saveSuccess) || !in_array(false, $saveSuccess)) {
             //CFactory::load( 'helpers' , 'image' );
             $fileFilter = new JInput($_FILES);
             $file = $fileFilter->get('filedata', '', 'array');
             if (!CImageHelper::isValidType($file['type'])) {
                 $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_IMAGE_FILE_NOT_SUPPORTED'), 'error');
                 $mainframe->redirect($handler->getFormattedLink('index.php?option=com_community&view=events&task=viewevent&eventid=' . $event->id . '&task=uploadAvatar', false));
             }
             if (empty($file)) {
                 $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_NO_POST_DATA'), 'error');
             } else {
                 $uploadLimit = (double) $config->get('maxuploadsize');
                 $uploadLimit = $uploadLimit * 1024 * 1024;
                 // @rule: Limit image size based on the maximum upload allowed.
                 if (filesize($file['tmp_name']) > $uploadLimit && $uploadLimit != 0) {
                     $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_VIDEOS_IMAGE_FILE_SIZE_EXCEEDED_MB', CFactory::getConfig()->get('maxuploadsize')), 'error');
                     $mainframe->redirect($handler->getFormattedLink('index.php?option=com_community&view=events&task=uploadavatar&eventid=' . $event->id, false));
                 }
                 if (!CImageHelper::isValid($file['tmp_name'])) {
                     $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_IMAGE_FILE_NOT_SUPPORTED'), 'error');
                     $mainframe->redirect($handler->getFormattedLink('index.php?option=com_community&view=events&task=uploadavatar&eventid=' . $event->id, false));
                 } else {
                     CImageHelper::autorotate($file['tmp_name']);
                     // @todo: configurable width?
                     $imageMaxWidth = 160;
                     // Get a hash for the file name.
                     $fileName = JApplication::getHash($file['tmp_name'] . time());
                     $hashFileName = JString::substr($fileName, 0, 24);
                     // @todo: configurable path for avatar storage?
                     $storage = JPATH_ROOT . '/' . $config->getString('imagefolder') . '/avatar/events';
                     $storageImage = $storage . '/' . $hashFileName . CImageHelper::getExtension($file['type']);
                     $image = $config->getString('imagefolder') . '/avatar/events/' . $hashFileName . CImageHelper::getExtension($file['type']);
                     $storageThumbnail = $storage . '/thumb_' . $hashFileName . CImageHelper::getExtension($file['type']);
                     $thumbnail = $config->getString('imagefolder') . '/avatar/events/' . 'thumb_' . $hashFileName . CImageHelper::getExtension($file['type']);
                     // Generate full image
                     if (!CImageHelper::resizeProportional($file['tmp_name'], $storageImage, $file['type'], $imageMaxWidth)) {
                         $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageImage), 'error');
                         $mainframe->redirect(CRoute::_('index.php?option=com_community&view=events&task=uploadavatar&eventid=' . $event->id, false));
                     }
                     // Generate thumbnail
                     if (!CImageHelper::createThumb($file['tmp_name'], $storageThumbnail, $file['type'])) {
                         $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageImage), 'error');
                         $mainframe->redirect(CRoute::_('index.php?option=com_community&view=events&task=uploadavatar&eventid=' . $event->id, false));
                     }
                     // Autorotate avatar based on EXIF orientation value
                     if ($file['type'] == 'image/jpeg') {
                         $orientation = CImageHelper::getOrientation($file['tmp_name']);
                         CImageHelper::autoRotate($storageImage, $orientation);
                         CImageHelper::autoRotate($storageThumbnail, $orientation);
                     }
                     // Update the event with the new image
                     $event->setImage($image, 'avatar');
                     $event->setImage($thumbnail, 'thumb');
                     $handler = CEventHelper::getHandler($event);
                     if ($handler->isPublic()) {
                         $actor = $my->id;
                         $target = 0;
                         $content = '<img class="event-thumb" src="' . JURI::root(true) . '/' . $image . '" style="border: 1px solid #eee;margin-right: 3px;" />';
                         $cid = $event->id;
                         $app = 'events';
                         $act = $handler->getActivity('events.avatar.upload', $actor, $target, $content, $cid, $app);
                         $act->eventid = $event->id;
                         $params = new CParameter('');
                         $params->set('event_url', $handler->getFormattedLink('index.php?option=com_community&view=events&task=viewevent&eventid=' . $event->id, false, true, false));
                         CActivityStream::add($act, $params->toString());
                     }
                     //add user points
                     CUserPoints::assignPoint('event.avatar.upload');
                     $mainframe = JFactory::getApplication();
                     $mainframe->redirect($handler->getFormattedLink('index.php?option=com_community&view=events&task=viewevent&eventid=' . $eventid, false), JText::_('COM_COMMUNITY_EVENTS_AVATAR_UPLOADED'));
                     exit;
                 }
             }
         }
     }
     echo $view->get(__FUNCTION__);
 }
Esempio n. 3
0
 /**
  * Upload a new user avatar, called from the profile/change avatar page
  */
 public function uploadAvatar()
 {
     CFactory::setActiveProfile();
     jimport('joomla.filesystem.file');
     jimport('joomla.utilities.utility');
     $view = $this->getView('profile');
     $mainframe = JFactory::getApplication();
     $jinput = $mainframe->input;
     $my = CFactory::getUser();
     if ($my->id == 0) {
         return $this->blockUnregister();
     }
     // If uplaod is detected, we process the uploaded avatar
     if ($jinput->post->get('action', '')) {
         $mainframe = JFactory::getApplication();
         $fileFilter = new JInput($_FILES);
         $file = $fileFilter->get('Filedata', '', 'array');
         $userid = $my->id;
         if ($jinput->post->get('userid', '', 'INT') != '') {
             $userid = JRequest::getInt('userid', '', 'POST');
             $url = CRoute::_('index.php?option=com_community&view=profile&userid=' . $userid);
             $my = CFactory::getUser($userid);
         }
         if (!isset($file['tmp_name']) || empty($file['tmp_name'])) {
             $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_NO_POST_DATA'), 'error');
             if (isset($url)) {
                 $mainframe->redirect($url);
             }
         } else {
             $config = CFactory::getConfig();
             $uploadLimit = (double) $config->get('maxuploadsize');
             $uploadLimit = $uploadLimit * 1024 * 1024;
             // @rule: Limit image size based on the maximum upload allowed.
             if (filesize($file['tmp_name']) > $uploadLimit && $uploadLimit != 0) {
                 $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_VIDEOS_IMAGE_FILE_SIZE_EXCEEDED_MB', CFactory::getConfig()->get('maxuploadsize')), 'error');
                 if (isset($url)) {
                     $mainframe->redirect($url);
                 }
                 $mainframe->redirect(CRoute::_('index.php?option=com_community&view=profile&userid=' . $userid . '&task=uploadAvatar', false));
             }
             if (!CImageHelper::isValidType($file['type'])) {
                 $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_IMAGE_FILE_NOT_SUPPORTED'), 'error');
                 if (isset($url)) {
                     $mainframe->redirect($url);
                 }
                 $mainframe->redirect(CRoute::_('index.php?option=com_community&view=profile&userid=' . $userid . '&task=uploadAvatar', false));
             }
             if (!CImageHelper::isValid($file['tmp_name'])) {
                 $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_IMAGE_FILE_NOT_SUPPORTED'), 'error');
                 if (isset($url)) {
                     $mainframe->redirect($url);
                 }
             } else {
                 // @todo: configurable width?
                 //$imageMaxWidth    = 160;
                 //$imageMaxHeight   = 240;
                 // Get a hash for the file name.
                 $profileType = $my->getProfileType();
                 $fileName = JApplication::getHash($file['tmp_name'] . time());
                 $hashFileName = JString::substr($fileName, 0, 24);
                 $multiprofile = JTable::getInstance('MultiProfile', 'CTable');
                 $multiprofile->load($profileType);
                 $useWatermark = $profileType != COMMUNITY_DEFAULT_PROFILE && $config->get('profile_multiprofile') && !empty($multiprofile->watermark) ? true : false;
                 //@todo: configurable path for avatar storage?
                 $storage = JPATH_ROOT . '/' . $config->getString('imagefolder') . '/avatar';
                 /* physical path */
                 $storageImage = $storage . '/' . $hashFileName . CImageHelper::getExtension($file['type']);
                 $storageThumbnail = $storage . '/thumb_' . $hashFileName . CImageHelper::getExtension($file['type']);
                 /**
                  * reverse image use for cropping feature
                  * @uses <type>-<hashFileName>.<ext>
                  */
                 $storageReserve = $storage . '/profile-' . $hashFileName . CImageHelper::getExtension($file['type']);
                 /* relative path to save in database */
                 $image = $config->getString('imagefolder') . '/avatar/' . $hashFileName . CImageHelper::getExtension($file['type']);
                 $thumbnail = $config->getString('imagefolder') . '/avatar/' . 'thumb_' . $hashFileName . CImageHelper::getExtension($file['type']);
                 // filename for stream attachment
                 $imageAttachment = $config->getString('imagefolder') . '/avatar/' . $hashFileName . '_stream_' . CImageHelper::getExtension($file['type']);
                 $userModel = CFactory::getModel('user');
                 //Minimum height/width checking for Avatar uploads
                 list($currentWidth, $currentHeight) = getimagesize($file['tmp_name']);
                 /**
                  * Do square avatar 160x160
                  * @since 3.0
                  */
                 if ($currentWidth < COMMUNITY_AVATAR_PROFILE_WIDTH || $currentHeight < COMMUNITY_AVATAR_PROFILE_HEIGHT) {
                     $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_ERROR_MINIMUM_AVATAR_DIMENSION', COMMUNITY_AVATAR_PROFILE_WIDTH, COMMUNITY_AVATAR_PROFILE_HEIGHT), 'error');
                     $mainframe->redirect(CRoute::_('index.php?option=com_community&view=profile&task=uploadAvatar', false));
                 }
                 //					// Only resize when the width exceeds the max.
                 //					if ( ! CImageHelper::resizeProportional($file['tmp_name'], $storageImage, $file['type'], $imageMaxWidth, $imageMaxHeight))
                 //					{
                 //						$mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageImage), 'error');
                 //
                 //						if (isset($url))
                 //						{
                 //							$mainframe->redirect($url);
                 //						}
                 //					}
                 /**
                  * Generate square avatar
                  */
                 if (!CImageHelper::createThumb($file['tmp_name'], $storageImage, $file['type'], COMMUNITY_AVATAR_PROFILE_WIDTH, COMMUNITY_AVATAR_PROFILE_HEIGHT)) {
                     $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageImage), 'error');
                     if (isset($url)) {
                         $mainframe->redirect($url);
                     }
                 }
                 // Generate thumbnail
                 if (!CImageHelper::createThumb($file['tmp_name'], $storageThumbnail, $file['type'])) {
                     $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageThumbnail), 'error');
                     if (isset($url)) {
                         $mainframe->redirect($url);
                     }
                 }
                 /**
                  * Generate large image use for avatar thumb cropping
                  * It must be larget than profile avatar size because we'll use it for profile avatar recrop also
                  */
                 if ($currentWidth >= $currentHeight) {
                     if (!CImageHelper::resizeProportional($file['tmp_name'], $storageReserve, $file['type'], 0, COMMUNITY_AVATAR_RESERVE_HEIGHT)) {
                         $this->_showUploadError(true, JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageReserve));
                         return;
                     }
                 } else {
                     if (!CImageHelper::resizeProportional($file['tmp_name'], $storageReserve, $file['type'], COMMUNITY_AVATAR_RESERVE_WIDTH, 0)) {
                         $this->_showUploadError(true, JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageReserve));
                         return;
                     }
                 }
                 if ($useWatermark) {
                     // @rule: Before adding the watermark, we should copy the user's original image so that when the admin tries to reset the avatar,
                     // it will be able to grab the original picture.
                     if (!JFolder::exists(JPATH_ROOT . '/images/watermarks/original/')) {
                         JFolder::create(JPATH_ROOT . '/images/watermarks/original/');
                     }
                     JFile::copy($storageImage, JPATH_ROOT . '/images/watermarks/original/' . md5($my->id . '_avatar') . CImageHelper::getExtension($file['type']));
                     JFile::copy($storageThumbnail, JPATH_ROOT . '/images/watermarks/original/' . md5($my->id . '_thumb') . CImageHelper::getExtension($file['type']));
                     $watermarkPath = JPATH_ROOT . '/' . CString::str_ireplace('/', '/', $multiprofile->watermark);
                     list($watermarkWidth, $watermarkHeight) = getimagesize($watermarkPath);
                     list($avatarWidth, $avatarHeight) = getimagesize($storageImage);
                     list($thumbWidth, $thumbHeight) = getimagesize($storageThumbnail);
                     $watermarkImage = $storageImage;
                     $watermarkThumbnail = $storageThumbnail;
                     // Avatar Properties
                     $avatarPosition = CImageHelper::getPositions($multiprofile->watermark_location, $avatarWidth, $avatarHeight, $watermarkWidth, $watermarkHeight);
                     // The original image file will be removed from the system once it generates a new watermark image.
                     CImageHelper::addWatermark($storageImage, $watermarkImage, $file['type'], $watermarkPath, $avatarPosition->x, $avatarPosition->y);
                     //Thumbnail Properties
                     $thumbPosition = CImageHelper::getPositions($multiprofile->watermark_location, $thumbWidth, $thumbHeight, $watermarkWidth, $watermarkHeight);
                     // The original thumbnail file will be removed from the system once it generates a new watermark image.
                     CImageHelper::addWatermark($storageThumbnail, $watermarkThumbnail, $file['type'], $watermarkPath, $thumbPosition->x, $thumbPosition->y);
                     $my->set('_watermark_hash', $multiprofile->watermark_hash);
                     $my->save();
                 }
                 // Autorotate avatar based on EXIF orientation value
                 if ($file['type'] == 'image/jpeg') {
                     $orientation = CImageHelper::getOrientation($file['tmp_name']);
                     CImageHelper::autoRotate($storageImage, $orientation);
                     CImageHelper::autoRotate($storageThumbnail, $orientation);
                     CImageHelper::autoRotate($storageReserve, $orientation);
                 }
                 // @todo: Change to use table code and get rid of model code
                 $userModel->setImage($userid, $image, 'avatar');
                 $userModel->setImage($userid, $thumbnail, 'thumb');
                 // Update the user object so that the profile picture gets updated.
                 $my->set('_avatar', $image);
                 $my->set('_thumb', $thumbnail);
                 // @rule: once user changes their profile picture, storage method should always be file.
                 $my->set('_storage', 'file');
                 if (isset($url)) {
                     $mainframe->redirect($url);
                 }
                 // Generate activity stream.
                 $this->_addAvatarUploadActivity($userid, $thumbnail);
                 $this->cacheClean(array(COMMUNITY_CACHE_TAG_ACTIVITIES, COMMUNITY_CACHE_TAG_FRONTPAGE));
             }
         }
     }
     echo $view->get(__FUNCTION__);
 }
Esempio n. 4
0
 public function uploadAvatar()
 {
     $mainframe = JFactory::getApplication();
     $jinput = $mainframe->input;
     $document = JFactory::getDocument();
     $viewType = $document->getType();
     $viewName = JRequest::getCmd('view', $this->getName());
     $view = $this->getView($viewName, '', $viewType);
     $my = CFactory::getUser();
     $config = CFactory::getConfig();
     $groupid = $jinput->request->get('groupid', '', 'INT');
     $data = new stdClass();
     $data->id = $groupid;
     $groupsModel = $this->getModel('groups');
     $group = JTable::getInstance('Group', 'CTable');
     $group->load($groupid);
     if (!$my->authorise('community.upload', 'groups.avatar.' . $groupid, $group)) {
         $errorMsg = $my->authoriseErrorMsg();
         if (!$errorMsg) {
             return $this->blockUnregister();
         } else {
             echo $errorMsg;
         }
         return;
     }
     if ($jinput->getMethod() == 'POST') {
         //CFactory::load( 'helpers' , 'image' );
         $fileFilter = new JInput($_FILES);
         $file = $fileFilter->get('filedata', '', 'array');
         //$file		= JRequest::getVar('filedata' , '' , 'FILES' , 'array');
         if (!CImageHelper::isValidType($file['type'])) {
             $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_IMAGE_FILE_NOT_SUPPORTED'), 'error');
             $mainframe->redirect(CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id . '&task=uploadAvatar', false));
         }
         //CFactory::load( 'libraries' , 'apps' );
         $appsLib = CAppPlugins::getInstance();
         $saveSuccess = $appsLib->triggerEvent('onFormSave', array('jsform-groups-uploadavatar'));
         if (empty($saveSuccess) || !in_array(false, $saveSuccess)) {
             if (empty($file)) {
                 $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_NO_POST_DATA'), 'error');
             } else {
                 $uploadLimit = (double) $config->get('maxuploadsize');
                 $uploadLimit = $uploadLimit * 1024 * 1024;
                 // @rule: Limit image size based on the maximum upload allowed.
                 if (filesize($file['tmp_name']) > $uploadLimit && $uploadLimit != 0) {
                     $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_VIDEOS_IMAGE_FILE_SIZE_EXCEEDED_MB', CFactory::getConfig()->get('maxuploadsize')), 'error');
                     $mainframe->redirect(CRoute::_('index.php?option=com_community&view=groups&task=uploadavatar&groupid=' . $group->id, false));
                 }
                 if (!CImageHelper::isValid($file['tmp_name'])) {
                     $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_IMAGE_FILE_NOT_SUPPORTED'), 'error');
                 } else {
                     // @todo: configurable width?
                     $imageMaxWidth = 160;
                     // Get a hash for the file name.
                     $fileName = JApplication::getHash($file['tmp_name'] . time());
                     $hashFileName = JString::substr($fileName, 0, 24);
                     // @todo: configurable path for avatar storage?
                     $storage = JPATH_ROOT . '/' . $config->getString('imagefolder') . '/avatar/groups';
                     $storageImage = $storage . '/' . $hashFileName . CImageHelper::getExtension($file['type']);
                     $storageThumbnail = $storage . '/thumb_' . $hashFileName . CImageHelper::getExtension($file['type']);
                     $image = $config->getString('imagefolder') . '/avatar/groups/' . $hashFileName . CImageHelper::getExtension($file['type']);
                     $thumbnail = $config->getString('imagefolder') . '/avatar/groups/' . 'thumb_' . $hashFileName . CImageHelper::getExtension($file['type']);
                     // Generate full image
                     if (!CImageHelper::resizeProportional($file['tmp_name'], $storageImage, $file['type'], $imageMaxWidth)) {
                         $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageImage), 'error');
                     }
                     // Generate thumbnail
                     if (!CImageHelper::createThumb($file['tmp_name'], $storageThumbnail, $file['type'])) {
                         $mainframe->enqueueMessage(JText::sprintf('COM_COMMUNITY_ERROR_MOVING_UPLOADED_FILE', $storageThumbnail), 'error');
                     }
                     // Autorotate avatar based on EXIF orientation value
                     if ($file['type'] == 'image/jpeg') {
                         $orientation = CImageHelper::getOrientation($file['tmp_name']);
                         CImageHelper::autoRotate($storageImage, $orientation);
                         CImageHelper::autoRotate($storageThumbnail, $orientation);
                     }
                     // Update the group with the new image
                     $groupsModel->setImage($groupid, $image, 'avatar');
                     $groupsModel->setImage($groupid, $thumbnail, 'thumb');
                     // @rule: only add the activities of the news if the group is not private.
                     if ($group->approvals == COMMUNITY_PUBLIC_GROUP) {
                         $url = CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $groupid);
                         $act = new stdClass();
                         $act->cmd = 'group.avatar.upload';
                         $act->actor = $my->id;
                         $act->target = 0;
                         $act->title = JText::sprintf('COM_COMMUNITY_GROUPS_NEW_GROUP_AVATAR', '{group_url}', $group->name);
                         $act->content = '<img src="' . JURI::root(true) . '/' . $thumbnail . '" style="border: 1px solid #eee;margin-right: 3px;" />';
                         $act->app = 'groups';
                         $act->cid = $group->id;
                         $act->groupid = $group->id;
                         $params = new CParameter('');
                         $params->set('group_url', 'index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id);
                         CActivityStream::add($act, $params->toString());
                     }
                     //add user points
                     //CFactory::load( 'libraries' , 'userpoints' );
                     CUserPoints::assignPoint('group.avatar.upload');
                     $mainframe = JFactory::getApplication();
                     $mainframe->redirect(CRoute::_('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $groupid, false), JText::_('COM_COMMUNITY_GROUPS_AVATAR_UPLOADED'));
                     exit;
                 }
             }
         }
     }
     //ClearCache in frontpage
     $this->cacheClean(array(COMMUNITY_CACHE_TAG_FRONTPAGE, COMMUNITY_CACHE_TAG_GROUPS, COMMUNITY_CACHE_TAG_FEATURED, COMMUNITY_CACHE_TAG_ACTIVITIES));
     echo $view->get(__FUNCTION__, $data);
 }