/** * function processData * <pre> * Processes the data for this form. * </pre> * @return [void] */ function processData() { // save the value of the Foriegn Key(s) // $this->formValues[ 'fieldvalues_id' ] = $this->fieldvalues_id; // $this->formValues[ 'registration_id' ] = $this->registration_id; /*[RAD_ADMINBOX_FOREIGNKEY]*/ $formValues = array(); $fieldValues = array(); // get field value records // $fieldValues = $this->getFieldValuesArray( $this->registration_id, $this->person_id, $this->event_id, true ); $fieldValues = $this->formValues; // echo "field values:<br><pre>".print_r($fieldValues,true)."</pre>"; // echo 'field to value id mapper:<br><pre>'.print_r($this->formFieldToValueIDmapper,true).'</pre>'; $fields = new RowManager_FormFieldManager(); $fields->setFormID($this->staffscheduletype_id); $fieldsList = $fields->getListIterator(); $fieldsArray = $fieldsList->getDataList(); $all_field_ids = array_keys($fieldsArray); $field_ids_list = array(); // use to store field ids that already have values $idx = 0; reset($fieldValues); $keys = array_keys($fieldValues); // get field value ids, since array indexed using them foreach ($keys as $formLabel) { $fieldValueID = -1; if (isset($this->formFieldToValueIDmapper[$formLabel])) { // get fieldvalues_id mapped to formlabel $fieldValueID = $this->formFieldToValueIDmapper[$formLabel]; $formValues['fieldvalues_id'] = $fieldValueID; $formValues['fieldvalues_value'] = $fieldValues[$formLabel]; $formValues['person_id'] = $this->person_id; $formValues['fieldvalues_modTime'] = strftime("%Y-%m-%d %H:%M:%S", time()); // == CURRENT_TIME // echo "FORM values:<br><pre>".print_r($formValues,true)."</pre>"; $this->dataManager = new RowManager_FormFieldValueManager($fieldValueID); //$fieldValueIDs[$idx] $fieldsOfInterest = FormProcessor_EditStaffScheduleForm::FORM_FIELDS; $this->dataManager->setFieldsOfInterest($fieldsOfInterest); $this->dataManager->loadFromArray($formValues); // load field value into appropriate row in DB // echo 'field value id = '.$fieldValueID.' for '.$fieldValues[$formLabel].'<BR>'; // standard code for adding/updating but nested to accomodate updating multiple fieldvalues rows if (!$this->dataManager->isLoaded()) { $this->dataManager->createNewEntry(); //echo "ADDED"; } else { $this->dataManager->updateDBTable(); //echo "UPDATED"; } } else { if ($this->isNewRecordCreator == true) { // echo "field mapper = <pre>".print_r($this->formFieldToValueIDmapper,true)."</pre>"; // must ensure that a fieldID exists if (isset($this->formFieldToFieldIDmapper[$formLabel])) { // get fields_id mapped to formlabel $fieldID = $this->formFieldToFieldIDmapper[$formLabel]; $field_ids_list[$idx++] = $fieldID; $formValues['fields_id'] = $fieldID; $formValues['fieldvalues_value'] = $fieldValues[$formLabel]; $formValues['person_id'] = $this->person_id; $formValues['fieldvalues_modTime'] = strftime("%Y-%m-%d %H:%M:%S", time()); // == CURRENT_TIME // echo "ADD FORM values:<br><pre>".print_r($formValues,true)."</pre>"; $this->dataManager = new RowManager_FormFieldValueManager(); //$fieldValueIDs[$idx] // $fieldsOfInterest = FormProcessor_EditStaffScheduleForm::FORM_FIELDS; // $this->dataManager->setFieldsOfInterest( $fieldsOfInterest ); $this->dataManager->loadFromArray($formValues); // load field value into appropriate row in DB // echo 'field value id = '.$fieldValueID.' for '.$fieldValues[$formLabel].'<BR>'; // standard code for adding/updating but nested to accomodate updating multiple fieldvalues rows if (!$this->dataManager->isLoaded()) { $this->dataManager->createNewEntry(); // echo "ADDED"; } else { $this->dataManager->updateDBTable(); // echo "UPDATED"; } } } } } /*** Add empty field values for event fields not shown to the user (i.e. hidden fields) **/ /** NOTE: only required for first time registration field values are stored **/ if ($this->isNewRecordCreator == true) { // Find which ids in the set of all fields do NOT appear the set of fields with values $missing_values = array_diff($all_field_ids, $field_ids_list); // echo 'missing fields = <pre>'.print_r($missing_values,true).'</pre>'; reset($missing_values); $newValues = array(); foreach (array_keys($missing_values) as $key) { $fieldID = current($missing_values); $newValues['fields_id'] = $fieldID; $newValues['fieldvalues_value'] = ''; $newValues['person_id'] = $this->person_id; $formValues['fieldvalues_modTime'] = strftime("%Y-%m-%d %H:%M:%S", time()); // == CURRENT_TIME $this->dataManager = new RowManager_FormFieldValueManager(); //$fieldValueIDs[$idx] $this->dataManager->loadFromArray($newValues); // load field value into appropriate row in DB // echo 'field value id = '.$fieldValueID.' for '.$fieldValues[$formLabel].'<BR>'; // standard code for adding/updating but nested to accomodate updating multiple fieldvalues rows if (!$this->dataManager->isLoaded()) { $this->dataManager->createNewEntry(); // echo "ADDED"; } else { $this->dataManager->updateDBTable(); // echo "UPDATED"; } next($missing_values); } } // Ensure that a form instance is created for the staff person $scheduleFormManager = new RowManager_StaffScheduleManager(); $scheduleFormManager->setPersonID($this->person_id); $scheduleFormManager->setFormID($this->staffscheduletype_id); $formList = $scheduleFormManager->getListIterator(); $formArray = $formList->getDataList(); $personal_form_id = ''; if (count($formArray) > 0) { $row = current($formArray); // pick first record for grabbing form ID $personal_form_id = $row['staffschedule_id']; } // Create new form instance record if none exists if ($personal_form_id == '') { $scheduleFormManager->createNewEntry(); $personal_form_id = $scheduleFormManager->getID(); } return $personal_form_id; }