diff --git a/main/install/configuration.dist.php b/main/install/configuration.dist.php index 3e4a80427f..65441070c4 100755 --- a/main/install/configuration.dist.php +++ b/main/install/configuration.dist.php @@ -616,3 +616,11 @@ $_configuration['gradebook_badge_sidebar'] = [ // Hide base course announcements when entering a group. //$_configuration['hide_base_course_announcements_in_group'] = false; + +// Allow or block user subcriptions to a lp/lp category +/*$_configuration['lp_subscription_settings'] = [ + 'options' => [ + 'allow_add_users_to_lp' => true, + 'allow_add_users_to_lp_category' => true, + ] +];*/ diff --git a/main/lp/learnpath.class.php b/main/lp/learnpath.class.php index 88f1054844..79ea0e5bce 100755 --- a/main/lp/learnpath.class.php +++ b/main/lp/learnpath.class.php @@ -12097,5 +12097,25 @@ EOD; return array_reverse($return); } + + /** + * Reads and process "lp_subscription_settings" setting + * @return array + */ + public static function getSubscriptionSettings() + { + $subscriptionSettings = api_get_configuration_value('lp_subscription_settings'); + if (empty($subscriptionSettings)) { + // By default allow both settings + $subscriptionSettings = [ + 'allow_add_users_to_lp' => true, + 'allow_add_users_to_lp_category' => true, + ]; + } else { + $subscriptionSettings = $subscriptionSettings['options']; + } + + return $subscriptionSettings; + } } diff --git a/main/lp/lp_edit.php b/main/lp/lp_edit.php index 3e8de19555..f40ff654a0 100755 --- a/main/lp/lp_edit.php +++ b/main/lp/lp_edit.php @@ -195,7 +195,15 @@ if (api_is_platform_admin()) { $defaults['use_max_score'] = $_SESSION['oLP']->use_max_score; } -$form->addElement('checkbox', 'subscribe_users', null, get_lang('SubscribeUsersToLp')); +$subscriptionSettings = learnpath::getSubscriptionSettings(); +if ($subscriptionSettings['allow_add_users_to_lp']) { + $form->addElement( + 'checkbox', + 'subscribe_users', + null, + get_lang('SubscribeUsersToLp') + ); +} // accumulate_scorm_time $form->addElement( diff --git a/main/lp/lp_list.php b/main/lp/lp_list.php index 12f13e40bb..f01fbb5cc1 100755 --- a/main/lp/lp_list.php +++ b/main/lp/lp_list.php @@ -52,6 +52,8 @@ if (api_get_setting('search_enabled') === 'true') { } $current_session = api_get_session_id(); +$subscriptionSettings = learnpath::getSubscriptionSettings(); + /* Introduction section (editable by course admins) */ $introductionSection = Display::return_introduction_section( TOOL_LEARNPATH, @@ -668,15 +670,16 @@ foreach ($categories as $item) { ); // Subscribe users - $subscribeUsers = null; - if ($details['subscribe_users'] == 1) { + $subscribeUsers = ''; + if ($details['subscribe_users'] == 1 && + $subscriptionSettings['allow_add_users_to_lp'] + ) { $subscribeUsers = Display::url( Display::return_icon( 'user.png', get_lang('SubscribeUsersToLp') ), - api_get_path(WEB_CODE_PATH) - ."lp/lp_subscribe_users.php?lp_id=$id&".api_get_cidreq() + api_get_path(WEB_CODE_PATH)."lp/lp_subscribe_users.php?lp_id=$id&".api_get_cidreq() ); } @@ -877,6 +880,7 @@ foreach ($categories as $item) { } $template = new Template($nameTools); +$template->assign('subscription_settings', $subscriptionSettings); $template->assign('is_allowed_to_edit', $is_allowed_to_edit); $template->assign('is_invitee', api_is_invitee()); $template->assign('actions', $actions); diff --git a/main/lp/lp_subscribe_users.php b/main/lp/lp_subscribe_users.php index 00201839a6..28b60af6b3 100644 --- a/main/lp/lp_subscribe_users.php +++ b/main/lp/lp_subscribe_users.php @@ -23,6 +23,10 @@ if (empty($lpId)) { api_not_allowed(true); } +$subscriptionSettings = learnpath::getSubscriptionSettings(); +if ($subscriptionSettings['allow_add_users_to_lp'] == false) { + api_not_allowed(true); +} $oLP = new learnpath(api_get_course_id(), $lpId, api_get_user_id()); diff --git a/main/lp/lp_subscribe_users_to_category.php b/main/lp/lp_subscribe_users_to_category.php index 78f05f04e2..fd9a2642e2 100644 --- a/main/lp/lp_subscribe_users_to_category.php +++ b/main/lp/lp_subscribe_users_to_category.php @@ -20,6 +20,11 @@ if (empty($categoryId)) { api_not_allowed(true); } +$subscriptionSettings = learnpath::getSubscriptionSettings(); +if ($subscriptionSettings['allow_add_users_to_lp_category'] == false) { + api_not_allowed(true); +} + $courseId = api_get_course_int_id(); $courseCode = api_get_course_id(); diff --git a/main/template/default/learnpath/list.tpl b/main/template/default/learnpath/list.tpl index d17fcbcb8d..673bcf5587 100644 --- a/main/template/default/learnpath/list.tpl +++ b/main/template/default/learnpath/list.tpl @@ -18,12 +18,11 @@ {% if filtered_category and filtered_category != lp_data.category.id %} {% set show_category = false %} {% endif %} - + {% if show_category %} {% if configuration == 0 %} - + {% if categories|length > 1 and lp_data.category.id %} - {% if is_allowed_to_edit %}