Skip to content

Commit f4d8c9a

Browse files
committed
User: Plugin: Justification: add option to enable access to plugin management of user's jutificatives to session admins - refs BT#21386
1 parent 54d32ef commit f4d8c9a

File tree

9 files changed

+44
-17
lines changed

9 files changed

+44
-17
lines changed

main/admin/index.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,15 @@
194194
return !in_array($item['url'], $urls);
195195
});
196196
}
197+
198+
$allowJustification = ((api_get_plugin_setting('justification', 'tool_enable') === 'true') && (api_get_plugin_setting('justification', 'access_for_session_admin') === 'true'));
199+
if ($allowJustification) {
200+
$items[] = [
201+
'class' => 'item-justification-list',
202+
'url' => api_get_path(WEB_PLUGIN_PATH).'justification/list.php',
203+
'label' => get_lang('Justification'),
204+
];
205+
}
197206
}
198207

199208
if (api_get_configuration_value('allow_session_admin_extra_access')) {

main/inc/ajax/user_manager.ajax.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
echo json_encode($dates);
9797
break;
9898
case 'get_user_like':
99-
if (api_is_platform_admin() || api_is_drh()) {
99+
if (api_is_platform_admin() || api_is_drh() || api_is_session_admin()) {
100100
$query = $_REQUEST['q'];
101101
$conditions = [
102102
'username' => $query,

main/inc/lib/usermanager.lib.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2438,6 +2438,10 @@ public static function getUserListLike(
24382438
}
24392439
}
24402440

2441+
if (api_is_session_admin() && (api_get_setting('prevent_session_admins_to_manage_all_users') === 'true')) {
2442+
$sql_query .= ' AND user.creator_id = '.api_get_user_id();
2443+
}
2444+
24412445
if (!empty($onlyThisUserList)) {
24422446
$onlyThisUserListToString = implode("','", $onlyThisUserList);
24432447
$sql_query .= " AND user.id IN ('$onlyThisUserListToString') ";

plugin/justification/Justification.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ class Justification extends Plugin
66
protected function __construct()
77
{
88
parent::__construct(
9-
'1.1',
10-
'Julio Montoya',
9+
'1.2',
10+
'Julio Montoya, Nicolas Ducoulombier',
1111
[
1212
'tool_enable' => 'boolean',
1313
'notification_to_creator_only' => 'boolean',
14+
'access_for_session_admin' => 'boolean',
1415
'default_course_id' => 'text',
1516
]
1617
);

plugin/justification/justification_by_user.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33

44
require_once __DIR__.'/../../main/inc/global.inc.php';
55

6-
api_protect_admin_script();
6+
$allowSessionAdmins = api_get_plugin_setting('justification', 'access_for_session_admin') === 'true';
7+
api_protect_admin_script($allowSessionAdmins);
78

89
$tool = 'justification';
910
$plugin = Justification::create();

plugin/justification/lang/english.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,5 @@
2323
$strings['SendNotificationToAllAdmins'] = "Send a notification to the administrator";
2424
$strings['notification_to_creator_only'] = "Send notification to user's creator only";
2525
$strings['notification_to_creator_only_help'] = "If activated then the notification will be sent only to the user who created the user who send the justifications and not to all admins";
26+
$strings['access_for_session_admin'] = "Enable session admins to manage users in plugin";
27+
$strings['access_for_session_admin_help'] = "If activated it enables session admins to access the plugin and the user's list and justification management.";

plugin/justification/lang/french.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,5 @@
2323
$strings['SendNotificationToAllAdmins'] = "Envoyer une notification à l'administrateur";
2424
$strings['notification_to_creator_only'] = "Envoyer la notification uniquement au créateur";
2525
$strings['notification_to_creator_only_help'] = "Si cette option est activée alors la notification est envoyée uniquement à l'utilisateur qui a créé l'utilisateur qui envoie les justificatifs et non à tous les admins de la plateforme";
26+
$strings['access_for_session_admin'] = "Permettre aux administrateurs de session de gérer les utilisateurs dans le plugin";
27+
$strings['access_for_session_admin_help'] = "Si activé alors les administrateurs de session peuvent accéder au plugin et à la liste des utilisateurs et la gestion de leurs justificatifs.";

plugin/justification/lang/spanish.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,5 @@
2323
$strings['SendNotificationToAllAdmins'] = "Enviar una notificación al administrador";
2424
$strings['notification_to_creator_only'] = "Enviar la notificación solo al creador del usuario";
2525
$strings['notification_to_creator_only_help'] = "Si esta opción esta activada entonces la notificación sera enviada solo al usuario que ha creado el usuario quien envia sus justificativo";
26+
$strings['access_for_session_admin'] = "Permitir a los administradores de sesión gestionar los usuarios en el plugin";
27+
$strings['access_for_session_admin_help'] = "Si activado entonces los administradores de sesión pueden acceder al plugin y a la lista de usuarios y gestionar sus justificativos.";

plugin/justification/list.php

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33

44
require_once __DIR__.'/../../main/inc/global.inc.php';
55

6-
api_protect_admin_script();
6+
$allowSessionAdmins = api_get_plugin_setting('justification', 'access_for_session_admin') === 'true';
7+
api_protect_admin_script($allowSessionAdmins);
78

89
$tool = 'justification';
910
$plugin = Justification::create();
@@ -31,25 +32,30 @@
3132
break;
3233
}
3334

34-
$actionLinks .= Display::toolbarButton(
35-
$plugin->get_lang('Add'),
36-
api_get_path(WEB_PLUGIN_PATH).'justification/add.php',
37-
'plus',
38-
'primary'
39-
);
35+
if (api_is_platform_admin()) {
36+
$actionLinks .= Display::toolbarButton(
37+
$plugin->get_lang('Add'),
38+
api_get_path(WEB_PLUGIN_PATH).'justification/add.php',
39+
'plus',
40+
'primary'
41+
);
42+
}
43+
4044
$actionLinks .= Display::toolbarButton(
4145
$plugin->get_lang('Users'),
4246
api_get_path(WEB_PLUGIN_PATH).'justification/justification_by_user.php',
4347
'user',
4448
'primary'
4549
);
4650

47-
$actionLinks .= Display::toolbarButton(
48-
$plugin->get_lang('SetNewCourse'),
49-
api_get_path(WEB_PLUGIN_PATH).'justification/set_course.php',
50-
'book',
51-
'primary'
52-
);
51+
if (api_is_platform_admin()) {
52+
$actionLinks .= Display::toolbarButton(
53+
$plugin->get_lang('SetNewCourse'),
54+
api_get_path(WEB_PLUGIN_PATH).'justification/set_course.php',
55+
'book',
56+
'primary'
57+
);
58+
}
5359

5460
$tpl->assign(
5561
'actions',

0 commit comments

Comments
 (0)