To replace it,
click the \"Browse\" button and select a JPEG or PNG file (50KB or less).
To remove it from your profile, check this box:
";
rowify(" ");
end_table();
echo "";
} else {
rowify("
If you would like include a picture with your profile,
click the \"Browse\" button and select a JPEG or PNG file.
Please select images of 50KB or less.
\n";
}
function show_submit() {
row1("Submit profile");
echo "";
$config = get_config();
$publickey = parse_config($config, "");
if ($publickey) {
table_row("To protect project's webpages from spam, we ask you to type in two words shown in the image: \n".
recaptcha_get_html($publickey));
}
table_row("
");
}
// 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:
error_page("The format of your uploaded image is not supported.");
}
$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);
}
/*
echo "
Your profile lets you share your opinions and background
with the ".PROJECT." community.
";
}
function show_questions($profile) {
$response1 = "";
$response2 = "";
if (isset($profile->response1)) {
$response1 = $profile->response1;
}
if (isset($profile->response2)) {
$response2 = $profile->response2;
}
row1(show_profile_heading1());
rowify(show_profile_question1().html_info());
rowify(" ");
show_textarea("response1", $response1);
rowify(" ");
row1( show_profile_heading2());
rowify( show_profile_question2().html_info());
rowify(" ");
show_textarea("response2", $response2);
rowify(" ");
show_language_selection($profile);
rowify(" ");
}
function show_textarea($name, $text) {
rowify("");
}
// $profile is null if user doesn't already have a profile.
// Don't assign to $profile->x if this is the case.
//
function process_create_profile($user, $profile) {
$response1 = post_str('response1');
$response2 = post_str('response2');
$language = post_str('language');
if (isset($_POST['delete_pic'])) {
$delete_pic = $_POST['delete_pic'];
} else {
$delete_pic = "off";
}
if (strlen($response1)==0 &&
strlen($response2)==0 &&
$delete_pic != "on" &&
!is_uploaded_file($_FILES['picture']['tmp_name'])
) {
error_page("Your profile submission was empty.");
exit();
}
if ($delete_pic == "on") {
delete_user_pictures($profile->userid);
$profile->has_picture = false;
$profile->verification = 0;
}
$profile ? $hasPicture = $profile->has_picture: $hasPicture = false;
if (is_uploaded_file($_FILES['picture']['tmp_name'])) {
$hasPicture = true;
if ($profile) $profile->verification = 0;
// 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');
ImageJPEG($images[1], IMAGE_PATH . $user->id . '_sm.jpg');
}
$response1 = sanitize_html($response1);
$response2 = sanitize_html($response2);
if ($profile) {
$query = " response1 = '".boinc_real_escape_string($response1)."',"
." response2 = '".boinc_real_escape_string($response2)."',"
." language = '".boinc_real_escape_string($language)."',"
." has_picture = '$hasPicture',"
." verification = '$profile->verification'"
." WHERE userid = '$user->id'";
$result = BoincProfile::update_aux($query);
if (!$result) {
error_page("Couldn't update profile: database error");
}
} else {
$query = 'SET '
." userid = '$user->id',"
." language = '".boinc_real_escape_string($language)."',"
." response1 = '".boinc_real_escape_string($response1)."',"
." response2 = '".boinc_real_escape_string($response2)."',"
." has_picture = '$hasPicture',"
." verification=0";
$result = BoincProfile::insert($query);
if (!$result) {
error_page("Couldn't create profile: database error");
}
$user->update("has_profile=1");
}
page_head("Profile saved");
echo "
Congratulations!
Your profile was successfully entered into our database.
id>View your profile
";
page_tail();
}
function show_profile_creation_page($user) {
$config = get_config();
$min_credit = parse_config($config, "");
if ($min_credit && $user->expavg_credit < $min_credit) {
error_page(
"To prevent spam, an average credit of $min_credit or greater is required to create or edit a profile. We apologize for this inconvenience."
);
}
// If the user already has a profile,
// fill in the fields with their current values.
//
$profile = get_profile($user->id);
if (post_str("submit", true)) {
$privatekey = parse_config($config, "");
if ($privatekey) {
$resp = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]
);
if (!$resp->is_valid) {
error_page("The reCAPTCHA wasn't entered correctly. Go back and try it again. ".
"(reCAPTCHA said: " . $resp->error . ")"
);
}
}
process_create_profile($user, $profile);
exit();
}
if ($profile) {
page_head("Edit your profile");
} else {
page_head("Create a profile");
}
echo "
";
page_tail();
}
$user = get_logged_in_user(true);
show_profile_creation_page($user);
?>