";
}
//check for required
if($element->is_required){
$span_required = "id}\" class=\"required\">*";
}
//check for guidelines
if(!empty($element->guidelines)){
$guidelines = "
id}\">{$element->guidelines}
";
}
//check for populated value, if exist, use it instead default_value
if(isset($element->populated_value['element_'.$element->id]['default_value'])){
$element->default_value = $element->populated_value['element_'.$element->id]['default_value'];
}
$element_markup = <<
";
}
//check for required
if($element->is_required){
$span_required = "id}\" class=\"required\">*";
}
//check for guidelines
if(!empty($element->guidelines)){
$guidelines = "
id}\">{$element->guidelines}
";
}
//check for populated value, if exist, use it instead default_value
if(isset($element->populated_value['element_'.$element->id]['default_value'])){
$element->default_value = $element->populated_value['element_'.$element->id]['default_value'];
}
$element_markup = <<
";
}
//check for required
if($element->is_required){
$span_required = "id}\" class=\"required\">*";
}
//check for guidelines
if(!empty($element->guidelines)){
$guidelines = "
id}\">{$element->guidelines}
";
}
//check for populated value (this is being used for edit_entry.php only)
if(!empty($element->populated_value)){
$file_option = $element->populated_value['element_'.$element->id]['default_value']; //this should be contain html markup to download or delete current file
}
$element_markup = <<
";
}
//check for required
if($element->is_required){
$span_required = "id}\" class=\"required\">*";
}
//check for guidelines
if(!empty($element->guidelines)){
$guidelines = "
id}\">{$element->guidelines}
";
}
//check for default value
if(empty($element->default_value)){
$element->default_value = 'http://';
}
//check for populated value, if exist, use it instead default_value
if(!empty($element->populated_value['element_'.$element->id]['default_value'])){
$element->default_value = $element->populated_value['element_'.$element->id]['default_value'];
}
$element_markup = <<
";
}
//check for required
if($element->is_required){
$span_required = "id}\" class=\"required\">*";
}
//check for guidelines
if(!empty($element->guidelines)){
$guidelines = "
id}\">{$element->guidelines}
";
}
//check for populated value, if exist, use it instead default_value
if(!empty($element->populated_value['element_'.$element->id]['default_value'])){
$element->default_value = $element->populated_value['element_'.$element->id]['default_value'];
}
$element_markup = <<
";
}
//check for required
if($element->is_required){
$span_required = "id}\" class=\"required\">*";
}
//check for guidelines
if(!empty($element->guidelines)){
$guidelines = "
id}\">{$element->guidelines}
";
}
//check for populated value first, if any exist, unselect all default value
$is_populated = false;
foreach ($element->options as $option){
if(!empty($element->populated_value['element_'.$element->id.'_'.$option->id]['default_value'])){
$is_populated = true;
break;
}
}
$option_markup = '';
$option_markup .= '
";
}
//check for required
if($element->is_required){
$span_required = "id}\" class=\"required\">*";
}
//check for guidelines
if(!empty($element->guidelines)){
$guidelines = "
id}\">{$element->guidelines}
";
}
//check for populated value, if exist, use it instead default_value
if(isset($element->populated_value['element_'.$element->id]['default_value'])){
$element->default_value = $element->populated_value['element_'.$element->id]['default_value'];
}
$element_markup = <<
After getting the API key, save them into your config.php file.";
$error_class = 'class="error"';
}
}
if(function_exists("form{$element->form_id}_hook_pre_captcha")){
$custom_precaptcha = call_user_func("form{$element->form_id}_hook_pre_captcha");
}
$element_markup = << {$custom_precaptcha}
{$captcha_html}
{$guidelines} {$error_message}
EOT;
return $element_markup;
}
//Main function to display a form
//There are few mode when displaying a form
//1. New blank form (form populated with default values)
//2. New form with error (displayed when 1 submitted and having error, form populated with user inputs)
//3. Edit form (form populated with data from db)
//4. Edit form with error (displayed when 3 submiteed and having error)
function standard_display_form($form_id,$populated_values=array(),$error_elements=array(),$custom_error='',$edit_id=0,$embed=false){
global $lang;
//if there is custom error, don't show other errors
if(!empty($custom_error)){
$error_elements = array();
}
//get form properties data
$query = "select
form_name,
form_description,
form_redirect,
form_success_message,
form_password,
form_unique_ip,
form_frame_height,
form_has_css,
form_active,
form_captcha,
form_review
from
ap_forms
where
form_id='$form_id'";
$result = do_query($query);
$row = do_fetch_result($result);
$form = new stdClass();
$form->id = $form_id;
$form->name = $row['form_name'];
$form->description = $row['form_description'];
$form->redirect = $row['form_redirect'];
$form->success_message = $row['form_success_message'];
$form->password = $row['form_password'];
$form->frame_height = $row['form_frame_height'];
$form->unique_ip = $row['form_unique_ip'];
$form->has_css = $row['form_has_css'];
$form->active = $row['form_active'];
$form->captcha = $row['form_captcha'];
$form->review = $row['form_review'];
if(empty($error_elements)){
$form->is_error = 0;
}else{
$form->is_error = 1;
}
//if this form has review enabled and user are having $_SESSION['review_id'], then populate the form with that values
if(!empty($form->review) && !empty($_SESSION['review_id']) && empty($populated_values)){
$populated_values = get_entry_values($form_id,$_SESSION['review_id'],true);
}
//get elements data
//get element options first and store it into array
$query = "select
element_id,
option_id,
`position`,
`option`,
option_is_default
from
ap_element_options
where
form_id='$form_id' and live=1
order by
element_id asc,`position` asc";
$result = do_query($query);
while($row = do_fetch_result($result)){
$element_id = $row['element_id'];
$option_id = $row['option_id'];
$options_lookup[$element_id][$option_id]['position'] = $row['position'];
$options_lookup[$element_id][$option_id]['option'] = $row['option'];
$options_lookup[$element_id][$option_id]['option_is_default'] = $row['option_is_default'];
}
//get elements data
$element = array();
$query = "select
element_id,
element_title,
element_guidelines,
element_size,
element_is_required,
element_is_unique,
element_is_private,
element_type,
element_position,
element_default_value,
element_constraint
from
ap_form_elements
where
form_id='$form_id'
order by
element_position asc";
$result = do_query($query);
$j=0;
$has_calendar = false; //assume the form doesn't have calendar, so it won't load calendar.js
while($row = do_fetch_result($result)){
$element_id = $row['element_id'];
//lookup element options first
if(!empty($options_lookup[$element_id])){
$element_options = array();
$i=0;
foreach ($options_lookup[$element_id] as $option_id=>$data){
$element_options[$i] = new stdClass();
$element_options[$i]->id = $option_id;
$element_options[$i]->option = $data['option'];
$element_options[$i]->is_default = $data['option_is_default'];
$element_options[$i]->is_db_live = 1;
$i++;
}
}
//populate elements
$element[$j] = new stdClass();
$element[$j]->title = nl2br($row['element_title']);
$element[$j]->guidelines = $row['element_guidelines'];
$element[$j]->size = $row['element_size'];
$element[$j]->is_required = $row['element_is_required'];
$element[$j]->is_unique = $row['element_is_unique'];
$element[$j]->is_private = $row['element_is_private'];
$element[$j]->type = $row['element_type'];
$element[$j]->position = $row['element_position'];
$element[$j]->id = $row['element_id'];
$element[$j]->is_db_live = 1;
//this data came from db or form submit
//being used to display edit form or redisplay form with errors and previous inputs
//this should be optimized in the future, only pass necessary data, not the whole array
$element[$j]->populated_value = $populated_values;
//if there is file upload type, set form enctype to multipart
if($row['element_type'] == 'file'){
$form_enc_type = 'enctype="multipart/form-data"';
}
if(!empty($error_elements[$element[$j]->id])){
$element[$j]->is_error = 1;
$element[$j]->error_message = $error_elements[$element[$j]->id];
}
$element[$j]->default_value = htmlspecialchars($row['element_default_value']);
$element[$j]->constraint = $row['element_constraint'];
if(!empty($element_options)){
$element[$j]->options = $element_options;
}else{
$element[$j]->options = '';
}
//check for calendar type
if($row['element_type'] == 'date' || $row['element_type'] == 'europe_date'){
$has_calendar = true;
}
$j++;
}
//add captcha if enable
if(!empty($form->captcha) && (empty($edit_id))){
$element[$j] = new stdClass();
$element[$j]->type = 'captcha';
$element[$j]->form_id = $form_id;
$element[$j]->is_private = 0;
if(!empty($error_elements['element_captcha'])){
$element[$j]->is_error = 1;
$element[$j]->error_message = $error_elements['element_captcha'];
}
}
//generate html markup for each element
$all_element_markup = '';
foreach ($element as $element_data){
if($element_data->is_private && empty($_SESSION['logged_in'])){ //don't show private element
continue;
}
$all_element_markup .= call_user_func('standard_display_'.$element_data->type,$element_data);
}
if(!empty($custom_error)){
$form->error_message =<<
EOT;
}
//display edit_id if there is any
if(!empty($edit_id)){
$edit_markup = "\n";
}else{
$edit_markup = '';
}
if(empty($form->review)){
$button_text = $lang['submit_button'];
}else{
$button_text = $lang['continue_button'];
}
//markup for submit button
$button_markup =<<
{$edit_markup}
EOT;
//check for specific form css, if any, use it instead
if($form->has_css){
$css_dir = DATA_DIR."/form_{$form_id}/css/";
}
if(!empty($form->password) && empty($_SESSION['user_authenticated'])){ //if form require password and password hasn't set yet
$show_password_form = true;
}elseif (!empty($form->password) && !empty($_SESSION['user_authenticated']) && $_SESSION['user_authenticated'] != $form_id){ //if user authenticated but not for this form
$show_password_form = true;
}else{ //user authenticated for this form, or no password required
$show_password_form = false;
}
if(empty($form->active)){ //if form is not active, don't show the fields
$form_desc_div ='';
$all_element_markup = '';
$button_markup = '';
$ul_class = 'class="password"';
$custom_element =<<
{$lang['form_inactive']}
EOT;
}elseif($show_password_form){ //don't show form description if this page is password protected and user not authenticated
$form_desc_div ='';
$all_element_markup = '';
$custom_element =<<
EOT;
}
}
if($embed){
$embed_class = 'class="embed"';
}
if($has_calendar){
$calendar_js = '';
}else{
$calendar_js = '';
}
//If you would like to remove the "Powered by MachForm" link, please contact us at customer.service@appnitro.com before doing so
$form_markup = <<{$form->name}
{$calendar_js}
EOT;
}
if(!empty($form->password) && empty($_SESSION['user_authenticated'])){ //if form require password and password hasn't set yet
$show_password_form = true;
}elseif (!empty($form->password) && !empty($_SESSION['user_authenticated']) && $_SESSION['user_authenticated'] != $form_id){ //if user authenticated but not for this form
$show_password_form = true;
}else{ //user authenticated for this form, or no password required
$show_password_form = false;
}
//display edit_id if there is any
if(!empty($edit_id)){
$edit_markup = "\n";
$submit_button = '';
}else{
$edit_markup = '';
if(!empty($form->review) && !$show_password_form){
$submit_button = ''."\n".'';
}else{
$submit_button = ''."\n".'';
}
}
//markup for submit button
$button_markup =<<
{$edit_markup}
{$submit_button}
EOT;
//check for specific form css, if any, use it instead
if($form->has_css){
$css_dir = DATA_DIR."/form_{$form_id}/css/";
}
if(empty($form->active)){ //if form is not active, don't show the fields
$form_desc_div ='';
$all_element_markup = '';
$button_markup = '';
$ul_class = 'class="password"';
$custom_element =<<
{$lang['form_inactive']}
EOT;
}elseif($show_password_form){ //don't show form description if this page is password protected and user not authenticated
$form_desc_div ='';
$all_element_markup = '';
$custom_element =<<
EOT;
}
}
$embed_class = 'class="integrated"';
if(empty($edit_id)){
$css_markup = "";
}else{
$css_markup = "";
}
if($has_calendar){
$calendar_js = "";
}else{
$calendar_js = '';
}
//If you would like to remove the "Powered by MachForm" link, please contact us at customer.service@appnitro.com before doing so
$form_markup =<<
{$calendar_js}
EOT;
return $form_markup;
}
//this function is similar as display_success, but designed to display success page without IFRAME
function standard_display_integrated_success($form_id,$machform_path){
//get form properties data
$query = "select
form_success_message,
form_has_css
from
ap_forms
where
form_id='$form_id'";
$result = do_query($query);
$row = do_fetch_result($result);
$form = new stdClass();
$form->id = $form_id;
$form->success_message = nl2br($row['form_success_message']);
$form->has_css = $row['form_has_css'];
//check for specific form css, if any, use it instead
if($form->has_css){
$css_dir = DATA_DIR."/form_{$form_id}/css/";
}
$form_markup = <<
';
//check for specific form css, if any, use it instead
if($form_has_css){
$css_dir = DATA_DIR."/form_{$form_id}/css/";
}
if($embed){
$embed_class = 'class="embed"';
}
$form_markup = <<{$form_name}
';
//check for specific form css, if any, use it instead
if($form_has_css){
$css_dir = DATA_DIR."/form_{$form_id}/css/";
}
if($embed){
$embed_class = 'class="embed"';
}
$form_action = str_replace(array("&show_review=1","?show_review=1"),"",$_SERVER['REQUEST_URI']);
$form_markup = <<