X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=application%2Fcontrollers%2Fuser.php;h=793d7f438e28b74e13df82edb3c7ea955fdcae18;hb=37fe2e29a60066614f4155c292e2a2bd99b71b49;hp=b9feb1030fd4a591f19445ca151fbd18e5afec5e;hpb=6679566ca99a72ab9243e4eaef8e071f89283918;p=living-lab-site.git diff --git a/application/controllers/user.php b/application/controllers/user.php index b9feb10..793d7f4 100644 --- a/application/controllers/user.php +++ b/application/controllers/user.php @@ -9,6 +9,7 @@ class User extends CI_Controller { private $import = FALSE; + private $activated_account = TRUE; public function __construct() { @@ -62,7 +63,9 @@ class User extends CI_Controller { } else { - if (! $this->import) + if (! $this->activated_account) + header('Location: '. site_url('catalog/test')); + else if (! $this->import) { // Redirect to last page before login. header('Location: '. site_url(urldecode_segments($redirect))); @@ -88,6 +91,8 @@ class User extends CI_Controller { { $this->session->unset_userdata('user_id'); $this->session->unset_userdata('username'); + $this->session->unset_userdata('auth_src'); + $this->session->unset_userdata('time_zone'); header('Location: '. site_url(urldecode_segments($redirect))); } @@ -106,11 +111,13 @@ class User extends CI_Controller { // Edit account data if logged in, otherwise register. if ($user_id = $this->session->userdata('user_id')) { - $userdata = $this->users_model->get_userdata($user_id); + $userdata = $this->users_model->get_userdata(intval($user_id)); + $selected_menu = 'account'; } else { $userdata = FALSE; + $selected_menu = 'register'; } $params = array('title' => @@ -125,7 +132,8 @@ class User extends CI_Controller { // ** LOADING VIEWS // ** $this->load->view('html_begin', $this->html_head_params); - $this->load->view('header', array('selected_menu' => 'register')); + $this->load->view('header', + array('selected_menu' => $selected_menu)); $main_params['content'] = $this->load->view('user/register_view', array('userdata'=> $userdata, 'redirect'=> $redirect), @@ -148,6 +156,9 @@ class User extends CI_Controller { $data['ui_lang'] = $this->input->post('ui-lang'); $data['time_zone'] = $this->input->post('time-zone'); + // Update session user data. + $this->_update_session_userdata($data); + // Edit account data if ($user_id) { @@ -176,6 +187,94 @@ class User extends CI_Controller { $this->register($redirect); } + public function profile($username, $videos_offset = 0) + { + // TODO handle user not found + + $this->load->config('localization'); + $this->load->helper('date'); + $this->lang->load('date'); + + // ** + // ** LOADING MODEL + // ** + // Logged in user time zone + $time_zone = $this->session->userdata('time_zone'); + if (! $time_zone) + $time_zone = 'UTC'; + + // User data + $userdata = $this->users_model->get_userdata($username); + $userdata['roles'] = Users_model::roles_to_string($userdata['roles']); + $country_list = $this->config->item('country_list'); + $userdata['country_name'] = $country_list[ $userdata['country'] ]; + $userdata['last_login'] = date('Y-m-d H:i:s', + gmt_to_local( + strtotime($userdata['last_login']), + $time_zone, + TRUE)) . ($time_zone == 'UTC' ? ' (UTC)' : ''); + $userdata['time_zone'] = $this->lang->line($userdata['time_zone']); + + // User's videos + $this->load->model('videos_model'); + $vs_data['videos'] = $this->videos_model->get_videos_summary( + NULL, $username, intval($videos_offset), + $this->config->item('videos_per_page')); + + // Pagination + $this->load->library('pagination'); + $pg_config['base_url'] = site_url("user/profile/$username/"); + $pg_config['uri_segment'] = 4; + $pg_config['total_rows'] = $this->videos_model->get_videos_count( + NULL, $username); + $pg_config['per_page'] = $this->config->item('videos_per_page'); + $this->pagination->initialize($pg_config); + $vs_data['pagination'] = $this->pagination->create_links(); + $vs_data['title'] = NULL; + $vs_data['category_name'] = ''; // TODO videos_summary with AJAX + + $params = array( + 'title'=> $this->lang->line('user_appelation').' '.$username + .' – ' + . $this->config->item('site_name'), + 'css'=> array('catalog.css') + //'metas' => array('description'=>'') + ); + $this->load->library('html_head_params', $params); + + // Current user profile tab + $tab = (! $videos_offset ? 0 : 1); + + // ** + // ** LOADING VIEWS + // ** + $this->load->view('html_begin', $this->html_head_params); + $this->load->view('header', array()); + + $vs = $this->load->view('catalog/videos_summary_view', $vs_data, TRUE); + + $main_params['content'] = $this->load->view('user/profile_view', + array('userdata'=> $userdata, 'videos_summary'=> $vs, 'tab'=>$tab), + 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'); + } + + public function activate($user_id, $activation_code) + { + $user_id = intval($user_id); + echo ''. $this->users_model->activate_account($user_id, $activation_code); + } + + public function _update_session_userdata($data) + { + foreach ($data as $key=> $val) + $this->session->set_userdata($key, $val); + } + public function _valid_username($username) { return (preg_match('/^[a-z0-9\._]+$/', $username) === 1); @@ -242,13 +341,21 @@ class User extends CI_Controller { if ($user === FALSE) return FALSE; + // User has not activated the account. + if ($user['activation_code'] !== NULL) + { + $this->activated_account = FALSE; + return TRUE; + } + // Authentication successful: set session with user data. $this->session->set_userdata(array( 'user_id'=> $user['id'], 'username'=> $user['username'], - 'auth_src'=> $user['auth_src'] + 'auth_src'=> $user['auth_src'], + 'time_zone'=> $user['time_zone'] )); - $this->import = $user['import']; + $this->import = (isset($user['import']) ? $user['import'] : FALSE); return TRUE; } }