/** * function __construct * <pre> * Initialize the object. * </pre> * @param $pathModuleRoot [STRING] The path to the module's root dir. * @param $viewer [OBJECT] The viewer object. * @return [void] */ function __construct($pathModuleRoot, $viewer, $formAction, $basicFormAction, $activityFormAction, $sortBy, $person_id, $staffscheduletype_id, $staffschedule_id = '', $fieldvalues_id = '', $fields_id = '', $activity_id = '', $showHidden = true) { $fieldList = FormProcessor_ApproveStaffSchedule::FORM_FIELDS; $fieldTypes = FormProcessor_ApproveStaffSchedule::FORM_FIELD_TYPES; $displayFields = FormProcessor_ApproveStaffSchedule::DISPLAY_FIELDS; parent::__construct($formAction, $fieldList, $displayFields); // initialize the object values $this->pathModuleRoot = $pathModuleRoot; $this->viewer = $viewer; $this->sortBy = $sortBy; $this->formAction = $formAction; $this->basic_formAction = $basicFormAction; $this->activity_formAction = $activityFormAction; // $this->has_activity_form = $hasActivityForm; $this->form_id = $staffscheduletype_id; $this->personal_form_id = $staffschedule_id; $this->field_id = $fields_id; if ($fieldvalues_id != '') { $this->fieldvalues_id = $fieldvalues_id; } if ($activity_id != '') { $this->staffactivity_id = $activity_id; } // just let these be empty if they are passed as empty $this->person_id = $person_id; $this->has_activity_form = true; // set default, could be changed if form info exists $this->has_activity_contact_nums = false; // set default, could be changed if form info exists $this->activity_types_filter = array(); $this->show_hidden_fields = $showHidden; $this->form_submitted = false; // Get form type context information $formType = new RowManager_StaffScheduleTypeManager($this->form_id); $formTypeList = $formType->getListIterator(); $formTypeArray = $formTypeList->getDataList(); if (count($formTypeArray) > 0) { $row = current($formTypeArray); // pick first record for grabbing form context data // Determine if form should have associated activities $has_activities = $row['staffscheduletype_has_activities']; if ($has_activities == '0') { $this->has_activity_form = false; } // Determine if form activities require contact phone #s $has_activity_phone_nums = $row['staffscheduletype_has_activity_phone']; if ($has_activity_phone_nums == '1') { $this->has_activity_contact_nums = true; } // Determine if activities form must be filtered by 1 or more activity types $filters_result = $row['staffscheduletype_activity_types']; if ($filters_result != '') { $this->activity_types_filter = explode(',', $filters_result); } } // Get person and form type IDs from form instance ID, if applicable if ($this->personal_form_id != '') { $formInstance = new RowManager_StaffScheduleManager($this->personal_form_id); $this->person_id = $formInstance->getPersonID(); $this->staffscheduletype_id = $formInstance->getFormID(); // echo 'person_id = '.$this->person_id.' and form type id = '.$this->staffscheduletype_id; } // Setup data-manager tied to staff schedule table (i.e. for approval) $form_instance = new RowManager_StaffScheduleManager($staffschedule_id); // $registration->setSortOrder( $sortBy ); $form_instance->setFormID($this->form_id); $form_instance->setPersonID($this->person_id); // $multiTableManager2->setLabelTemplate('viewer_userID', '[viewer_userID]'); $this->listManager = $form_instance->getListIterator(); // $formInstanceArray = $this->listManager->getDataList(); // echo "<pre>".print_r($this->listManager,true)."</pre>"; // echo "<pre>".print_r($formInstanceArray,true)."</pre>"; // create references to sub-page objects $disableHeading = true; $disableForm = true; $this->basic_form = new FormProcessor_EditBasicStaffForm($this->pathModuleRoot, $this->viewer, $this->basic_formAction, $this->person_id, $this->form_id, $this->fieldvalues_id, $this->field_id, $disableHeading, $this->show_hidden_fields, $this->personal_form_id, $disableForm); // $this->sortBy, if ($this->has_activity_form == true) { $incContactNums = $this->has_activity_contact_nums; $this->optional_sheduled_activity_form = new FormProcessor_EditStaffActivity($this->pathModuleRoot, $this->viewer, $this->activity_formAction, $this->sortBy, $this->staffactivity_id, $this->person_id, $this->form_id, $this->personal_form_id, '', true, $incContactNums, $this->activity_types_filter, $disableForm); //, $activitytype_id='' } // Ensure that a form instance is created for the staff person $scheduleFormManager = new RowManager_StaffScheduleManager(); $scheduleFormManager->setPersonID($this->person_id); $scheduleFormManager->setFormID($this->form_id); $formList = $scheduleFormManager->getListIterator(); $formArray = $formList->getDataList(); $this->is_form_approved = false; if (count($formArray) > 0) { $row = current($formArray); // pick first record for grabbing approval data $approved = $row['staffschedule_approved']; if ($approved == '1') { $this->is_form_approved = true; } } // now initialize the labels for this page // start by loading the default field labels for this Module $languageID = $viewer->getLanguageID(); $seriesKey = modulecim_hrdb::MULTILINGUAL_SERIES_KEY; $pageKey = FormProcessor_ApproveStaffSchedule::MULTILINGUAL_PAGE_KEY; $this->labels = new MultilingualManager($languageID, $seriesKey, $pageKey); }
/** * function __construct * <pre> * Initialize the object. * </pre> * @param $pathModuleRoot [STRING] The path to the module's root dir. * @param $viewer [OBJECT] The viewer object. * @return [void] */ function __construct($pathModuleRoot, $viewer, $formAction, $instrFormAction, $editFieldsFormAction, $sortBy, $staffscheduletype_id, $fields_id = '') { $fieldList = FormProcessor_EditHrdbForm::FORM_FIELDS; $fieldTypes = FormProcessor_EditHrdbForm::FORM_FIELD_TYPES; $displayFields = FormProcessor_EditHrdbForm::DISPLAY_FIELDS; parent::__construct($formAction, $fieldList, $displayFields); // initialize the object values $this->pathModuleRoot = $pathModuleRoot; $this->viewer = $viewer; $this->sortBy = $sortBy; $this->formAction = $formAction; $this->editfields_formAction = $editFieldsFormAction; $this->instructions_formAction = $instrFormAction; // $this->has_activity_form = $hasActivityForm; $this->form_id = $staffscheduletype_id; $this->field_id = $fields_id; // just let these be empty if they are passed as empty // $this->person_id = $person_id; $this->form_submitted = false; // figure out the important fields for the dataManager $fieldsOfInterest = implode(',', $this->formFields); $this->dataManager = new RowManager_FormFieldManager($fields_id); $this->dataManager->setFieldsOfInterest($fieldsOfInterest); $this->formValues = $this->dataManager->getArrayOfValues(); // Get form type context information $formType = new RowManager_StaffScheduleTypeManager($this->form_id); $formTypeList = $formType->getListIterator(); $formTypeArray = $formTypeList->getDataList(); // Ensure that a form instance is created for the staff person $scheduleFormManager = new RowManager_StaffScheduleManager(); $scheduleFormManager->setPersonID($this->person_id); $scheduleFormManager->setFormID($this->form_id); $formList = $scheduleFormManager->getListIterator(); $formArray = $formList->getDataList(); // create references to sub-page objects $disableHeading = true; $this->instructions_form = new FormProcessor_EditStaffFormInstructions($this->pathModuleRoot, $this->viewer, $this->instructions_formAction, $this->form_id, $disableHeading); $this->editfields_form = new FormProcessor_EditFormFields($this->pathModuleRoot, $this->viewer, $this->editfields_formAction, $this->sortBy, $this->field_id, $this->form_id, $disableHeading); // now initialize the labels for this page // start by loading the default field labels for this Module $languageID = $viewer->getLanguageID(); $seriesKey = modulecim_hrdb::MULTILINGUAL_SERIES_KEY; $pageKey = modulecim_hrdb::MULTILINGUAL_PAGE_FIELDS; $this->labels = new MultilingualManager($languageID, $seriesKey, $pageKey); // then load the page specific labels for this page $pageKey = FormProcessor_EditHrdbForm::MULTILINGUAL_PAGE_KEY; $this->labels->loadPageLabels($pageKey); // load the site default form link labels $this->labels->setSeriesKey(SITE_LABEL_SERIES_SITE); $this->labels->loadPageLabels(SITE_LABEL_PAGE_FORM_LINKS); $this->labels->loadPageLabels(SITE_LABEL_PAGE_FORMERRORS); }
/** * function __construct * <pre> * Initialize the object. * </pre> * @param $pathModuleRoot [STRING] The path to the module's root dir. * @param $viewer [OBJECT] The viewer object. * @return [void] */ function __construct($pathModuleRoot, $viewer, $formAction, $basicFormAction, $activityFormAction, $sortBy, $person_id, $staffscheduletype_id, $staffschedule_id = '', $fieldvalues_id = '', $fields_id = '', $activity_id = '', $showHidden = true) { $fieldList = FormProcessor_EditStaffScheduleForm::FORM_FIELDS; $fieldTypes = FormProcessor_EditStaffScheduleForm::FORM_FIELD_TYPES; $displayFields = FormProcessor_EditStaffScheduleForm::DISPLAY_FIELDS; parent::__construct($formAction, $fieldList, $displayFields); // initialize the object values $this->pathModuleRoot = $pathModuleRoot; $this->viewer = $viewer; $this->sortBy = $sortBy; $this->formAction = $formAction; $this->basic_formAction = $basicFormAction; $this->activity_formAction = $activityFormAction; // $this->has_activity_form = $hasActivityForm; $this->form_id = $staffscheduletype_id; $this->personal_form_id = $staffschedule_id; $this->field_id = $fields_id; if ($fieldvalues_id != '') { $this->fieldvalues_id = $fieldvalues_id; } if ($activity_id != '') { $this->staffactivity_id = $activity_id; } // just let these be empty if they are passed as empty $this->person_id = $person_id; $this->has_activity_form = true; // set default, could be changed if form info exists $this->has_activity_contact_nums = false; // set default, could be changed if form info exists $this->activity_types_filter = array(); $this->show_hidden_fields = $showHidden; $this->form_submitted = false; // // Get the real form name // $this->hrdbFormTitle = ''; // if ($this->form_id != '') // { // $formContext = new RowManager_StaffScheduleTypeManager($this->form_id); // // } // Get form type context information $formType = new RowManager_StaffScheduleTypeManager($this->form_id); $this->hrdbFormTitle = $formType->getFormName(); $formTypeList = $formType->getListIterator(); $formTypeArray = $formTypeList->getDataList(); if (count($formTypeArray) > 0) { $row = current($formTypeArray); // pick first record for grabbing form context data // Determine if form should have associated activities $has_activities = $row['staffscheduletype_has_activities']; if ($has_activities == '0') { $this->has_activity_form = false; } // Determine if form activities require contact phone #s $has_activity_phone_nums = $row['staffscheduletype_has_activity_phone']; if ($has_activity_phone_nums == '1') { $this->has_activity_contact_nums = true; } // Determine if activities form must be filtered by 1 or more activity types $filters_result = $row['staffscheduletype_activity_types']; if ($filters_result != '') { $this->activity_types_filter = explode(',', $filters_result); } } // Ensure that a form instance is created for the staff person $scheduleFormManager = new RowManager_StaffScheduleManager(); $scheduleFormManager->setPersonID($this->person_id); $scheduleFormManager->setFormID($this->form_id); $formList = $scheduleFormManager->getListIterator(); $formArray = $formList->getDataList(); $this->is_form_approved = false; if (count($formArray) > 0) { $row = current($formArray); // pick first record for grabbing approval data $approved = $row['staffschedule_approved']; if ($approved == '1') { $this->is_form_approved = true; } $this->approval_notes = $row['staffschedule_approvalnotes']; } // create references to sub-page objects $disableHeading = true; $this->basic_form = new FormProcessor_EditBasicStaffForm($this->pathModuleRoot, $this->viewer, $this->basic_formAction, $this->person_id, $this->form_id, $this->fieldvalues_id, $this->field_id, $disableHeading, $this->show_hidden_fields); // $this->sortBy, if ($this->has_activity_form == true) { $incContactNums = $this->has_activity_contact_nums; // $incContactNums = false; // $onlyShowVacationType = false; // // /** HACK: to be replaced with a more generic approach tied in with Edit Form Fields **/ // if ($this->form_id == '1') // summer schedule form requires contact # for each activity // { // $incContactNums = true; // } // else if ($this->form_id == '2') // { // $onlyShowVacationType = true; // } $this->optional_sheduled_activity_form = new FormProcessor_EditStaffActivity($this->pathModuleRoot, $this->viewer, $this->activity_formAction, $this->sortBy, $this->staffactivity_id, $this->person_id, $this->form_id, $this->personal_form_id, '', true, $incContactNums, $this->activity_types_filter); //, $activitytype_id='' $this->optional_sheduled_activity_form->setFormName('scheduledActivityForm'); } // now initialize the labels for this page // start by loading the default field labels for this Module $languageID = $viewer->getLanguageID(); $seriesKey = modulecim_hrdb::MULTILINGUAL_SERIES_KEY; $pageKey = FormProcessor_EditStaffScheduleForm::MULTILINGUAL_PAGE_KEY; $this->labels = new MultilingualManager($languageID, $seriesKey, $pageKey); }
/** * 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; }