X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=application%2Fcontrollers%2Fuser.php;h=43b26a3afe819a8f2c50bbab9bd196bc23d74f4b;hb=faf92fa039c2be353c94d0d0e8e488e56eaa5058;hp=793d7f438e28b74e13df82edb3c7ea955fdcae18;hpb=37fe2e29a60066614f4155c292e2a2bd99b71b49;p=living-lab-site.git
diff --git a/application/controllers/user.php b/application/controllers/user.php
index 793d7f4..43b26a3 100644
--- a/application/controllers/user.php
+++ b/application/controllers/user.php
@@ -10,6 +10,7 @@ class User extends CI_Controller {
private $import = FALSE;
private $activated_account = TRUE;
+ private $user_id = NULL;
public function __construct()
{
@@ -22,6 +23,11 @@ class User extends CI_Controller {
public function index()
{
}
+
+ public function test($user_id = 1)
+ {
+
+ }
/**
* Login a user and then redirect it to the last page which must be encoded
@@ -33,11 +39,10 @@ class User extends CI_Controller {
public function login($redirect = '')
{
$this->load->library('form_validation');
-
$this->form_validation->set_error_delimiters('',
'');
- if ($this->form_validation->run('signin') === FALSE)
+ if ($this->form_validation->run('login') === FALSE)
{
$params = array( 'title' =>
$this->lang->line('ui_nav_menu_login')
@@ -64,7 +69,8 @@ class User extends CI_Controller {
else
{
if (! $this->activated_account)
- header('Location: '. site_url('catalog/test'));
+ header('Location: '
+ . site_url("user/activate/{$this->user_id}"));
else if (! $this->import)
{
// Redirect to last page before login.
@@ -105,8 +111,32 @@ class User extends CI_Controller {
$this->form_validation->set_error_delimiters('',
'');
+ $error_upload = '';
+
+ if ($this->form_validation->run('register'))
+ {
+ $b_validation = TRUE;
+
+ if ($_FILES['picture']['tmp_name'])
+ {
+ // Upload library
+ $config_upload['upload_path'] = './data/user_pictures';
+ $config_upload['file_name'] =
+ str_replace('.', '-', $this->input->post('username')) .'-';
+ $config_upload['allowed_types'] = 'gif|jpg|png';
+ $config_upload['max_size'] = '10240';
+ $this->load->library('upload', $config_upload);
+
+ $b_validation = $this->upload->do_upload('picture');
+ $error_upload =
+ $this->upload->display_errors('',
+ '');
+ }
+ }
+ else
+ $b_validation = FALSE;
- if ($this->form_validation->run('register') === FALSE)
+ if (! $b_validation)
{
// Edit account data if logged in, otherwise register.
if ($user_id = $this->session->userdata('user_id'))
@@ -136,7 +166,8 @@ class User extends CI_Controller {
array('selected_menu' => $selected_menu));
$main_params['content'] = $this->load->view('user/register_view',
- array('userdata'=> $userdata, 'redirect'=> $redirect),
+ array('userdata'=> $userdata, 'redirect'=> $redirect,
+ 'error_upload'=> $error_upload),
TRUE);
$main_params['side'] = $this->load->view('side_default', NULL, TRUE);
$this->load->view('main', $main_params);
@@ -156,6 +187,26 @@ class User extends CI_Controller {
$data['ui_lang'] = $this->input->post('ui-lang');
$data['time_zone'] = $this->input->post('time-zone');
+ // Handle picture if one was uploaded.
+ if ($_FILES['picture']['tmp_name'])
+ {
+ $upload_data = $this->upload->data();
+ $this->load->library('image');
+ $this->image->load($upload_data['full_path']);
+ // Resize original to a maximum size.
+ if ($this->image->get_width() * $this->image->get_height()
+ > 640*480)
+ {
+ $this->image->save_thumbnail(
+ $upload_data['full_path'],
+ 640, 480, IMAGETYPE_AUTO);
+ }
+ // Create thumbnail.
+ $data['picture'] = $upload_data['file_name'];
+ $this->image->save_thumbnail($upload_data['file_path']
+ . $upload_data['file_name']. '-thumb.jpg', 120, 90);
+ }
+
// Update session user data.
$this->_update_session_userdata($data);
@@ -167,6 +218,9 @@ class User extends CI_Controller {
$data['password'] = $this->input->post('new-password');
$this->users_model->set_userdata($user_id, $data);
+
+ // Redirect to last page before login.
+ header('Location: '. site_url(urldecode_segments($redirect)));
}
// Registration
else
@@ -175,10 +229,13 @@ class User extends CI_Controller {
$data['password'] = $this->input->post('password');
$this->users_model->register($data);
+ $user_id = $this->users_model->get_userdata($data['username'],
+ "id");
+ $user_id = $user_id['id'];
+
+ // Redirect account activation page.
+ header('Location: '. site_url("user/activate/$user_id"));
}
-
- // Redirect to last page before login.
- header('Location: '. site_url(urldecode_segments($redirect)));
}
}
@@ -263,10 +320,160 @@ class User extends CI_Controller {
$this->load->view('html_end');
}
- public function activate($user_id, $activation_code)
+ public function activate($user_id, $method='', $activation_code='')
{
- $user_id = intval($user_id);
- echo ''. $this->users_model->activate_account($user_id, $activation_code);
+ $user_id = intval($user_id);
+ $res_form_validation = FALSE;
+
+ if ($method == 'code')
+ {
+ if (! $activation_code)
+ $res_form_validation = $this->form_validation->run('activate');
+ // Activation code is provided in URL.
+ else
+ {
+ if ($this->_valid_activation_code($activation_code)
+ && $this->users_model->activate_account($user_id,
+ $activation_code))
+ {
+ $this->session->set_flashdata('msg', sprintf(
+ $this->lang->line('user_msg_activated_account'),
+ site_url('user/login')));
+ header('Location: '. site_url('message/info'));
+ return;
+ }
+ else
+ {
+ $this->session->set_flashdata('msg',
+ $this->lang->line('user_msg_wrong_activation_code'));
+ header('Location: '. site_url('message/error'));
+ return;
+ }
+ }
+ }
+ else if ($method == 'resend')
+ {
+ $res_form_validation =
+ $this->form_validation->run('resend_activation');
+ }
+
+ $userdata = $this->users_model->get_userdata($user_id,
+ 'email, a.activation_code');
+ $email = $userdata['email'];
+ $activated_account = ($userdata['activation_code'] == NULL);
+
+ if ($activated_account)
+ {
+ $this->session->set_flashdata('msg', sprintf(
+ $this->lang->line('user_msg_activated_account'),
+ site_url('user/login')));
+ header('Location: '. site_url('message/info'));
+ return;
+ }
+
+ $this->load->library('form_validation');
+
+ $this->form_validation->set_error_delimiters('',
+ '');
+
+ if ($res_form_validation === FALSE)
+ {
+ $params = array(
+ 'title'=> $this->lang->line('user_title_activation')
+ .' – '
+ . $this->config->item('site_name'),
+ //'metas' => array('description'=>'')
+ );
+ $this->load->library('html_head_params', $params);
+
+ // **
+ // ** LOADING VIEWS
+ // **
+ $this->load->view('html_begin', $this->html_head_params);
+ $this->load->view('header', array());
+
+ // Show form
+ $main_params['content'] =
+ $this->load->view('user/activate_view',
+ array( 'user_id'=> $user_id,
+ 'email'=> $userdata['email']),
+ TRUE);
+
+ $main_params['side'] = $this->load->view('side_default', NULL, TRUE);
+ $this->load->view('main', $main_params);
+
+ $this->load->view('footer');
+ $this->load->view('html_end');
+ }
+ else
+ {
+ if ($method == 'code')
+ {
+ // Redirect to a message which tells the user that the
+ // activation was successful.
+ $this->session->set_flashdata('msg', sprintf(
+ $this->lang->line('user_msg_activated_account'),
+ site_url('user/login')));
+ header('Location: '. site_url('message/info'));
+ return;
+ }
+ else if ($method == 'resend')
+ {
+ // Redirect to resent message
+ $this->session->set_flashdata('msg', sprintf(
+ $this->lang->line('user_msg_activation_resent'),
+ $this->input->post('email')));
+ header('Location: '. site_url('message/info'));
+ return;
+ }
+ }
+ }
+
+ public function recover_password()
+ {
+ $this->load->library('form_validation');
+
+ $this->form_validation->set_error_delimiters('',
+ '');
+
+ if ($this->form_validation->run('recover_password') === FALSE)
+ {
+ $params = array( 'title' =>
+ $this->lang->line(
+ 'user_title_password_recovery')
+ .' – '
+ . $this->config->item('site_name'),
+ //'metas' => array('description'=>'')
+ );
+ $this->load->library('html_head_params', $params);
+
+ // **
+ // ** LOADING VIEWS
+ // **
+ $this->load->view('html_begin', $this->html_head_params);
+ $this->load->view('header', array('selected_menu' =>
+ 'recover_password'));
+
+ $main_params['content'] = $this->load->view(
+ 'user/recover_password_view', array(),
+ TRUE);
+
+ $main_params['side'] = $this->load->view('side_default', NULL, TRUE);
+ $this->load->view('main', $main_params);
+
+ $this->load->view('footer');
+ $this->load->view('html_end');
+ }
+ else
+ {
+ // Redirect to resent message
+ $this->session->set_flashdata('msg', sprintf(
+ $this->lang->line('user_msg_password_recovery_email_sent'),
+ $this->input->post('username'),
+ $this->input->post('email')));
+ header('Location: '. site_url('message/info'));
+ return;
+ }
}
public function _update_session_userdata($data)
@@ -298,6 +505,15 @@ class User extends CI_Controller {
return (preg_match('/[\d]{4}-[\d]{2}-[\d]{2}/', $date) === 1);
}
+ public function _postprocess_birth_date($date)
+ {
+ // If the user entered no birth date NULL needs to be inserted into DB.
+ if (! $date)
+ return NULL;
+
+ return $date;
+ }
+
public function _valid_old_password($old_password, $field_username)
{
if (! $old_password)
@@ -330,6 +546,11 @@ class User extends CI_Controller {
return TRUE;
}
+
+ public function _valid_activation_code($activation_code)
+ {
+ return (preg_match('/^[a-fA-F0-9]{16}$/', $activation_code) == 1);
+ }
public function _do_login($username, $field_password)
{
@@ -345,6 +566,7 @@ class User extends CI_Controller {
if ($user['activation_code'] !== NULL)
{
$this->activated_account = FALSE;
+ $this->user_id = $user['id'];
return TRUE;
}
@@ -358,6 +580,61 @@ class User extends CI_Controller {
$this->import = (isset($user['import']) ? $user['import'] : FALSE);
return TRUE;
}
+
+ public function _do_activate($activation_code)
+ {
+ $user_id = $this->input->post('user-id');
+ if ($user_id === FALSE)
+ return FALSE;
+ $user_id = intval($user_id);
+
+ return $this->users_model->activate_account($user_id,
+ $activation_code);
+ }
+
+ public function _do_resend_activation($email)
+ {
+ $user_id = $this->input->post('user-id');
+ if ($user_id === FALSE)
+ return FALSE;
+ $user_id = intval($user_id);
+
+ $this->users_model->set_userdata($user_id,
+ array('email'=> $email));
+
+ return $this->users_model->send_activation_email($user_id, $email);
+ }
+
+ public function _username_exists($username)
+ {
+ $userdata = $this->users_model->get_userdata($username);
+
+ if (! $userdata)
+ return FALSE;
+
+ return TRUE;
+ }
+
+ public function _internal_account($username)
+ {
+ $userdata = $this->users_model->get_userdata($username, 'auth_src');
+ if (! $userdata)
+ return FALSE;
+
+ if ($userdata['auth_src'] != 'internal')
+ return FALSE;
+
+ return TRUE;
+ }
+
+ public function _do_recover_password($username)
+ {
+ $email = $this->input->post('email');
+ if (! $email)
+ return FALSE;
+
+ return $this->users_model->recover_password($username, $email);
+ }
}
/* End of file user.php */