Пример #1
0
 /**
  * Displays the dialog to allow user to crop avatar
  *
  * @since	1.2
  * @access	public
  * @param	string
  * @return
  */
 public function crop()
 {
     // Require the user to be logged in
     FD::requireLogin();
     // Load up the ajax library
     $ajax = FD::ajax();
     // Get the unique object.
     $uid = JRequest::getInt('uid');
     $type = JRequest::getCmd('type');
     // Get photo id
     $id = JRequest::getInt('id');
     $table = FD::table('Photo');
     $table->load($id);
     $redirectUrl = JRequest::getVar('redirectUrl', '');
     // Load up the library
     $lib = FD::photo($table->uid, $table->type, $table);
     if (!$table->id) {
         return $this->deleted($lib);
     }
     // Check if the user is really allowed to upload avatar
     if (!$lib->canUseAvatar()) {
         return $ajax->reject();
     }
     $redirect = JRequest::getInt('redirect', 1);
     $theme = FD::themes();
     $theme->set('uid', $uid);
     $theme->set('type', $type);
     $theme->set('redirectUrl', $redirectUrl);
     $theme->set('photo', $lib->data);
     $theme->set('redirect', $redirect);
     $output = $theme->output('site/avatar/crop');
     return $ajax->resolve($output);
 }
Пример #2
0
 public function delete_photo()
 {
     $user = JFactory::getUser($this->plugin->get('user')->id);
     $app = JFactory::getApplication();
     $id = $app->input->get('id', 0, 'INT');
     // Load the photo table
     $photo = FD::table('Photo');
     $photo->load($id);
     $lib = FD::photo($photo->uid, $photo->type, $photo);
     if (!$id && !$photo->id) {
         return false;
     }
     // Load the photo library
     // Test if the user is allowed to delete the photo
     if (!$lib->deleteable()) {
         return false;
     }
     // Try to delete the photo
     $state = $photo->delete();
     if (!$state) {
         return false;
     } else {
         return $state;
     }
 }
Пример #3
0
 public function photosSchema($rows, $userid)
 {
     $lang = JFactory::getLanguage();
     $lang->load('com_easysocial', JPATH_ADMINISTRATOR, 'en-GB', true);
     $result = array();
     foreach ($rows as $ky => $row) {
         if (isset($row->id)) {
             $item = new PhotosSimpleSchema();
             $item->isowner = $row->uid == $userid ? true : false;
             $item->id = $row->id;
             $item->album_id = $row->album_id;
             $item->cover_id = $row->cover_id;
             $item->type = $row->type;
             $item->uid = $row->id;
             // for post comment photo id is required.
             $item->user_id = $row->user_id;
             $item->title = JText::_($row->title);
             $item->caption = JText::_($row->caption);
             $item->created = $row->created;
             $item->state = $row->state;
             $item->assigned_date = $row->assigned_date;
             $item->image_large = $row->image_large;
             $item->image_square = $row->image_square;
             $item->image_thumbnail = $row->image_thumbnail;
             $item->image_featured = $row->image_featured;
             $like = FD::photo();
             $like->data->id = $row->id;
             $data = $like->likes();
             $item->likes = $this->createlikeObj($data, $userid);
             $comobj = $like->comments();
             $comobj->stream_id = 1;
             $item->comment_element = $comobj->element . "." . $comobj->group . "." . $comobj->verb;
             $item->comments = $this->createCommentsObj($comobj);
             $result[] = $item;
         }
     }
     return $result;
 }
Пример #4
0
 /**
  * Displays the move to album dialog
  *
  * @since	1.2
  * @access	public
  * @param	string
  * @return
  */
 public function moveToAnotherAlbum()
 {
     $ajax = FD::ajax();
     // Get the current user.
     $my = FD::user();
     // Get photo
     $id = JRequest::getInt('id');
     $photo = FD::table('photo');
     $photo->load($id);
     // If photo id is invalid, reject this.
     if (!$photo->id || !$id) {
         return $ajax->reject();
     }
     // Load up the photo lib
     $lib = FD::photo($photo->uid, $photo->type, $photo);
     // Check if the user is really allowed to move the photo
     if (!$lib->canMovePhoto()) {
         return $ajax->reject();
     }
     // Get albums
     $model = FD::model('Albums');
     $albums = $model->getAlbums($my->id, SOCIAL_TYPE_USER, array('exclusion' => $photo->album_id, 'core' => false));
     // Get dialog
     $theme = FD::themes();
     $theme->set('albums', $albums);
     $theme->set('photo', $photo);
     $html = $theme->output('site/photos/dialog.move');
     return $ajax->resolve($html);
 }
Пример #5
0
 public function uploadPhoto($log_usr = 0, $type = null)
 {
     // Get current logged in user.
     $my = FD::user($log_usr);
     // Get user access
     $access = FD::access($my->id, SOCIAL_TYPE_USER);
     // Load up the photo library
     $lib = FD::photo($log_usr, $type);
     // Define uploader options
     $options = array('name' => 'file', 'maxsize' => $lib->getUploadFileSizeLimit());
     // Get uploaded file
     $file = FD::uploader($options)->getFile();
     // Load the iamge object
     $image = FD::image();
     $image->load($file['tmp_name'], $file['name']);
     // Detect if this is a really valid image file.
     if (!$image->isValid()) {
         return "invalid image";
     }
     // Load up the album's model.
     $albumsModel = FD::model('Albums');
     // Create the default album if necessary
     $album = $albumsModel->getDefaultAlbum($log_usr, $type, SOCIAL_ALBUM_STORY_ALBUM);
     // Bind photo data
     $photo = FD::table('Photo');
     $photo->uid = $log_usr;
     $photo->type = $type;
     $photo->user_id = $my->id;
     $photo->album_id = $album->id;
     $photo->title = $file['name'];
     $photo->caption = '';
     $photo->state = 1;
     $photo->ordering = 0;
     // Set the creation date alias
     $photo->assigned_date = FD::date()->toMySQL();
     // Trigger rules that should occur before a photo is stored
     $photo->beforeStore($file, $image);
     // Try to store the photo.
     $state = $photo->store();
     // Load the photos model
     $photosModel = FD::model('Photos');
     // Get the storage path for this photo
     $storage = FD::call('Photos', 'getStoragePath', array($album->id, $photo->id));
     // Get the photos library
     $photoLib = FD::get('Photos', $image);
     $paths = $photoLib->create($storage);
     // Create metadata about the photos
     if ($paths) {
         foreach ($paths as $type => $fileName) {
             $meta = FD::table('PhotoMeta');
             $meta->photo_id = $photo->id;
             $meta->group = SOCIAL_PHOTOS_META_PATH;
             $meta->property = $type;
             $meta->value = $storage . '/' . $fileName;
             $meta->store();
             // We need to store the photos dimension here
             list($width, $height, $imageType, $attr) = getimagesize(JPATH_ROOT . $storage . '/' . $fileName);
             // Set the photo dimensions
             $meta = FD::table('PhotoMeta');
             $meta->photo_id = $photo->id;
             $meta->group = SOCIAL_PHOTOS_META_WIDTH;
             $meta->property = $type;
             $meta->value = $width;
             $meta->store();
             $meta = FD::table('PhotoMeta');
             $meta->photo_id = $photo->id;
             $meta->group = SOCIAL_PHOTOS_META_HEIGHT;
             $meta->property = $type;
             $meta->value = $height;
             $meta->store();
         }
     }
     // After storing the photo, trigger rules that should occur after a photo is stored
     //$photo->afterStore( $file , $image );
     //$sphoto = new SocialPhotos($photo_obj->id);
     return $photo;
 }
Пример #6
0
 /**
  * Determines if the user is allowed to edit this photo
  *
  * @deprecated  1.2
  * @since   1.0
  * @access  public
  * @param   int     The user to check against (optional)
  * @return  bool    True if success, false otherwise
  */
 public function editable($id = null)
 {
     $lib = FD::photo($this->uid, $this->type, $this);
     // Why shareable instead of editable?
     // Changing to editable for now
     // return $lib->shareable();
     return $lib->editable();
 }
Пример #7
0
<div class="es-album-photos">

	<div class="es-photo-item-group no-transition" data-photo-item-group>

		<div class="es-media-item es-photo-item layout-item grid-sizer">
			<div><div></div></div>
		</div>

		<?php 
if (!empty($photos)) {
    ?>
			<?php 
    foreach ($photos as $photo) {
        ?>
				<?php 
        echo FD::photo($photo->uid, $photo->type, $photo)->renderItem($options['photoItem']);
        ?>
			<?php 
    }
    ?>
		<?php 
}
?>
	</div>

	<div class="no-photos-hint content-hint">
		<?php 
echo JText::_("COM_EASYSOCIAL_NO_PHOTOS_AVAILABLE");
?>
	</div>
Пример #8
0
 /**
  * Allows caller to create an avatar by posted the $_FILE data
  *
  * @since   1.0
  * @access  public
  * @param   string
  * @return
  */
 public function createAvatarFromFile()
 {
     // Check for request forgeries
     FD::checkToken();
     // Only registered users should be allowed to upload photos
     FD::requireLogin();
     // Get the current view
     $view = $this->getCurrentView();
     $config = FD::config();
     // Get the unique item id
     $uid = JRequest::getInt('uid');
     $type = JRequest::getCmd('type');
     // Get current user.
     $my = FD::user();
     if (!$uid && !$type) {
         $view->setMessage(JText::_('COM_EASYSOCIAL_PHOTOS_INVALID_ID_PROVIDED'), SOCIAL_MSG_ERROR);
         return $view->call('createAvatar');
     }
     // Load up the photo library
     $lib = FD::photo($uid, $type);
     // Set uploader options
     $options = array('name' => 'avatar_file', 'maxsize' => $lib->getUploadFileSizeLimit());
     // Get uploaded file
     $file = FD::uploader($options)->getFile();
     // If there was an error getting uploaded file, stop.
     if ($file instanceof SocialException) {
         $view->setMessage($file);
         return $view->call('createAvatar');
     }
     // Load the image
     $image = FD::image();
     $image->load($file['tmp_name'], $file['name']);
     // Check if there's a profile photos album that already exists.
     $albumModel = FD::model('Albums');
     // Retrieve the default album for this node.
     $album = $lib->getDefaultAlbum();
     $photo = FD::table('Photo');
     $photo->uid = $uid;
     $photo->type = $type;
     $photo->user_id = $my->id;
     $photo->album_id = $album->id;
     $photo->title = $file['name'];
     $photo->caption = '';
     $photo->ordering = 0;
     // Set the creation date alias
     $photo->assigned_date = FD::date()->toMySQL();
     // We need to set the photo state to "SOCIAL_PHOTOS_STATE_TMP"
     $photo->state = SOCIAL_PHOTOS_STATE_TMP;
     // Try to store the photo first
     $state = $photo->store();
     // Bind any exif data if there are any.
     // Only bind exif data for jpg files (if want to add tiff, then do add it here)
     if ($image->hasExifSupport()) {
         $photo->mapExif($file);
     }
     if (!$state) {
         $view->setMessage(JText::_('COM_EASYSOCIAL_PHOTOS_ERROR_CREATING_IMAGE_FILES'), SOCIAL_MSG_ERROR);
         return $view->call('createAvatar');
     }
     // Push all the ordering of the photo down
     $photosModel = FD::model('photos');
     $photosModel->pushPhotosOrdering($album->id, $photo->id);
     // Render photos library
     $photoLib = FD::get('Photos', $image);
     $storage = $photoLib->getStoragePath($album->id, $photo->id);
     $paths = $photoLib->create($storage);
     // Create metadata about the photos
     foreach ($paths as $type => $fileName) {
         $meta = FD::table('PhotoMeta');
         $meta->photo_id = $photo->id;
         $meta->group = SOCIAL_PHOTOS_META_PATH;
         $meta->property = $type;
         $meta->value = $storage . '/' . $fileName;
         $meta->store();
     }
     // Retrieve the original photo again.
     $image = $photo->getImageObject('original');
     return $view->call('createAvatar', $photo);
 }
Пример #9
0
 public function addPhotoAlbum($log_usr = 0, $album_id)
 {
     $my = FD::user();
     // Load up the configuration
     $config = FD::config();
     // Load the album table
     $album = FD::table('Album');
     $album->load($album_id);
     // Check if the album id provided is valid
     if (!$album->id || !$album->id) {
         return "album not valid";
     }
     // Get the uid and the type
     $uid = $album->uid;
     $type = $album->type;
     // Load the photo library
     $lib = FD::photo($uid, $type);
     // Set uploader options
     $options = array('name' => 'file', 'maxsize' => $lib->getUploadFileSizeLimit());
     // Get uploaded file
     $file = FD::uploader($options)->getFile();
     // If there was an error getting uploaded file, stop.
     if ($file instanceof SocialException) {
         return false;
     }
     // Load the image object
     $image = FD::image();
     $image->load($file['tmp_name'], $file['name']);
     // Detect if this is a really valid image file.
     if (!$image->isValid()) {
         return false;
     }
     // Bind the photo data now
     $photo = FD::table('Photo');
     $photo->uid = $uid;
     $photo->type = $type;
     $photo->user_id = $album->uid;
     $photo->album_id = $album->id;
     $photo->title = $file['name'];
     $photo->caption = '';
     $photo->ordering = 0;
     $photo->state = SOCIAL_STATE_PUBLISHED;
     // Set the creation date alias
     $photo->assigned_date = FD::date()->toMySQL();
     // Cleanup photo title.
     $photo->cleanupTitle();
     // Trigger rules that should occur before a photo is stored
     $photo->beforeStore($file, $image);
     // Try to store the photo.
     $state = $photo->store();
     if (!$state) {
         return false;
     }
     // If album doesn't have a cover, set the current photo as the cover.
     //~ if (!$album->hasCover()) {
     //~ $album->cover_id    = $photo->id;
     //~
     //~ // Store the album
     //~ $album->store();
     //~ }
     // Get the photos library
     $photoLib = FD::get('Photos', $image);
     // Get the storage path for this photo
     $storageContainer = FD::cleanPath($config->get('photos.storage.container'));
     $storage = $photoLib->getStoragePath($album->id, $photo->id);
     $paths = $photoLib->create($storage);
     // We need to calculate the total size used in each photo (including all the variants)
     $totalSize = 0;
     // Create metadata about the photos
     if ($paths) {
         foreach ($paths as $type => $fileName) {
             $meta = FD::table('PhotoMeta');
             $meta->photo_id = $photo->id;
             $meta->group = SOCIAL_PHOTOS_META_PATH;
             $meta->property = $type;
             // do not store the container path as this path might changed from time to time
             $tmpStorage = str_replace('/' . $storageContainer . '/', '/', $storage);
             $meta->value = $tmpStorage . '/' . $fileName;
             $meta->store();
             // We need to store the photos dimension here
             list($width, $height, $imageType, $attr) = getimagesize(JPATH_ROOT . $storage . '/' . $fileName);
             // Set the photo size
             $totalSize += filesize(JPATH_ROOT . $storage . '/' . $fileName);
             // Set the photo dimensions
             $meta = FD::table('PhotoMeta');
             $meta->photo_id = $photo->id;
             $meta->group = SOCIAL_PHOTOS_META_WIDTH;
             $meta->property = $type;
             $meta->value = $width;
             $meta->store();
             $meta = FD::table('PhotoMeta');
             $meta->photo_id = $photo->id;
             $meta->group = SOCIAL_PHOTOS_META_HEIGHT;
             $meta->property = $type;
             $meta->value = $height;
             $meta->store();
         }
     }
     // Set the total photo size
     $photo->total_size = $totalSize;
     $photo->store();
     // After storing the photo, trigger rules that should occur after a photo is stored
     $photo->afterStore($file, $image);
     // Determine if we should create a stream item for this upload
     $createStream = JRequest::getBool('createStream');
     // Add Stream when a new photo is uploaded
     if ($createStream) {
         $photo->addPhotosStream('create');
     }
     if ($isAvatar) {
         return $photo;
     }
     // After storing the photo, trigger rules that should occur after a photo is stored
     return $photo;
 }
Пример #10
0
 /**
  * Allows use to download a photo from the site.
  *
  * @since	1.0
  * @access	public
  * @param	string
  * @return
  */
 public function download()
 {
     // Check if photos is enabled
     $this->checkFeature();
     // Load up info object
     $info = FD::info();
     // Get the id of the photo
     $id = JRequest::getInt('id');
     $photo = FD::table('Photo');
     $photo->load($id);
     // Id provided must be valid
     if (!$id || !$photo->id) {
         $this->setMessage(JText::_('COM_EASYSOCIAL_PHOTOS_INVALID_PHOTO_ID_PROVIDED'), SOCIAL_MSG_ERROR);
         $info->set($this->getMessage());
         return $this->redirect(FRoute::albums(array(), false));
     }
     // Load up photo library
     $lib = FD::photo($photo->uid, $photo->type, $photo);
     if (!$lib->downloadable()) {
         return $this->restricted($lib);
     }
     // Let's try to download the file now
     $photo->download();
 }
Пример #11
0
 /**
  * Allows caller to remove a photo
  *
  * @since	1.2
  * @access	public
  */
 public function remove()
 {
     // Check for request forgeries
     FD::checkToken();
     // Only logged in users allowed
     FD::requireLogin();
     // Get the current view
     $view = $this->getCurrentView();
     $uid = JRequest::getInt('uid');
     $type = JRequest::getCmd('type');
     if (!$uid && !$type) {
         $view->setMessage(JText::_('COM_EASYSOCIAL_PHOTOS_INVALID_ID_PROVIDED'), SOCIAL_MSG_ERROR);
         return $view->call(__FUNCTION__);
     }
     // Get the cover object
     $cover = FD::table('Cover');
     $state = $cover->load(array('uid' => $uid, 'type' => $type));
     if (!$state) {
         $view->setMessage(JText::_('COM_EASYSOCIAL_PHOTOS_INVALID_ID_PROVIDED'), SOCIAL_MSG_ERROR);
         return $view->call(__FUNCTION__);
     }
     // Load up the photo library
     $lib = FD::photo($uid, $type, $cover->photo_id);
     if (!$lib->canDeleteCover()) {
         $view->setMessage(JText::_('COM_EASYSOCIAL_PHOTOS_NO_PERMISSION_TO_DELETE_COVER'), SOCIAL_MSG_ERROR);
         return $view->call(__FUNCTION__);
     }
     // Delete the cover.
     $cover->delete();
     return $view->call(__FUNCTION__);
 }
Пример #12
0
 /**
  * Method to allow caller to load more photos in an album.
  *
  * @since	1.2.11
  * @access	public
  * @param	string
  * @return
  */
 public function loadMore($photos = array(), $nextStart = 0)
 {
     $ajax = FD::ajax();
     if ($this->hasErrors()) {
         return $ajax->reject($this->getMessage());
     }
     // Get the current logged in user.
     $my = FD::user();
     // Get layout
     $layout = JRequest::getCmd('layout', 'item');
     $options = array('viewer' => $my->id, 'layout' => $layout, 'showResponse' => false, 'showTags' => false);
     if ($layout == "dialog") {
         $options['showForm'] = false;
         $options['showInfo'] = false;
         $options['showStats'] = false;
         $options['showToolbar'] = false;
     }
     $htmls = array();
     foreach ($photos as $photo) {
         $lib = FD::photo($photo->uid, $photo->type, $photo);
         $htmls[] = $lib->renderItem($options);
     }
     return $ajax->resolve($htmls, $nextStart);
 }
Пример #13
0
 /**
  * Post process after the photo is uploaded on the site
  *
  * @since	1.0
  * @access	public
  * @param	string
  * @return
  */
 public function upload($photo = null, $paths = array())
 {
     $json = FD::json();
     // If there was an error uploading the photo, throw proper error message
     if ($this->hasErrors()) {
         $json->send($this->getMessage());
     }
     // Get the current logged in user
     $my = FD::user();
     // Get the layout to display
     $layout = JRequest::getCmd('layout', 'item');
     $options = array('viewer' => $my->id, 'layout' => $layout, 'showResponse' => false, 'showTags' => false);
     // Load up the photo library
     $lib = FD::photo($photo->uid, $photo->type, $photo);
     $output = $lib->renderItem($options);
     $response = new stdClass();
     $response->data = $photo->export();
     $response->html = $output;
     $json->send($response);
 }