EMAIL_COMMUNICATION_ROLE_NAME, 'email' => EMAIL_COMMUNICATION_ROLE_EMAIL, 'subject' => EMAIL_COMMUNICATION_ROLE_SUBJECT, 'body' => EMAIL_COMMUNICATION_ROLE_BODY, ); /** * Returns submission field based on given role * * @param kDBItem $form_submission * @param string $role * @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 * @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'); } 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; } }