function admin_copy_degree_form_submit

6.x admin.degrees.inc admin_copy_degree_form_submit($form, &$form_state)
4.x admin.degrees.inc admin_copy_degree_form_submit($form, $form_submit)
5.x admin.degrees.inc admin_copy_degree_form_submit($form, &$form_state)

File

modules/admin/admin.degrees.inc, line 286

Code

function admin_copy_degree_form_submit($form, &$form_state) {

  global $db;

  $values = $form_state ["values"];

  $de_catalog_year = $values ["de_catalog_year"];
  $school_id = intval($values ['school_id']);
  $destination_school_id = intval($values ['destination_school_id']);

  $source_major_code = trim(strtoupper($values ["source_major_code"]));
  $destination_major_code = trim(strtoupper($values ["destination_major_code"]));
  $include_tracks = $values ["include_tracks"]["yes"];



  // Alright, if we got to here, we can proceed.  We need to 
  // delete everything involving the destination major.
  // First, get the degree_id's in a select...
  $res = db_query("SELECT * FROM draft_degrees 
                    WHERE (major_code = ?
                    OR major_code LIKE ?)
                    AND catalog_year = ? 
                    AND school_id = ? ", $destination_major_code, "$destination_major_code|%", $de_catalog_year, $destination_school_id);
  if (db_num_rows($res) > 0) {
    while ($cur = db_fetch_array($res)) {
      $degree_id = $cur ["degree_id"];
      $res2 = db_query("DELETE FROM draft_degree_requirements
                           WHERE degree_id='?' ", $degree_id);

      $res2 = db_query("DELETE FROM draft_degrees
                           WHERE degree_id = '?' ", $degree_id);
    }
    // Now, delete the tracks.
    $res2 = db_query("DELETE FROM draft_degree_tracks
                          WHERE major_code = ? 
                          AND catalog_year = ? 
                          AND school_id = ?", $destination_major_code, $de_catalog_year, $destination_school_id);
  }

  // Okay, with the destination major good and deleted, we can proceed with
  // the copy.

  // Let's build up an array of all the degrees we will be copying.
  $source_array = array();
  // First, the base degree...
  $res = db_query("SELECT * FROM draft_degrees 
                    WHERE major_code = ?
                    AND catalog_year= ? 
                    AND school_id = ? ", $source_major_code, $de_catalog_year, $school_id);
  $cur = db_fetch_array($res);
  $source_array [] = $cur;

  // Now, any tracks or concentrations?
  if ($include_tracks == "yes") {
    $res = db_query("SELECT * FROM draft_degrees 
                      WHERE major_code LIKE ?
                      AND catalog_year = ? 
                      AND school_id = ? ", "$source_major_code|%", $de_catalog_year, $school_id);
    while ($cur = db_fetch_array($res)) {
      $source_array [] = $cur;
    }

    // While we're here, let's go ahead and make a copy of the tracks.
    $res = db_query("SELECT * FROM draft_degree_tracks
                        WHERE (major_code = ?
                        OR major_code LIKE ? )
                        AND catalog_year = ?
                        AND school_id = ? ", $source_major_code, "$source_major_code|%", $de_catalog_year, $school_id);
    while ($cur = db_fetch_array($res)) {
      extract($cur, 3, "db");
      $dest_code = $destination_major_code;
      if (strstr($db_major_code, "|")) {
        // We need to adjust the destCode to match
        //the source.
        $dest_code = str_replace("$source_major_code|", "$destination_major_code|", $db_major_code);
      }

      $res2 = db_query("INSERT INTO draft_degree_tracks
                          (catalog_year, major_code, track_code, 
                          track_title, track_short_title, track_description, school_id)
                          VALUES
                          (?, ?, ?, ?, ?, ?, ?) ", 
      $de_catalog_year, $dest_code, $db_track_code, 
      $db_track_title, $db_track_short_title, 
      $db_track_description, $destination_school_id);

    }
  }

  $db = get_global_database_handler();

  // Okay, now it's time to go through the sourceArray
  // and duplicate them.
  foreach ($source_array as $src) {
    extract($src, 3, "src");

    $dest_code = $destination_major_code;
    if (strstr($src_major_code, "|")) {
      // We need to adjust the destCode to match
      //the source.
      $dest_code = str_replace("$source_major_code|", "$destination_major_code|", $src_major_code);
    }

    //var_dump($dest_code);
    $dest_degree_id = $db->request_new_degree_id();

    // Let's save our src_degree_id and dest_degree_id in $form_state, for other possible modules to use.
    $form_state ['degrees'][] = array(
      'src' => $src_degree_id,
      'src_catalog_year' => $de_catalog_year,
      'school_id' => $school_id,
      'dest' => $dest_degree_id,
      'dest_major_code' => $dest_code,
      'dest_catalog_year' => $de_catalog_year,
    );

    // Create the entry in the degrees table.
    $res = db_query("INSERT INTO draft_degrees
                        (degree_id, major_code, degree_type, degree_level, degree_class, title,
                         public_note, semester_titles_csv,
                         catalog_year, exclude, allow_dynamic, advising_weight, override_degree_hours,
                         min_tracks, max_tracks, default_tracks, track_selection_config, school_id)
                         VALUES   
                        (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ", 
    $dest_degree_id, $dest_code, $src_degree_type, $src_degree_level, $src_degree_class, $src_title, 
    $src_public_note, $src_semester_titles_csv, 
    $de_catalog_year, $src_exclude, $src_allow_dynamic, $src_advising_weight, $src_override_degree_hours, 
    $src_min_tracks, $src_max_tracks, $src_default_tracks, $src_track_selection_config, $destination_school_id);

    // Now, go through the source's degree requirements and copy those over.
    $res = db_query("SELECT * FROM draft_degree_requirements
                         WHERE degree_id = ?", array($src_degree_id));
    while ($cur = db_fetch_array($res)) {
      extract($cur, 3, "db");

      $res2 = $db->db_query("INSERT INTO draft_degree_requirements
                          (degree_id, semester_num, group_id,
                           group_requirement_type,
                           group_hours_required,
                           group_min_hours_allowed,
                           group_min_grade, course_id,
                           course_min_grade,
                           course_requirement_type,
                           data_entry_value)
                           VALUES
                          (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ", 
      $dest_degree_id, $db_semester_num, $db_group_id, 
      $db_group_requirement_type, 
      $db_group_hours_required, 
      $db_group_min_hours_allowed, 
      $db_group_min_grade, $db_course_id, 
      $db_course_min_grade, 
      $db_course_requirement_type, 
      $db_data_entry_value);

    }

  }

  // Make a - entry into the draft_instruction table so it will
  // remind the administrator to apply draft changes.
  $res = db_query("INSERT INTO draft_instructions
                        (instruction) VALUES ('-') ");


  $for_school = $school_name = "";
  if (module_enabled("schools")) {
    $for_school = " for school %school";
    $school_name = schools_get_school_name_for_id($destination_school_id);
  }

  watchdog("admin", "Copied degree $source_major_code to $destination_major_code,school id: $school_id, ($de_catalog_year) successfully. 
                      Source degree id: $src_degree_id.  New degree id = $dest_degree_id");


  fp_add_message(t("Degree %source has been copied to %dest for %year$for_school.", 
  array("%source" => $source_major_code, "%dest" => $destination_major_code, "%year" => $de_catalog_year, "%school" => $school_name)));


}