Fixing user add/edit/list with the current container.

1.10.x
Julio Montoya 11 years ago
parent ae18552e34
commit f592c2de74
  1. 63
      main/admin/user_edit.php
  2. 79
      main/admin/user_list.php
  3. 2
      main/auth/inscription.php
  4. 29
      main/inc/lib/api.lib.php
  5. 86
      main/inc/lib/usermanager.lib.php
  6. 61
      src/Chamilo/CoreBundle/Entity/ExtraFieldValues.php
  7. 6
      src/Chamilo/CoreBundle/Entity/UserFieldValues.php
  8. 1
      src/Chamilo/CoreBundle/Framework/Container.php
  9. 6
      src/Chamilo/CoreBundle/Migrations/Data/ORM/LoadAdminUserData.php
  10. 10
      src/Chamilo/CoreBundle/Migrations/Data/ORM/LoadGroupData.php
  11. 1
      src/Chamilo/CoreBundle/Migrations/Data/ORM/LoadSettingsData.php
  12. 2
      src/Chamilo/CoreBundle/Migrations/Data/ORM/LoadUserData.php
  13. 40
      src/Chamilo/UserBundle/Document/Group.php
  14. 40
      src/Chamilo/UserBundle/Document/User.php
  15. 34
      src/Chamilo/UserBundle/Entity/User.php
  16. 6
      src/Chamilo/UserBundle/Repository/UserRepository.php
  17. 14
      src/Chamilo/UserBundle/Resources/config/serializer/Document.Group.xml
  18. 14
      src/Chamilo/UserBundle/Resources/config/serializer/Document.User.xml
  19. 2
      src/Chamilo/UserBundle/Resources/config/validation/orm.xml

@ -3,11 +3,11 @@
/**
* @package chamilo.admin
*/
use Chamilo\CoreBundle\Framework\Container;
$user_id = isset($_GET['user_id']) ? intval($_GET['user_id']) : intval($_POST['user_id']);
api_protect_super_admin($user_id, null, true);
$is_platform_admin = api_is_platform_admin() ? 1 : 0;
$htmlHeadXtra[] = '<script>
@ -56,21 +56,13 @@ $tool_name = get_lang('ModifyUserInfo');
$interbreadcrumb[] = array('url' => 'index.php', "name" => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array('url' => "user_list.php", "name" => get_lang('UserList'));
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$table_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
$sql = "SELECT u.*, a.user_id AS is_admin FROM $table_user u LEFT JOIN $table_admin a ON a.user_id = u.user_id WHERE u.user_id = '".$user_id."'";
$res = Database::query($sql);
if (Database::num_rows($res) != 1) {
header('Location: user_list.php');
exit;
}
//$user = Container::getEntityManager()->getRepository('ChamiloUserBundle:User')->find($user_id);
$user_data = api_get_user_info($user_id, false, true);
$user_data = Database::fetch_array($res, 'ASSOC');
$user_data['platform_admin'] = is_null($user_data['is_admin']) ? 0 : 1;
$user_data['platform_admin'] = api_is_platform_admin_by_id($user_id);
$user_data['send_mail'] = 0;
$user_data['old_password'] = $user_data['password'];
//Convert the registration date of the user
//@todo remove the date_default_timezone_get() see UserManager::create_user function
$user_data['registration_date'] = api_get_local_time(
$user_data['registration_date'],
@ -82,12 +74,12 @@ $extra_data = UserManager :: get_extra_user_data($user_id, true);
$user_data = array_merge($user_data, $extra_data);
// Create the form
$form = new FormValidator('user_edit', 'post', '', '', array('style' => 'width: 60%; float: '.($text_dir == 'rtl' ? 'right;' : 'left;')));
$form = new FormValidator('user_edit', 'post', api_get_self().'?user_id='.$user_id);
$form->addElement('header', '', $tool_name);
$form->addElement('hidden', 'user_id', $user_id);
if (api_is_western_name_order()) {
// Firstname
// First name
$form->addElement('text', 'firstname', get_lang('FirstName'));
$form->applyFilter('firstname', 'html_filter');
$form->applyFilter('firstname', 'trim');
@ -237,7 +229,7 @@ $form->addElement('html', '</div>');
*/
//Language
if (api_is_platform_admin()) {
/*if (api_is_platform_admin()) {
$group = array();
$group[] =$form->createElement('radio', 'platform_admin', null, get_lang('Yes'), 1);
$group[] =$form->createElement('radio', 'platform_admin', null, get_lang('No'), 0);
@ -247,7 +239,7 @@ if (api_is_platform_admin()) {
$form->addElement('html', '<div id="id_platform_admin" style="display:'.$display.'">');
$form->addGroup($group, 'admin', get_lang('PlatformAdmin'), null, false);
$form->addElement('html', '</div>');
}
}*/
//Language
$form->addElement('select_language', 'language', get_lang('Language'));
@ -316,9 +308,8 @@ if ($expiration_date == '0000-00-00 00:00:00') {
$user_data['expiration_date']['i'] = substr($expiration_date, 14, 2);
}
$user = Database::getManager()->getRepository('ChamiloCoreBundle:User')->find($user_data['user_id']);
$roles = $user->getRoles();
$user = Database::getManager()->getRepository('ChamiloUserBundle:User')->find($user_data['user_id']);
/*$roles = $user->getGroups();
$role = array();
if (!empty($roles)) {
@ -326,7 +317,7 @@ if (!empty($roles)) {
$role = $role->getId();
}
$user_data['status'] = $role;
$user_data['status'] = $role;*/
$form->setDefaults($user_data);
$error_drh = false;
@ -343,7 +334,7 @@ if ($form->validate()) {
$picture = $picture_element->getValue();
$picture_uri = $user_data['picture_uri'];
if ($user['delete_picture']) {
if (isset($user['delete_picture']) && $user['delete_picture']) {
$picture_uri = UserManager::delete_user_picture($user_id);
} elseif (!empty($picture['name'])) {
$picture_uri = UserManager::update_user_picture(
@ -356,7 +347,7 @@ if ($form->validate()) {
$lastname = $user['lastname'];
$firstname = $user['firstname'];
$password = $user['password'];
$auth_source = $user['auth_source'];
$auth_source = null;
$official_code = $user['official_code'];
$email = $user['email'];
$phone = $user['phone'];
@ -364,16 +355,16 @@ if ($form->validate()) {
$status = intval($user['status']);
$send_mail = intval($user['send_mail']);
$reset_password = intval($user['reset_password']);
$hr_dept_id = intval($user['hr_dept_id']);
$hr_dept_id = isset($user['hr_dept_id']) ? intval($user['hr_dept_id']) : null;
$language = $user['language'];
if ($user['radio_expiration_date'] == '1') {
$expiration_date = Text::return_datetime_from_array($user['expiration_date']);
if (isset($user['radio_expiration_date']) && $user['radio_expiration_date'] == '1') {
$expiration_date = new \DateTime(Text::return_datetime_from_array($user['expiration_date']));
} else {
$expiration_date = null;
}
$active = intval($user['active']);
$active = isset($user['active']) ? intval($user['active']) : 0;
if (api_get_setting('login_is_email') == 'true') {
$username = $email;
@ -432,14 +423,6 @@ $image = $image_path['file'];
$image_file = ($image != '' ? $image_dir.$image : api_get_path(WEB_IMG_PATH).'unknown.jpg');
$image_size = api_getimagesize($image_file);
$img_attributes = 'src="'.$image_file.'?rand='.time().'" '
.'alt="'.api_get_person_name($user_data['firstname'], $user_data['lastname']).'" '
.'style="float:'.($text_dir == 'rtl' ? 'left' : 'right').'; padding:5px;" ';
if ($image_size['width'] > 300) { //limit display width to 300px
$img_attributes .= 'width="300" ';
}
// get the path,width and height from original picture
$big_image = $image_dir.'big_'.$image;
$big_image_size = api_getimagesize($big_image);
@ -447,18 +430,16 @@ $big_image_width = $big_image_size['width'];
$big_image_height = $big_image_size['height'];
$url_big_image = $big_image.'?rnd='.time();
$content = null;
/*$content = null;
if ($image == '') {
$content .= '<img '.$img_attributes.' />';
} else {
$content .= '<input type="image" '.$img_attributes.' onclick="javascript: return show_image(\''.$url_big_image.'\',\''.$big_image_width.'\',\''.$big_image_height.'\');"/>';
}
}*/
// Display form
$content .= $form->return_form();
$content = $form->return_form();
$app['title'] = $tool_name;
$tpl = $app['template'];
$tpl->assign('message', $message);
$tpl->assign('content', $content);
$tpl->display_one_col_template();
echo $message;
echo $content;

@ -297,12 +297,25 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
$sql .= " LIMIT $from,$number_of_items";
$res = Database::query($sql);
$users = array ();
$users = array();
$t = time();
$adminList = Container::getEntityManager()->getRepository('ChamiloUserBundle:Group')->getAdmins();
$adminListArray = array();
foreach ($adminList as $admin) {
$adminListArray[] = $admin->getId();
}
$statusName = api_get_status_langvars();
while ($user = Database::fetch_row($res)) {
$userInfo = api_get_user_info($user[0]);
$image_path = UserManager::get_user_picture_path_by_id($user[0], 'web', false, true);
$user_profile = UserManager::get_picture_user($user[0], $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
$userId = $user[0];
$userInfo = api_get_user_info($userId);
$userEntity = Container::getEntityManager()->getRepository('ChamiloUserBundle:User')->find($userId);
$image_path = UserManager::get_user_picture_path_by_id($userId, 'web', false, true);
$user_profile = UserManager::get_picture_user($userId, $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
if (!api_is_anonymous()) {
$photo = '<center><a href="'.$userInfo['profile_url'].'" title="'.get_lang('Info').'">
<img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.$userInfo['complete_name'].'" title="'.$userInfo['complete_name'].'" /></a></center>';
@ -317,9 +330,18 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
$user[7] = '-1';
}
}
$current_user_status_label = $user[7];
$user_is_anonymous = false;
if ($current_user_status_label == $statusName[ANONYMOUS]) {
$user_is_anonymous =true;
}
//$userEntity->getGroups()->containsKey()
// forget about the expiration date field
$users[] = array(
$user[0],
$userId,
$photo,
$user[1],
Display::url($user[2], $userInfo['profile_url']),
@ -329,8 +351,13 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
$user[6],
$user[7],
api_get_local_time($user[9]),
$user[0]);
$userId,
'is_admin' => in_array($userId, $adminListArray),
'is_anonymous' => $user_is_anonymous,
'groups' => $userEntity->getGroups()
);
}
return $users;
}
@ -351,21 +378,10 @@ function email_filter($email) {
* @return string Some HTML-code with modify-buttons
*/
function modify_filter($user_id, $url_params, $row) {
global $_admins_list, $delete_user_available;
$is_admin = false;
global $delete_user_available;
$userId = api_get_user_id();
if (is_array($_admins_list)) {
$is_admin = in_array($user_id,$_admins_list);
}
$statusname = api_get_status_langvars();
$user_is_anonymous = false;
$current_user_status_label = $row['7'];
if ($current_user_status_label == $statusname[ANONYMOUS]) {
$user_is_anonymous =true;
}
$is_admin = $row['is_admin'];
$user_is_anonymous = $row['is_anonymous'];
$result = '';
if (!$user_is_anonymous) {
$icon = Display::return_icon('course.png', get_lang('Courses'), array('onmouseout' => 'clear_course_list (\'div_'.$user_id.'\')'));
@ -431,11 +447,11 @@ function modify_filter($user_id, $url_params, $row) {
//$result .= Display::url('<i class="icon-key icon-large"></i>', 'roles');
if ($current_user_status_label != $statusname[STUDENT]) {
/*if ($current_user_status_label != $statusname[STUDENT]) {
$result .= Display::return_icon('statistics_na.gif', get_lang('Reporting')).'&nbsp;&nbsp;';
} else {
$result .= '<a href="../mySpace/myStudents.php?student='.$user_id.'">'.Display::return_icon('statistics.gif', get_lang('Reporting')).'</a>&nbsp;&nbsp;';
}
}*/
if (api_is_platform_admin(true)) {
@ -446,26 +462,26 @@ function modify_filter($user_id, $url_params, $row) {
}
}
if ($is_admin) {
$result .= Display::return_icon('admin_star.png', get_lang('IsAdministrator'),array('width'=> ICON_SIZE_SMALL, 'heigth'=> ICON_SIZE_SMALL));
} else {
$result .= Display::return_icon('admin_star_na.png', get_lang('IsNotAdministrator'));
}
// actions for assigning sessions, courses or users
if (api_is_session_admin()) {
/*if ($row[0] == api_get_user_id()) {
$result .= '<a href="dashboard_add_sessions_to_user.php?user='.$user_id.'">'.Display::return_icon('view_more_stats.gif', get_lang('AssignSessions')).'</a>&nbsp;&nbsp;';
}*/
}
//var_dump($row['groups']);
if (api_is_platform_admin()) {
if ($current_user_status_label == $statusname[DRH] || UserManager::is_admin($user_id)) {
if ($row['groups']->containsKey('drh') || $is_admin) {
$result .= '<a href="dashboard_add_users_to_user.php?user='.$user_id.'">'.Display::return_icon('user_subscribe_course.png', get_lang('AssignUsers'),'',ICON_SIZE_SMALL).'</a>';
$result .= '<a href="dashboard_add_courses_to_user.php?user='.$user_id.'">'.Display::return_icon('course_add.gif', get_lang('AssignCourses')).'</a>&nbsp;&nbsp;';
$result .= '<a href="dashboard_add_sessions_to_user.php?user='.$user_id.'">'.Display::return_icon('view_more_stats.gif', get_lang('AssignSessions')).'</a>&nbsp;&nbsp;';
} else if ($current_user_status_label == $statusname[SESSIONADMIN]) {
} else if ($row['groups']->containsKey('session_admin')) {
$result .= '<a href="dashboard_add_sessions_to_user.php?user='.$user_id.'">'.Display::return_icon('view_more_stats.gif', get_lang('AssignSessions')).'</a>&nbsp;&nbsp;';
}
}
@ -481,6 +497,7 @@ function modify_filter($user_id, $url_params, $row) {
}
}
}
return $result;
}
@ -652,15 +669,6 @@ if (isset ($_GET['keyword'])) {
// Create a sortable table with user-data
$parameters['sec_token'] = Security::get_token();
// get the list of all admins to mark them in the users list
$admin_table = Database::get_main_table(TABLE_MAIN_ADMIN);
$sql_admin = "SELECT user_id FROM $admin_table";
$res_admin = Database::query($sql_admin);
$_admins_list = array();
while ($row_admin = Database::fetch_row($res_admin)) {
$_admins_list[] = $row_admin[0];
}
// display advanced search form
$form = new FormValidator('advanced_search','get');
@ -736,7 +744,6 @@ $table->set_header(8, get_lang('Active'), true);
$table->set_header(9, get_lang('RegistrationDate'), true);
$table->set_header(10, get_lang('Action'), false);
$table->set_column_filter(6, 'email_filter');
$table->set_column_filter(7, 'status_filter');
$table->set_column_filter(8, 'active_filter');

@ -448,7 +448,7 @@ if ($form->validate()) {
}
// Symfony way to login as a user
$user = Database::getManager()->getRepository('ChamiloCoreBundle:User')->find($user_id);
$user = Database::getManager()->getRepository('ChamiloUserBundle:User')->find($user_id);
// Here, "secured" is the name of the firewall in your security.yml
$token = new UsernamePasswordToken(

@ -22,6 +22,7 @@ define('REQUIRED_PHP_VERSION', '5.3.3');
define('REQUIRED_MIN_MEMORY_LIMIT', '32');
define('REQUIRED_MIN_UPLOAD_MAX_FILESIZE', '10');
define('REQUIRED_MIN_POST_MAX_SIZE', '10');
define('IMAGE_PROCESSOR', 'gd');
// USER STATUS CONSTANTS
/** global status of a user: course manager */
@ -2302,23 +2303,39 @@ function api_is_teacher() {
*/
function api_is_platform_admin_by_id($user_id = null, $url = null) {
$user_id = intval($user_id);
if (!Container::getSecurity()->isGranted('IS_AUTHENTICATED_FULLY')) {
return false;
}
if (empty($user_id)) {
$user_id = api_get_user_id();
$user = Container::getSecurity()->getToken()->getUser();
} else {
$user = Container::getEntityManager()->getRepository('ChamiloUserBundle:User')->find($user_id);
}
$admin = Container::getEntityManager()->getRepository('ChamiloUserBundle:Group')->findOneBy(array('name' => 'admins'));
$is_admin = $user->getGroups()->contains($admin);
/*
$admin_table = Database::get_main_table(TABLE_MAIN_ADMIN);
$sql = "SELECT * FROM $admin_table WHERE user_id = $user_id";
$res = Database::query($sql);
$is_admin = Database::num_rows($res) === 1;
$is_admin = Database::num_rows($res) === 1;*/
if (!$is_admin or !isset($url)) {
return $is_admin;
}
$portal = Container::getEntityManager()->getRepository('ChamiloCoreBundle:AccessUrl')->find($url);
return $user->getPortals()->contains($portal);
/*
// We get here only if $url is set
$url = intval($url);
$url_user_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql = "SELCT * FROM $url_user_table WHERE access_url_id = $url AND user_id = $user_id";
$res = Database::query($sql);
$is_on_url = Database::num_rows($res) === 1;
return $is_on_url;
return $is_on_url;*/
}
/**
@ -5378,6 +5395,7 @@ function api_is_global_platform_admin($user_id = null) {
if (empty($user_id)) {
$user_id = api_get_user_id();
}
if (api_is_platform_admin_by_id($user_id)) {
$my_url_list = api_get_access_url_from_user($user_id);
// The admin is registered in the first "main" site with access_url_id = 1
@ -5395,8 +5413,8 @@ function api_global_admin_can_edit_admin($admin_id_to_check, $my_user_id = null,
$my_user_id = api_get_user_id();
}
$iam_a_global_admin = api_is_global_platform_admin($my_user_id);
$user_is_global_admin = api_is_global_platform_admin($admin_id_to_check);
$user_is_global_admin = api_is_global_platform_admin($admin_id_to_check);
$iam_a_global_admin = api_is_global_platform_admin($my_user_id);
if ($iam_a_global_admin) {
//global admin can edit everything
@ -5404,6 +5422,7 @@ function api_global_admin_can_edit_admin($admin_id_to_check, $my_user_id = null,
} else {
//If i'm a simple admin
$is_platform_admin = api_is_platform_admin_by_id($my_user_id);
//var_dump($is_platform_admin);
if ($allow_session_admin) {
$is_platform_admin = api_is_platform_admin_by_id($my_user_id) || (api_get_user_status($my_user_id) == SESSIONADMIN);

@ -1,14 +1,14 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Framework\Container;
/**
* This library provides functions for user management.
* Include/require it in your code to use its functionality.
* @package chamilo.library
* @author Julio Montoya <gugli100@gmail.com> Social network groups added 2009/12
*/
/**
* Class
* @package chamilo.include.user
* Class UserManager
* This library provides functions for user management.
* Include/require it in your code to use its functionality.
* @package chamilo.library
* @author Julio Montoya <gugli100@gmail.com> Social network groups added 2009/12
*/
class UserManager
{
@ -411,7 +411,7 @@ class UserManager
}
}
self::update_extra_field_value($userId, 'already_logged_in', 'false');
return $return;
return $userId;
}
/**
@ -751,20 +751,12 @@ class UserManager
if ($user_id != strval(intval($user_id))) return false;
if ($user_id === false) return false;
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
//Checking the user language
$languages = api_get_languages();
if (!in_array($language, $languages['folder'])) {
$language = api_get_setting('platformLanguage');
}
$sql = "UPDATE $table_user SET
lastname='".Database::escape_string($lastname)."',
firstname='".Database::escape_string($firstname)."',
username='".Database::escape_string($username)."',
language='".Database::escape_string($language)."',";
if (!is_null($password)) {
if ($encrypt_method == '') {
$password = api_get_encrypted_password($password);
@ -779,43 +771,43 @@ class UserManager
return api_set_failure('encrypt_method invalid');
}
}
$sql .= " password='".Database::escape_string($password)."',";
}
if (!is_null($auth_source)) {
$sql .= " auth_source='".Database::escape_string($auth_source)."',";
}
$sql .= "
email='".Database::escape_string($email)."',
status='".Database::escape_string($status)."',
official_code='".Database::escape_string($official_code)."',
phone='".Database::escape_string($phone)."',
picture_uri='".Database::escape_string($picture_uri)."',
expiration_date='".Database::escape_string($expiration_date)."',
active='".Database::escape_string($active)."',
hr_dept_id=".intval($hr_dept_id);
if (!is_null($creator_id)) {
$sql .= ", creator_id='".Database::escape_string($creator_id)."'";
}
$sql .= " WHERE user_id = '$user_id' ";
$return = Database::query($sql);
}
$em = Database::getManager();
/** @var Chamilo\UserBundle\Entity\User $user */
$user = $em->getRepository('ChamiloUserBundle:User')->find($user_id);
if (is_array($extra) && count($extra) > 0) {
$res = true;
foreach($extra as $fname => $fvalue) {
$res = $res && self::update_extra_field_value($user_id,$fname,$fvalue);
foreach ($extra as $name => $value) {
//$userField = $em->getRepository('ChamiloUserBundle:UserField')->findOneByName($name);
$res = $res && self::update_extra_field_value($user_id, $name, $value);
}
}
if ($user_info['active'] != $active) {
self::change_active_state($user_id, $active);
}
// Adding user
/** @var Chamilo\UserBundle\Entity\User $user */
$em = Database::getManager();
$user = $em->getRepository('ChamiloCoreBundle:User')->find($user_id);
$user->addRole(api_get_role_name_from_status($status));
$em->persist($user);
$em->flush();
$user->setLastname($lastname)
->setFirstname($firstname)
->setPassword($password)
->setUsername($username)
->setAuthSource($auth_source)
->setLanguage($language)
->setEmail($email)
->setOfficialCode($official_code)
->setPhone($phone)
->setPictureUri($picture_uri)
->setExpirationDate($expiration_date)
->setActive($active)
->setHrDeptId($hr_dept_id)
;
$group = $em->getRepository('ChamiloUserBundle:Group')->find($status);
$user->addGroup($group);
Container::getUserManager()->updateUser($user, true);
if (!empty($email) && $send_email) {
$recipient_name = api_get_person_name($firstname, $lastname, null, PERSON_NAME_EMAIL_ADDRESS);
@ -832,13 +824,13 @@ class UserManager
} else {
$emailbody=get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".get_lang('YouAreReg')." ". api_get_setting('siteName') ." ".get_lang('WithTheFollowingSettings')."\n\n".get_lang('Username')." : ". $username . (($reset_password > 0) ? "\n". get_lang('Pass')." : ".stripslashes($original_password) : "") . "\n\n" .get_lang('Address') ." ". api_get_setting('siteName') ." ". get_lang('Is') ." : ". api_get_path(WEB_PUBLIC_PATH) ."\n\n". get_lang('Problem'). "\n\n". get_lang('Formula').",\n\n".api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'))."\n". get_lang('Manager'). " ".api_get_setting('siteName')."\nT. ".api_get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".api_get_setting('emailAdministrator');
}
@api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
}
$user_info = api_get_user_info($user_id);
Event::addEvent(LOG_USER_UPDATED, LOG_USER_ID, $user_id, api_get_utc_datetime(), api_get_user_id());
Event::addEvent(LOG_USER_UPDATED, LOG_USER_OBJECT, $user_info, api_get_utc_datetime(), api_get_user_id());
return $return;
return $user_id;
}
/**

@ -35,7 +35,6 @@ class ExtraFieldValues
*/
private $tms;
/**
* @var integer
*
@ -51,6 +50,34 @@ class ExtraFieldValues
*/
private $comment;
/**
* @ORM\OneToOne(targetEntity="Chamilo\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
/**
* @param $user
* @return $this
*/
public function setUser($user)
{
$this->user = $user;
return $this;
}
/**
* @param $field
* @return $this
*/
public function setField($field)
{
$this->field = $field;
return $this;
}
/**
* Set comment
*
@ -74,7 +101,6 @@ class ExtraFieldValues
return $this->comment;
}
/**
* Get id
*
@ -85,29 +111,6 @@ class ExtraFieldValues
return $this->id;
}
/**
* Set questionId
*
* @param integer $questionId
* @return ExtraFieldValues
*/
public function setQuestionId($questionId)
{
$this->questionId = $questionId;
return $this;
}
/**
* Get questionId
*
* @return integer
*/
public function getQuestionId()
{
return $this->questionId;
}
/**
* Set fieldId
*
@ -131,8 +134,6 @@ class ExtraFieldValues
return $this->fieldId;
}
/**
* Set tms
*
@ -157,9 +158,9 @@ class ExtraFieldValues
}
/**
* Set questionId
* Set setUserId
*
* @param integer $questionId
* @param integer $id
* @return QuestionFieldValues
*/
public function setUserId($id)
@ -169,7 +170,7 @@ class ExtraFieldValues
}
/**
* Get questionId
* Get userId
*
* @return integer
*/

@ -30,6 +30,12 @@ class UserFieldValues extends ExtraFieldValues
*/
private $fieldValue;
/**
* @ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\UserField")
* @ORM\JoinColumn(name="field_id", referencedColumnName="id")
*/
protected $field;
/**
* Set fieldValue
*

@ -181,6 +181,7 @@ class Container
*/
public static function getUserManager()
{
//return self::$container->get('sonata.user.user_manager');
return self::$container->get('fos_user.user_manager');
}
}

@ -53,7 +53,6 @@ class LoadAdminUserData extends AbstractFixture implements
{
$manager = $this->getUserManager();
$groupManager = $this->getGroupManager();
$faker = $this->getFaker();
// Creating admin user.
@ -70,8 +69,9 @@ class LoadAdminUserData extends AbstractFixture implements
$admin->setSuperAdmin(true);
$admin->setLocked(false);
$adminGroup = $groupManager->findGroupByName('admins');
$admin->setGroups(array($adminGroup));
// Reference added in LoadGroupData.php
$group = $this->getReference('group_admin');
$admin->setGroups(array($group));
$manager->updateUser($admin);
}

@ -3,7 +3,6 @@
namespace Chamilo\CoreBundle\Migrations\Data\ORM;
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\Persistence\ObjectManager;
@ -55,20 +54,23 @@ class LoadGroupData extends AbstractFixture implements
$groupManager = $this->getGroupManager();
// Creating groups
$group = $groupManager->createGroup('admin');
$group = $groupManager->createGroup('admins');
$group->addRole('ROLE_ADMIN');
$manager->persist($group);
$groupManager->updateGroup($group);
$this->setReference('group_admin', $group);
$group = $groupManager->createGroup('students');
$group->addRole('ROLE_STUDENT');
$groupManager->updateGroup($group);
$this->setReference('group_student', $group);
$group = $groupManager->createGroup('teachers');
$group->addRole('ROLE_TEACHER');
$groupManager->updateGroup($group);
$this->setReference('group_teacher', $group);
$manager->flush();
}
/**

@ -60,6 +60,7 @@ class LoadSettingsData extends AbstractFixture implements
private function generateCode($manager, $entity, $variableName, $variables)
{
$data = $manager->getRepository('ChamiloCoreBundle:'.$entity)->findAll();
if (!empty($data)) {
$code = null;
/** @var SettingsCurrent $setting */

@ -71,7 +71,7 @@ class LoadUserData extends AbstractFixture implements
$manager->updateUser($user);
// Creating random student users.
foreach (range(2, 100) as $id) {
foreach (range(3, 100) as $id) {
$user = $manager->createUser();
$user->setUserId($id);
$user->setFirstname($faker->firstName);

@ -1,40 +0,0 @@
<?php
/**
* This file is part of the <name> project.
*
* (c) <yourname> <youremail>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Chamilo\UserBundle\Document;
use Sonata\UserBundle\Document\BaseGroup as BaseGroup;
/**
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends )
*
* References :
* working with object : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/working-with-objects.html
*
* @author <yourname> <youremail>
*/
class Group extends BaseGroup
{
/**
* @var integer $id
*/
protected $id;
/**
* Get id
*
* @return integer $id
*/
public function getId()
{
return $this->id;
}
}

@ -1,40 +0,0 @@
<?php
/**
* This file is part of the <name> project.
*
* (c) <yourname> <youremail>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Chamilo\UserBundle\Document;
use Sonata\UserBundle\Document\BaseUser as BaseUser;
/**
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends )
*
* References :
* working with object : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/working-with-objects.html
*
* @author <yourname> <youremail>
*/
class User extends BaseUser
{
/**
* @var integer $id
*/
protected $id;
/**
* Get id
*
* @return integer $id
*/
public function getId()
{
return $this->id;
}
}

@ -16,8 +16,9 @@ use FOS\MessageBundle\Model\ParticipantInterface;
use Avanzu\AdminThemeBundle\Model\UserInterface as ThemeUser;
/**
*
* @ORM\HasLifecycleCallbacks
* @ORM\Table(name="user")
* @UniqueEntity("username")
* @ORM\Entity(repositoryClass="Chamilo\UserBundle\Repository\UserRepository")
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="email",
@ -290,6 +291,11 @@ class User extends BaseUser implements ParticipantInterface, ThemeUser
**/
protected $sessionAsGeneralCoach;
/**
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\UserFieldValues", mappedBy="user")
**/
protected $extraFields;
/**
*
*/
@ -324,23 +330,31 @@ class User extends BaseUser implements ParticipantInterface, ThemeUser
}
/**
* Updates the id with the user_id
* @ORM\PostPersist()
*/
public function postPersist(LifecycleEventArgs $args)
{
//parent::postPersist();
// Updates the user_id field
$this->setUserId($this->getId());
$em = $args->getEntityManager();
$em->persist($this);
$em->flush();
$user = $args->getEntity();
$this->setUserId($user->getId());
/*$em = $args->getEntityManager();
$em->persist($user);
$em->flush();*/
}
/**
* @param int $userId
*/
public function setId($userId)
{
$this->id = $userId;
}
/**
* @param int $userId
*/
public function setUserId($userId)
{
if (!empty($userId)) {
@ -348,11 +362,17 @@ class User extends BaseUser implements ParticipantInterface, ThemeUser
}
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @return string
*/
public function getEncoderName()
{
return "legacy_encoder";
@ -1131,7 +1151,9 @@ class User extends BaseUser implements ParticipantInterface, ThemeUser
*/
public function setExpirationDate($expirationDate)
{
$this->expirationDate = $expirationDate;
if (!empty($expirationDate)) {
$this->expirationDate = $expirationDate;
}
return $this;
}

@ -15,6 +15,12 @@ use Chamilo\UserBundle\Entity\User as User;
*/
class UserRepository extends EntityRepository
{
public function getGroupsByUser($userId)
{
$user = $this->find($userId);
}
/**
* @param string $keyword
* @return mixed

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<serializer>
<!--
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends )
@author <yourname> <youremail>
-->
<class name="Chamilo\UserBundle\Document\Group" exclusion-policy="all" xml-root-name="_group">
<property xml-attribute-map="true" name="id" type="integer" expose="true" since-version="1.0" groups="sonata_api_read,sonata_api_write,sonata_search" />
</class>
</serializer>

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<serializer>
<!--
This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends )
@author <yourname> <youremail>
-->
<class name="Chamilo\UserBundle\Document\User" exclusion-policy="all" xml-root-name="_user">
<property xml-attribute-map="true" name="id" type="integer" expose="true" since-version="1.0" groups="sonata_api_read,sonata_api_write,sonata_search" />
</class>
</serializer>

@ -10,7 +10,7 @@
<option name="errorPath">username</option>
<option name="message">fos_user.username.already_used</option>
<option name="groups">
<value>ProfileCustom</value>
<value>Registration</value>
</option>
</constraint>
</class>

Loading…
Cancel
Save