/** * 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 }