Esempio n. 1
0
 function getUpload()
 {
     $imagefile = ImageFile::fromUpload('photo_upload');
     if ($imagefile === null) {
         throw new Exception(_('No file uploaded'));
     }
     $title = $this->trimmed('title');
     $description = $this->trimmed('description');
     $new_filename = UUID::gen() . image_type_to_extension($imagefile->type);
     move_uploaded_file($imagefile->filepath, INSTALLDIR . '/file/' . $new_filename);
     // XXX: we should be using https where we can. TODO: detect whether the server
     // supports this.
     $photo_uri = 'http://' . common_config('site', 'server') . '/file/' . $new_filename;
     $thumb_uri = $photo_uri;
     $photo = Photo::saveNew($profile, $photo_uri, $thumb_uri, $title, $description, $options);
 }
 /**
  * Handle the request
  *
  * Check whether the credentials are valid and output the result
  *
  * @return void
  */
 protected function handle()
 {
     parent::handle();
     // Workaround for PHP returning empty $_POST and $_FILES when POST
     // length > post_max_size in php.ini
     if (empty($_FILES) && empty($_POST) && $_SERVER['CONTENT_LENGTH'] > 0) {
         // TRANS: Client error displayed when the number of bytes in a POST request exceeds a limit.
         // TRANS: %s is the number of bytes of the CONTENT_LENGTH.
         $msg = _m('The server was unable to handle that much POST data (%s byte) due to its current configuration.', 'The server was unable to handle that much POST data (%s bytes) due to its current configuration.', intval($_SERVER['CONTENT_LENGTH']));
         $this->clientError(sprintf($msg, $_SERVER['CONTENT_LENGTH']));
     }
     if (empty($this->user)) {
         // TRANS: Client error displayed updating profile image without having a user object.
         $this->clientError(_('No such user.'), 404);
     }
     try {
         $imagefile = ImageFile::fromUpload('image');
     } catch (Exception $e) {
         $this->clientError($e->getMessage());
     }
     $type = $imagefile->preferredType();
     $filename = Avatar::filename($user->id, image_type_to_extension($type), null, 'tmp' . common_timestamp());
     $filepath = Avatar::path($filename);
     $imagefile->copyTo($filepath);
     $profile = $this->user->getProfile();
     $profile->setOriginal($filename);
     $twitter_user = $this->twitterUserArray($profile, true);
     if ($this->format == 'xml') {
         $this->initDocument('xml');
         $this->showTwitterXmlUser($twitter_user, 'user', true);
         $this->endDocument('xml');
     } elseif ($this->format == 'json') {
         $this->initDocument('json');
         $this->showJsonObjects($twitter_user);
         $this->endDocument('json');
     }
 }
Esempio n. 3
0
 /**
  * Handle an image upload
  *
  * Does all the magic for handling an image upload, and crops the
  * image by default.
  *
  * @return void
  */
 function uploadLogo()
 {
     try {
         $imagefile = ImageFile::fromUpload('avatarfile');
     } catch (Exception $e) {
         $this->showForm($e->getMessage());
         return;
     }
     $type = $imagefile->preferredType();
     $filename = Avatar::filename($this->group->id, image_type_to_extension($type), null, 'group-temp-' . common_timestamp());
     $filepath = Avatar::path($filename);
     $imagefile->copyTo($filepath);
     $filedata = array('filename' => $filename, 'filepath' => $filepath, 'width' => $imagefile->width, 'height' => $imagefile->height, 'type' => $type);
     $_SESSION['FILEDATA'] = $filedata;
     $this->filedata = $filedata;
     $this->mode = 'crop';
     // TRANS: Form instructions on the group logo page.
     $this->showForm(_('Pick a square area of the image to be the logo.'), true);
 }
 /**
  * Handle an image upload
  *
  * Does all the magic for handling an image upload, and crops the
  * image by default.
  *
  * @return void
  */
 function uploadLogo()
 {
     if ($_FILES['app_icon']['error'] == UPLOAD_ERR_OK) {
         try {
             $imagefile = ImageFile::fromUpload('app_icon');
         } catch (Exception $e) {
             common_debug("damn that sucks");
             $this->showForm($e->getMessage());
             return;
         }
         $filename = Avatar::filename($this->id, image_type_to_extension($imagefile->type), null, 'oauth-app-icon-' . common_timestamp());
         $filepath = Avatar::path($filename);
         move_uploaded_file($imagefile->filepath, $filepath);
         $this->setOriginal($filename);
     }
 }
Esempio n. 5
0
 /**
  * Handle an image upload
  *
  * Does all the magic for handling an image upload, and crops the
  * image by default.
  *
  * @return void
  */
 function uploadAvatar()
 {
     try {
         $imagefile = ImageFile::fromUpload('avatarfile');
     } catch (Exception $e) {
         $this->showForm($e->getMessage());
         return;
     }
     if ($imagefile === null) {
         $this->showForm(_('No file uploaded.'));
         return;
     }
     $cur = common_current_user();
     $filename = Avatar::filename($cur->id, image_type_to_extension($imagefile->type), null, 'tmp' . common_timestamp());
     $filepath = Avatar::path($filename);
     move_uploaded_file($imagefile->filepath, $filepath);
     $filedata = array('filename' => $filename, 'filepath' => $filepath, 'width' => $imagefile->width, 'height' => $imagefile->height, 'type' => $imagefile->type);
     $_SESSION['FILEDATA'] = $filedata;
     $this->filedata = $filedata;
     $this->mode = 'crop';
     $this->showForm(_('Pick a square area of the image to be your avatar'), true);
 }
Esempio n. 6
0
 /**
  * Save the background image, if any, and set its disposition
  *
  * @param Design $design a working design to attach the img to
  *
  * @return nothing
  */
 function saveBackgroundImage($design)
 {
     // Now that we have a Design ID we can add a file to the design.
     // XXX: This is an additional DB hit, but figured having the image
     // associated with the Design rather than the User was worth
     // it. -- Zach
     if ($_FILES['design_background-image_file']['error'] == UPLOAD_ERR_OK) {
         $filepath = null;
         try {
             $imagefile = ImageFile::fromUpload('design_background-image_file');
         } catch (Exception $e) {
             $this->showForm($e->getMessage());
             return;
         }
         $filename = Design::filename($design->id, image_type_to_extension($imagefile->type), common_timestamp());
         $filepath = Design::path($filename);
         move_uploaded_file($imagefile->filepath, $filepath);
         // delete any old backround img laying around
         if (isset($design->backgroundimage)) {
             @unlink(Design::path($design->backgroundimage));
         }
         $original = clone $design;
         $design->backgroundimage = $filename;
         // default to on, no tile
         $design->setDisposition(true, false, false);
         $result = $design->update($original);
         if ($result === false) {
             common_log_db_error($design, 'UPDATE', __FILE__);
             // TRANS: Error message displayed if design settings could not be saved.
             $this->showForm(_('Couldn\'t update your design.'));
             return;
         }
     }
 }
Esempio n. 7
0
 function uploadPhoto()
 {
     $cur = common_current_user();
     if (empty($cur)) {
         return;
     }
     try {
         $imagefile = ImageFile::fromUpload('photofile');
     } catch (Exception $e) {
         $this->showForm($e->getMessage());
         return;
     }
     if ($imagefile === null) {
         $this->showForm(_('No file uploaded.'));
         return;
     }
     $title = $this->trimmed('phototitle');
     $photo_description = $this->trimmed('photo_description');
     common_log(LOG_INFO, 'upload path : ' . $imagefile->filepath);
     $filename = $cur->nickname . '-' . common_timestamp() . sha1_file($imagefile->filepath) . image_type_to_extension($imagefile->type);
     move_uploaded_file($imagefile->filepath, INSTALLDIR . '/file/' . $filename);
     photo_make_thumbnail($filename);
     $uri = 'http://' . common_config('site', 'server') . '/file/' . $filename;
     $thumb_uri = 'http://' . common_config('site', 'server') . '/file/thumb.' . $filename;
     $profile_id = $cur->id;
     $album = GNUsocialPhotoAlbum::getKV('album_id', $this->trimmed('album'));
     if ($album->profile_id != $profile_id) {
         $this->showForm(_('Error: This is not your album!'));
         return;
     }
     GNUsocialPhoto::saveNew($profile_id, $album->album_id, $thumb_uri, $uri, 'web', false, $title, $photo_description);
 }
Esempio n. 8
0
 /**
  * Handle an image upload
  *
  * Does all the magic for handling an image upload, and crops the
  * image by default.
  *
  * @return void
  */
 function uploadAvatar()
 {
     try {
         $imagefile = ImageFile::fromUpload('avatarfile');
     } catch (Exception $e) {
         $this->showForm($e->getMessage());
         return;
     }
     if ($imagefile === null) {
         // TRANS: Validation error on avatar upload form when no file was uploaded.
         $this->showForm(_('No file uploaded.'));
         return;
     }
     $cur = common_current_user();
     $type = $imagefile->preferredType();
     $filename = Avatar::filename($cur->id, image_type_to_extension($type), null, 'tmp' . common_timestamp());
     $filepath = Avatar::path($filename);
     $imagefile->copyTo($filepath);
     $filedata = array('filename' => $filename, 'filepath' => $filepath, 'width' => $imagefile->width, 'height' => $imagefile->height, 'type' => $type);
     $_SESSION['FILEDATA'] = $filedata;
     $this->filedata = $filedata;
     $this->mode = 'crop';
     // TRANS: Avatar upload form instruction after uploading a file.
     $this->showForm(_('Pick a square area of the image to be your avatar.'), true);
 }
Esempio n. 9
0
 /**
  * Save the background image if the user uploaded one
  *
  * @return string $filename the filename of the image
  */
 function saveBackgroundImage()
 {
     $filename = null;
     if ($_FILES['design_background-image_file']['error'] == UPLOAD_ERR_OK) {
         $filepath = null;
         try {
             $imagefile = ImageFile::fromUpload('design_background-image_file');
         } catch (Exception $e) {
             $this->clientError('Unable to save background image.');
             return;
         }
         // Note: site design background image has a special filename
         $filename = Design::filename('site-design-background', image_type_to_extension($imagefile->type), common_timestamp());
         $filepath = Design::path($filename);
         move_uploaded_file($imagefile->filepath, $filepath);
         // delete any old backround img laying around
         if (isset($this->design->backgroundimage)) {
             @unlink(Design::path($design->backgroundimage));
         }
         return $filename;
     }
 }
 /**
  * Handle the request
  *
  * Check whether the credentials are valid and output the result
  *
  * @param array $args $_REQUEST data (unused)
  *
  * @return void
  */
 function handle($args)
 {
     parent::handle($args);
     if ($_SERVER['REQUEST_METHOD'] != 'POST') {
         $this->clientError(_('This method requires a POST.'), 400, $this->format);
         return;
     }
     if (!in_array($this->format, array('xml', 'json'))) {
         $this->clientError(_('API method not found.'), 404, $this->format);
         return;
     }
     // Workaround for PHP returning empty $_POST and $_FILES when POST
     // length > post_max_size in php.ini
     if (empty($_FILES) && empty($_POST) && $_SERVER['CONTENT_LENGTH'] > 0) {
         // TRANS: Client error displayed when the number of bytes in a POST request exceeds a limit.
         // TRANS: %s is the number of bytes of the CONTENT_LENGTH.
         $msg = _m('The server was unable to handle that much POST data (%s byte) due to its current configuration.', 'The server was unable to handle that much POST data (%s bytes) due to its current configuration.', intval($_SERVER['CONTENT_LENGTH']));
         $this->clientError(sprintf($msg, $_SERVER['CONTENT_LENGTH']));
         return;
     }
     if (empty($this->user)) {
         // TRANS: Client error when user not found updating a profile background image.
         $this->clientError(_('No such user.'), 404, $this->format);
         return;
     }
     $design = $this->user->getDesign();
     // XXX: This is kinda gross, but before we can add a background
     // img we have to make sure there's a Design because design ID
     // is part of the img filename.
     if (empty($design)) {
         $this->user->query('BEGIN');
         // save new design
         $design = new Design();
         $id = $design->insert();
         if (empty($id)) {
             common_log_db_error($id, 'INSERT', __FILE__);
             // TRANS: Client error displayed when saving design settings fails because of an empty id.
             $this->clientError(_('Unable to save your design settings.'));
             return;
         }
         $original = clone $this->user;
         $this->user->design_id = $id;
         $result = $this->user->update($original);
         if (empty($result)) {
             common_log_db_error($original, 'UPDATE', __FILE__);
             // TRANS: Client error displayed when saving design settings fails because of an empty result.
             $this->clientError(_('Unable to save your design settings.'));
             $this->user->query('ROLLBACK');
             return;
         }
         $this->user->query('COMMIT');
     }
     // Okay, now get the image and add it to the design
     try {
         $imagefile = ImageFile::fromUpload('image');
     } catch (Exception $e) {
         $this->clientError($e->getMessage(), 400, $this->format);
         return;
     }
     $filename = Design::filename($design->id, image_type_to_extension($imagefile->type), common_timestamp());
     $filepath = Design::path($filename);
     move_uploaded_file($imagefile->filepath, $filepath);
     // delete any old backround img laying around
     if (isset($design->backgroundimage)) {
         @unlink(Design::path($design->backgroundimage));
     }
     $original = clone $design;
     $design->backgroundimage = $filename;
     $design->setDisposition(true, false, $this->tile == 'true');
     $result = $design->update($original);
     if ($result === false) {
         common_log_db_error($design, 'UPDATE', __FILE__);
         // TRANS: Error displayed when updating design settings fails.
         $this->showForm(_('Could not update your design.'));
         return;
     }
     $profile = $this->user->getProfile();
     if (empty($profile)) {
         // TRANS: Client error displayed when a user has no profile.
         $this->clientError(_('User has no profile.'));
         return;
     }
     $twitter_user = $this->twitterUserArray($profile, true);
     if ($this->format == 'xml') {
         $this->initDocument('xml');
         $this->showTwitterXmlUser($twitter_user, 'user', true);
         $this->endDocument('xml');
     } elseif ($this->format == 'json') {
         $this->initDocument('json');
         $this->showJsonObjects($twitter_user);
         $this->endDocument('json');
     }
 }
 /**
  * Handle the request
  *
  * Check whether the credentials are valid and output the result
  *
  * @param array $args $_REQUEST data (unused)
  *
  * @return void
  */
 function handle($args)
 {
     parent::handle($args);
     if ($_SERVER['REQUEST_METHOD'] != 'POST') {
         $this->clientError(_('This method requires a POST.'), 400, $this->format);
         return;
     }
     // Workaround for PHP returning empty $_POST and $_FILES when POST
     // length > post_max_size in php.ini
     if (empty($_FILES) && empty($_POST) && $_SERVER['CONTENT_LENGTH'] > 0) {
         // TRANS: Client error displayed when the number of bytes in a POST request exceeds a limit.
         // TRANS: %s is the number of bytes of the CONTENT_LENGTH.
         $msg = _m('The server was unable to handle that much POST data (%s byte) due to its current configuration.', 'The server was unable to handle that much POST data (%s bytes) due to its current configuration.', intval($_SERVER['CONTENT_LENGTH']));
         $this->clientError(sprintf($msg, $_SERVER['CONTENT_LENGTH']));
         return;
     }
     if (empty($this->user)) {
         $this->clientError(_('No such user.'), 404, $this->format);
         return;
     }
     try {
         $imagefile = ImageFile::fromUpload('image');
     } catch (Exception $e) {
         $this->clientError($e->getMessage(), 400, $this->format);
         return;
     }
     $filename = Avatar::filename($user->id, image_type_to_extension($imagefile->type), null, 'tmp' . common_timestamp());
     $filepath = Avatar::path($filename);
     move_uploaded_file($imagefile->filepath, $filepath);
     $profile = $this->user->getProfile();
     if (empty($profile)) {
         $this->clientError(_('User has no profile.'));
         return;
     }
     $profile->setOriginal($filename);
     common_broadcast_profile($profile);
     $twitter_user = $this->twitterUserArray($profile, true);
     if ($this->format == 'xml') {
         $this->initDocument('xml');
         $this->showTwitterXmlUser($twitter_user);
         $this->endDocument('xml');
     } elseif ($this->format == 'json') {
         $this->initDocument('json');
         $this->showJsonObjects($twitter_user);
         $this->endDocument('json');
     }
 }
Esempio n. 12
0
 /**
  * Handle an image upload
  *
  * Does all the magic for handling an image upload, and crops the
  * image by default.
  *
  * @return void
  */
 function uploadAvatar()
 {
     // ImageFile throws exception if something goes wrong, which we'll
     // pick up and show as an error message above the form.
     $imagefile = ImageFile::fromUpload('avatarfile');
     $type = $imagefile->preferredType();
     $filename = Avatar::filename($this->scoped->getID(), image_type_to_extension($type), null, 'tmp' . common_timestamp());
     $filepath = Avatar::path($filename);
     $imagefile = $imagefile->copyTo($filepath);
     $filedata = array('filename' => $filename, 'filepath' => $filepath, 'width' => $imagefile->width, 'height' => $imagefile->height, 'type' => $type);
     $_SESSION['FILEDATA'] = $filedata;
     $this->filedata = $filedata;
     $this->mode = 'crop';
     // TRANS: Avatar upload form instruction after uploading a file.
     return _('Pick a square area of the image to be your avatar.');
 }