. * * @category Widget * @package GNU Social * @author Ian Denhardt * @copyright 2010 Free Software Foundation, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 */ if (!defined('STATUSNET')) { exit(1); } class PhotouploadAction extends Action { var $user = null; function prepare($args) { parent::prepare($args); $this->user = common_current_user(); return true; } function handle($args) { parent::handle($args); if($_SERVER['REQUEST_METHOD'] == 'POST') { $this->handlePost(); } $this->showPage(); } function title() { return _m('Upload Photos'); } function showContent() { if(empty($this->user)) { $this->element('p', array(), 'You are not logged in.'); } else { $this->elementStart('form', array('enctype' => 'mutlipart/form-data', 'method' => 'post', 'action' => common_local_url('photoupload'))); $this->element('input', array('name' => 'photofile', 'type' => 'file', 'id' => 'photofile')); $this->submit('upload', _('Upload')); $this->elementEnd('form'); } } function handlePost() { common_log(LOG_INFO, 'handlPost()!'); // 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) ) { $msg = _('The server was unable to handle that much POST ' . 'data (%s bytes) due to its current configuration.'); $this->showForm(sprintf($msg, $_SERVER['CONTENT_LENGTH'])); return; } // CSRF protection /* $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { $this->showForm(_('There was a problem with your session token. '. 'Try again, please.')); return; } */ if($this->arg('upload')) { $this->uploadPhoto(); } } function uploadPhoto() { common_log(LOG_INFO, 'Is this function even getting called?'); $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; } 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); $photo = new GNUsocialPhoto(); $photo->path = '/file/' . $filename; $photo->thumb_path = '/file/thumb.' . $filename; $photo->owner_id = $cur->id; $photo->object_id = 'DEFAULT'; $photo->insert(); } }