//
// 1.3
// ...
//
// ...
// 45
// ...
//
// ... (arbitrary project-specific XML)
//
//
// ... (other projects)
//
global $text;
global $parse_result;
global $project;
global $in_project_specific;
function element_start($parser, $name, $attrs) {
global $text;
global $project;
global $in_project_specific;
switch($name) {
case "project":
$project = null;
$text = "";
break;
case "project_specific":
$in_project_specific = 1;
$text = "";
break;
default:
if ($in_project_specific) {
$text= $text."<$name>";
} else {
$text = "";
}
}
}
function element_end($parser, $name) {
global $text;
global $project;
global $parse_result;
global $in_project_specific;
switch($name) {
case "project":
$n = sizeof($parse_result->projects);
$parse_result->projects[$n] = $project;
break;
case "project_specific":
$project->project_specific = $text;
$in_project_specific = false;
break;
case "dont_run_on_batteries":
$parse_result->dont_run_on_batteries = 1;
break;
case "dont_run_if_user_active":
$parse_result->dont_run_if_user_active = 1;
break;
case "confirm_before_connecting":
$parse_result->confirm_before_connecting = 1;
break;
case "low_water_days":
$parse_result->low_water_days = $text;
break;
case "high_water_days":
$parse_result->high_water_days = $text;
break;
case "disk_max_used_gb":
$parse_result->disk_max_used_gb = $text;
break;
case "disk_max_used_pct":
$parse_result->disk_max_used_pct = $text;
break;
case "disk_min_free_gb":
$parse_result->disk_min_free_gb = $text;
break;
case "master_url":
$project->master_url = $text;
break;
case "email_addr":
$project->email_addr = $text;
break;
case "authenticator":
$project->authenticator = $text;
break;
case "resource_share":
$project->resource_share = $text;
break;
case "show_email":
$project->show_email = $text;
break;
case "send_email":
$project->send_email = $text;
break;
case "preferences":
break;
default:
if ($in_project_specific) {
$text = $text."$name>\n";
} else {
echo "Unknown tag: $name\n";
}
}
}
function char_handler($parser, $x) {
global $text;
$text = $text.$x;
}
function prefs_parse($prefs_xml) {
global $parse_result;
$parse_result = null;
$parse_result->dont_run_on_batteries = 0;
$parse_result->dont_run_if_user_active = 0;
$parse_result->confirm_before_connecting = 0;
$parse_result->disk_max_used_gb = 1000;
$parse_result->disk_max_used_pct = 50;
$parse_result->disk_min_free_gb = 1;
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
xml_set_element_handler($xml_parser, "element_start", "element_end");
xml_set_character_data_handler($xml_parser, "char_handler");
xml_parse($xml_parser, $prefs_xml, 1);
return $parse_result;
}
////////////////////////////////////////////
//
// Functions to display preference subsets, with Edit buttons
//
function prefs_show_work($prefs) {
echo "
";
echo TABLE2."\n";
echo "
".TD2.LG_FONT."Work preferences:
\n";
if ($prefs->dont_run_on_batteries) {
$batteries = "No";
} else {
$batteries = "Yes";
}
if ($prefs->dont_run_if_user_active) {
$in_use = "No";
} else {
$in_use = "Yes";
}
if ($prefs->confirm_before_connecting) {
$confirm = "Yes";
} else {
$confirm = "No";
}
row("Work if computer on batteries: ", $batteries);
row("Work if computer in use: ", $in_use);
row("Confirm before connecting to network: ", $confirm);
row("Minimum amount of work to buffer: ", "$prefs->low_water_days hours");
row("Maximum amount of work to buffer: ", "$prefs->high_water_days hours");
echo "Edit work preferences |
\n";
echo "\n";
}
function prefs_show_disk($prefs) {
echo "";
echo TABLE2."\n";
echo "
".TD2.LG_FONT."Disk preferences:
\n";
row("Maximum disk space allowed to be used: ", "$prefs->disk_max_used_gb MB");
row("Minimum disk space to leave free: ", "$prefs->disk_min_free_gb MB");
row("Maximum % of disk allowed to used: ", "$prefs->disk_max_used_pct %");
echo "Edit disk preferences |
\n";
echo "\n";
}
function prefs_show_project($project) {
echo "
|
";
row("Master URL: ", "$project->master_url");
row("Email Address: ", $project->email_addr);
row("Authenticator: ", $project->authenticator);
row("Resource Share: ", $project->resource_share);
row("Project Specific Preferences: ", htmlspecialchars($project->project_specific));
}
function prefs_show_projects($prefs) {
echo "";
echo TABLE2."\n";
echo "
".TD2.LG_FONT."Project preferences:
\n";
for ($i=0; $iprojects); $i++) {
$project = $prefs->projects[$i];
prefs_show_project($project);
}
echo "
|
";
echo "Edit project preferences |
\n";
echo "";
}
function print_prefs_display($prefs) {
prefs_show_work($prefs);
prefs_show_disk($prefs);
prefs_show_projects($prefs);
}
////////////////////////////////////////////
//
// Functions to display preference subsets as forms
//
function prefs_form_work($user, $prefs) {
echo "\n";
}
function prefs_form_disk($user, $prefs) {
echo "\n";
}
function prefs_form_projects($prefs) {
for ($i=0; $iprojects); $i++) {
$project = $prefs->projects[$i];
echo "";
}
echo "
Add project\n";
echo "";
echo "
";
echo "Whenever you join a new project, remember to add that project with the authenticator that you get from that project to your home project (the first project) you joined.";
echo " |
";
}
function prefs_form_project($project, $action) {
echo "