public function avatarProcess() { $callbackId = PFunctions::hex2base64(sha1(__METHOD__)); if (PPostHandler::isHandling()) { if (!($User = APP_User::login())) { return false; } $vars =& PPostHandler::getVars(); if (!isset($_FILES['av'])) { return false; } if ($_FILES['av']['error'] != UPLOAD_ERR_OK) { return false; } $img = new MOD_images_Image($_FILES['av']['tmp_name']); if (!$img->isImage()) { return false; } $size = $img->getImageSize(); $type = $size[2]; // maybe this should be changed by configuration if ($type != IMAGETYPE_GIF && $type != IMAGETYPE_JPEG && $type != IMAGETYPE_PNG) { return false; } $newWidth = $size[0]; $newHeight = $size[1]; if ($newWidth > 100) { $newWidth = 100; } if ($newHeight > 100) { $newHeight = 100; } $img->createThumb($this->avatarDir->dirName(), $User->getId(), $newWidth, $newHeight, true); $img->createThumb($this->avatarDir->dirName(), $User->getId() . '_xs', 50, 50, true); return false; } else { PPostHandler::setCallback($callbackId, __CLASS__, __FUNCTION__); return $callbackId; } }
public function avatar($userId) { if (!$this->_model->hasAvatar($userId)) { header('Content-type: image/png'); @copy(HTDOCS_BASE . 'images/misc/empty_avatar' . (isset($_GET['xs']) ? '_xs' : '') . '.png', 'php://output'); PPHP::PExit(); } $file = (int) $userId; if (isset($_GET['xs'])) { $file .= '_xs'; } $img = new MOD_images_Image($this->_model->avatarDir->dirName() . '/' . $file); if (!$img->isImage()) { header('Content-type: image/png'); @copy(HTDOCS_BASE . 'images/misc/empty_avatar' . (isset($_GET['xs']) ? '_xs' : '') . '.png', 'php://output'); PPHP::PExit(); } $size = $img->getImageSize(); header('Content-type: ' . image_type_to_mime_type($size[2])); $this->_model->avatarDir->readFile($file); PPHP::PExit(); }
public function avatarMake($memberid, $img_file, $using_original = false) { $img = new MOD_images_Image($img_file); if (!$img->isImage()) { return false; } $size = $img->getImageSize(); $type = $size[2]; // maybe this should be changed by configuration if ($type != IMAGETYPE_GIF && $type != IMAGETYPE_JPEG && $type != IMAGETYPE_PNG) { return false; } $max_x = $size[0]; $max_y = $size[1]; if ($max_x > 150) { $max_x = 150; } if (!$using_original) { $original_x = min($size[0], PVars::getObj('images')->max_width); $original_y = min($size[1], PVars::getObj('images')->max_height); $this->writeMemberphoto($memberid); $img->createThumb($this->avatarDir->dirName(), $memberid . '_original', $original_x, $original_y, true, 'ratio'); } $img->createThumb($this->avatarDir->dirName(), $memberid, $max_x, $max_y, true, ''); $img->createThumb($this->avatarDir->dirName(), $memberid . '_200', 200, 266, true, 'ratio'); $img->createThumb($this->avatarDir->dirName(), $memberid . '_xs', 50, 50, true, 'square'); $img->createThumb($this->avatarDir->dirName(), $memberid . '_150', 150, 150, true, 'square'); $img->createThumb($this->avatarDir->dirName(), $memberid . '_30_30', 30, 30, true, 'square'); $img->createThumb($this->avatarDir->dirName(), $memberid . '_500', 500, 500, true, 'ratio'); return true; }
/** * processing image uploads * * @todo sizes should be customizable */ public function uploadProcess(&$vars) { // NEW CHECKS if (!($member = $this->getLoggedInMember())) { $vars['error'] = 'Gallery_NotLoggedIn'; return false; } if (!isset($_FILES['gallery-file']) || !is_array($_FILES['gallery-file']) || count($_FILES['gallery-file']) == 0) { $vars['error'] = 'Gallery_UploadError'; return false; } $noError = true; // flag for error on one file $userDir = new PDataDir('gallery/user' . $member->get_userid()); $insert = $this->dao->prepare(' INSERT INTO `gallery_items` (`id`, `user_id_foreign`, `file`, `original`, `flags`, `mimetype`, `width`, `height`, `title`, `created`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW()) '); $itemId = false; $insert->bindParam(0, $itemId); $userId = $member->get_userid(); $insert->bindParam(1, $userId); $hash = false; $insert->bindParam(2, $hash); $orig = false; $insert->bindParam(3, $orig); $flags = 0; $insert->bindParam(4, $flags); $mimetype = false; $insert->bindParam(5, $mimetype); $width = false; $insert->bindParam(6, $width); $height = false; $insert->bindParam(7, $height); $title = false; $insert->bindParam(8, $title); foreach ($_FILES['gallery-file']['error'] as $key => $error) { $fileName = $_FILES['gallery-file']['name'][$key]; // if upload failed, set error message if (!empty($fileName) && $error != UPLOAD_ERR_OK) { $noError = false; switch ($error) { case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: $vars['fileErrors'][$fileName] = 'Gallery_UploadFileTooLarge'; break; default: $vars['fileErrors'][$fileName] = 'Gallery_UploadError'; break; } } elseif (!empty($fileName)) { // upload succeeded -> check if image $img = new MOD_images_Image($_FILES['gallery-file']['tmp_name'][$key]); if (!$img->isImage()) { $noError = false; $vars['fileErrors'][$fileName] = 'Gallery_UploadNotImage'; } else { // upload is image // resize $size = $img->getImageSize(); $original_x = min($size[0], PVars::getObj('images')->max_width); $original_y = min($size[1], PVars::getObj('images')->max_height); $tempDir = dirname($_FILES['gallery-file']['tmp_name'][$key]); $resizedName = md5($_FILES['gallery-file']['tmp_name'][$key]) . '_resized'; $img->createThumb($tempDir, $resizedName, $original_x, $original_y, true, 'ratio'); $tempFile = $tempDir . '/' . $resizedName; // create new image object from resized image $img = new MOD_images_Image($tempFile); $size = $img->getImageSize(); $type = $size[2]; $hash = $img->getHash(); if ($userDir->fileExists($hash)) { continue; } if (!$userDir->copyTo($tempFile, $hash)) { continue; } if (!($result = $this->createThumbnails($userDir, $img))) { return false; } $itemId = $this->dao->nextId('gallery_items'); $orig = $_FILES['gallery-file']['name'][$key]; $mimetype = image_type_to_mime_type($type); $width = $size[0]; $height = $size[1]; $title = $orig; try { $insert->execute(); } catch (PException $e) { error_log($e->__toString()); } if ($vars['galleryId']) { $this->dao->exec("INSERT INTO `gallery_items_to_gallery` SET `gallery_id_foreign` = '" . $vars['galleryId'] . "', `item_id_foreign`= " . $itemId); } $vars['fileErrors'][$_FILES['gallery-file']['name'][$key]] = 'Gallery_UploadFileSuccessfule'; unlink($tempFile); } } } return $noError; }
/** * handles edit profile form post - profile updating * * @param object $args * @param object $action * @param object $mem_redirect * @param object $mem_resend * @access public * @return string */ public function editMyProfileCallback($args, $action, $mem_redirect, $mem_resend) { if (isset($args->post)) { $vars = $this->cleanVars($args->post); $request = $args->request; $errors = $this->model->checkProfileForm($vars); $uploadFailed = false; if (in_array('UploadedProfileImageTooBig', $errors) === false || in_array('ProfileImageUploadFailed', $errors) === false) { $uploadFailed = true; } else { // check if uploaded file is image $img = new MOD_images_Image($_FILES['profile_picture']['tmp_name']); if (!$img->isImage()) { $errors[] = 'ProfileUploadNotImage'; $uploadFailed = true; } } $vars['errors'] = array(); if (count($errors) > 0) { $vars['errors'] = $errors; // Activate fieldset tab "Contact Info" if needed. if (in_array('SignupErrorInvalidBirthDate', $vars['errors']) === false && $uploadFailed === false) { $vars['activeFieldset'] = 'contactinfo'; } // show form again $mem_redirect->post = $vars; return false; } $rights = new MOD_right(); if (!($rights->hasRight('Admin') || $rights->hasRight('SafetyTeam'))) { $vars['memberid'] = $this->model->getLoggedInMember()->getPKValue(); } $vars['member'] = $this->getMember($vars['memberid']); $vars = $this->model->polishProfileFormValues($vars); $success = $this->model->updateProfile($vars); if (!$success) { $mem_redirect->problems = array('Could not update profile'); } // Redirect to a nice location like editmyprofile/finish $str = implode('/', $request); if (in_array('finish', $request)) { return $str; } return $str . '/finish'; } }
/** * sends headers, reads out an image and then exits * * @param int $id - id of group to get thumbnail for * @access public */ public function realImg($id) { if (!($group = $this->createEntity('Group')->findById($id)) || !$group->Picture) { PPHP::PExit(); } $dir = new PDataDir('groups'); if (!$dir->fileExists($group->Picture) || $dir->file_Size($group->Picture) == 0) { PPHP::PExit(); } $img = new MOD_images_Image($dir->dirName() . '/' . $group->Picture); header('Content-type: ' . $img->getMimetype()); $dir->readFile($group->Picture); PPHP::PExit(); }