Allow subscribe users to student boss role - refs BT#9071

1.10.x
Angel Fernando Quiroz Campos 11 years ago
parent c7cdb262e2
commit ac7d4bcfd1
  1. 89
      main/admin/dashboard_add_users_to_user.php
  2. 36
      main/admin/user_list.php
  3. 3
      main/inc/lib/main_api.lib.php
  4. 119
      main/inc/lib/usermanager.lib.php

@ -40,6 +40,8 @@ $user_info = api_get_user_info($user_id);
$user_anonymous = api_get_anonymous_id();
$current_user_id = api_get_user_id();
$userStatus = api_get_user_status($user_id);
$firstLetterUser = isset($_POST['firstLetterUser']) ? $_POST['firstLetterUser'] : null;
// setting the name of the tool
@ -62,7 +64,7 @@ if (!api_is_platform_admin()) {
function search_users($needle,$type)
{
global $tbl_access_url_rel_user, $tbl_user, $user_anonymous, $current_user_id, $user_id;
global $tbl_access_url_rel_user, $tbl_user, $user_anonymous, $current_user_id, $user_id, $userStatus;
$xajax_response = new XajaxResponse();
$return = '';
@ -70,8 +72,17 @@ function search_users($needle,$type)
// xajax send utf8 datas... datas in db can be non-utf8 datas
$charset = api_get_system_encoding();
$needle = api_convert_encoding($needle, $charset, 'utf-8');
$assigned_users_to_hrm = array();
switch ($userStatus) {
case DRH:
$assigned_users_to_hrm = UserManager::get_users_followed_by_drh($user_id);
break;
case STUDENT_BOSS:
$assigned_users_to_hrm = UserManager::getUsersFollowedByStudentBoss($user_id);
break;
}
$assigned_users_to_hrm = UserManager::get_users_followed_by_drh($user_id);
$assigned_users_id = array_keys($assigned_users_to_hrm);
$without_assigned_users = '';
@ -92,7 +103,7 @@ function search_users($needle,$type)
LEFT JOIN $tbl_access_url_rel_user au ON (au.user_id = user.user_id)
WHERE
".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND
status NOT IN(".DRH.", ".SESSIONADMIN.") AND
status NOT IN(".DRH.", ".SESSIONADMIN.", " . STUDENT_BOSS . ") AND
user.user_id NOT IN ($user_anonymous, $current_user_id, $user_id)
$without_assigned_users AND
access_url_id = ".api_get_current_access_url_id()."
@ -104,7 +115,7 @@ function search_users($needle,$type)
FROM $tbl_user user
WHERE
".(api_sort_by_first_name() ? 'firstname' : 'lastname')." LIKE '$needle%' AND
status NOT IN(".DRH.", ".SESSIONADMIN.") AND
status NOT IN(".DRH.", ".SESSIONADMIN.", " . STUDENT_BOSS . ") AND
user_id NOT IN ($user_anonymous, $current_user_id, $user_id)
$without_assigned_users
$order_clause
@ -127,10 +138,19 @@ function search_users($needle,$type)
username LIKE "'.$needle.'%" OR
firstname LIKE "'.$needle.'%" OR
lastname LIKE "'.$needle.'%"
) AND
user.status<>6 AND user.status<>'.DRH.' '.
$order_clause.
' LIMIT 11';
) AND ';
switch ($userStatus) {
case DRH:
$sql .= " user.status <> 6 AND user.status <> " . DRH;
break;
case STUDENT_BOSS:
$sql .= " user.status <> 6 AND user.status <> " . STUDENT_BOSS;
break;
}
$sql .= " $order_clause LIMIT 11";
$rs = Database::query($sql);
$i = 0;
while ($user = Database :: fetch_array($rs)) {
@ -267,7 +287,18 @@ if (!empty($filters) && !empty($filterData)) {
$msg = '';
if (isset($_POST['formSent']) && intval($_POST['formSent']) == 1) {
$user_list = $_POST['UsersList'];
$affected_rows = UserManager::suscribe_users_to_hr_manager($user_id, $user_list);
switch ($userStatus) {
case DRH:
$affected_rows = UserManager::suscribe_users_to_hr_manager($user_id, $user_list);
break;
case STUDENT_BOSS;
$affected_rows = UserManager::subscribeUsersToBoss($user_id, $user_list);
break;
default:
$affected_rows = 0;
}
if ($affected_rows) {
$msg = get_lang('AssignedUsersHaveBeenUpdatedSuccessfully');
}
@ -278,11 +309,27 @@ Display::display_header($tool_name);
// actions
echo '<div class="actions">';
echo '<span style="float: right;margin:0px;padding:0px;">
<a href="dashboard_add_courses_to_user.php?user='.$user_id.'">'.
Display::return_icon('course_add.gif', get_lang('AssignCourses'), array('style'=>'vertical-align:middle')).' '.get_lang('AssignCourses').'</a>
<a href="dashboard_add_sessions_to_user.php?user='.$user_id.'">'.
Display::return_icon('view_more_stats.gif', get_lang('AssignSessions'), array('style'=>'vertical-align:middle')).' '.get_lang('AssignSessions').'</a></span>';
if ($userStatus != STUDENT_BOSS) {
$actions = Display::url(
Display::return_icon('course_add.gif', get_lang('AssignCourses'),
array(
'style' => 'vertical-align:middle'
)) . get_lang('AssignCourses'), "dashboard_add_courses_to_user.php?user=$user_id"
);
$actions .= Display::url(
Display::return_icon('view_more_stats.gif', get_lang('AssignSessions'),
array(
'style' => 'vertical-align:middle'
)) . get_lang('AssignSessions'), "dashboard_add_sessions_to_user.php?user=$user_id"
);
echo Display::span($actions, array(
'style' => 'float: right; margin: 0; paddingg: 0;'
));
}
echo Display::url(get_lang('AdvancedSearch'), '#', array('class' => 'advanced_options', 'id' => 'advanced_search'));
echo '</div>';
@ -294,7 +341,15 @@ echo Display::page_header(
sprintf(get_lang('AssignUsersToX'), api_get_person_name($user_info['firstname'], $user_info['lastname']))
);
$assigned_users_to_hrm = UserManager::get_users_followed_by_drh($user_id);
switch ($userStatus) {
case DRH:
$assigned_users_to_hrm = UserManager::get_users_followed_by_drh($user_id);
break;
case STUDENT_BOSS;
$assigned_users_to_hrm = UserManager::getUsersFollowedByStudentBoss($user_id);
break;
}
$assigned_users_id = array_keys($assigned_users_to_hrm);
$without_assigned_users = '';
if (count($assigned_users_id) > 0) {
@ -329,7 +384,7 @@ if (api_is_multiple_url_enabled()) {
WHERE
$without_assigned_users
user.user_id NOT IN ($user_anonymous, $current_user_id, $user_id) AND
status NOT IN(".DRH.", ".SESSIONADMIN.") $search_user AND
status NOT IN(".DRH.", ".SESSIONADMIN.", " . STUDENT_BOSS . ") $search_user AND
access_url_id = ".api_get_current_access_url_id()."
$sqlConditions
ORDER BY firstname";
@ -339,7 +394,7 @@ if (api_is_multiple_url_enabled()) {
WHERE
$without_assigned_users
user_id NOT IN ($user_anonymous, $current_user_id, $user_id) AND
status NOT IN(".DRH.", ".SESSIONADMIN.")
status NOT IN(".DRH.", ".SESSIONADMIN.", " . STUDENT_BOSS . ")
$search_user
$sqlConditions
ORDER BY firstname ";

@ -557,13 +557,35 @@ function modify_filter($user_id, $url_params, $row) {
$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[DRH] || UserManager::is_admin($user_id)) {
$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]) {
$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;';
}
if ($current_user_status_label == $statusname[SESSIONADMIN]) {
$result .= Display::url(
Display::return_icon('view_more_stats.gif', get_lang('AssignSessions')),
"dashboard_add_sessions_to_user.php?user={$user_id}"
);
} else {
if (
$current_user_status_label == $statusname[DRH] ||
UserManager::is_admin($user_id) ||
$current_user_status_label == $statusname[STUDENT_BOSS]
) {
$result .= Display::url(
Display::return_icon('user_subscribe_course.png', get_lang('AssignUsers'), '', ICON_SIZE_SMALL),
"dashboard_add_users_to_user.php?user={$user_id}"
);
}
if ($current_user_status_label == $statusname[DRH] || UserManager::is_admin($user_id)) {
$result .= Display::url(
Display::return_icon('course_add.gif', get_lang('AssignCourses')),
"dashboard_add_courses_to_user.php?user={$user_id}"
);
$result .= Display::url(
Display::return_icon('view_more_stats.gif', get_lang('AssignSessions')),
"dashboard_add_sessions_to_user.php?user={$user_id}"
);
}
}
}
if (api_is_platform_admin()) {

@ -4648,7 +4648,8 @@ function api_get_status_langvars() {
SESSIONADMIN => get_lang('SessionsAdmin', ''),
DRH => get_lang('Drh', ''),
STUDENT => get_lang('Student', ''),
ANONYMOUS => get_lang('Anonymous', '')
ANONYMOUS => get_lang('Anonymous', ''),
STUDENT_BOSS => get_lang('RoleStudentBoss', '')
);
}

@ -4130,6 +4130,10 @@ class UserManager
)"
;
break;
case STUDENT_BOSS :
$drhConditions = " AND friend_user_id = $userId AND "
. "relation_type = " . USER_RELATION_TYPE_BOSS;
break;
}
$join = null;
@ -4197,51 +4201,64 @@ class UserManager
* */
public static function suscribe_users_to_hr_manager($hr_dept_id, $users_id)
{
// Database Table Definitions
$tbl_user_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_USER);
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
return self::subscribeUsersToUser($hr_dept_id, $users_id, USER_RELATION_TYPE_RRHH);
}
$hr_dept_id = intval($hr_dept_id);
$affected_rows = 0;
/**
* Add subscribed users to a user by relation type
* @param int $userId The user id
* @param array $subscribedUsersId The id of suscribed users
* @param action $relationType The relation type
*/
public static function subscribeUsersToUser($userId, $subscribedUsersId, $relationType)
{
$userRelUserTable = Database::get_main_table(TABLE_MAIN_USER_REL_USER);
$userRelAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$userId = intval($userId);
$affectedRows = 0;
if (api_get_multiple_access_url()) {
//Deleting assigned users to hrm_id
$sql = "SELECT s.user_id FROM $tbl_user_rel_user s
INNER JOIN $tbl_user_rel_access_url a
ON (a.user_id = s.user_id)
WHERE
friend_user_id = $hr_dept_id AND
relation_type = '".USER_RELATION_TYPE_RRHH."' AND
access_url_id = ".api_get_current_access_url_id()."";
$sql = "SELECT s.user_id FROM $userRelUserTable s "
. "INNER JOIN $userRelAccessUrlTable a ON (a.user_id = s.user_id) "
. "WHERE friend_user_id = $userId "
. "AND relation_type = $relationType "
. "AND access_url_id = " . api_get_current_access_url_id() . "";
} else {
$sql = "SELECT user_id FROM $tbl_user_rel_user
WHERE
friend_user_id = $hr_dept_id AND
relation_type = '".USER_RELATION_TYPE_RRHH."' ";
$sql = "SELECT user_id FROM $userRelUserTable "
. "WHERE friend_user_id = $userId "
. "AND relation_type = $relationType";
}
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result)) {
$sql = "DELETE FROM $tbl_user_rel_user
WHERE
user_id = '{$row['user_id']}' AND
friend_user_id = $hr_dept_id AND
relation_type = '".USER_RELATION_TYPE_RRHH."' ";
$sql = "DELETE FROM $userRelUserTable "
. "WHERE user_id = {$row['user_id']} "
. "AND friend_user_id = $userId "
. "AND relation_type = $relationType";
Database::query($sql);
}
}
// Inserting new user list
if (is_array($users_id)) {
foreach ($users_id as $user_id) {
$user_id = intval($user_id);
$sql = "INSERT IGNORE INTO $tbl_user_rel_user(user_id, friend_user_id, relation_type)
VALUES ('$user_id', $hr_dept_id, '".USER_RELATION_TYPE_RRHH."')";
if (is_array($subscribedUsersId)) {
foreach ($subscribedUsersId as $subscribedUserId) {
$subscribedUserId = intval($subscribedUserId);
$sql = "INSERT IGNORE INTO $userRelUserTable(user_id, friend_user_id, relation_type) "
. "VALUES ($subscribedUserId, $userId, $relationType)";
Database::query($sql);
$affected_rows = Database::affected_rows();
$affectedRows = Database::affected_rows();
}
}
return $affected_rows;
return $affectedRows;
}
/**
@ -4857,4 +4874,50 @@ EOF;
Database::query($sql);
}
}
/**
* Subscribe users to student boss
* @param int $bossId The boss id
* @param array $usersId The users array
* @return int Affected rows
*/
public static function subscribeUsersToBoss($bossId, $usersId)
{
return self::subscribeUsersToUser($bossId, $usersId, USER_RELATION_TYPE_BOSS);
}
/**
* Get users followed by student boss
* @param int $userId
* @param int $userStatus (STUDENT, COURSEMANAGER, etc)
* @param bool $getOnlyUserId
* @param bool $getSql
* @param bool $getCount
* @param int $from
* @param int $numberItems
* @param int $column
* @param string $direction
* @param int $active
* @param string $lastConnectionDate
* @return array users
*/
public static function getUsersFollowedByStudentBoss(
$userId,
$userStatus = 0,
$getOnlyUserId = false,
$getSql = false,
$getCount = false,
$from = null,
$numberItems = null,
$column = null,
$direction = null,
$active = null,
$lastConnectionDate = null
){
return self::getUsersFollowedByUser(
$userId, $userStatus, $getOnlyUserId, $getSql, $getCount, $from, $numberItems, $column, $direction,
$active, $lastConnectionDate, STUDENT_BOSS
);
}
}

Loading…
Cancel
Save