diff --git a/admin/settings/top.php b/admin/settings/top.php index 87178430ea1..992436beccf 100644 --- a/admin/settings/top.php +++ b/admin/settings/top.php @@ -20,6 +20,9 @@ $moodleservices = new admin_settingpage('moodleservices', new lang_string('moodl 'admin')); $ADMIN->add('root', $moodleservices); +$userfeedback = new admin_settingpage('userfeedback', new lang_string('feedbacksettings', 'admin')); +$ADMIN->add('root', $userfeedback); + if ($hassiteconfig) { $optionalsubsystems = new admin_settingpage('optionalsubsystems', new lang_string('advancedfeatures', 'admin')); $ADMIN->add('root', $optionalsubsystems); diff --git a/admin/settings/userfeedback.php b/admin/settings/userfeedback.php new file mode 100644 index 00000000000..b7f31281c90 --- /dev/null +++ b/admin/settings/userfeedback.php @@ -0,0 +1,49 @@ +. + +/** + * This file contains call to feedback settings + * + * @package core + * @copyright 2020 Shamim Rezaie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +if ($hassiteconfig) { + + $userfeedback->add(new admin_setting_configcheckbox('enableuserfeedback', + new lang_string('enableuserfeedback', 'admin'), + new lang_string('enableuserfeedback_desc', 'admin'), 1, 1, 0)); + + $options = [ + core_userfeedback::REMIND_AFTER_UPGRADE => new lang_string('userfeedbackafterupgrade', 'admin'), + core_userfeedback::REMIND_PERIODICALLY => new lang_string('userfeedbackperiodically', 'admin'), + core_userfeedback::REMIND_NEVER => new lang_string('never'), + ]; + $userfeedback->add(new admin_setting_configselect('userfeedback_nextreminder', + new lang_string('userfeedbacknextreminder', 'admin'), + new lang_string('userfeedbacknextreminder_desc', 'admin'), 1, $options)); + $userfeedback->hide_if('userfeedback_nextreminder', 'enableuserfeedback'); + + $userfeedback->add(new admin_setting_configtext('userfeedback_remindafter', + new lang_string('userfeedbackremindafter', 'admin'), + new lang_string('userfeedbackremindafter_desc', 'admin'), 90, PARAM_INT)); + $userfeedback->hide_if('userfeedback_remindafter', 'enableuserfeedback'); + $userfeedback->hide_if('userfeedback_remindafter', 'userfeedback_nextreminder', 'eq', 3); + +} diff --git a/lang/en/admin.php b/lang/en/admin.php index d47cd39a47f..66611103f0a 100644 --- a/lang/en/admin.php +++ b/lang/en/admin.php @@ -546,6 +546,8 @@ $string['enablerssfeeds'] = 'Enable RSS feeds'; $string['enablesearchareas'] = 'Enable search areas'; $string['enablestats'] = 'Enable statistics'; $string['enabletrusttext'] = 'Enable trusted content'; +$string['enableuserfeedback'] = 'Enable feedback about Moodle'; +$string['enableuserfeedback_desc'] = 'If enabled, a \'Give feedback\' link is displayed in a Dashboard alert and in the footer for users to give feedback about the Moodle LMS to Moodle HQ. The Dashboard alert also has a \'Remind me later\' option.'; $string['enablewebservices'] = 'Enable web services'; $string['enablewsdocumentation'] = 'Web services documentation'; $string['enrolinstancedefaults'] = 'Enrolment instance defaults'; @@ -578,6 +580,7 @@ $string['experimentalsettings'] = 'Experimental settings'; $string['extendedusernamechars'] = 'Allow extended characters in usernames'; $string['extramemorylimit'] = 'Extra PHP memory limit'; $string['fatalsessionautostart'] = '

Serious configuration error detected, please notify server administrator.

To operate properly, Moodle requires that administrator changes PHP settings.

session.auto_start must be set to off.

This setting is controlled by editing php.ini, Apache/IIS
configuration or .htaccess file on the server.

'; +$string['feedbacksettings'] = 'Feedback settings'; $string['filescleanupperiod'] = 'Clean up trash pool files'; $string['filescleanupperiod_help'] = 'How often trash pool files are deleted. These are files that are associated with a context that no longer exists, for example when a course is deleted. Please note: This setting can result in missing files in a course which is backed up, deleted and then restored if the setting \'Include files\' (backup_auto_files) in \'Automated backup settings\' is disabled.'; $string['fileconversioncleanuptask'] = 'Cleanup of temporary records for file conversions.'; @@ -1413,6 +1416,12 @@ $string['useexternalyui'] = 'Use online YUI libraries'; $string['user'] = 'User'; $string['userbulk'] = 'Bulk user actions'; $string['userbulkdownload'] = 'Export users as'; +$string['userfeedbackafterupgrade'] = 'After every major upgrade'; +$string['userfeedbacknextreminder'] = 'Next feedback reminder'; +$string['userfeedbacknextreminder_desc'] = 'When should we ask the user to give feedback again?'; +$string['userfeedbackperiodically'] = 'Periodically'; +$string['userfeedbackremindafter'] = 'Show reminder after'; +$string['userfeedbackremindafter_desc'] = 'Remind users again to give feedback after the given number of days.'; $string['userimagesdisabled'] = 'Profile user images are disabled'; $string['userlist'] = 'Browse list of users'; $string['userdefaultpreferences'] = 'User default preferences'; diff --git a/lib/classes/userfeedback.php b/lib/classes/userfeedback.php new file mode 100644 index 00000000000..ec2c9953506 --- /dev/null +++ b/lib/classes/userfeedback.php @@ -0,0 +1,48 @@ +. + +/** + * This file contains the core_userfeedback class + * + * @package core + * @copyright 2020 Shamim Rezaie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * This Class contains helper functions for user feedback functionality. + * + * @copyright 2020 Shamim Rezaie + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class core_userfeedback { + /** + * @var int Ask user to give feedback a few days after each major upgrade. + */ + public const REMIND_AFTER_UPGRADE = 1; + + /** + * @var int Ask user to give feedback periodically. + */ + public const REMIND_PERIODICALLY = 2; + + /** + * @var int Do not ask user to give feedback. + */ + public const REMIND_NEVER = 3; +}