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