SubmissionFormField::COMMUNICATION_ROLE_NAME, 'email' => SubmissionFormField::COMMUNICATION_ROLE_EMAIL, 'subject' => SubmissionFormField::COMMUNICATION_ROLE_SUBJECT, 'body' => SubmissionFormField::COMMUNICATION_ROLE_BODY, ); /** * Returns submission field based on given role * * @param kDBItem $form_submission * @param string $role * @param bool $formatted * @param string $format * @return string */ function getFieldByRole(&$form_submission, $role, $formatted = false, $format = null) { static $cache = Array (); $form_id = $form_submission->GetDBField('FormId'); if (!array_key_exists($form_id, $cache)) { $id_field = $this->Application->getUnitOption('formflds', 'IDField'); $table_name = $this->Application->getUnitOption('formflds', 'TableName'); $sql = 'SELECT ' . $id_field . ', EmailCommunicationRole FROM ' . $table_name . ' WHERE FormId = ' . $form_id . ' AND EmailCommunicationRole <> 0'; $cache[$form_id] = $this->Conn->GetCol($sql, 'EmailCommunicationRole'); } // convert string representation of role to numeric if (!is_numeric($role)) { $role = strtolower($role); $role = array_key_exists($role, $this->roleNames) ? $this->roleNames[$role] : false; } // get field by role $field_id = array_key_exists($role, $cache[$form_id]) ? $cache[$form_id][$role] : false; if ($field_id) { return $formatted ? $form_submission->GetField('fld_' . $field_id, $format) : $form_submission->GetDBField('fld_' . $field_id); } return false; } /** * Returns submission field based on given name * * @param kDBItem $form_submission * @param string $name * @param bool $formatted * @param string $format * @return string */ function getFieldByName(&$form_submission, $name, $formatted = false, $format = null) { static $cache = Array (); $form_id = $form_submission->GetDBField('FormId'); if (!array_key_exists($form_id, $cache)) { $id_field = $this->Application->getUnitOption('formflds', 'IDField'); $table_name = $this->Application->getUnitOption('formflds', 'TableName'); $sql = 'SELECT ' . $id_field . ', FieldName FROM ' . $table_name . ' WHERE FormId = ' . $form_id; $cache[$form_id] = $this->Conn->GetCol($sql, 'FieldName'); } // get field by name $field_id = array_key_exists($name, $cache[$form_id]) ? $cache[$form_id][$name] : false; if ($field_id) { return $formatted ? $form_submission->GetField('fld_' . $field_id, $format) : $form_submission->GetDBField('fld_' . $field_id); } return false; } /** * Returns form object field based on form submission * * @param $form_submission kDBItem * @return kDBItem */ function &getForm(&$form_submission) { $form_id = $form_submission->GetDBField('FormId'); $form = $this->Application->recallObject('form', null, Array ('skip_autoload' => true)); /* @var $form kDBItem */ if ( !$form->isLoaded() || ($form->GetID() != $form_id) ) { $form->Load($form_id); } return $form; } /** * Returns form submission based on given submission log * * @param kDBItem $submission_log * @return kDBItem * @access public */ public function getSubmissionFromLog($submission_log) { $submission_id = $submission_log->GetDBField('FormSubmissionId'); $form_submission = $this->Application->recallObject('formsubs.-item', null, Array ('skip_autoload' => true)); /* @var $form_submission kDBItem */ if ( $form_submission->isLoaded() && ($form_submission->GetID() == $submission_id) ) { return $form_submission; } $form_submission->Load($submission_id); return $form_submission; } }