<?php

// Allow authorized users to set/remove holds on a project.
$relPath = "./../pinc/";
include_once $relPath . 'base.inc';
include_once $relPath . 'misc.inc';
// surround_and_join
include_once $relPath . 'Project.inc';
// validate_projectID() project_get_hold_states()
include_once $relPath . 'project_events.inc';
// log_project_event
require_login();
$projectid = validate_projectID('projectid', @$_POST['projectid']);
$return_uri = urldecode($_POST['return_uri']);
$project = new Project($projectid);
if (!$project->can_be_managed_by_current_user) {
    echo "<p>", _('You are not authorized to manage this project.'), "</p>\n";
    exit;
}
// --------------------------------------------------------------------
// Compute the difference between the requested set of hold-states
// and the current set. (Put each holdable state into one of 4 groups:)
$delta_ = array('remove' => array(), 'keep' => array(), 'add' => array(), 'keepout' => array());
$old_hold_states = $project->get_hold_states();
foreach ($Round_for_round_id_ as $round) {
    foreach (array('project_waiting_state', 'project_available_state') as $s) {
        $state = $round->{$s};
        $old_hold = in_array($state, $old_hold_states);
        // In $_POST keys, dots get converted to underscores.
        $new_hold = @$_POST[str_replace('.', '_', $state)] == 'on';
        if ($old_hold) {
<?php

$relPath = "./../../pinc/";
include_once $relPath . 'base.inc';
include_once $relPath . 'project_states.inc';
include_once $relPath . 'stages.inc';
include_once $relPath . 'Project.inc';
include_once './post_files.inc';
require_login();
$valid_round_ids = array_keys($Round_for_round_id_);
array_unshift($valid_round_ids, '[OCR]');
if (@$_REQUEST['projectid'] == 'many') {
    $projectid = 'many';
} else {
    $projectid = validate_projectID('projectid', @$_REQUEST['projectid']);
}
$round_id = get_enumerated_param($_REQUEST, 'round_id', null, $valid_round_ids);
$which_text = get_enumerated_param($_REQUEST, 'which_text', null, array('EQ', 'LE'));
$include_proofers = get_integer_param($_REQUEST, 'include_proofers', 0, 0, 1);
$save_files = get_integer_param($_REQUEST, 'save_files', 0, 0, 1);
// only sitemanagers are allowed to save files
if ($save_files && !user_is_a_sitemanager()) {
    echo _('You are not authorized to invoke this script.');
    exit;
}
// only people who can see names on the page details page
// can see names here.
$project = new Project($projectid);
if ($include_proofers && !$project->names_can_be_seen_by_current_user) {
    echo _('You are not authorized to invoke this script.');
    exit;
 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;
 }
<?php

$relPath = "./../../pinc/";
include_once $relPath . 'base.inc';
include_once $relPath . 'misc.inc';
include_once $relPath . 'theme.inc';
include_once $relPath . 'Project.inc';
include_once 'page_table.inc';
require_login();
$projectid = validate_projectID('project', @$_GET['project']);
$show_image_size = get_integer_param($_GET, 'show_image_size', 0, 0, 1);
$project = new Project($projectid);
if (isset($_GET['select_by_user'])) {
    $sbu = $_GET['select_by_user'];
    if (empty($sbu)) {
        // Show just the current user's pages.
        $username_for_page_selection = $pguser;
    } else {
        // Explicitly specify a particular user.
        // This is only available to PFs & SAs.
        // (Yes, even though it merely filters
        // information that is available to all.)
        if (user_is_a_sitemanager() || user_is_proj_facilitator()) {
            $username_for_page_selection = $sbu;
        } else {
            // Just show the current user's pages.
            $username_for_page_selection = $pguser;
        }
    }
} else {
    // No 'select_by_user' parameter, so show all pages.
Example #5
0
// TRANSLATORS: This is a strftime-formatted string for the date with year and time
$datetime_format = _("%A, %B %e, %Y at %X");
// TRANSLATORS: This is a strftime-formatted string for the date and time
$date_format = _("%A, %B %e, %Y");
// TRANSLATORS: This is a strftime-formatted string for the time
$time_format = _("%X");
error_reporting(E_ALL);
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// Usually, the user arrives here by clicking on the title of a project
// in a list of projects.
// But there are lots of other less-used pages that link here.
$MIN_DETAIL_LEVEL = 1;
$MAX_DETAIL_LEVEL = 4;
$DEFAULT_DETAIL_LEVEL = 3;
// Validate all the input
$projectid = validate_projectID('id', @$_GET['id']);
$expected_state = get_enumerated_param($_GET, 'expected_state', null, $PROJECT_STATES_IN_ORDER, true);
$detail_level = get_integer_param($_GET, 'detail_level', $DEFAULT_DETAIL_LEVEL, $MIN_DETAIL_LEVEL, $MAX_DETAIL_LEVEL);
// -----------------------------------------------------------------------------
$project = new Project($projectid);
// TRANSLATORS: this is the project page title.
// In a tabbed browser, the page-title passed to output_header() will appear
// in the tab, which tends to be small, as soon as you have a few of them.
// So, put the distinctive part of the page-title (i.e. the name of the
// project) first.
$title_for_theme = sprintf(_('"%s" project page'), $project->nameofwork);
$title = sprintf(_("Project Page for '%s'"), $project->nameofwork);
// -----------------------------------------------------------------------------
if (!$user_is_logged_in) {
    // Guests see a reduced version of the project page.
    output_header($title_for_theme, NO_STATSBAR);
<?php

$relPath = "../../pinc/";
include_once $relPath . 'base.inc';
include_once $relPath . 'Project.inc';
include_once '../../stats/jpgraph_files/common.inc';
require_login();
$projectid = validate_projectID("projectid", @$_GET["projectid"]);
// data for this graph is generated in show_wordcheck_page_stats.php
draw_simple_bar_graph(init_simple_bar_graph(600, 300, -1), $_SESSION["graph_pages_per_number_of_flags"][$projectid]["graph_x"], $_SESSION["graph_pages_per_number_of_flags"][$projectid]["graph_y"], ceil(count($_SESSION["graph_pages_per_number_of_flags"][$projectid]["graph_x"]) / 40), _("Number of flags on a page"), _("Pages with that many flags"));
// unsetting graph_pages_per_number_of_flags variable in the session
// to prevent it from getting large
// consider keeping this data if calling this
// image multiple times is needed in future code changes
unset($_SESSION["graph_pages_per_number_of_flags"][$projectid]);
// vim: sw=4 ts=4 expandtab
$relPath = "./../../pinc/";
include_once $relPath . 'base.inc';
include_once $relPath . 'Project.inc';
include_once $relPath . 'user_is.inc';
include_once $relPath . 'theme.inc';
require_login();
output_header("Copyright Approval");
if (!$site_supports_metadata) {
    die('$site_supports_metadata is false, so exiting.');
}
if (!user_is_a_sitemanager()) {
    die('You are not authorized to invoke this script.');
}
//----------------------------------------------------------------------------------
$projectid = validate_projectID('projectid', @$_GET['projectid'], true);
if (isset($projectid)) {
    //update project approval status
    if ($_GET['metadata'] == 'approved') {
        $statuschange = 'project_new_app';
    } else {
        $statuschange = 'project_new_unapp';
    }
    $result = mysql_query("\n        UPDATE projects\n        SET state = '{$statuschange}'\n        WHERE projectid = '{$projectid}'\n    ");
}
echo "<table border=1>\n";
// Header row
echo "\n        <tr>\n            <td align='center' colspan='4'><b>Books Waiting for Copyright Approval</b></td>\n        </tr>\n        <tr>\n            <td align='center' colspan='4'>The following books need to be approved/disapproved for copyright clearance.</td>\n        </tr>\n        <tr>\n            <td align='center' colspan='1'><b>Title</b></td>\n            <td align='center' colspan='1'><b>Author</b></td>\n            <td align='center' colspan='1'><b>Clearance Line</b></td>\n            <td align='center' colspan='1'><b>Approved/Disapproved</b></td>\n        </tr>\n    ";
$result = mysql_query("\n        SELECT projectid, nameofwork, authorsname, clearance, state\n        FROM projects\n        WHERE state = 'project_new_waiting_app'\n    ");
$numrows = mysql_num_rows($result);
$rownum = 0;
<?php

$relPath = '../../pinc/';
include_once $relPath . 'base.inc';
include_once $relPath . 'project_edit.inc';
include_once $relPath . 'project_trans.inc';
include_once $relPath . 'Project.inc';
include_once 'projectmgr.inc';
require_login();
abort_if_not_manager();
$curr_state = get_enumerated_param($_GET, 'curr_state', null, $PROJECT_STATES_IN_ORDER);
$new_state = get_enumerated_param($_GET, 'new_state', null, $PROJECT_STATES_IN_ORDER);
$projectids = 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";
require_login();
if (!user_is_a_sitemanager()) {
    die("You are not authorized to invoke this script.");
}
$copy_pages_url = "{$code_url}/tools/site_admin/copy_pages.php";
$extra_args["css_data"] = "\n    table.copy { margin-left: 3em;}\n    table.copy th { text-align: left;}\n    input[type=text] { font-family: monospace; }\n";
$title = _("Copy Pages from One Project to Another");
output_header($title, NO_STATSBAR, $extra_args);
echo "<br>\n";
echo "<h1>" . $title . "</h1>\n";
echo "<hr>\n";
// Validate the $projectid_ and $from_image_ 'by hand'
$projectid_ = array_get($_POST, 'projectid_', NULL);
if (is_array($projectid_)) {
    foreach ($projectid_ as $which => $projectid) {
        $projectid_[$which] = validate_projectID("projectid_[{$which}]", $projectid);
    }
}
$from_image_ = array_get($_POST, 'from_image_', NULL);
if (is_array($from_image_)) {
    foreach ($from_image_ as $which => $filename) {
        if ($filename) {
            validate_page_image_filename("from_image_[{$which}]", $filename);
        }
    }
}
$action = get_enumerated_param($_POST, 'action', 'showform', array('showform', 'showagain', 'check', 'docopy'));
$page_name_handling = get_enumerated_param($_POST, 'page_name_handling', null, array('PRESERVE_PAGE_NAMES', 'RENUMBER_PAGES'), true);
$transfer_notifications = get_integer_param($_POST, 'transfer_notifications', 0, 0, 1);
$add_deletion_reason = get_integer_param($_POST, 'add_deletion_reason', 0, 0, 1);
$merge_wordcheck_files = get_integer_param($_POST, 'merge_wordcheck_files', 0, 0, 1);
Example #10
0
//   - Promote Level: If a project is ready to be promoted, it sends it to round 2
//   - Complete Project: If a project has completed round 2, it sends it to post-processing or assign to the project manager
//   - Release Projects: If there are not enough projects available to end users, it will release projects waiting to be released
$relPath = "./../../pinc/";
include_once $relPath . 'base.inc';
include_once $relPath . 'stages.inc';
include_once $relPath . 'projectinfo.inc';
include_once $relPath . 'project_trans.inc';
include_once $relPath . 'DPage.inc';
include_once $relPath . 'project_states.inc';
include_once $relPath . 'Project.inc';
// project_get_auto_PPer
include_once $relPath . 'misc.inc';
// requester_is_localhost()
include_once 'autorelease.inc';
$one_project = validate_projectID('project', @$_GET['project'], true);
$refresh_url = @$_GET['return_uri'];
// The following users are authorized to run this script:
// 1) localhost (eg: run from crontab) - can operate on all projects
// 2) SA and PFs - can operates on all projects
// 3) PMs - can operate only on their own projects
if (!requester_is_localhost()) {
    require_login();
    if (!user_is_a_sitemanager() && !user_is_proj_facilitator()) {
        if ($one_project) {
            $project = new Project($one_project);
            if (!$project->can_be_managed_by_user($pguser)) {
                die('You are not authorized to invoke this script.');
            }
        } else {
            die('You are not authorized to invoke this script.');
 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();
 }