id"); if ($result) { $profile_info = mysql_fetch_array($result, MYSQL_ASSOC); } setup_form(); $profile_info?page_head("Edit your Profile"):page_head("Create a Profile"); start_table_noborder(); show_description(); show_questions(); show_picture_option(); show_finale(); end_table(); close_form(); page_tail(); } function setup_form() { if ($_POST['submit']) { process_results(); exit(); } echo "
"; } function close_form() { echo "
"; } function show_description() { global $profile_info; global $user; $profile_info?row1("Edit User Profile: " . $user->name):row1("Create a User Profile"); rowify(" By creating a user profile you can share your opinions and background with the entire ".PROJECT." community. "); rowify("
"); } function show_questions() { show_profile_heading1(); show_profile_question1(); rowify("
"); show_textarea('response1'); rowify("
"); show_profile_heading2(); show_profile_question2(); rowify("
"); show_textarea('response2'); rowify("
"); show_language_selection(); rowify("
"); } function show_textarea($name) { global $profile_info; rowify(""); } function show_picture_option() { global $profile_info; row1("Your Picture"); if ($profile_info['has_picture']) { echo " "; end_table(); echo ""; } else { rowify(" Do you have a picture of yourself on your computer? If you would like us to include it with your profile, please click the \"Browse\" button and select the JPEG or PNG file you want to send. (No animated GIFs, please!)

NOTE: Please keep your image small (less than 50K bytes)
"); } } function show_language_selection() { global $profile_info; row1("Select Your Primary Language"); rowify("Selecting a language will help others with the same language preference to find each others' profiles and message board postings."); echo "\n"; } function show_finale() { row1("Submit Your Profile"); rowify("
        "); } // If the user with id = $userid has uploaded a picture his/herself, // delete it and its thumbnail. // function delete_user_pictures($userid) { $filename1 = IMAGE_PATH . $userid . '.jpg'; $filename2 = IMAGE_PATH . $userid . '_sm.jpg'; if (file_exists($filename1)) { unlink($filename1); } if (file_exists($filename2)) { unlink($filename2); } } function process_results() { global $user; global $profile_info; $response1 = $_POST['response1']; $response2 = $_POST['response2']; $language = $_POST['language']; $delete_pic = $_POST['delete_pic']; if (strlen($response1)==0 && strlen($response2)==0 && $delete_pic != "on" && !is_uploaded_file($_FILES['picture']['tmp_name']) ) { profile_error_page("Your profile submission was empty."); exit(); } // TODO: Having the delete checkbox and pic file form might confuse users. // Should figure out a better way to handle this. Also might want to // present some sort of verification dialog (javascript). if ($delete_pic == "on") { delete_user_pictures($profile_info['userid']); $profile_info['has_picture'] = false; } $profile_info ? $hasPicture = $profile_info['has_picture']: $hasPicture = false; if (is_uploaded_file($_FILES['picture']['tmp_name'])) { $hasPicture = true; /* echo "
Name: " . $_FILES['picture']['name']; echo "
Type: " . $_FILES['picture']['type']; echo "
Size: " . $_FILES['picture']['size']; echo "
Temp name: " . $_FILES['picture']['tmp_name']; */ $images = getImages($_FILES['picture']['tmp_name']); // Write the original image file to disk. // TODO: define a constant for image quality. ImageJPEG($images[0], IMAGE_PATH . $user->id . '.jpg', 10); ImageJPEG($images[1], IMAGE_PATH . $user->id . '_sm.jpg', 10); } if ($profile_info) { $query = 'UPDATE profile SET ' ." response1 = '$response1'," ." response2 = '$response2'," ." language = '$language'," ." has_picture = '$hasPicture'" ." WHERE userid = '$user->id'"; } else { $query = 'INSERT INTO profile SET ' ." userid = '$user->id'," ." language = '$language'," ." response1 = '$response1'," ." response2 = '$response2'," ." has_picture = '$hasPicture'"; } $result = mysql_query($query); if (!$result) { profile_error_page("Couldn't create profile: database error!"); exit(); } show_result_page(); } // Returns an array containing: // [0]: The original image refered to by $fileName if its dimensions are // less than MAX_IMG_WIDTH x MAX_IMG_HEIGHT, or a version scaled to // those dimensions if it was too large. // [1]: A scaled version of the above. function getImages($fileName) { $size = getImageSize($fileName); // Determine if the filetype uploaded is supported. // TODO: Change these to constants. switch($size[2]) { case '2': // JPEG $image = imageCreateFromJPEG($fileName); break; case '3': // PNG $image = imageCreateFromPNG($fileName); break; default: profile_error_page("The format of your uploaded image is not supported by our system."); exit(); } $width = $size[0]; $height = $size[1]; $smallImage = scale_image($image, $width, $height, SMALL_IMG_WIDTH, SMALL_IMG_HEIGHT); if ($width > MAX_IMG_WIDTH || $height > MAX_IMG_HEIGHT) { $image = scale_image($image, $width, $height, MAX_IMG_WIDTH, MAX_IMG_HEIGHT); } /*($width > $height)? $scalar = ($width / SMALL_IMG_WIDTH) : $scalar = ($height / SMALL_IMG_HEIGHT); $dest_width = $width / $scalar; $dest_height = $height / $scalar; $horiz_offset = (SMALL_IMG_WIDTH - $dest_width) / 2; $vert_offset = (SMALL_IMG_HEIGHT - $dest_height) / 2; // TODO: Switch once GD 2.0+ is installed. //$smallImage = ImageCreateTrueColor(SMALL_IMG_WIDTH, SMALL_IMG_HEIGHT); $smallImage = ImageCreate(SMALL_IMG_WIDTH, SMALL_IMG_HEIGHT); // TODO: Switch once GD 2.0+ is installed. //ImageCopyResampled($smallImage, $image, $horiz_offset, $vert_offset, 0, 0, $dest_width, $dest_height, $width, $height); ImageCopyResized($smallImage, $image, $horiz_offset, $vert_offset, 0, 0, $dest_width, $dest_height, $width, $height); */ /* echo "

Image type: $size[2]"; echo "
Original width: $width"; echo "
Original height: $height"; echo "
Scalar: $scalar"; echo "
Dest width: " . ($width / $scalar); echo "
Dest height: " . ($height / $scalar); echo "
Horizontal offset: $horiz_offset"; echo "
Vertical offset: $vert_offset"; echo "

View result"; */ return array($image, $smallImage); } function scale_image($image, $origWidth, $origHeight, $targetWidth, $targetHeight) { ($origWidth > $origHeight)? $scalar = ($origWidth / $targetWidth) : $scalar = ($height / $targetHeight); $dest_width = $origWidth / $scalar; $dest_height = $origHeight / $scalar; $horiz_offset = ($targetWidth - $dest_width) / 2; $vert_offset = ($targetHeight - $dest_height) / 2; // TODO: Switch once GD 2.0+ is installed. //$newImage = ImageCreateTrueColor($targetWidth, $targetHeight); $newImage = ImageCreate($targetWidth, $targetHeight); // TODO: Switch once GD 2.0+ is installed. //ImageCopyResampled($newImage, $image, $horiz_offset, $vert_offset, 0, 0, $dest_width, $dest_height, $origWidth, $origHeight); ImageCopyResized($newImage, $image, $horiz_offset, $vert_offset, 0, 0, $dest_width, $dest_height, $origWidth, $origHeight); return $newImage; } function show_result_page() { global $user; page_head("Profile Saved"); echo "

Congratulations!

Your profile was successfully entered into our database.

id>View your profile
"; page_tail(); } ?>

Delete

You have previously uploaded a picture of yourself to accompany your profile, shown at left. If you would like to replace it, please click the \"Browse\" button and select the JPEG or PNG file you would like to use instead. (No animated GIFs, please!) If you would rather not have a picture with your profile, click the \"Delete\" checkbox. If you like your current picture, there is no need to do anything.


NOTE: Please keep your image small (less than 50K bytes)

"; if ($profile_info) { show_combo_box("language", LANGUAGE_FILE, $profile_info['language']); } else { show_combo_box("language", LANGUAGE_FILE, "English"); } echo "