This fixes an exploit where you could alter the 'Content-Type' of the
request and bypass the case-sensitive check 'strstr'. For example,
setting it to 'application/x-www-FORM-urlencoded'. However, changing
this to use 'stristr' was also not an acceptable approach as you
could also bypass it by setting the value to 'multipart/form-data'.
Turn on the forceclean config setting when a user is logged in as a
different user. This is a precautionary measure, which forces all
user submitted content to be cleaned of JavaScript before rendering
it to the logged in as user.
Significant string changes:
* importgroups_help,core_group - Correcting optional fieldnames
(removing picture, hidepicture and adding groupidnumber, groupingname
and enablemessaging)
* penaltyforeachincorrecttry_help,core_question - additional paragraph
about scoring logic
* resultdownloadready,tool_dataprivacy - wording corrected (no need to
go to a download page)
* auth_dbfielduser,auth_db - varchar data type requirement
When grades are deleted, it needs to know the context so any files
in the gradebook can be deleted. This means module delete_instance
functions must delete the grade_item before they delete the module record.
When the course module cache is out of date during a gradebook re-calculcation it throws
throws exceptions because the module cannot be found. This prevents access to gradebook or
any type of grading functions until the cache is rebuilt.
When the cache still has no module record we log an error and return the course context.
This patch combines the following changes:
* Basically we should produce a combined PDF from all the files that it was possible to convert.
* If any one submission input file fails conversion, it should just be omitted in the result.
* When not all files are available in the online pdf, display a warning to graders
that some files must be downloaded.
* Better support for information messages from the conversion process.
* Remove the z-index values from the expand / collapse panels. They cause errors when mixed with dialogues.
* The edit pdf menus are all broken on small screen sizes. They consume 100% of the page with for no reason.
* The heights of the buttons to hide/show panels are arbitrarily big. There is not need to set them specifically.
Amended on integration to get rid if incorrect 'destroyed' block of
code. See the issue for more information.
There was a bug here that had not exposed until MDL-60820 introduced the
call $mform->setDefault() at the bottom of the definition_after_data()
method. That call triggers the 'updateValue' event on all form elements.
For input text elements, this effectively sets their value to the
default one, which was empty in this case due to the way how the value
had been set.
The solution here is to set the value via the same way like the normal
set_data() method does it.
The attached Behat test reproduces the problem and makes sure the patch
works.
Capability check in a course was using global competency capabilities
moodle/competency:competencyview and moodle/competency:competencymanage
instead of the course equivalents. Users outside the course context
could not manage course competencies.
Unfortunately, we can't simply use session_id() to regenerate the
session id in unit tests. Starting from PHP 7.2, it would trigger
"session_id(): Cannot change session id when headers already sent",
refer to MDL-60978 and PHP bug #75628 for more details.
As a workaround, we use a static property allowing us to inject the
value that we then use as a session identifier. This is reasonably
enough to make sure that the identifier is used as a part of the key
prefix.
The current logic in the cache_session::check_tracked_user() is not
right. We must always set the current session id. A typical use case is
when the cache instance is instantiated for a not logged in user. We
can't let the sessionid property null in that case as it forms an
important part of the parsed key.
Similarly, even if we have the same user currently loaded, we must still
set the sessionid to make sure the data will be associated with the
current PHP session. Same user (including visitors or guest users) can
access the site from different browsers and each must end up with its
own key prefix.
Do not immediately show progress bars since most operations work
in under a second. This will use the default timeout (5 seconds)
before showing progress bars.
The cache invalidation check was previously occuring every time either
the `set` or `get` function was called on the cache. However, the cache
invalidation check is based on the jsrev which is static for the
lifetime of the page.
This change moved the invalidation to happen during the setup of the AMD
module such that it only happens one time per storage type (Local +
Session).
We only use the jsrevPrefix to determine if the cache should be
invalidated, but the prefix that we were using is based on the new
jsrev.
For example, the jsrevPrefix will be:
hash(wwwroot + '/ + config.jsrev) + '/jsrev'
Where config.jsrev is the _current_ (new) jsrev.
As a result when searching for the jsrev used to store the data which is
currently in the storage cache, no key is returned, and we instead set
an 'initial' value and the cache is not cleared
This patch changes the jsrevPrefix to be:
hash(wwwroot) + '/jsrev'
Since the wwwroot does not change, the key remains static for the
current site. As a result, when the jsrev is bumped via a Moodle cache
purge, we are able to correctly fetch the old jsrev from the cache,
determine that the jsrev has changed, and purge the cache.
When a user user selects the unread messages link from the forum
discussion page, the link does not include '#unread' in the url.
This patch appends '#unread' to the url by changing the appropriate
value in the reference link assigned to $out within the function
forum_cm_info_view() of the 'lib.php'file.
A similar change is on the forum index.
For accessibility we don't want to read an icon with a label immediately next to the label,
but in this case it's clearer for the icon to have no alt text / title for both
screen readers and non-screen readers. Worse is not reading important information just
because it's displayed as an icon.
In the same page it is normal (expected) to have multiple links to different annotated pdfs.
In the grading page, we also abort pending ajax progress when the current user is changed.
Grades that have been hidden will appear in the outline/complete
report - even if the user is a student.
The modules that have been fixed are:
* mod_assign
* mod_data
* mod_forum
* mod_glossary
* mod_lesson
* mod_scorm
* mod_workshop
The argument to render the pix_icon template from the help_icon template should not
be escaped, they will be escaped by the pix_icon template when it generates the HTML.
Remove the custom override that disables no-overflow in the grading table. This page is better to use
when the grading table is scrollable and the controls around it are not scrollable.
Grading pages have their own special javascript to force "fixed" headers
when scrolling a large table. They rely on the entire page being scrolled,
not just the main region.
Tables displayed inside a flex box container need position:relative to
calculate their size or they cause incorrect scrollable regions to appear in the page.
The explicit usage of the constants FILTER_FLAG_SCHEME_REQUIRED and
FILTER_FLAG_HOST_REQUIRED is now deprecated; both are implied for
FILTER_VALIDATE_URL anyway.
Multiple issues fixed:
* Fixed order of the statements to avoid access to undefined variables.
* Fixed population of the SQL query parameter to make sure they match
the placeholder in the query.
* Fixed missing table aliases in the second query to make sure the query
actually works as expected.
This includes a minor restructure of the autocomplete JS to make use of
promises and improve tracking of pending JS.
In particular it improves the way in which throttled text input is
handled to ensure that the behat does not continue until:
- typing is fully complete; and
- all possible ajax requests have been sent; and
- all possible ajax requests complete; and
- the suggestions are updated.
A number of conditions existed where behat would move on to the next
step too early in a race condition effect between Behat and Autocomplete.
The useridfrom would normally be a foreign key to the users table. But
it can also contain some extra negative values with special semantics
(-10 or -20 for no-reply or support user). Therefore we can't make it a
foreign key and the index must be created explicitly.
Purge cache just for the current user to avoid redirection when 2
simultaneous users try to sign up at the same time and some policy
has to be agreed.
The 'createduser' invalidation event has been removed also because
is not used any more.
Thanks John Azinheira for spotting it!
Before this change the query examined at every course_module record in
the context table.
With this change we use the course_modules table to more efficiently
find all the activities in the course, which means that many less
records in the context table need to be examined.
When no value is set for an option element and a user selects it, a
POST request is made, which is incorrect. Usually that option is a
placeholder value, e.g., "Choose..." - the form expecting the end user
to choose an actual value.
Conversation name and subname should support filters, so the data should
be passed through format_string, and advertised in the external params
as PARAM_TEXT.
This checks the courses' current visibility and the users permissions.
If they have the permission to view the course when it is hidden they'll get messages.
We already have checks for the users enrolled & subscription status.
If the user has the following capabilty: mod/forum:canposttomygroups then show them
the more technical of the strings. Otherwise we use something a bit easier for them to ask their
tutor or teacher about.
Previously only edited messages were cleaned, so longer strings could
be stored in the database, which would never be displayed.
This update takes into account trusted text before cleaning (as editing does).
Previously this used the length of the message stored in the database,
before scripts etc are cleaned to display the content. That resulted
in cases where the count would seem much larger than the message size.
* updated the bootstrapbase template for the messaging conversation menu
info option to match the menu in
"/core_message/message_drawer_view_conversation_header_content_type_private.mustache"
* Looping the environment results and skipping some items mean that
if a test gets skipped, the rest of the environment results won't be
tested. It's better to use a data provider for this in order to
individually test each environment result.
MDL-46783 and MDL-63818 were originally coded on the
assumption that MDL-46783 would get integrated first. However it wasn't.
Therefore, it was not easy to add unit tests for MDL-63818
at the time, but it is now, so here they are.
The capabilities changed ('contextlevel' => CONTEXT_COURSE changed to
'contextlevel' => CONTEXT_MODULE) are:
* moodle/site:accessallgroups
* moodle/site:viewfullnames
* moodle/site:trustcontent
* moodle/site:viewuseridentity
This list came from reviewing the _get_extra_capabilities functions in
all core activities. They were all somewhat inconsistent, but I think it
makes sense that these capabilities are consistently overridable in all
activities. E.g. moodle/site:accessallgroups affects conditional
availability even if there is no other user of groups, and
moodle/site:viewuseridentity and moodle/site:viewfullnames affect the
logs report, if nothing else.
As a result of this, several _get_extra_capabilities functions are no
longer needed, and all the rest have been simplified.
* External authentication mechanisms (e.g. via oauth2, etc.) don't store
password in the user table, so we shouldn't be requiring password in
such case when creating users via the core_user_create_users WS
function.
Tours originally written by Elizabeth Dalton, Mangled a little by Andrew
Nicols and Sander Bangma, and language tweaks by Helen Foster.
AMOS BEGIN
CPY [pluginname,block_recentlyaccessedcourses],[tour3_title_recentcourses,tool_usertours]
CPY [pluginname,block_myoverview],[tour3_title_overview,tool_usertours]
CPY [groupmessages,core_message],[tour4_title_groupconvo,tool_usertours]
CPY [favourites,moodle,core_message],[tour4_title_starred,tool_usertours]
AMOS END
Co-authored-by: Andrew Nicols <andrew@nicols.co.uk>
Co-authored-by: Sander Bangma <sander@moodle.com>
Co-authored-by: Helen Foster <helen@moodle.org>
Passing the last message (which can virtually contain any character) as
a parameter for the {{#str}} mustache helper can break the JSON parsing
which eventually leads to the breakage of the messaging UI.
So for simplicity, revert the addition of the 'conversationlastmessage'
language string and render the sender and the last message as separate
elements.
* make the summaryview heading semantically correct for boost where titles
are h5 and headings within the blocks should have h6
* style the heading to use h5
* add clean theme .h5 class for dashboard blocks
* all dashboard card templates moved to /course/templates/
* added aria labels for course short name
* removed ":" from other course aria strings to improve screenreader output
This will neew a follow-up issue.
This patch is just preventing downloading the HTML popup code when a file is not found.
Ideally, we should be able to serve the original file using the system OAuth.
When we need to show a login link, we don't want the normal page layout because we are in an iframe
already. Use the embedded layout to reduce the clutter of the page.
Those individual conversations created with one's self (via admin user
bulk actions) are now supported in get_conversations(). These had two
records with the same userid in the message_conversation_members table.
The following adjustments have been made to accomodate these:
- Member count adjusted to read 1, not 2 for 'self' conversations.
- Member information for the current user now returned for 'self'
conversations.
- The method now tracks 'self' conversations via $selfconversations.
There is an automatic data privacy request created to get rid of all the
personal data upon the user deletion. With the actual user record
absent, the data privacy requests page throws an error. Let's do here
same as we do in `delete_incomplete_users_task` and let us not delete
the actual user record.
Individual conversations with a soft-deleted user (including messages)
are now displayed in the conversation listing. This brings the behaviour
of individual conversations in line with group conversations, in that
the active user can still view messages.
The oauth2 standard does not require access tokens to have an
expiration date. This assumes a default validity period of 7 days unless
an explicit expiration date is communicated by the server.
Fix an error with users with the moodle/site:viewfullnames capability
in a course context (like teachers), to display properly the full
names in pages like the participants one.
From 3.6 users can have also group conversations, so it's needed to review
the messages_get_messages function to make sure only returns the
individual messages between 2 users.
Unread conversations should be given priority over read. If one or more
sections have unread conversations, prioritise favourites over group and
group over individual. The same applies if all conversations are read.
The converation favourites were previously set in the system context
which is not right, as they should be stored:
- In the conversation context when defined.
- In the user context, when contextid is null (that means is an
individual conversation).
Significant string changes:
* courseoverviewfiles, courseoverviewfiles_help, courseoverviewfilesext
in core, configcourseoverviewfilesext, configcourseoverviewfileslimit
in core_admin, areacourseoverviewfiles in core_repository - renaming
of 'Course summary files' to 'Course image'
Changed the settings page in the message drawer to display all message
notification processors (e.g. email, mobile, jabber) for the user to
configure based on which processors are enabled on the site.
We were already caching these preferences when a user object is provided
to get_user_preferences, or when $USER is provided.
This changee swaps get_user_preferences to use the global USER object
when the USER->id matches the userid supplied to the function.
If A is related to B, then we should be able to view this relationship
from both badge A and badge B. The following badge methods were updated:
- get_related_badges()
- has_related()
- delete_related_badge()
* providers for paging preferences
* Moved the user pref persistence to the factory
* Added client defined namespace in config
* Define custom client events in the client instead of passing to the
factory
The CAS login process relies on the standard authenticate_user_login()
call to set up the user. So we need to inject the login token to pass
the validation.
The logintoken is supposed to arrive as a part of the login form ($frm)
together with the username and password. So it should be handled the
same way - including the opportunity for the auth plugins to provide the
form data via the loginpage_hook().
This also implies that only logintoken coming as a part of the POST
request are taken into account, which is a good thing and another thin
layer in this security mechanism.
While working on the issue, I found these inline comments outdated and
confusing. The auth plugin types can implement a loginpage_hook()
method, the purpose of which is to inject the $user and/or $frm into
this login/index.php script. The new comments should make it more clear.
Note the second comment mentioned a prelogin_hook() which was an old
name of what is now called loginpage_hook(). It had nothing to do with
the existing pre_loginpage_hook() and was only confusing.
$string['invalidanalysables']='Invalid site elements';
$string['invalidanalysablesinfo']='This pages lists this site analysable elements that can not be used by this prediction model. The listed elements can not be used neither to train the prediction model nor the prediction model can get predictions for them.';
$string['invalidanalysablesinfo']='This page lists analysable elements that can\'t be used by this prediction model. The listed elements can\'t be used either to train the prediction model nor can the prediction model obtain predictions for them.';
$string['invalidanalysablestable']='Invalid site analysable elements table';
$string['invalidprediction']='Invalid to get predictions';
$string['invalidtraining']='Invalid to train the model';
$string['automaticdeletionrequests']='Create automatic data deletion requests';
$string['automaticdeletionrequests_desc']='If enabled, automatic delete data request will be created upon user deletion or for each existing deleted user which data was not fully deleted.';
$string['automaticdeletionrequests_desc']='If enabled, a data deletion request will be created automatically for any user accounts deleted manually.';
@@ -277,7 +277,7 @@ $string['resubmitrequestasnew'] = 'Resubmit as new request';
$string['resubmitrequest']='Resubmit {$a->type} request for {$a->username}';
$string['resubmittedrequest']='The existing {$a->type} request for {$a->username} was cancelled and resubmitted';
$string['resultdeleted']='You recently requested to have your account and personal data in {$a} to be deleted. This process has been completed and you will no longer be able to log in.';
$string['resultdownloadready']='Your copy of your personal data in {$a} that you recently requested is now available for download. Please click on the link below to go to the download page.';
$string['resultdownloadready']='Your copy of your personal data from {$a} that you recently requested is now available for download from the following link.';
$string['reviewdata']='Review data';
$string['retentionperiod']='Retention period';
$string['retentionperiod_help']='The retention period specifies the length of time that data should be kept for. When the retention period has expired, the data is flagged and listed for deletion, awaiting admin confirmation.';
@@ -292,7 +292,7 @@ $string['sensitivedatareasons'] = 'Sensitive personal data processing reasons';
$string['sensitivedatareasons_help']='Select one or more applicable reasons that exempts the prohibition of processing sensitive personal data tied to this purpose. For more information, please see <a href="https://gdpr-info.eu/art-9-gdpr/" target="_blank">GDPR Art. 9.2</a>';
$string['setdefaults']='Set defaults';
$string['showdataretentionsummary']='Show data retention summary';
$string['showdataretentionsummary_desc']='If enabled, a link to the data retention summary is shown in the page footer and in the user profile page.';
$string['showdataretentionsummary_desc']='If enabled, a link to the data retention summary is displayed in the page footer and in users\' profiles.';
$string['systemconfignotsetwarning']='A site purpose and category have not been defined. When these are not defined, all data will be removed when processing deletion requests.';
$string['userlistexplanation']='This plugin has the base provider but should also implement the userlist provider for full support of privacy functionality.';
$string['validateaddress_help']='When a message is received from a user, Moodle attempts to validate the message by comparing the email address of the sender with the email address in their user profile.
$string['messagetemplate_help']='A notification message is sent to subscribers once the notification threshold has been reached. It can include any or all of the following placeholders:
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['cannotfit']='The replacement is longer than original and shortening is not allow, cannot continue.';
$string['cannotfit']='The replacement is longer than the original and shortening is not allowed; cannot continue.';
$string['disclaimer']='I understand the risks of this operation';
$string['doit']='Yes, do it!';
$string['excludedtables']='Several tables are not updated as part of the text replacement. These include configuration, log, events, and session tables.';
$string['backtoscheduledtasks']='Back to scheduled tasks';
$string['blocking']='Blocking';
$string['cannotfindthepathtothecli']='Cannot find the path to the PHP CLI executable so task execution aborted. Set the "Path to PHP CLI" setting in "Site administration / Server / System paths"';
$string['cannotfindthepathtothecli']='Cannot find the path to the PHP CLI executable so task execution aborted. Set the \'Path to PHP CLI\' setting in Site administration / Server / System paths.';
$string['clearfaildelay_confirm']='Are you sure you want to clear the fail delay for task \'{$a}\'? After clearing the delay, the task will run according to its normal schedule.';
$string['enablerunnow']='Allow \'Run now\' for scheduled tasks';
$string['enablerunnow_desc']='Allows administrators to run a single scheduled task immediately, rather than waiting for it to run as scheduled. The task runs on the web server, so some sites may wish to disable this feature to avoid potential performance issues.';
$string['enablerunnow_desc']='Allows administrators to run a single scheduled task immediately, rather than waiting for it to run as scheduled. The feature requires \'Path to PHP CLI\' (pathtophp) to be set in System paths. The task runs on the web server, so you may wish to disable this feature to avoid potential performance issues.';
$string['scheduledtaskchangesdisabled']='Modifications to the list of scheduled tasks have been prevented in Moodle configuration';
$string['taskdisabled']='Task disabled';
$string['taskscheduleday']='Day';
$string['taskscheduleday_help']='Day of month field for task schedule. The field uses the same format as unix cron. Some examples are:<br/><ul><li><strong>*</strong> Every day</li><li><strong>*/2</strong> Every 2nd day</li><li><strong>1</strong> The first of every month</li><li><strong>1,15</strong> The first and fifteenth of every month</li></ul>';
$string['taskscheduleday_help']='Day of month field for task schedule. The field uses the same format as unix cron. Some examples are:
* <strong>*</strong> Every day
* <strong>*/2</strong> Every 2nd day
* <strong>1</strong> The first of every month
* <strong>1,15</strong> The first and fifteenth of every month';
$string['taskscheduledayofweek']='Day of week';
$string['taskscheduledayofweek_help']='Day of week field for task schedule. The field uses the same format as unix cron. Some examples are:<br/><ul><li><strong>*</strong> Every day</li><li><strong>0</strong> Every Sunday</li><li><strong>6</strong> Every Saturday</li><li><strong>1,5</strong> Every Monday and Friday</li></ul>';
$string['taskscheduledayofweek_help']='Day of week field for task schedule. The field uses the same format as unix cron. Some examples are:
* <strong>*</strong> Every day
* <strong>0</strong> Every Sunday
* <strong>6</strong> Every Saturday
* <strong>1,5</strong> Every Monday and Friday';
$string['taskschedulehour']='Hour';
$string['taskschedulehour_help']='Hour field for task schedule. The field uses the same format as unix cron. Some examples are:<br/><ul><li><strong>*</strong> Every hour</li><li><strong>*/2</strong> Every 2 hours</li><li><strong>2-10</strong> Every hour from 2am until 10am (inclusive)</li><li><strong>2,6,9</strong> 2am, 6am and 9am</li></ul>';
$string['taskschedulehour_help']='Hour field for task schedule. The field uses the same format as unix cron. Some examples are:
* <strong>*</strong> Every hour
* <strong>*/2</strong> Every 2 hours
* <strong>2-10</strong> Every hour from 2am until 10am (inclusive)
* <strong>2,6,9</strong> 2am, 6am and 9am';
$string['taskscheduleminute']='Minute';
$string['taskscheduleminute_help']='Minute field for task schedule. The field uses the same format as unix cron. Some examples are:<br/><ul><li><strong>*</strong> Every minute</li><li><strong>*/5</strong> Every 5 minutes</li><li><strong>2-10</strong> Every minute between 2 and 10 past the hour (inclusive)</li><li><strong>2,6,9</strong> 2 6 and 9 minutes past the hour</li></ul>';
$string['taskscheduleminute_help']='Minute field for task schedule. The field uses the same format as unix cron. Some examples are:
* <strong>*</strong> Every minute
* <strong>*/5</strong> Every 5 minutes
* <strong>2-10</strong> Every minute between 2 and 10 past the hour (inclusive)
* <strong>2,6,9</strong> 2, 6 and 9 minutes past the hour';
$string['taskschedulemonth']='Month';
$string['taskschedulemonth_help']='Month field for task schedule. The field uses the same format as unix cron. Some examples are:<br/><ul><li><strong>*</strong> Every month</li><li><strong>*/2</strong> Every second month</li><li><strong>1</strong> Every January</li><li><strong>1,5</strong> Every January and May</li></ul>';
$string['taskschedulemonth_help']='Month field for task schedule. The field uses the same format as unix cron. Some examples are:
* <strong>*</strong> Every month
* <strong>*/2</strong> Every second month
* <strong>1</strong> Every January
* <strong>1,5</strong> Every January and May';
$string['privacy:metadata']='The Scheduled task configuration plugin does not store any personal data.';
@@ -104,8 +104,7 @@ $string['reset_help'] = 'Whether to reset the course after creating/updating it.
$string['result']='Result';
$string['restoreafterimport']='Restore after import';
$string['rowpreviewnum']='Preview rows';
$string['rowpreviewnum_help']='Number of rows from the CSV file that will be previewed in the next page. This option exists in
order to limit the next page size.';
$string['rowpreviewnum_help']='Number of rows from the CSV file that will be previewed on the following page. This option is for limiting the size of the following page.';
$string['shortnametemplate']='Template to generate a shortname';
$string['shortnametemplate_help']='The short name of the course is displayed in the navigation. You may use template syntax here (%f = fullname, %i = idnumber), or enter an initial value that is incremented.';
$string['templatefile']='Restore from this file after upload';
$string['tour3_content_recentcourses']='The Recently accessed courses block shows the courses that you last visited, allowing you to jump straight back in.';
$string['tour4_content_messaging']='Moodle 3.6 provides a new interface to messaging, ability for group messaging within a course, along with better control over who can message you.';
$string['tour4_title_icon']='Messaging';
$string['tour4_content_icon']='You can access your messages from any page using this icon.
If you have any unread messages, the number of unread messages will show here too.
Click on the icon to open the messaging drawer and continue the tour.';
$string['tour4_content_settings']='You can access your messaging settings via the cog icon. A new privacy setting allows you to restrict who can message you.';
$string['tour_final_step_title']='End of tour';
$string['tour_final_step_content']='This is the end of your user tour. It won\'t show again unless you reset it using the link in the footer.';
$string['nomasterprimaryuniquefound']='The column(s) that you foreign key references must be included in a primary or unique KEY in the referenced table. Note, the column being in a UNIQUE INDEX is not good enough.';
$string['nomasterprimaryuniquefound']='The column(s) that your foreign key references must be included in a primary or unique KEY in the referenced table. Note that the column being in a UNIQUE INDEX is not good enough.';
$string['nomissingindexesfound']='No missing indexes have been found, your DB doesn\'t need further actions.';
$string['noreftablespecified']='Specified reference table not found';
@@ -215,8 +215,8 @@ $string['yesmissingindexesfound'] = '<p>Some missing indexes have been found in
<p>After doing that, it\'s highly recommended to execute this utility again to check that no more missing indexes are found.</p>';
$string['yeswrongdefaultsfound']='<p>Some inconsistent defaults have been found in your DB. Here are their details and the needed SQL statements to be executed with your favourite SQL interface to fix them all. Remember to backup your data first!</p>
<p>After doing that, it\'s highly recommended to execute this utility again to check that no more inconsistent defaults are found.</p>';
$string['yeswrongintsfound']='<p>Some wrong integers have been found in your DB. Here are their details and the needed SQL statements to be executed with your favourite SQL interface to create all them. Remember to backup your data first!</p>
<p>After doing that, it\'s highly recommended to execute this utility again to check that no more wrong integers are found.</p>';
$string['yeswrongoraclesemanticsfound']='<p>Some Oracle columns using BYTE semantics have been found in your DB. Here are their details and the needed SQL statements to be executed with your favourite SQL interface to create all them. Remember to backup your data first!</p>
$string['yeswrongintsfound']='<p>Some wrong integers have been found in your DB. Here are their details and the needed SQL statements to be executed with your favourite SQL interface to fix them. Remember to backup your data first!</p>
<p>After fixing them, it is highly recommended to execute this utility again to check that no more wrong integers are found.</p>';
$string['yeswrongoraclesemanticsfound']='<p>Some Oracle columns using BYTE semantics have been found in your DB. Here are their details and the needed SQL statements to be executed with your favourite SQL interface to convert them all. Remember to backup your data first!</p>
<p>After doing that, it\'s highly recommended to execute this utility again to check that no more wrong semantics are found.</p>';
$string['privacy:metadata']='The XMLDB editor plugin does not store any personal data.';
@@ -33,7 +33,7 @@ $string['auth_dbextencodinghelp'] = 'Encoding used in external database';
$string['auth_dbextrafields']='These fields are optional. You can choose to pre-fill some Moodle user fields with information from the <b>external database fields</b> that you specify here. <p>If you leave these blank, then defaults will be used.</p><p>In either case, the user will be able to edit all of these fields after they log in.</p>';
$string['auth_dbfieldpass']='Name of the field containing passwords';
$string['auth_dbfieldpass_key']='Password field';
$string['auth_dbfielduser']='Name of the field containing usernames';
$string['auth_dbfielduser']='Name of the field containing usernames. This field must be a varchar data type.';
$string['auth_dbfielduser_key']='Username field';
$string['auth_dbhost']='The computer hosting the database server. Use a system DSN entry if using ODBC. Use a PDO DSN entry if using PDO.';
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.