/**
  * createAddress
  *
  * creates addresses based on HR data
  *
  * @since		version 1.0.0
  * @access	public
  * @param  	array $person PZBLOAD person record
  * @param  	string $type Address type
  */
 function createAddress($person, $type, $user = '******')
 {
     $user = $user ? $user : strtoupper($_SESSION['username']);
     $user = $user ? $user : '******';
     if (!$this->addressExists($person['r_pidm'], $type)) {
         switch ($type) {
             case 'CA':
                 $params = 'street_line1=' . urlencode($person['r_mail_stop']) . '&street_line2=17 High Street&city=Plymouth&stat_code=NH&zip=03264&user='******'MA':
                 $params = 'street_line1=' . urlencode(PSUTools::cleanOracle($person['r_street_line1'])) . '&street_line2=' . urlencode(PSUTools::cleanOracle($person['r_street_line2'])) . '&city=' . urlencode(PSUTools::cleanOracle($person['r_city'])) . '&stat_code=' . $person['r_stat_code'] . '&zip=' . $person['r_zip'] . '&user='******'OF':
                 $params = 'street_line1=' . urlencode(PSUTools::cleanOracle($person['r_department'])) . '&street_line2=' . urlencode(PSUTools::cleanOracle($person['r_building'])) . '&city=Plymouth&stat_code=NH&zip=03264&user='******'r_pidm'], $type, $params);
     }
     //end if
 }
 /**
  * createIDCardIfNeeded
  *
  * createIDCardIfNeeded creates/updates an ID Card (SPBCARD) record if needed
  *
  * @since		version 1.0.0
  * @access	public
  * @param  	string $pidm Banner pidm
  * @param  	string $group_type Type of ID Card
  * @param  	string $employee_status Status of employment A=Active, I=Inactive
  * @param  	string $benefit Benefit status
  * @param  	string $department Employee's Department
  */
 function createIDCardIfNeeded($pidm, $group_type, $employee_status = 'A', $benefit = 'N', $department = '')
 {
     $sql = "SELECT * FROM spbcard WHERE spbcard_pidm={$pidm}";
     if ($results = $this->_ADOdb->Execute($sql)) {
         if ($row = $results->FetchRow()) {
             $row = $this->cleanKeys('spbcard_', '', $row);
             $spriden = $this->getName($pidm);
             if ($group_type != $row['group_type'] || $employee_status != $row['employee_status'] || $benefit != $row['benefit_status'] || $department != $row['department'] || $spriden['r_first_name'] != $row['first_name'] || $spriden['r_mi'] != $row['middle_name'] || $spriden['r_last_name'] != $row['last_name']) {
                 $sql = "UPDATE spbcard SET spbcard_first_name='" . $spriden['r_first_name'] . "',spbcard_middle_name='" . $spriden['r_mi'] . "',spbcard_last_name='" . $spriden['r_last_name'] . "',spbcard_group_type='{$group_type}',spbcard_employee_status='{$employee_status}',spbcard_benefit_status='{$benefit}',spbcard_employee_dept='" . PSUTools::cleanOracle($department) . "',spbcard_update_date=sysdate WHERE spbcard_pidm={$pidm}";
                 $sql = "UPDATE spbcard SET spbcard_employee_status='{$employee_status}' WHERE spbcard_pidm={$pidm}";
                 $this->_ADOdb->Execute($sql);
             }
             //end if
         } else {
             $sql = "INSERT INTO spbcard (spbcard_pidm,spbcard_id,spbcard_first_name,spbcard_middle_name,spbcard_last_name,spbcard_suffix,spbcard_group_type,spbcard_employee_status,spbcard_benefit_status,spbcard_employee_dept,spbcard_update_date) (SELECT spriden_pidm,spriden_id,spriden_first_name,spriden_mi,spriden_last_name,spbpers_name_suffix,'{$group_type}','{$employee_status}','{$benefit}','" . PSUTools::cleanOracle($department) . "',sysdate FROM spriden,spbpers WHERE spbpers_pidm=spriden_pidm AND spriden_pidm={$pidm} AND spriden_change_ind is null)";
             $this->_ADOdb->Execute($sql);
         }
         //end else
     } else {
         $sql = "INSERT INTO spbcard (spbcard_pidm,spbcard_id,spbcard_first_name,spbcard_middle_name,spbcard_last_name,spbcard_suffix,spbcard_group_type,spbcard_employee_status,spbcard_benefit_status,spbcard_employee_dept,spbcard_update_date) (SELECT spriden_pidm,spriden_id,spriden_first_name,spriden_mi,spriden_last_name,spbpers_suffix,'{$group_type}','{$employee_status}','{$benefit}','" . PSUTools::cleanOracle($department) . "',sysdate FROM spriden,spbpers WHERE spbpers_pidm=spriden_pidm AND spriden_pidm={$pidm} AND spriden_change_ind is null)";
         $this->_ADOdb->Execute($sql);
     }
     //end else
 }
 /**
  *saveFields
  *
  *saves all the filled out fields
  *
  *@param string $user_form_id
  *@param string $info
  *
  */
 function saveFields($user_form_id, &$info)
 {
     foreach ($info as $key => $field) {
         if (is_array($field)) {
             $repeating_group_id = $this->db->GetOne("SELECT DISTINCT rg.id FROM {$this->table['repeating_group']} rg, {$this->table['repeating_field']} rf, {$this->table['field']} f WHERE rg.group_name='{$key}' AND rg.id=rf.repeating_group_id AND rf.field_id=f.id AND f.master_form_id={$this->master_form}");
             $fields_in_group = $this->getRepeatingGroupFields($repeating_group_id);
             $num_fields_in_group = count($fields_in_group);
             $used_disp_orders = array();
             //handle the fields one submit/display group at a time
             foreach ($field as $group => $f_name) {
                 $save_data = false;
                 //$num_fields_submitted=count($f_name);
                 //check to see if any of the fields being submitted have already been submitted (regardless of their values)
                 foreach ($fields_in_group as $rep_field) {
                     //automatically save the submitted fields if they haven't been submitted yet
                     if (!isset($this->repeating_fields[$rep_field])) {
                         $save_data = true;
                     }
                     //end if
                 }
                 //end foreach
                 //if these fields have already been submitted
                 if ($save_data === false) {
                     //organize the previously submitted fields by submission group/display order
                     $display_group = array();
                     foreach ($fields_in_group as $rep_field) {
                         foreach ($this->repeating_fields[$rep_field] as $disp_order => $field_data) {
                             $display_group[$disp_order][$rep_field] = $field_data['field_value'];
                         }
                         //end foreach
                     }
                     //end foreach
                     //check each previously submitted display group to see if all those values match all the submitted values exactly...
                     $num_matching_groups = 0;
                     $num_null_groups = 0;
                     foreach ($display_group as $d_order => $d_order_fields) {
                         $values_match = 0;
                         $null_values = 0;
                         foreach ($f_name as $field_name => $field_value) {
                             $field_value = stripslashes($field_value);
                             if ($field_value == '') {
                                 $null_values++;
                             }
                             if ($display_group[$d_order][$field_name] == $field_value) {
                                 $values_match++;
                             }
                         }
                         //end foreach
                         if ($null_values == $num_fields_in_group) {
                             $num_null_groups++;
                         }
                         //...and tally those that match
                         if ($values_match == $num_fields_in_group) {
                             $num_matching_groups++;
                         }
                     }
                     //end foreach
                     //if there are no groups of fields from previous form submits that have identical values to the values currently being submitted, save the values in the current submission
                     if ($num_matching_groups === 0 && $num_null_groups === 0) {
                         $save_data = true;
                     }
                 }
                 //end if
                 if ($save_data) {
                     $use_prev_record = false;
                     $disp_order_found = array();
                     reset($fields_in_group);
                     foreach ($fields_in_group as $rep_field) {
                         $num_grp_fields_saved = 0;
                         $num_grp_fields_saved = count($this->repeating_fields[$rep_field]);
                         if ($num_grp_fields_saved > 0) {
                             for ($i = 1; $i <= $num_grp_fields_saved; $i++) {
                                 if (!isset($disp_order_found[$i])) {
                                     $disp_order_found[$i] = false;
                                 }
                                 $disp_order_exists = array_key_exists($i, $this->repeating_fields[$rep_field]);
                                 if ($disp_order_exists !== false) {
                                     $disp_order_found[$i] = true;
                                 }
                             }
                             //end for
                         }
                         //end if
                     }
                     //end foreach
                     foreach ($disp_order_found as $disp_order => $found) {
                         if ($found === false && !in_array($disp_order, $used_disp_orders)) {
                             $use_prev_record = $this->db->GetOne("SELECT id FROM {$this->table['repeating_value']} WHERE user_form_id={$user_form_id} AND repeating_group_id={$repeating_group_id} AND display_order={$disp_order}");
                             $used_disp_orders[] = $disp_order;
                             break;
                         }
                         //end if
                     }
                     //end foreach
                     if ($use_prev_record !== false) {
                         $rep_val_id = $use_prev_record;
                     } else {
                         $prev_record = $this->db->Execute("SELECT display_order FROM {$this->table['repeating_value']} WHERE repeating_group_id={$repeating_group_id} AND user_form_id={$user_form_id} ORDER BY display_order DESC");
                         if ($row = $prev_record->FetchRow()) {
                             $row = PSUTools::cleanKeys('', '', $row);
                             $new_rep_order = $row['display_order'] + 1;
                             $this->db->Execute("INSERT INTO {$this->table['repeating_value']} (repeating_group_id, display_order, user_form_id) VALUES ({$repeating_group_id}, {$new_rep_order}, {$user_form_id})");
                         } else {
                             $this->db->Execute("INSERT INTO {$this->table['repeating_value']} (repeating_group_id, display_order, user_form_id) VALUES ({$repeating_group_id}, 1, {$user_form_id})");
                         }
                         $rep_val_id = $this->db->GetOne("SELECT id FROM {$this->table['repeating_value']} WHERE user_form_id={$user_form_id} AND repeating_group_id={$repeating_group_id} ORDER BY display_order DESC");
                     }
                     //end else
                     foreach ($f_name as $field_name => $field_value) {
                         $this_field = $this->db->GetRow("SELECT id, field_type FROM {$this->table['field']} WHERE field_name='{$field_name}' AND master_form_id={$this->master_form}");
                         $this_field = PSUTools::cleanKeys('', '', $this_field);
                         $field_value = stripslashes($field_value);
                         $field_value = PSUTools::cleanOracle($field_value);
                         $this->saveRepeatingField($user_form_id, $this_field['id'], $field_value, $rep_val_id);
                     }
                     //end foreach
                 }
                 //end if
             }
             //end foreach($field as $group=>$f_name)
         } elseif ($this->fields[$key]['field_value'] != $field) {
             $this_field = $this->db->GetRow("SELECT id, field_type FROM {$this->table['field']} WHERE field_name='{$key}' AND master_form_id={$this->master_form}");
             $this_field = PSUTools::cleanKeys('', '', $this_field);
             $field = stripslashes($field);
             $field = PSUTools::cleanOracle($field);
             $this->saveField($user_form_id, $this_field['id'], $field);
         }
         //end elseif
     }
     //end foreach
 }