function admin_apply_draft_changes_form_submit
Search API
7.x admin.module | admin_apply_draft_changes_form_submit($form, $form_submit) |
6.x admin.module | admin_apply_draft_changes_form_submit($form, $form_submit) |
4.x admin.module | admin_apply_draft_changes_form_submit($form, $form_submit) |
5.x admin.module | admin_apply_draft_changes_form_submit($form, $form_submit) |
Handles the actual moving of draft courses into production.
File
- modules/
admin/ admin.module, line 1009 - The administrative configurations for FlightPath.
Code
function admin_apply_draft_changes_form_submit($form, $form_submit) {
$values = $form_submit ["values"];
$db = get_global_database_handler();
$de_catalog_year = admin_get_de_catalog_year();
// Check to make sure they entered the transfer passcode correctly.
if ($values ["passcode"] != variable_get("admin_transfer_passcode", "h24897Ewujflnb7 wy2896432hke w490ukj")) {
form_error("passcode", t("Error! The password you entered is not correct. Check with the FlightPath administrator
(or check the admin settings pages) to learn the password."));
return;
}
// First, set maintenance mode...
variable_set("maintenance_mode", TRUE);
// Okay, so what we gotta do is truncate the production tables,
// then copy the draft tables in.
$table_array = array(
"courses",
"degree_requirements",
"degree_tracks",
"degrees",
"group_requirements",
"groups",
);
foreach ($table_array as $table_name) {
$draft_table_name = "draft_$table_name";
// First, truncate existing...
$query = "truncate table `$table_name`";
$res = db_query($query);
// Now, copy in draft changes...
$query = "INSERT INTO `$table_name`
SELECT * FROM `$draft_table_name` ";
$res = db_query($query);
}
$db2 = new DatabaseHandler();
// Now, we need to go through the draft_instructions table,
// and perform each instruction one at a time.
$res = db_query("SELECT * FROM draft_instructions
ORDER BY `id` ");
while ($cur = db_fetch_array($res))
{
$instruction = trim($cur ["instruction"]);
$temp = explode(",", $instruction);
if (trim($temp [0]) == "update_course_id") {
$db2->update_course_id(trim($temp [1]), trim($temp [2]));
}
if (trim($temp [0]) == "update_course_requirement_from_name") {
$db2->update_course_requirement_from_name(trim($temp [1]), trim($temp [2]), trim($temp [3]));
}
// TODO: Maybe invoke another hook here, to let other modules act on the instruction?
}
// Once this is done, truncate the draft_instructions table.
$res = db_query("TRUNCATE TABLE draft_instructions");
// Invoke a hook to allow other modules to apply_draft_changes as well
invoke_hook("apply_draft_changes");
// And we are done! Set maintenance mode back to none
variable_set("maintenance_mode", FALSE);
// Send emails to notify programmers...
$notify = variable_get("notify_apply_draft_changes_email_address", "");
if ($notify != "") {
mail($notify, "FlightPath Apply Draft Changes", "Someone has applied draft changes to FlightPath, which updated degree plans, groups, and courses.");
}
fp_add_message(t("Successfully updated the production database with draft changes. Your changes are now live and visible on production for all users."));
watchdog("admin", "Draft changes applied.");
}