Code: Selecteer alles
//
// Here we'll initialize MOD-wide vars & configuration
//
function ntraf_initialize()
{
//
// define MOD-wide global vars
//
global $ntraf_field_name, $ntraf_field_id, $ntraf_answer;
global $ntraf_field_missing;
$ntraf_field_name = array();
$ntraf_field_id = array();
$ntraf_answer = array();
$ntraf_field_missing = array();
//
// let's read MOD-wide configuration from database ...
//
global $db;
global $ntraf_config;
$ntraf_config = array();
$sql = "SELECT *
FROM " . NTRAF_CONFIG_TABLE;
if( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, "Could not query config information", "", __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
$ntraf_config[$row['ntraf_config_name']] = $row['ntraf_config_value'];
}
//
// ****************************************************************************************************************
// generate Copyright & Version-Information for this MOD ...
//
$tmp_mod_name = $ntraf_config['mod_name'];
$tmp_mod_version = $ntraf_config['mod_version'];
$tmp_copyright_years = $ntraf_config['copyright_years'];
$tmp_author_link = '<a href="http://' . $ntraf_config['author_website'] . '" target="_blank">mad-manne</a>';
// now let's compose the complete line ...
$tmp_copyright_notice = '[' . $tmp_mod_name . '-<b>MOD</b> ';
$tmp_copyright_notice.= '<i>version ' . $tmp_mod_version .'</i>';
$tmp_copyright_notice.= '] ©' . $tmp_copyright_years . ' by ';
$tmp_copyright_notice.= $tmp_author_link;
// and finally assign it to a CONSTANT !
define('NTRAF_COPYRIGHT_NOTICE', $tmp_copyright_notice);
//
// ... done with Copyright & Version-Information for this MOD
// ****************************************************************************************************************
//
}
//
// This function generates the complete input-fields required while posting, editing RAFs
//
function ntraf_gen_inputfields($my_template_id, $my_post_id, $my_mode)
{
// global vars to used outside ...
global $db, $userdata;
global $ntraf_title, $ntraf_info, $ntraf_warning;
global $ntraf_field_id, $ntraf_answer, $ntraf_field_count;
global $ntraf_field_caption, $ntraf_field_explain, $ntraf_field_code;
//$ntraf_field_id = array();
// internal vars
$my_type = array();
$my_mainoption = array();
$my_name = array();
// set some vars to default
$ntraf_field_count = 0;
// First we'll have to get the more infos about this template !
$sql = "SELECT template_form_title, template_form_info, template_form_warning
FROM " . NTRAF_TEMPLATES_TABLE . "
WHERE ntraf_template_id = $my_template_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, '[template] Error reading data for RequiredAdditionalFields');
} // end IF --> result from database was O.K.
if ( $template = $db->sql_fetchrow($result) )
{
$ntraf_title = $template['template_form_title'];
$ntraf_info = $template['template_form_info'];
$ntraf_warning = $template['template_form_warning'];
}
// Now we'll have to get the field-list for this template !
$sql = "SELECT ntraf_field_id, field_type, field_mainoption, field_caption, field_explain
FROM " . NTRAF_FIELDS_TABLE . "
WHERE ntraf_template_id = $my_template_id
ORDER BY field_order";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, '[field-list] Error reading data for RequiredAdditionalFields');
} // end IF --> result from database was O.K.
if ( $tpl_fields = $db->sql_fetchrow($result) )
{
do
{
$ntraf_field_count++;
array_push($ntraf_field_id, $tpl_fields['ntraf_field_id']);
array_push($my_type, $tpl_fields['field_type']);
array_push($my_mainoption, $tpl_fields['field_mainoption']);
array_push($ntraf_field_caption, $tpl_fields['field_caption']);
array_push($ntraf_field_explain, $tpl_fields['field_explain']);
array_push($my_name, 'RAF#' . $tpl_fields['ntraf_field_id']);
}
while ( $tpl_fields = $db->sql_fetchrow($result) );
} // done reading field-list for this template
$db->sql_freeresult($result);
// Before we can start composing the HTML-Code for all fields, there's one more task!
// [1] If we are in newtopic-mode ...
// ... we should check if the user has answers remembered for this template
// [2] If this is about editing an existing topic-starter ...
// ... let's get the answers submitted with that $post_id
// To check this, we'll just try and see if the array contains any data.
switch ( $my_mode )
{
case 'newtopic':
// We won't do anything for guests ...
if ( $userdata['session_logged_in'] )
{
// we will only fill-in remembered answers, if the array of answers is still empty!
if ( implode('', $ntraf_answer) == '' )
{
$debug = '[LAST ANSWERS ...] ';
/*
$ntraf_answer[0] = 'Yes';
$ntraf_answer[1] = 'boardname remembered!';
$ntraf_answer[2] = 'password';
*/
}// end IF ( answers are ALL empty )
} // end IF ( member )
break;
case 'editpost':
$debug = '[EDITING] ';
break;
} // end SWITCH ( $my_mode )
// just debug-INFO
// $ntraf_title = $debug . $ntraf_title;
// just debug-INFO
// Now we want to compose the input-field code. Here's how it goes:
// [1] For every single field we'll read all config-data for that field
// [2] Depending on the type-definition of the field make the according code
// [3] Set every field-value either to it's default(first call) or POST-value(script is in progress)
// let's go for it and iterate over the field-list array(s)
for ($i=0; $i < $ntraf_field_count; $i++)
{
// let's get the according values from the db
$sql = "SELECT fieldoption_name, fieldoption_value
FROM " . NTRAF_FIELDOPTIONS_TABLE . "
WHERE ntraf_field_id = $ntraf_field_id[$i]
ORDER BY fieldoption_name";
if ( (!$result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, $ntraf_field_count . '[field-options] Error reading data for RequiredAdditionalFields');
} // end IF --> result from database was O.K.
// let's reset this for every new set of field-options !
$my_field_options = array();
$my_field_default = '';
while ( $row = $db->sql_fetchrow($result) )
{
if ( $row['fieldoption_name'] == 'default' )
{
// here's the default value for the current field :-)
$my_field_default = $row['fieldoption_value'];
} else
{
// field-options go into array
$my_field_options[$row['fieldoption_name']] = $row['fieldoption_value'];
}
}
switch ( $my_type[$i] )
{
case NTRAF_FIELDTYPE_TEXT:
if ( $my_mainoption[$i] == 'PASSWORD' )
{
// let's generate an input-field for passwords
$tmp_code = '<input type="password" class="post" name="' . $my_name[$i] . '"';
} else
{
// let's generate an normal text-field
$tmp_code = '<input type="text" class="post" name="' . $my_name[$i] . '"';
}
$tmp_code.= ' size="' . $my_field_options['input_length'] . '"';
$tmp_code.= ' maxlength="' . $my_field_options['max_length'] . '"';
if ( empty($ntraf_answer[$i]) )
{
// seems to be the first call of the script ... let's assign default-value
$tmp_code.= ' value="' . $my_field_default .'">';
} else
{
// obviously we have POST-data for this var ... let's assign it!
$tmp_code.= ' value="' . $ntraf_answer[$i] .'">';
}
// O.K. code has been composed ... let's go
array_push($ntraf_field_code, $tmp_code);
break;
case NTRAF_FIELDTYPE_RADIOBUTTONS:
$button_count = count($my_field_options);
$tmp_code = '';
for ($button=0; $button < $button_count; $button++)
{
$button_index = 'radio_button' . strval(($button+1)*10);
$tmp_code.= '<input type="radio" name="' . $my_name[$i] . '"';
$tmp_code.= ' value="' . $my_field_options[$button_index] .'"';
if ( empty($ntraf_answer[$i]) )
{
if ( $my_field_options[$button_index] == $my_field_default )
{
$tmp_code.= ' checked="checked" ';
}
} else
{
if ( $my_field_options[$button_index] == $ntraf_answer[$i] )
{
$tmp_code.= ' checked="checked" ';
}
}
$tmp_code.= '>' . $my_field_options[$button_index] .' ';
// if values should be displayed VERTICALLY ... let's do it!
if ( $my_mainoption[$i] == 'VERTICAL' )
{
$tmp_code.= NTRAF_VERTICAL_CODE;
}
} // end iterating over buttons
// If VERTICAL was active ...
// ... we'll have to strip the last substring(NTRAF_VERTICAL_CODE) from the string
if ( $my_mainoption[$i] == 'VERTICAL' )
{
$tmp_code = substr($tmp_code, 0, (strlen($tmp_code) - strlen(NTRAF_VERTICAL_CODE)));
}
// O.K. code has been composed ... let's go
array_push($ntraf_field_code, $tmp_code);
break;
case NTRAF_FIELDTYPE_CHECKBOXES:
$checkbox_count = count($my_field_options);
$tmp_code = '';
for ($checkbox=0; $checkbox < $checkbox_count; $checkbox++)
{
$checkbox_index = 'checkbox' . strval(($checkbox+1)*10);
$tmp_code.= '<input type="checkbox" name="' . $my_name[$i] . '[]"';
$tmp_code.= ' value="' . $my_field_options[$checkbox_index] .'"';
// now we'll creep into this inner array and see what has to be checked !
$checkbox_selected = ( is_array($ntraf_answer[$i]) ) ? TRUE : FALSE ;
if ( $checkbox_selected )
{
// iterate over the selected fields
for ($j=0 ; $j < count($ntraf_answer[$i]); $j++)
{
if ( $my_field_options[$checkbox_index] == $ntraf_answer[$i][$j] )
{
$tmp_code.= ' checked="checked" ';
}
}// done iterating on selected boxes
}// end IF checkbox has been selected
$tmp_code.= '>' . $my_field_options[$checkbox_index] .' ';
// if values should be displayed VERTICALLY ... let's do it!
if ( $my_mainoption[$i] == 'VERTICAL' )
{
$tmp_code.= '<br /> ';
}
} // end iterating over buttons
// If VERTICAL was active ... we'll have to strip the last '<br /> ' from the string
if ( $my_mainoption[$i] == 'VERTICAL' )
{
$tmp_code = substr($tmp_code, 0, (strlen($tmp_code) - 12));
}
// O.K. code has been composed ... let's go
array_push($ntraf_field_code, $tmp_code);
break;
case NTRAF_FIELDTYPE_DROPDOWNLIST:
$list_count = count($my_field_options);
if ( empty($my_mainoption[$i]) )
{
// let's generate a standard dropdown-list ...
$tmp_code = '<select name="' . $my_name[$i] . '">';
$tmp_code.= '<option value=""> Make your choice!</option>';
$tmp_code.= '<option value="">--------------------</option>';
} else
{
// let's generate a multiple-selection list with a given size ...
$tmp_code = '<select name="' . $my_name[$i] . '[]"';
$tmp_code.= ' size="' . intval($my_mainoption[$i]) . '" multiple>';
}
// now let's iterate over the options available !
for ($list=0; $list < $list_count; $list++)
{
$list_index = 'list_item' . strval(($list+1)*10);
$tmp_code.= '<option value="' . $my_field_options[$list_index] .'"';
// depending on what type of list this is ...
// ... different ways to assign defaults or actual POST-vars !
if ( empty($my_mainoption[$i]) )
{
// standard dropdown-list ...
if ( empty($ntraf_answer[$i]) )
{
if ( $my_field_options[$list_index] == $my_field_default )
{
$tmp_code.= ' selected="selected" ';
}
} else
{
if ( $my_field_options[$list_index] == $ntraf_answer[$i] )
{
$tmp_code.= ' selected="selected" ';
}
} // done assigning default or actual POST-var to standard dropdown-list
}
else
{
// O.K. this is a multiple-choice list ...
// ... now we'll creep into this inner array and see what needs to be checked !
$list_selected = ( is_array($ntraf_answer[$i]) ) ? TRUE : FALSE ;
if ( $list_selected )
{
// iterate over the selected fields
for ($j=0 ; $j < count($ntraf_answer[$i]); $j++)
{
if ( $my_field_options[$list_index] == $ntraf_answer[$i][$j] )
{
$tmp_code.= ' selected="selected" ';
}
}// done iterating on select-box
}// end IF checkbox has been selected
} // PHEW ... done assigning defaults or actual POST-vars for both types of list :-)
$tmp_code.= '>' . $my_field_options[$list_index] .'</option>';
} // end iterating over list-items
$tmp_code.= '</select>';
// O.K. code has been composed ... let's go
array_push($ntraf_field_code, $tmp_code);
break;
} // end of switch
}// done iterating over the field-list
}// end of function
//
// This function generates the complete output-fields required to display what user's submitted into RAFs
//
function ntraf_gen_outputfields($my_template_id, $my_topic_id)
{
// global vars to used outside ...
global $db;
global $ntraf_title, $ntraf_info, $ntraf_warning;
global $ntraf_field_id, $ntraf_answer, $ntraf_field_count;
global $ntraf_field_caption, $ntraf_field_explain, $ntraf_field_code;
global $ntraf_display_caption;
global $ntraf_title_bar;
global $ntraf_field_count;
// internal vars
$my_type = array();
$my_mainoption = array();
$my_name = array();
$ntraf_display_caption = array();
// set some vars to default
$ntraf_field_count = 0;
// First we'll have to get the more infos about this template !
$sql = "SELECT template_display_title
FROM " . NTRAF_TEMPLATES_TABLE . "
WHERE ntraf_template_id = $my_template_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, '[template] Error reading data for RequiredAdditionalFields');
} // end IF --> result from database was O.K.
if ( $template = $db->sql_fetchrow($result) )
{
$ntraf_title_bar = $template['template_display_title'];
}
// Now we'll have to get the field-list for this template !
$sql = "SELECT ntraf_field_id, field_type, field_mainoption, display_caption
FROM " . NTRAF_FIELDS_TABLE . "
WHERE ntraf_template_id = $my_template_id
ORDER BY field_order";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, '[field-list] Error reading data for RequiredAdditionalFields');
} // end IF --> result from database was O.K.
if ( $tpl_fields = $db->sql_fetchrow($result) )
{
do
{
$ntraf_field_count++;
array_push($ntraf_field_id, $tpl_fields['ntraf_field_id']);
array_push($my_type, $tpl_fields['field_type']);
array_push($my_mainoption, $tpl_fields['field_mainoption']);
array_push($ntraf_display_caption, $tpl_fields['display_caption']);
// some answers might be empty because template might have had fields added ...
$ntraf_field_code[intval($ntraf_field_id)] = ' n/a ';
}
while ( $tpl_fields = $db->sql_fetchrow($result) );
} // done reading field-list for this template
$db->sql_freeresult($result);
// O.K. We're done with the field-list ... let's get the answers!
$sql = "SELECT *
FROM " . NTRAF_ANSWERS_TABLE . "
WHERE topic_id = $my_topic_id
ORDER BY ntraf_field_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, '[answer-list] Error reading answers for RequiredAdditionalFields of this topic');
} // end IF --> result from database was O.K.
if ( $my_answers = $db->sql_fetchrow($result) )
{
do
{
// Arrays of answers must be imploded while single answers don't !
$tmp_answer = '';
if ( intval($my_answers['answer_isarray']) == 1 )
{
$tmp_answer = implode(NTRAF_VERTICAL_CODE, unserialize($my_answers['ntraf_answer']));
}
else
{
$tmp_answer = $my_answers['ntraf_answer'];
}
$ntraf_field_code[$my_answers['ntraf_field_id']] = $tmp_answer;
}
while ( $my_answers = $db->sql_fetchrow($result) );
} // done reading answers for this topic
$db->sql_freeresult($result);
}// end of function
//
// reads the basic field-information for a specific template
//
function ntraf_gen_fieldlist($my_template_id)
{
global $db;
global $ntraf_field_count;
global $ntraf_field_name;
global $ntraf_field_id;
// set some vars to default
$ntraf_field_count = 0;
// First we'll have to get the field-list for this template !
$sql = "SELECT ntraf_field_id
FROM " . NTRAF_FIELDS_TABLE . "
WHERE ntraf_template_id = $my_template_id
ORDER BY field_order";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, '[GEN field-list] Error reading data for RequiredAdditionalFields');
} // end IF --> result from database was O.K.
if ( $tpl_fields = $db->sql_fetchrow($result) )
{
do
{
$ntraf_field_count++;
array_push($ntraf_field_id, $tpl_fields['ntraf_field_id']);
array_push($ntraf_field_name, 'RAF#' . $tpl_fields['ntraf_field_id']);
}
while ( $tpl_fields = $db->sql_fetchrow($result) );
} // done reading field-list for this template
$db->sql_freeresult($result);
}// end of function
//
// Here we'll store the information submitted with RAFs into the database!
//
function ntraf_submit_answers($my_topic_id, $my_post_id)
{
global $db;
global $ntraf_field_count;
global $ntraf_field_id, $ntraf_answer;
// local vars
$my_answer = '';
// let's go for it and iterate over the field-list array(s)
for ($i=0; $i < $ntraf_field_count; $i++)
{
// check if the answer is an array !
if ( is_array($ntraf_answer[$i]) )
{
$my_answer = serialize($ntraf_answer[$i]);
$answer_isarray = TRUE;
}
else
{
$my_answer = $ntraf_answer[$i];
$answer_isarray = FALSE;
}
// save the answers with the topic !
$sql = "INSERT INTO " . NTRAF_ANSWERS_TABLE . " (topic_id, post_id, ntraf_field_id, ntraf_answer,answer_isarray)
VALUES ('" . intval($my_topic_id) . "', '" . intval($my_post_id) . "', '" . intval($ntraf_field_id[$i]) ."','" . $my_answer . "', '" . intval($answer_isarray) ."')";
if ( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Could not insert RequiredAdditionalFields", "", __LINE__, __FILE__, $sql);
}
}// end of FOR-iteration ...
}// end of function
function ntraf_template_list($my_id, $my_rights, $show_authors)
{
global $db;
global $lang;
// first list-entry doesn't come from DB, because it's for configuring
// "standard"-forums, that don't require any additional fields!
if ($my_id == NTRAF_NOT_REQUIRED)
{
$s = ' selected="selected"';
}
$my_template_list = '<option value="' . NTRAF_NOT_REQUIRED .'"' . $s . '>' . $lang['Forum_ntraf_not_required'] . '</option>';
//$my_template_list .= '<option value="' . NTRAF_NOT_REQUIRED .'" >- - - - - - - - - - - - - - - - - - - - - - - -</option>';
// O.K. The rest of the list is derived from the DB ...
$sql = "SELECT t.ntraf_template_id, t.template_name, u.username
FROM ( " . NTRAF_TEMPLATES_TABLE ." t
LEFT JOIN " . USERS_TABLE . " u ON u.user_id = t.template_author_id )
ORDER BY template_name";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't get list of Categories/Forums", "", __LINE__, __FILE__, $sql);
}
// now let's build the list
while( $row = $db->sql_fetchrow($result) )
{
$tmp_author = ( $show_authors ) ? ' [' . $row['username'] . ']' : '';
$s = '';
if ($row['ntraf_template_id'] == $my_id)
{
$s = ' selected="selected"';
}
$my_template_list .= '<option value="' . $row['ntraf_template_id'] . '"' . $s . '>' . $row['template_name'] . $tmp_author .'</option>';
}
return($my_template_list);
}
?>