diff --git a/admin/environment.xml b/admin/environment.xml index 0afa5ecc001..61af243bbff 100644 --- a/admin/environment.xml +++ b/admin/environment.xml @@ -227,7 +227,7 @@ - + @@ -237,7 +237,7 @@ - + @@ -277,12 +277,12 @@ - + - + @@ -344,7 +344,7 @@ - + @@ -354,7 +354,7 @@ - + @@ -394,12 +394,12 @@ - + - + @@ -454,7 +454,7 @@ - + @@ -464,7 +464,7 @@ - + @@ -504,12 +504,12 @@ - + - + @@ -569,7 +569,7 @@ - + @@ -579,7 +579,7 @@ - + @@ -619,12 +619,12 @@ - + - + @@ -685,7 +685,7 @@ - + @@ -695,7 +695,7 @@ - + @@ -735,12 +735,12 @@ - + - + @@ -801,7 +801,7 @@ - + @@ -811,7 +811,7 @@ - + @@ -851,12 +851,12 @@ - + - + diff --git a/lib/environmentlib.php b/lib/environmentlib.php index be7aabf68a7..3d8a0dffd33 100644 --- a/lib/environmentlib.php +++ b/lib/environmentlib.php @@ -70,6 +70,10 @@ defined('MOODLE_INTERNAL') || die(); define('CUSTOM_CHECK_FUNCTION_MISSING', 14); /** XML Processing Error */ define('NO_PHP_SETTINGS_NAME_FOUND', 15); + /** XML Processing Error */ + define('INCORRECT_FEEDBACK_FOR_REQUIRED', 16); + /** XML Processing Error */ + define('INCORRECT_FEEDBACK_FOR_OPTIONAL', 17); /// Define algorithm used to select the xml file /** To select the newer file available to perform checks */ @@ -1066,6 +1070,8 @@ function process_environment_restrict($xml, &$result) { * This function will detect if there is some message available to be added to the * result in order to clarify enviromental details. * + * @uses INCORRECT_FEEDBACK_FOR_REQUIRED + * @uses INCORRECT_FEEDBACK_FOR_OPTIONAL * @param string xmldata containing the feedback data * @param object reult object to be updated */ @@ -1075,6 +1081,15 @@ function process_environment_messages($xml, &$result) { if (is_array($xml['#']) && isset($xml['#']['FEEDBACK'][0]['#'])) { $feedbackxml = $xml['#']['FEEDBACK'][0]['#']; + // Detect some incorrect feedback combinations. + if ($result->getLevel() == 'required' and isset($feedbackxml['ON_CHECK'])) { + $result->setStatus(false); + $result->setErrorCode(INCORRECT_FEEDBACK_FOR_REQUIRED); + } else if ($result->getLevel() == 'optional' and isset($feedbackxml['ON_ERROR'])) { + $result->setStatus(false); + $result->setErrorCode(INCORRECT_FEEDBACK_FOR_OPTIONAL); + } + if (!$result->status and $result->getLevel() == 'required') { if (isset($feedbackxml['ON_ERROR'][0]['@']['message'])) { $result->setFeedbackStr($feedbackxml['ON_ERROR'][0]['@']['message']);