function set_from_post()
 {
     if (get_magic_quotes_gpc()) {
         // Values in $_POST come with backslashes added.
         // We want the fields of $this to be unescaped strings,
         // so we strip the slashes.
         $_POST = array_map('stripslashes', $_POST);
     }
     $errors = '';
     if (isset($_POST['projectid'])) {
         $projectid = validate_projectID('projectid', @$_POST['projectid']);
         $this->projectid = $projectid;
         $ucep_result = user_can_edit_project($this->projectid);
         if ($ucep_result == PROJECT_DOES_NOT_EXIST) {
             return _("parameter 'projectid' is invalid: no such project") . ": '{$this->projectid}'";
         } else {
             if ($ucep_result == USER_CANNOT_EDIT_PROJECT) {
                 return _("You are not authorized to manage this project.") . ": '{$this->projectid}'";
             } else {
                 if ($ucep_result == USER_CAN_EDIT_PROJECT) {
                     // fine
                 } else {
                     return _("unexpected return value from user_can_edit_project") . ": '{$ucep_result}'";
                 }
             }
         }
     } else {
         if (isset($_POST['clone_projectid'])) {
             // we're creating a clone
             $clone_projectid = validate_projectID('clone_projectid', @$_POST['clone_projectid']);
             $this->clone_projectid = $clone_projectid;
         }
     }
     $this->nameofwork = @$_POST['nameofwork'];
     // we're using preg_match as this field will be space-normalised later
     if (preg_match('/^\\s*$/', $this->nameofwork)) {
         $errors .= "Name of work is required.<br>";
     }
     $this->authorsname = @$_POST['authorsname'];
     if (preg_match('/^\\s*$/', $this->authorsname)) {
         $errors .= "Author is required.<br>";
     }
     if (user_is_a_sitemanager()) {
         $this->projectmanager = @$_POST['username'];
         if ($this->projectmanager == '') {
             $errors .= _("Project manager is required.") . "<br>";
         } else {
             $errors .= check_user_exists($this->projectmanager, 'Project manager');
         }
         if (empty($errors) && !that_user_is_PM($this->projectmanager)) {
             $errors .= sprintf(_("%s is not a PM."), $this->projectmanager) . "<br>";
         }
     } else {
         $this->projectmanager = '';
     }
     $pri_language = @$_POST['pri_language'];
     if ($pri_language == '') {
         $errors .= _("Primary Language is required.") . "<br>";
     }
     $sec_language = @$_POST['sec_language'];
     $this->language = $sec_language != '' ? "{$pri_language} with {$sec_language}" : $pri_language;
     $this->genre = @$_POST['genre'];
     if ($this->genre == '') {
         $errors .= _("Genre is required.") . "<br>";
     }
     $this->image_source = @$_POST['image_source'];
     if ($this->image_source == '') {
         $errors .= _("Image Source is required. If the one you want isn't in list, you can propose to add it.") . "<br>";
         $this->image_source = '_internal';
     }
     /*
             else
             {
                 if ($this->image_source == 'OTHER')
                 {
                     if (empty($_POST['imso_other']))
                     {
                         $errors .= "When Image Source is OTHER, details must be supplied.<br>";
                     }
                     else
                     {
                         $imso_other = $_POST['imso_other'];
                         $this->image_source = "O:".$imso_other;
                     }
                 }
             }
     */
     $this->special_code = @$_POST['special_code'];
     if ($this->special_code != '') {
         if (startswith($this->special_code, 'Birthday') || startswith($this->special_code, 'Otherday')) {
             if (empty($_POST['bdayday']) or empty($_POST['bdaymonth'])) {
                 $errors .= _("Month and Day are required for Birthday or Otherday Specials.") . "<br>";
             } else {
                 $bdaymonth = $_POST['bdaymonth'];
                 $bdayday = $_POST['bdayday'];
                 if (!checkdate($bdaymonth, $bdayday, 2000)) {
                     $errors .= _("Invalid date supplied for Birthday or Otherday Special.") . "<br>";
                 } else {
                     if (strlen($this->special_code) == 8) {
                         $this->special_code .= " " . $bdaymonth . $bdayday;
                     }
                 }
             }
         }
     }
     $this->checkedoutby = @$_POST['checkedoutby'];
     // if it's an existing project, we want to know its state
     if (isset($this->projectid)) {
         // Somewhat kludgey to have to do this query here.
         $res = mysql_query("\n                SELECT state, checkedoutby, username\n                FROM projects\n                WHERE projectid='{$this->projectid}'\n            ") or die(mysql_error());
         list($state, $PPer, $PM) = mysql_fetch_row($res);
         $this->state = $state;
         // don't allow an empty PPer/PPVer if the project is checked out
         if (($this->state == PROJ_POST_FIRST_CHECKED_OUT || $this->state == PROJ_POST_SECOND_CHECKED_OUT) && $this->checkedoutby == '') {
             $errors .= _("This project is checked out: you must specify a PPer/PPVer");
             $this->checkedoutby = $PPer;
         }
         if ($this->projectmanager == '') {
             $this->projectmanager = $PM;
         }
     } else {
         $this->state = '';
     }
     if ($this->checkedoutby != '') {
         // make sure the named PPer/PPVer actually exists
         $errors .= check_user_exists($this->checkedoutby, 'PPer/PPVer');
     }
     $this->image_preparer = @$_POST['image_preparer'];
     if ($this->image_preparer != '') {
         $errors .= check_user_exists($this->image_preparer, 'Image Preparer');
     }
     $this->text_preparer = @$_POST['text_preparer'];
     if ($this->text_preparer != '') {
         $errors .= check_user_exists($this->text_preparer, 'Text Preparer');
     }
     $this->posted = @$_POST['posted'];
     $this->postednum = @$_POST['postednum'];
     if ($this->posted) {
         // We are in the process of marking this project as posted.
         if ($this->postednum == '') {
             $errors .= _("Posted Number is required.") . "<br>";
         } else {
             if (!preg_match('/^[1-9][0-9]*$/', $this->postednum)) {
                 $errors .= sprintf(_("Posted Number \"%s\" is not of the correct format."), $this->postednum) . "<br>";
                 // You'll sometimes see PG etext numbers with a 'C' appended.
                 // The 'C' is not part of the etext number
                 // (e.g., it does not appear in PG's RDF catalog),
                 // rather it's a bit of information about the identified text,
                 // namely that it's still under (US) copyright.
                 // Anyhow, the 'C' should not be included here.
             }
         }
     }
     $this->scannercredit = @$_POST['scannercredit'];
     $this->comments = @$_POST['comments'];
     $this->clearance = @$_POST['clearance'];
     $this->difficulty_level = @$_POST['difficulty_level'];
     $this->up_projectid = intval(@$_POST['up_projectid']);
     $this->original_marc_array_encd = @$_POST['rec'];
     $this->extra_credits = @$_POST['extra_credits'];
     $this->deletion_reason = @$_POST['deletion_reason'];
     if ($this->difficulty_level == '') {
         global $pguser;
         $this->difficulty_level = $pguser == "BEGIN" ? "beginner" : "average";
     }
     return $errors;
 }
 function set_from_post()
 {
     if (get_magic_quotes_gpc()) {
         // Values in $_POST come with backslashes added.
         // We want the fields of $this to be unescaped strings,
         // so we strip the slashes.
         $_POST = array_map('stripslashes', $_POST);
     }
     if (isset($_POST['projectid'])) {
         $this->projectid = validate_projectID('projectid', @$_POST['projectid']);
         $ucep_result = user_can_edit_project($this->projectid);
         if ($ucep_result == PROJECT_DOES_NOT_EXIST) {
             return array(_("parameter 'projectid' is invalid: no such project") . ": '{$this->projectid}'");
         } else {
             if ($ucep_result == USER_CANNOT_EDIT_PROJECT) {
                 return array(_("You are not authorized to manage this project.") . ": '{$this->projectid}'");
             } else {
                 if ($ucep_result == USER_CAN_EDIT_PROJECT) {
                     // fine
                 } else {
                     return array(_("unexpected return value from user_can_edit_project") . ": '{$ucep_result}'");
                 }
             }
         }
     }
     $this->projectid = validate_projectID('projectid', @$_POST['projectid']);
     $this->good_words = @$_POST['good_words'];
     $this->bad_words = @$_POST['bad_words'];
     $this->gwl_timestamp = get_integer_param($_POST, 'gwl_timestamp', null, null, null);
     $this->bwl_timestamp = get_integer_param($_POST, 'bwl_timestamp', null, null, null);
     return array();
 }
foreach (explode(',', @$_GET['projects']) as $projectid) {
    $projectids[] = validate_projectID('projects', $projectid);
}
echo "<pre>\n";
echo sprintf(_("Moving projects from '%1\$s' to '%2\$s'..."), $curr_state, $new_state);
echo "\n\n";
foreach ($projectids as $projectid) {
    echo "\n";
    echo "{$projectid} ...\n";
    try {
        $project = new Project($projectid);
    } catch (NonexistentProjectException $exception) {
        echo "    " . _("does not exist.") . "\n";
        continue;
    }
    $result = user_can_edit_project($projectid);
    if ($result == USER_CANNOT_EDIT_PROJECT) {
        echo "    " . _("You are not authorize to manage this project.") . "\n";
        continue;
    }
    if ($project->state != $curr_state) {
        // TRANSLATORS: %1$s is a project name, %2$s and %3$s are project states
        echo "    " . sprintf(_('%1$s is no longer in %2$s. Now in %3$s.'), $project->nameofwork, $curr_state, $project->state) . "\n";
        continue;
    }
    $error_msg = project_transition($projectid, $new_state, $pguser);
    if ($error_msg) {
        echo "    {$project->nameofwork}\n";
        echo "    {$error_msg}\n";
        continue;
    }
include_once $relPath . 'stages.inc';
include_once $relPath . 'forum_interface.inc';
include_once $relPath . 'project_edit.inc';
include_once $relPath . 'misc.inc';
// attr_safe(), html_safe()
include_once 'page_table.inc';
// page_state_is_a_bad_state()
require_login();
$projectid = validate_projectID('projectid', @$_REQUEST['projectid']);
$image = validate_page_image_filename('image', @$_REQUEST['image']);
$modify = array_get($_REQUEST, 'modify', '');
$cancel = array_get($_POST, 'cancel', '');
$prev_text = array_get($_POST, 'prev_text', NULL);
$prevtext_column = array_get($_POST, 'prevtext_column', NULL);
$resolution = array_get($_POST, 'resolution', NULL);
if (user_can_edit_project($projectid) != USER_CAN_EDIT_PROJECT) {
    die("You are not authorized to manage this project.");
}
// If the user hit a cancel button, return them to the starting form
if ($cancel) {
    $modify = '';
}
if (!$resolution) {
    //Find out information about the bad page report
    $result = mysql_query("SELECT * FROM {$projectid} WHERE image='{$image}'");
    $page = mysql_fetch_assoc($result);
    $state = $page['state'];
    $b_User = $page['b_user'];
    $b_Code = $page['b_code'];
    $project = new Project($projectid);
    $round = get_Round_for_page_state($state);