Skip to content

Commit

Permalink
Feature #687 Add profile fields on registration
Browse files Browse the repository at this point in the history
  • Loading branch information
Starpaul20 committed Jun 7, 2014
1 parent 83e3bb9 commit 285716e
Show file tree
Hide file tree
Showing 10 changed files with 58 additions and 15 deletions.
22 changes: 18 additions & 4 deletions admin/modules/config/profile_fields.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
"length" => intval($mybb->input['length']),
"maxlength" => intval($mybb->input['maxlength']),
"required" => $db->escape_string($mybb->input['required']),
"registration" => $db->escape_string($mybb->input['registration']),
"editable" => $db->escape_string($mybb->input['editable']),
"hidden" => $db->escape_string($mybb->input['hidden']),
"postbit" => $db->escape_string($mybb->input['postbit']),
Expand Down Expand Up @@ -105,6 +106,7 @@
{
$mybb->input['fieldtype'] = 'textbox';
$mybb->input['required'] = 0;
$mybb->input['registration'] = 0;
$mybb->input['editable'] = 1;
$mybb->input['hidden'] = 0;
$mybb->input['postbit'] = 0;
Expand All @@ -127,6 +129,7 @@
$form_container->output_row($lang->selectable_options, $lang->selectable_options_desc, $form->generate_text_area('options', $mybb->input['options'], array('id' => 'options')), 'options', array(), array('id' => 'row_options'));
$form_container->output_row($lang->display_order." <em>*</em>", $lang->display_order_desc, $form->generate_text_box('disporder', $mybb->input['disporder'], array('id' => 'disporder')), 'disporder');
$form_container->output_row($lang->required." <em>*</em>", $lang->required_desc, $form->generate_yes_no_radio('required', $mybb->input['required']));
$form_container->output_row($lang->show_on_registration." <em>*</em>", $lang->show_on_registration_desc, $form->generate_yes_no_radio('registration', $mybb->input['registration']));
$editable_list = array(
"0" => $lang->no,
"1" => $lang->yes,
Expand Down Expand Up @@ -206,6 +209,7 @@
"length" => intval($mybb->input['length']),
"maxlength" => intval($mybb->input['maxlength']),
"required" => $db->escape_string($mybb->input['required']),
"registration" => $db->escape_string($mybb->input['registration']),
"editable" => $db->escape_string($mybb->input['editable']),
"hidden" => $db->escape_string($mybb->input['hidden']),
"postbit" => $db->escape_string($mybb->input['postbit']),
Expand Down Expand Up @@ -269,6 +273,7 @@
$form_container->output_row($lang->selectable_options, $lang->selectable_options_desc, $form->generate_text_area('options', $mybb->input['options'], array('id' => 'options')), 'options', array(), array('id' => 'row_options'));
$form_container->output_row($lang->display_order." <em>*</em>", $lang->display_order_desc, $form->generate_text_box('disporder', $mybb->input['disporder'], array('id' => 'disporder')), 'disporder');
$form_container->output_row($lang->required." <em>*</em>", $lang->required_desc, $form->generate_yes_no_radio('required', $mybb->input['required']));
$form_container->output_row($lang->show_on_registration." <em>*</em>", $lang->show_on_registration_desc, $form->generate_yes_no_radio('registration', $mybb->input['registration']));
$editable_list = array(
"0" => $lang->no,
"1" => $lang->yes,
Expand Down Expand Up @@ -363,8 +368,8 @@

$table = new Table;
$table->construct_header($lang->name);
$table->construct_header($lang->id, array("class" => "align_center"));
$table->construct_header($lang->required, array("class" => "align_center"));
$table->construct_header($lang->registration, array("class" => "align_center"));
$table->construct_header($lang->editable, array("class" => "align_center"));
$table->construct_header($lang->hidden, array("class" => "align_center"));
$table->construct_header($lang->postbit, array("class" => "align_center"));
Expand All @@ -382,13 +387,22 @@
$required = $lang->no;
}

if($field['registration'])
{
$registration = $lang->yes;
}
else
{
$registration = $lang->no;
}

if($field['editable'] == 1)
{
$editable = $lang->yes;
}
elseif($field['editable'] == 2)
{
$editable = $lang->registration;
$editable = $lang->registration_editable;
}
else
{
Expand All @@ -413,9 +427,9 @@
$postbit = $lang->no;
}

$table->construct_cell("<strong><a href=\"index.php?module=config-profile_fields&amp;action=edit&amp;fid={$field['fid']}\">".htmlspecialchars_uni($field['name'])."</a></strong><br /><small>".htmlspecialchars_uni($field['description'])."</small>", array('width' => '45%'));
$table->construct_cell($field['fid'], array("class" => "align_center", 'width' => '5%'));
$table->construct_cell("<strong><a href=\"index.php?module=config-profile_fields&amp;action=edit&amp;fid={$field['fid']}\">".htmlspecialchars_uni($field['name'])."</a></strong><br /><small>".htmlspecialchars_uni($field['description'])."</small>", array('width' => '35%'));
$table->construct_cell($required, array("class" => "align_center", 'width' => '10%'));
$table->construct_cell($registration, array("class" => "align_center", 'width' => '10%'));
$table->construct_cell($editable, array("class" => "align_center", 'width' => '10%'));
$table->construct_cell($hidden, array("class" => "align_center", 'width' => '10%'));
$table->construct_cell($postbit, array("class" => "align_center", 'width' => '10%'));
Expand Down
6 changes: 4 additions & 2 deletions inc/languages/english/admin/config_profile_fields.lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
$l['selectable_options_desc'] = "Please enter each option on a separate line. This only applies to the select boxes, check boxes, and radio buttons types.";
$l['required'] = "Required?";
$l['required_desc'] = "Is this field required to be filled in during registration or profile editing? Note that this does not apply if the field is hidden or the field is not editable.";
$l['show_on_registration'] = "Show on Registration?";
$l['show_on_registration_desc'] = "Should this field appear on the registration form? Note that this does not apply if the field is not editable. Fields that are required will always appear on registration.";
$l['editable_by_user'] = "Editable by user?";
$l['editable_by_user_desc'] = "Should this field be editable by the user? If not, administrators/moderators can still edit the field.";
$l['only_at_registration'] = "Only at Registration";
Expand All @@ -44,13 +46,13 @@
$l['min_posts_enabled_desc'] = "Should this field only be available to users with a certain post count? If so, set the minimum amount of posts required here.";
$l['save_profile_field'] = "Save Profile Field";
$l['name'] = "Name";
$l['id'] = "ID";
$l['registration'] = "Registration?";
$l['editable'] = "Editable?";
$l['hidden'] = "Hidden?";
$l['postbit'] = "Postbit?";
$l['registration_editable'] = "Registration";
$l['edit_field'] = "Edit Field";
$l['delete_field'] = "Delete Field";
$l['registration'] = "Registration";
$l['no_profile_fields'] = "There are no custom profile fields on your forum at this time.";

$l['error_missing_name'] = "You did not enter a title for this custom profile field";
Expand Down
1 change: 1 addition & 0 deletions inc/languages/english/member.lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
$l['website_url'] = "Your Website URL:";
$l['birthdate'] = "Birthdate:";
$l['additional_info'] = "Additional Information";
$l['required_info'] = "Required Information";
$l['i_agree'] = "I Agree";
$l['account_details'] = "Account Details";
$l['account_prefs'] = "Account Preferences:";
Expand Down
12 changes: 10 additions & 2 deletions install/resources/mybb_theme.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4628,6 +4628,7 @@ if(use_xmlhttprequest == "1")
</table>
</fieldset>
{$requiredfields}
{$customfields}
{$referrer}
{$regimage}
</td>
Expand Down Expand Up @@ -4770,6 +4771,13 @@ $().ready(function() {
{$footer}
</body>
</html>]]></template>
<template name="member_register_additionalfields" version="1800"><![CDATA[<br />
<fieldset class="trow2">
<legend><strong>{$lang->additional_info}</strong></legend>
<table cellspacing="0" cellpadding="{$theme['tablespace']}">
{$customfields}
</table>
</fieldset>]]></template>
<template name="member_register_agreement" version="123"><![CDATA[<html>
<head>
<title>{$mybb->settings['bbname']} - {$lang->agreement}</title>
Expand Down Expand Up @@ -5026,9 +5034,9 @@ if(use_xmlhttprequest == "1")
</tr>
</table>
</fieldset>]]></template>
<template name="member_register_requiredfields" version="1400"><![CDATA[<br />
<template name="member_register_requiredfields" version="1800"><![CDATA[<br />
<fieldset class="trow2">
<legend><strong>{$lang->additional_info}</strong></legend>
<legend><strong>{$lang->required_info}</strong></legend>
<table cellspacing="0" cellpadding="{$theme['tablespace']}">
{$requiredfields}
</table>
Expand Down
7 changes: 3 additions & 4 deletions install/resources/mysql_db_inserts.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@
$inserts[] = "INSERT INTO mybb_icons (iid, name, path) VALUES(19, 'Thumbs Up', 'images/icons/thumbsup.png');";
$inserts[] = "INSERT INTO mybb_icons (iid, name, path) VALUES(20, 'Video', 'images/icons/video.png');";

$inserts[] = "INSERT INTO mybb_profilefields (fid, name, description, disporder, type, length, maxlength, required, editable, hidden, postbit, postnum) VALUES (1, 'Location', 'Where in the world do you live?', 1, 'text', 0, 255, 0, 1, 0, 0, 0);";
$inserts[] = "INSERT INTO mybb_profilefields (fid, name, description, disporder, type, length, maxlength, required, editable, hidden, postbit, postnum) VALUES (2, 'Bio', 'Enter a few short details about yourself, your life story etc.', 2, 'textarea', 0, 0, 0, 1, 0, 0, 0);";
$inserts[] = "INSERT INTO mybb_profilefields (fid, name, description, disporder, type, length, maxlength, required, editable, hidden, postbit, postnum) VALUES (3, 'Sex', 'Please select your sex from the list below.', 0, 'select\nUndisclosed\nMale\nFemale\nOther', 0, 0, 0, 1, 0, 0, 0);";
$inserts[] = "INSERT INTO mybb_profilefields (fid, name, description, disporder, type, length, maxlength, required, registration, editable, hidden, postbit, postnum) VALUES (1, 'Location', 'Where in the world do you live?', 1, 'text', 0, 255, 0, 0, 1, 0, 0, 0);";
$inserts[] = "INSERT INTO mybb_profilefields (fid, name, description, disporder, type, length, maxlength, required, registration, editable, hidden, postbit, postnum) VALUES (2, 'Bio', 'Enter a few short details about yourself, your life story etc.', 2, 'textarea', 0, 0, 0, 0, 1, 0, 0, 0);";
$inserts[] = "INSERT INTO mybb_profilefields (fid, name, description, disporder, type, length, maxlength, required, registration, editable, hidden, postbit, postnum) VALUES (3, 'Sex', 'Please select your sex from the list below.', 3, 'select\nUndisclosed\nMale\nFemale\nOther', 0, 0, 0, 0, 1, 0, 0, 0);";

$inserts[] = "INSERT INTO mybb_smilies (sid, name, find, image, disporder, showclickable) VALUES(1, 'Smile', ':)', 'images/smilies/smile.png', 1, 1);";
$inserts[] = "INSERT INTO mybb_smilies (sid, name, find, image, disporder, showclickable) VALUES(2, 'Wink', ';)', 'images/smilies/wink.png', 2, 1);";
Expand All @@ -92,7 +92,6 @@
$inserts[] = "INSERT INTO mybb_smilies (sid, name, find, image, disporder, showclickable) VALUES(19, 'Sleepy', ':sleepy:', 'images/smilies/sleepy.png', 19, 1);";
$inserts[] = "INSERT INTO mybb_smilies (sid, name, find, image, disporder, showclickable) VALUES(20, 'Undecided', ':-/', 'images/smilies/undecided.png', 20, 1);";


$inserts[] = "INSERT INTO mybb_spiders (name,useragent) VALUES ('Google','Googlebot');";
$inserts[] = "INSERT INTO mybb_spiders (name,useragent) VALUES ('Bing','bingbot');";
$inserts[] = "INSERT INTO mybb_spiders (name,useragent) VALUES ('Alexa Internet','ia_archiver');";
Expand Down
1 change: 1 addition & 0 deletions install/resources/mysql_db_tables.php
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,7 @@
length smallint unsigned NOT NULL default '0',
maxlength smallint unsigned NOT NULL default '0',
required int(1) NOT NULL default '0',
registration int(1) NOT NULL default '0',
editable int(1) NOT NULL default '0',
hidden int(1) NOT NULL default '0',
postbit int(1) NOT NULL default '0',
Expand Down
1 change: 1 addition & 0 deletions install/resources/pgsql_db_tables.php
Original file line number Diff line number Diff line change
Expand Up @@ -529,6 +529,7 @@
length smallint NOT NULL default '0',
maxlength smallint NOT NULL default '0',
required int NOT NULL default '0',
registration int NOT NULL default '0',
editable int NOT NULL default '0',
hidden int NOT NULL default '0',
postbit int NOT NULL default '0',
Expand Down
1 change: 1 addition & 0 deletions install/resources/sqlite_db_tables.php
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,7 @@
length smallint NOT NULL default '0',
maxlength smallint NOT NULL default '0',
required int(1) NOT NULL default '0',
registration int(1) NOT NULL default '0',
editable int(1) NOT NULL default '0',
hidden int(1) NOT NULL default '0',
postbit int(1) NOT NULL default '0',
Expand Down
7 changes: 7 additions & 0 deletions install/resources/upgrade29.php
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,11 @@ function upgrade29_dbchanges3()
$db->drop_column("joinrequests", "invite");
}

if($db->field_exists('registration', 'profilefields'))
{
$db->drop_column("profilefields", "registration");
}

switch($db->type)
{
case "pgsql":
Expand All @@ -307,6 +312,7 @@ function upgrade29_dbchanges3()
$db->add_column("users", "showvideos", "int NOT NULL default '1' AFTER showimages");
$db->add_column("groupleaders", "caninvitemembers", "int NOT NULL default '0'");
$db->add_column("joinrequests", "invite", "int NOT NULL default '0'");
$db->add_column("profilefields", "registration", "int NOT NULL default '0' AFTER required");
break;
default:
$db->add_column("profilefields", "postbit", "int(1) NOT NULL default '0' AFTER hidden");
Expand All @@ -317,6 +323,7 @@ function upgrade29_dbchanges3()
$db->add_column("users", "showvideos", "int(1) NOT NULL default '1' AFTER showimages");
$db->add_column("groupleaders", "caninvitemembers", "int(1) NOT NULL default '0'");
$db->add_column("joinrequests", "invite", "int(1) NOT NULL default '0'");
$db->add_column("profilefields", "registration", "int(1) NOT NULL default '0' AFTER required");
break;
}

Expand Down
15 changes: 12 additions & 3 deletions member.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

$nosession['avatar'] = 1;
$templatelist = "member_register,member_register_hiddencaptcha,member_coppa_form,member_register_coppa,member_register_agreement_coppa,member_register_agreement,usercp_options_tppselect,usercp_options_pppselect,member_register_referrer,member_register_customfield,member_register_requiredfields,member_register_password,member_activate,member_resendactivation,member_lostpw";
$templatelist .= ",member_resetpassword,member_loggedin_notice,member_profile_away,member_emailuser,member_register_regimage,member_register_regimage_recaptcha,member_register_regimage_ayah,post_captcha_hidden,post_captcha,post_captcha_recaptcha,post_captcha_ayah,member_profile_addremove";
$templatelist .= ",member_resetpassword,member_loggedin_notice,member_profile_away,member_emailuser,member_register_regimage,member_register_regimage_recaptcha,member_register_regimage_ayah,post_captcha_hidden,post_captcha,post_captcha_recaptcha,post_captcha_ayah,member_profile_addremove,member_register_additionalfields";
$templatelist .= ",member_profile_email,member_profile_offline,member_profile_reputation,member_profile_warn,member_profile_warninglevel,member_profile_customfields_field,member_profile_customfields,member_profile_adminoptions,member_profile,member_login,member_profile_online,member_profile_modoptions,member_profile_signature,member_profile_groupimage,member_profile_referrals";
require_once "./global.php";

Expand Down Expand Up @@ -572,8 +572,8 @@
$mybb->input['profile_fields'] = $mybb->get_input('profile_fields', 2);
// Custom profile fields baby!
$altbg = "trow1";
$requiredfields = '';
$query = $db->simple_select("profilefields", "*", "required='1' AND editable !='0'", array('order_by' => 'disporder'));
$requiredfields = $customfields = '';
$query = $db->simple_select("profilefields", "*", "(required='1' OR registration='1') AND editable !='0'", array('order_by' => 'disporder'));
while($profilefield = $db->fetch_array($query))
{
$profilefield['type'] = htmlspecialchars_uni($profilefield['type']);
Expand Down Expand Up @@ -737,6 +737,11 @@

eval("\$requiredfields .= \"".$templates->get("member_register_customfield")."\";");
}
else
{
eval("\$customfields .= \"".$templates->get("member_register_customfield")."\";");
}

$code = '';
$select = '';
$val = '';
Expand All @@ -749,6 +754,10 @@
{
eval("\$requiredfields = \"".$templates->get("member_register_requiredfields")."\";");
}
if(!empty($customfields))
{
eval("\$customfields = \"".$templates->get("member_register_additionalfields")."\";");
}
if(!isset($fromreg))
{
$allownoticescheck = "checked=\"checked\"";
Expand Down

0 comments on commit 285716e

Please sign in to comment.