Codeigniter 3 & CI Bonfire 0.7
I am trying to send the UserID that is auto-generated in the bf_users Database Table when a user registers an account to an additional Registration Page in order to create a One-To-Many Relationship between the bf_user Database Table and the Course Registration Database Table (bf_courseregistrations) to be able to identify the relationship between the User Account and the Course Registrations.
The reason for this is allowing users to register an account, signing up for a course and then being able to see their user account and course registration information on the example.com/users/profile
User Controller (Bonfire/modules/users/controllers/Users.php)
public function register()
{
// Are users allowed to register?
if (! $this->settings_lib->item('auth.allow_register')) {
Template::set_message(lang('us_register_disabled'), 'error');
Template::redirect('/');
}
$register_url = $this->input->post('register_url') ?: REGISTER_URL;
$login_url = $this->input->post('login_url') ?: LOGIN_URL;
$this->load->model('roles/role_model');
$this->load->helper('date');
$this->load->config('address');
$this->load->helper('address');
$this->load->config('user_meta');
$meta_fields = config_item('user_meta_fields');
Template::set('meta_fields', $meta_fields);
if (isset($_POST['register'])) {
if ($userId = $this->saveUser('insert', 0, $meta_fields)) {
// User Activation
$activation = $this->user_model->set_activation($userId);
$message = $activation['message'];
$error = $activation['error'];
Template::set_message($message, $error ? 'error' : 'success');
log_activity($userId, lang('us_log_register'), 'users');
Template::redirect('/Course-Registration', $userId);
}
Template::set_message(lang('us_registration_fail'), 'error');
// Don't redirect because validation errors will be lost.
}
if ($this->siteSettings['auth.password_show_labels'] == 1) {
Assets::add_js(
$this->load->view('users_js', array('settings' => $this->siteSettings), true),
'inline'
);
}
// Generate password hint messages.
$this->user_model->password_hints();
Template::set_view('users/register');
Template::set('languages', unserialize($this->settings_lib->item('site.languages')));
Template::set('page_title', 'Register for EMDR Instruction Courses');
Template::render();
}
Users/views/user_fields.php
<?php /* /users/views/user_fields.php */
$currentMethod = $this->router->fetch_method();
$errorClass = empty($errorClass) ? ' error' : $errorClass;
$controlClass = empty($controlClass) ? 'span4' : $controlClass;
$myControlClass = 'col-lg-12 col-md-12 col-sm-12 col-xs-12';
$registerClass = $currentMethod == 'register' ? ' required' : '';
$editSettings = $currentMethod == 'edit';
?>
<div class="control-group<?php echo form_error('email') ? $errorClass : ''; ?>">
<label class="control-label required my-control-label" for="email"><?php echo lang('bf_email'); ?></label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" id="email" name="email" value="<?php echo set_value('email', isset($user) ? $user->email : ''); ?>" placeholder="Enter Your Email Address" />
<span class="help-inline"><?php echo form_error('email'); ?></span>
</div>
</div>
<?php if (settings_item('auth.login_type') !== 'email' || settings_item('auth.use_usernames')) : ?>
<div class="control-group<?php echo form_error('username') ? $errorClass : ''; ?>">
<label class="control-label required my-control-label" for="username"><?php echo lang('bf_username'); ?></label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" id="username" name="username" value="<?php echo set_value('username', isset($user) ? $user->username : ''); ?>" placeholder="Enter Your Account Username" />
<span class="help-inline"><?php echo form_error('username'); ?></span>
</div>
</div>
<?php endif; ?>
<div class="control-group<?php echo form_error('password') ? $errorClass : ''; ?>">
<label class="control-label<?php echo $registerClass; ?> my-control-label" for="password"><?php echo lang('bf_password'); ?></label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="password" id="password" name="password" value="" placeholder="Enter Your Password" />
<span class="help-inline"><?php echo form_error('password'); ?></span>
</div>
</div>
<p class="help-block"><?php echo isset($password_hints) ? $password_hints : ''; ?></p>
<div class="control-group<?php echo form_error('pass_confirm') ? $errorClass : ''; ?>">
<label class="control-label<?php echo $registerClass; ?> my-control-label" for="pass_confirm"><?php echo lang('bf_password_confirm'); ?></label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="password" id="pass_confirm" name="pass_confirm" value="" placeholder="Enter Your Password Again"/>
<span class="help-inline"><?php echo form_error('pass_confirm'); ?></span>
</div>
</div>
<div class="control-group<?php echo form_error('country') ? $errorClass : ''; ?>">
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="hidden" id="country" name="country" value="<?php echo set_value('country', isset($user) ? $user->country : 'Null'); ?>" placeholder="Enter Your Email Address" />
<span class="help-inline"><?php echo form_error('country'); ?></span>
</div>
</div>
<br>
<div class="row">
<div class="col-12">
By clicking register, you accept the <a href="<?php echo base_url('assets/documents/EMDRInstruction-Terms-And-Conditions.pdf'); ?>">Terms & Conditions Agreement</a> and <a href="<?php echo base_url('assets/documents/EMDRInstruction-Privacy-Policy.pdf'); ?>">Privacy Policy</a> at EMDR Instruction.
</div>
</div>
<br>
Course Registrations Controller
public function CourseRegistration()
{
// create the data object
$data = new stdClass();
$this->load->model('roles/role_model');
$this->load->helper('date');
$this->load->config('address');
$this->load->helper('address');
$this->load->config('user_meta');
$meta_fields = config_item('user_meta_fields');
Template::set('meta_fields', $meta_fields);
// set validation rules
$this->form_validation->set_rules('display_name', 'Display Name', 'trim|required');
$this->form_validation->set_rules('phone', 'Phone', 'trim');
$this->form_validation->set_rules('address', 'Address', 'trim');
$this->form_validation->set_rules('city', 'City', 'trim');
$this->form_validation->set_rules('state', 'State', 'trim');
$this->form_validation->set_rules('country', 'Country', 'trim');
$this->form_validation->set_rules('zipcode', 'Zipcode', 'trim');
$this->form_validation->set_rules('timezone', 'Timezone', 'trim');
$this->form_validation->set_rules('language', 'Language', 'trim');
$this->form_validation->set_rules('referral', 'Referral', 'trim');
$this->form_validation->set_rules('course', 'Course', 'trim');
$this->form_validation->set_rules('license_number', 'License Number', 'trim');
$this->form_validation->set_rules('license_type', 'License Type', 'trim');
$this->form_validation->set_rules('service_type', 'Service Type', 'trim');
//~ if (isset($_POST['register'])) {
//~ if ($userId = $this->saveUser('insert', 0, $meta_fields)) {
//~ // User Activation
//~ $activation = $this->user_model->set_activation($userId);
//~ $message = $activation['message'];
//~ $error = $activation['error'];
//~ Template::set_message($message, $error ? 'error' : 'success');
//~ log_activity($userId, lang('us_log_register'), 'users');
//~ Template::redirect('/Course-Registration');
//~ }
//~ Template::set_message(lang('us_registration_fail'), 'error');
//~ // Don't redirect because validation errors will be lost.
//~ }
if ($this->siteSettings['auth.password_show_labels'] == 1) {
Assets::add_js(
$this->load->view('users_js', array('settings' => $this->siteSettings), true),
'inline'
);
}
if ($this->form_validation->run() === false) {
$this->load->view('BackPages/CourseRegistration');
Template::render();
} else {
// set variables from the form
$name = $this->input->post('display_name');
$phone = $this->input->post('phone');
$address = $this->input->post('address');
$city = $this->input->post('city');
$state = $this->input->post('state');
$country = $this->input->post('country');
$zipcode = $this->input->post('zipcode');
$timezone = $this->input->post('timezone');
$language = $this->input->post('language');
$referral = $this->input->post('referral');
$course = $this->input->post('course');
$license_number = $this->input->post('license_number');
$license_type = $this->input->post('license_type');
$service_type = $this->input->post('service_type');
if ($this->backpages_model->user_information($name, $phone, $address, $city, $state, $country, $zipcode, $timezone, $language, $referral, $course, $license_number, $license_type, $service_type)) {
// user creation ok
redirect('/Course-Fees', $data);
} else {
// user creation failed, this should never happen
$data->error = 'There was a problem submitting your song. Please try again.';
// send error to the view
$this->load->view('BackPages/Course-Registration', $data);
Template::render();
}
}
}
Course Registration Model
public function user_information($uid, $name, $phone, $address, $city, $state, $country, $zipcode, $timezone, $language, $referral, $course, $license_number, $license_type, $service_type) {
$user = array(
'uid' => $uid,
'display_name' => $name,
'phone' => $phone,
'address' => $address,
'city' => $city,
'state' => $state,
'country' => $country,
'zipcode' => $zipcode,
'timezone' => $timezone,
'language' => $language,
'referral' => $referral,
'course' => $course,
'license_number' => $license_number,
'license_type' => $license_type,
'service_type' => $service_type,
);
return $this->db->insert('bf_courseregistration', $user);
}
Course Registration User Fields
<?php /* /users/views/user_fields.php */
$currentMethod = $this->router->fetch_method();
$errorClass = empty($errorClass) ? ' error' : $errorClass;
$controlClass = empty($controlClass) ? 'span4' : $controlClass;
$myControlClass = 'col-lg-12 col-md-12 col-sm-12 col-xs-12';
$registerClass = $currentMethod == 'register' ? ' required' : '';
$editSettings = $currentMethod == 'edit';
//$session_data = $this->session->userdata('sessiondata');
$user_id = $this->session->userdata('id');;
//$userId = $this->current->user();
?>
<?php echo 'This is your ID: ' . $user_id; ?>
<div class="control-group<?php echo form_error('uid') ? $errorClass : ''; ?> hidden">
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" uid="uid" name="uid" value="<?php echo set_value('uid', isset($user) ? $user->id : $user_id); ?>" />
<span class="help-inline"><?php echo form_error('uid'); ?></span>
</div>
</div>
<div class="control-group<?php echo form_error('display_name') ? $errorClass : ''; ?>">
<label class="control-label" for="display_name">First & Last Name</label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" id="display_name" name="display_name" value="<?php echo set_value('display_name', isset($user) ? $user->display_name : ''); ?>" placeholder="Enter Your First & Last Name" />
<span class="help-inline"><?php echo form_error('display_name'); ?></span>
</div>
</div>
<div class="control-group<?php echo form_error('phone') ? $errorClass : ''; ?>">
<label class="control-label" for="phone">Phone</label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" id="phone" name="phone" value="<?php echo set_value('phone', isset($user) ? $user->phone : ''); ?>" placeholder="Enter Your Phone Number" />
<span class="help-inline"><?php echo form_error('phone'); ?></span>
</div>
</div>
<div class="control-group<?php echo form_error('address') ? $errorClass : ''; ?>">
<label class="control-label" for="address">Address</label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" id="address" name="address" value="<?php echo set_value('address', isset($user) ? $user->address : ''); ?>" placeholder="Enter Your Address" />
<span class="help-inline"><?php echo form_error('address'); ?></span>
</div>
</div>
<div class="control-group<?php echo form_error('city') ? $errorClass : ''; ?>">
<label class="control-label" for="city">City</label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" id="city" name="city" value="<?php echo set_value('city', isset($user) ? $user->city : ''); ?>" placeholder="Enter Your City" />
<span class="help-inline"><?php echo form_error('city'); ?></span>
</div>
</div>
<!--
<div class="control-group<?php echo form_error('state') ? $errorClass : ''; ?>">
<label class="control-label" for="state">State</label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" id="state" name="state" value="<?php echo set_value('state', isset($user) ? $user->state : ''); ?>" placeholder="Enter Your First & Last Name" />
<span class="help-inline"><?php echo form_error('state'); ?></span>
</div>
</div>
<div class="control-group<?php echo form_error('country') ? $errorClass : ''; ?>">
<label class="control-label" for="country">Country</label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" id="country" name="country" value="<?php echo set_value('country', isset($user) ? $user->country : ''); ?>" placeholder="Enter Your First & Last Name" />
<span class="help-inline"><?php echo form_error('country'); ?></span>
</div>
</div>
<div class="control-group<?php echo form_error('zipcode') ? $errorClass : ''; ?>">
<label class="control-label" for="zipcode">Zipcode</label>
<div class="controls">
<input class="<?php echo $myControlClass; ?>" type="text" id="zipcode" name="zipcode" value="<?php echo set_value('zipcode', isset($user) ? $user->zipcode : ''); ?>" placeholder="Enter Your First & Last Name" />
<span class="help-inline"><?php echo form_error('zipcode'); ?></span>
</div>
</div>
-->
Figured this out myself.
In the controller,
Simply set Template::set('variable
, 'passingData');` in your Controller.
In your view, simply use Template::get('variable');
to retreive the passingData.