Compare commits
156 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e7acb5cfca | |||
| 89a50ced1f | |||
| f4fcb1c4f7 | |||
| 3b214760fb | |||
| 55ba3a26d2 | |||
| 089ab60017 | |||
| 9f91c23536 | |||
| ea8987644f | |||
| 11106f6cee | |||
| c631b112d6 | |||
| 87e60e5299 | |||
| 246a8720f4 | |||
| 9d0328d512 | |||
| 7816a936f4 | |||
| 64c2c35e47 | |||
| 77798e3ab5 | |||
| c1b28f4c53 | |||
| c8eb9ee629 | |||
| 958b261ba3 | |||
| a927e80033 | |||
| 8459a1e0c9 | |||
| 9f7e43b966 | |||
| 467f7d4663 | |||
| 6b1b3d6970 | |||
| 5243e075d2 | |||
| 5c8c9eb2b1 | |||
| 048c1dfd12 | |||
| 0b1befe942 | |||
| 691048cf99 | |||
| 314f6cfe4c | |||
| 3f85661e18 | |||
| 0d8f9cfa23 | |||
| cbc01e026f | |||
| c14e2d624c | |||
| 6db07d4ba7 | |||
| 0be0a9a6c6 | |||
| 58224a3895 | |||
| 25cc38fa1b | |||
| 9d5c4e3a31 | |||
| 44ecaa6858 | |||
| 476931bd9d | |||
| a0a823432e | |||
| a41b505a22 | |||
| d27a325e72 | |||
| 39656c43ea | |||
| 5486cc980c | |||
| ab881c73e9 | |||
| 9abe17f825 | |||
| d503e1badd | |||
| a55bf44fc5 | |||
| 059c03d494 | |||
| d01512e36c | |||
| 8f097731ad | |||
| cb550d707c | |||
| ff9f974ad8 | |||
| 12bc713081 | |||
| 3b6de196e5 | |||
| fb2491effb | |||
| 97394274ee | |||
| d70f610615 | |||
| 3d58fd5841 | |||
| bdaa571437 | |||
| a1168a7427 | |||
| fd14d2902f | |||
| 86cec86942 | |||
| f75333766c | |||
| 26da47c704 | |||
| 7d6e5d78d6 | |||
| b249fb78b1 | |||
| 5be2cb4ffa | |||
| 9735a1a4a5 | |||
| d70a6a7235 | |||
| cbbbd25d60 | |||
| f857f7c443 | |||
| 14d3f19dd8 | |||
| 59b8d89ba8 | |||
| ab937ab868 | |||
| 840ae905cc | |||
| 77993ae5e4 | |||
| 69cde92e60 | |||
| 364bcdcd10 | |||
| c1e723b8e6 | |||
| 730529d4f2 | |||
| 3c6d9d5392 | |||
| bf4da5f6e6 | |||
| 8f64e05ae0 | |||
| 08e02452dc | |||
| c92478291f | |||
| d430445562 | |||
| 936facab28 | |||
| 2ad7733c07 | |||
| c3757ed868 | |||
| f91ea3f848 | |||
| 748d8a982b | |||
| 1d017fb8cd | |||
| b22e3e6170 | |||
| ca74203efd | |||
| e7288eaabe | |||
| 3071f08591 | |||
| 4015226623 | |||
| 0bbeac0d0d | |||
| 7824b2f6d9 | |||
| 45f3b5302d | |||
| 6e8224365f | |||
| a178221dcc | |||
| acefd2e24f | |||
| dff6cdc883 | |||
| 78de2e86e8 | |||
| e9cb74ea3c | |||
| e0e0a2346a | |||
| ddd6ae29fb | |||
| 7e5fc27be9 | |||
| 68d9b2583a | |||
| 029bb76641 | |||
| b227a2c771 | |||
| 826c79f4b2 | |||
| 3f58ec1385 | |||
| c66e940849 | |||
| 1bd23e0728 | |||
| ca0366e03f | |||
| d0ef635c4e | |||
| 2faa6cee53 | |||
| 578f992731 | |||
| 81d961ba3a | |||
| 2ef21fc1de | |||
| 0b777c448a | |||
| 76a37f3a42 | |||
| e1a7d6b0c3 | |||
| b9facf0b41 | |||
| 447e895db9 | |||
| 3dcc3440d1 | |||
| fa54db9c03 | |||
| a7c5b8b2c7 | |||
| ffe5c78488 | |||
| 6ac71df086 | |||
| f3e7afedb9 | |||
| 630b8fdaea | |||
| 5673aae914 | |||
| 5b25b33fa7 | |||
| c8a1646ab8 | |||
| 76cd16e6e4 | |||
| f886f76e7f | |||
| 2d6c0ecd0d | |||
| 920d2d9585 | |||
| 2bd8a55dfd | |||
| 2f6c18c88c | |||
| baa9517b57 | |||
| 5330c5c2d4 | |||
| 30aeabb79e | |||
| 2f63a6883f | |||
| ebb8f60603 | |||
| 37fd0a3d81 | |||
| 547932e130 | |||
| ee612f1ed2 | |||
| 67ac2b0cee | |||
| a5155586fe |
@@ -64,6 +64,8 @@ echo "<form id=\"authmenu\" method=\"post\" action=\"auth_config.php\">\n";
|
||||
echo "<div>\n";
|
||||
echo "<input type=\"hidden\" name=\"sesskey\" value=\"".sesskey()."\" />\n";
|
||||
echo "<input type=\"hidden\" name=\"auth\" value=\"".$auth."\" />\n";
|
||||
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
|
||||
echo prevent_form_autofill_password();
|
||||
|
||||
// auth plugin description
|
||||
echo $OUTPUT->box_start();
|
||||
|
||||
@@ -1027,6 +1027,7 @@
|
||||
<VENDOR name="oracle" version="10.2" />
|
||||
</DATABASE>
|
||||
<PHP version="5.4.4" level="required">
|
||||
<RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
|
||||
</PHP>
|
||||
<PCREUNICODE level="optional">
|
||||
<FEEDBACK>
|
||||
@@ -1160,6 +1161,7 @@
|
||||
<VENDOR name="oracle" version="10.2" />
|
||||
</DATABASE>
|
||||
<PHP version="5.4.4" level="required">
|
||||
<RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
|
||||
</PHP>
|
||||
<PCREUNICODE level="optional">
|
||||
<FEEDBACK>
|
||||
@@ -1280,6 +1282,283 @@
|
||||
</CUSTOM_CHECKS>
|
||||
</MOODLE>
|
||||
<MOODLE version="2.9" requires="2.2">
|
||||
<UNICODE level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="unicoderequired" />
|
||||
</FEEDBACK>
|
||||
</UNICODE>
|
||||
<DATABASE level="required">
|
||||
<VENDOR name="mariadb" version="5.5.31" />
|
||||
<VENDOR name="mysql" version="5.5.31" />
|
||||
<VENDOR name="postgres" version="9.1" />
|
||||
<VENDOR name="mssql" version="10.0" />
|
||||
<VENDOR name="oracle" version="10.2" />
|
||||
</DATABASE>
|
||||
<PHP version="5.4.4" level="required">
|
||||
<RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
|
||||
</PHP>
|
||||
<PCREUNICODE level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="pcreunicodewarning" />
|
||||
</FEEDBACK>
|
||||
</PCREUNICODE>
|
||||
<PHP_EXTENSIONS>
|
||||
<PHP_EXTENSION name="iconv" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="iconvrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="mbstring" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="mbstringrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="curl" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="curlrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="openssl" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="opensslrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="tokenizer" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="tokenizerrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="xmlrpc" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="xmlrpcrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="soap" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="soaprecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="ctype" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="ctyperequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="zip" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="ziprequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="zlib" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="gd" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="gdrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="simplexml" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="simplexmlrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="spl" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="splrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="pcre" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="dom" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="xml" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="intl" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="intlrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="json" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="hash" level="required"/>
|
||||
</PHP_EXTENSIONS>
|
||||
<PHP_SETTINGS>
|
||||
<PHP_SETTING name="memory_limit" value="96M" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="settingmemorylimit" />
|
||||
</FEEDBACK>
|
||||
</PHP_SETTING>
|
||||
<PHP_SETTING name="file_uploads" value="1" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="settingfileuploads" />
|
||||
</FEEDBACK>
|
||||
</PHP_SETTING>
|
||||
<PHP_SETTING name="opcache.enable" value="1" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="opcacherecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_SETTING>
|
||||
</PHP_SETTINGS>
|
||||
<CUSTOM_CHECKS>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="unsupporteddbstorageengine" />
|
||||
</FEEDBACK>
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="quizattemptsupgradedmessage" />
|
||||
</FEEDBACK>
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="slashargumentswarning" />
|
||||
</FEEDBACK>
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="unsupporteddbtablerowformat" />
|
||||
</FEEDBACK>
|
||||
</CUSTOM_CHECK>
|
||||
</CUSTOM_CHECKS>
|
||||
</MOODLE>
|
||||
<MOODLE version="3.0" requires="2.2">
|
||||
<UNICODE level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="unicoderequired" />
|
||||
</FEEDBACK>
|
||||
</UNICODE>
|
||||
<DATABASE level="required">
|
||||
<VENDOR name="mariadb" version="5.5.31" />
|
||||
<VENDOR name="mysql" version="5.5.31" />
|
||||
<VENDOR name="postgres" version="9.1" />
|
||||
<VENDOR name="mssql" version="10.0" />
|
||||
<VENDOR name="oracle" version="10.2" />
|
||||
</DATABASE>
|
||||
<PHP version="5.4.4" level="required">
|
||||
</PHP>
|
||||
<PCREUNICODE level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="pcreunicodewarning" />
|
||||
</FEEDBACK>
|
||||
</PCREUNICODE>
|
||||
<PHP_EXTENSIONS>
|
||||
<PHP_EXTENSION name="iconv" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="iconvrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="mbstring" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="mbstringrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="curl" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="curlrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="openssl" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="opensslrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="tokenizer" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="tokenizerrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="xmlrpc" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="xmlrpcrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="soap" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="soaprecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="ctype" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="ctyperequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="zip" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="ziprequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="zlib" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="gd" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="gdrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="simplexml" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="simplexmlrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="spl" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="splrequired" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="pcre" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="dom" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="xml" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="intl" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="intlrecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="json" level="required">
|
||||
</PHP_EXTENSION>
|
||||
<PHP_EXTENSION name="hash" level="required"/>
|
||||
</PHP_EXTENSIONS>
|
||||
<PHP_SETTINGS>
|
||||
<PHP_SETTING name="memory_limit" value="96M" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="settingmemorylimit" />
|
||||
</FEEDBACK>
|
||||
</PHP_SETTING>
|
||||
<PHP_SETTING name="file_uploads" value="1" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="settingfileuploads" />
|
||||
</FEEDBACK>
|
||||
</PHP_SETTING>
|
||||
<PHP_SETTING name="opcache.enable" value="1" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="opcacherecommended" />
|
||||
</FEEDBACK>
|
||||
</PHP_SETTING>
|
||||
</PHP_SETTINGS>
|
||||
<CUSTOM_CHECKS>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="unsupporteddbstorageengine" />
|
||||
</FEEDBACK>
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="quizattemptsupgradedmessage" />
|
||||
</FEEDBACK>
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="slashargumentswarning" />
|
||||
</FEEDBACK>
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
|
||||
<FEEDBACK>
|
||||
<ON_CHECK message="unsupporteddbtablerowformat" />
|
||||
</FEEDBACK>
|
||||
</CUSTOM_CHECK>
|
||||
</CUSTOM_CHECKS>
|
||||
</MOODLE>
|
||||
<MOODLE version="3.1" requires="2.7">
|
||||
<UNICODE level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="unicoderequired" />
|
||||
|
||||
@@ -39,6 +39,8 @@ require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/forms.php');
|
||||
require_once($CFG->dirroot . '/webservice/lib.php');
|
||||
require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/lib.php');
|
||||
|
||||
require_sesskey();
|
||||
|
||||
$huburl = required_param('huburl', PARAM_URL);
|
||||
$huburl = rtrim($huburl, "/");
|
||||
|
||||
|
||||
@@ -46,6 +46,8 @@ $resultshtml = admin_search_settings_html($query); // case insensitive search on
|
||||
echo '<form action="' . $PAGE->url->out(true) . '" method="post" id="adminsettings">';
|
||||
echo '<div>';
|
||||
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
||||
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
|
||||
echo prevent_form_autofill_password();
|
||||
echo '</div>';
|
||||
echo '<fieldset>';
|
||||
echo '<div class="clearer"><!-- --></div>';
|
||||
|
||||
@@ -77,6 +77,8 @@ if (empty($SITE->fullname)) {
|
||||
echo html_writer::input_hidden_params($PAGE->url);
|
||||
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
||||
echo '<input type="hidden" name="return" value="'.$return.'" />';
|
||||
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
|
||||
echo prevent_form_autofill_password();
|
||||
|
||||
echo $settingspage->output_html();
|
||||
|
||||
@@ -119,6 +121,8 @@ if (empty($SITE->fullname)) {
|
||||
echo html_writer::input_hidden_params($PAGE->url);
|
||||
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
||||
echo '<input type="hidden" name="return" value="'.$return.'" />';
|
||||
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
|
||||
echo prevent_form_autofill_password();
|
||||
echo $OUTPUT->heading($settingspage->visiblename);
|
||||
|
||||
echo $settingspage->output_html();
|
||||
|
||||
@@ -11,7 +11,7 @@ $hassiteconfig = has_capability('moodle/site:config', $systemcontext);
|
||||
$ADMIN->add('root', new admin_externalpage('adminnotifications', new lang_string('notifications'), "$CFG->wwwroot/$CFG->admin/index.php"));
|
||||
|
||||
$ADMIN->add('root', new admin_externalpage('registrationmoodleorg', new lang_string('registration', 'admin'),
|
||||
"$CFG->wwwroot/$CFG->admin/registration/register.php?huburl=" . HUB_MOODLEORGHUBURL . "&hubname=Moodle.org"));
|
||||
"$CFG->wwwroot/$CFG->admin/registration/register.php?huburl=" . HUB_MOODLEORGHUBURL . "&hubname=Moodle.org&sesskey=" . sesskey()));
|
||||
$ADMIN->add('root', new admin_externalpage('registrationhub', new lang_string('registerwith', 'hub'),
|
||||
"$CFG->wwwroot/$CFG->admin/registration/register.php", 'moodle/site:config', true));
|
||||
$ADMIN->add('root', new admin_externalpage('registrationhubs', new lang_string('hubs', 'admin'),
|
||||
|
||||
@@ -63,6 +63,8 @@ echo '<form action="upgradesettings.php" method="post" id="adminsettings">';
|
||||
echo '<div>';
|
||||
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
||||
echo '<input type="hidden" name="return" value="'.$return.'" />';
|
||||
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
|
||||
echo prevent_form_autofill_password();
|
||||
echo '<fieldset>';
|
||||
echo '<div class="clearer"><!-- --></div>';
|
||||
echo $newsettingshtml;
|
||||
|
||||
@@ -300,6 +300,7 @@ class auth_plugin_db extends auth_plugin_base {
|
||||
$updateuser = new stdClass();
|
||||
$updateuser->id = $user->id;
|
||||
$updateuser->suspended = 1;
|
||||
$updateuser = $this->clean_data($updateuser);
|
||||
user_update_user($updateuser, false);
|
||||
$trace->output(get_string('auth_dbsuspenduser', 'auth_db', array('name'=>$user->username, 'id'=>$user->id)), 1);
|
||||
}
|
||||
@@ -381,6 +382,7 @@ class auth_plugin_db extends auth_plugin_base {
|
||||
foreach($add_users as $user) {
|
||||
$username = $user;
|
||||
if ($this->config->removeuser == AUTH_REMOVEUSER_SUSPEND) {
|
||||
|
||||
if ($old_user = $DB->get_record('user', array('username'=>$username, 'deleted'=>0, 'suspended'=>1, 'mnethostid'=>$CFG->mnet_localhost_id, 'auth'=>$this->authtype))) {
|
||||
$DB->set_field('user', 'suspended', 0, array('id'=>$old_user->id));
|
||||
$trace->output(get_string('auth_dbreviveduser', 'auth_db', array('name'=>$username, 'id'=>$old_user->id)), 1);
|
||||
@@ -412,6 +414,7 @@ class auth_plugin_db extends auth_plugin_base {
|
||||
$trace->output(get_string('auth_dbinsertuserduplicate', 'auth_db', array('username'=>$user->username, 'auth'=>$collision->auth)), 1);
|
||||
continue;
|
||||
}
|
||||
$user = $this->clean_data($user);
|
||||
try {
|
||||
$id = $DB->insert_record ('user', $user); // it is truly a new user
|
||||
|
||||
@@ -553,6 +556,7 @@ class auth_plugin_db extends auth_plugin_base {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($updated) {
|
||||
$DB->set_field('user', 'timemodified', time(), array('id'=>$userid));
|
||||
|
||||
@@ -870,6 +874,30 @@ class auth_plugin_db extends auth_plugin_base {
|
||||
error_reporting($CFG->debug);
|
||||
ob_end_flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean the user data that comes from an external database.
|
||||
*
|
||||
* @param array $user the user data to be validated against properties definition.
|
||||
* @return stdClass $user the cleaned user data.
|
||||
*/
|
||||
public function clean_data($user) {
|
||||
if (empty($user)) {
|
||||
return $user;
|
||||
}
|
||||
|
||||
foreach ($user as $field => $value) {
|
||||
// Get the property parameter type and do the cleaning.
|
||||
try {
|
||||
$property = core_user::get_property_definition($field);
|
||||
$user->$field = clean_param($value, $property['type']);
|
||||
} catch (coding_exception $e) {
|
||||
debugging("The property '$field' could not be cleaned.", DEBUG_DEVELOPER);
|
||||
}
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -374,4 +374,77 @@ class auth_db_testcase extends advanced_testcase {
|
||||
|
||||
$this->cleanup_auth_database();
|
||||
}
|
||||
|
||||
/**
|
||||
* Testing the clean_data() method.
|
||||
*/
|
||||
public function test_clean_data() {
|
||||
global $DB;
|
||||
|
||||
$this->resetAfterTest(false);
|
||||
$this->preventResetByRollback();
|
||||
$this->init_auth_database();
|
||||
$auth = get_auth_plugin('db');
|
||||
$auth->db_init();
|
||||
|
||||
// Create users on external table.
|
||||
$extdbuser1 = (object)array('name'=>'u1', 'pass'=>'heslo', 'email'=>'u1@example.com');
|
||||
$extdbuser1->id = $DB->insert_record('auth_db_users', $extdbuser1);
|
||||
|
||||
// User with malicious data on the name.
|
||||
$extdbuser2 = (object)array('name'=>'user<script>alert(1);</script>xss', 'pass'=>'heslo', 'email'=>'xssuser@example.com');
|
||||
$extdbuser2->id = $DB->insert_record('auth_db_users', $extdbuser2);
|
||||
|
||||
$trace = new null_progress_trace();
|
||||
|
||||
// Let's test user sync make sure still works as expected..
|
||||
$auth->sync_users($trace, true);
|
||||
|
||||
// Get the user on moodle user table.
|
||||
$user2 = $DB->get_record('user', array('email'=> $extdbuser2->email, 'auth'=>'db'));
|
||||
|
||||
// The malicious code should be sanitized.
|
||||
$this->assertEquals($user2->username, 'userscriptalert1scriptxss');
|
||||
$this->assertNotEquals($user2->username, $extdbuser2->name);
|
||||
|
||||
// User with correct data, should be equal to external db.
|
||||
$user1 = $DB->get_record('user', array('email'=> $extdbuser1->email, 'auth'=>'db'));
|
||||
$this->assertEquals($extdbuser1->name, $user1->username);
|
||||
$this->assertEquals($extdbuser1->email, $user1->email);
|
||||
|
||||
// Now, let's update the name.
|
||||
$extdbuser2->name = 'user no xss anymore';
|
||||
$DB->update_record('auth_db_users', $extdbuser2);
|
||||
|
||||
// Run sync again to update the user data.
|
||||
$auth->sync_users($trace, true);
|
||||
|
||||
// The user information should be updated.
|
||||
$user2 = $DB->get_record('user', array('username' => 'usernoxssanymore', 'auth' => 'db'));
|
||||
// The spaces should be removed, as it's the username.
|
||||
$this->assertEquals($user2->username, 'usernoxssanymore');
|
||||
|
||||
// Now let's test just the clean_data() method isolated.
|
||||
// Testing PARAM_USERNAME, PARAM_NOTAGS, PARAM_RAW_TRIMMED and others.
|
||||
$user3 = new stdClass();
|
||||
$user3->firstname = 'John <script>alert(1)</script> Doe';
|
||||
$user3->username = 'john%#&~%*_doe';
|
||||
$user3->email = ' john@testing.com ';
|
||||
$user3->deleted = 'no';
|
||||
$user3->description = '<b>A description <script>alert(123)</script>about myself.</b>';
|
||||
$user3cleaned = $auth->clean_data($user3);
|
||||
|
||||
// Expected results.
|
||||
$this->assertEquals($user3cleaned->firstname, 'John alert(1) Doe');
|
||||
$this->assertEquals($user3cleaned->email, 'john@testing.com');
|
||||
$this->assertEquals($user3cleaned->deleted, 0);
|
||||
$this->assertEquals($user3->description, '<b>A description about myself.</b>');
|
||||
$this->assertEquals($user3->username, 'john_doe');
|
||||
|
||||
// Try to clean an invalid property (fullname).
|
||||
$user3->fullname = 'John Doe';
|
||||
$auth->clean_data($user3);
|
||||
$this->assertDebuggingCalled("The property 'fullname' could not be cleaned.");
|
||||
$this->cleanup_auth_database();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,8 +53,8 @@ class condition extends \core_availability\condition {
|
||||
*/
|
||||
public function __construct($structure) {
|
||||
// Get cmid.
|
||||
if (isset($structure->cm) && is_int($structure->cm)) {
|
||||
$this->cmid = $structure->cm;
|
||||
if (isset($structure->cm) && is_number($structure->cm)) {
|
||||
$this->cmid = (int)$structure->cm;
|
||||
} else {
|
||||
throw new \coding_exception('Missing or invalid ->cm for completion condition');
|
||||
}
|
||||
|
||||
+3
-1
@@ -61,6 +61,8 @@ $PAGE->set_heading($badge->name);
|
||||
$PAGE->set_title($badge->name);
|
||||
$PAGE->navbar->add($badge->name);
|
||||
|
||||
require_capability('moodle/badges:viewbadges', $context);
|
||||
|
||||
echo $OUTPUT->header();
|
||||
echo $OUTPUT->heading(print_badge_image($badge, $context, 'small') . ' ' . $badge->name);
|
||||
|
||||
@@ -75,4 +77,4 @@ echo $output->print_badge_status_box($badge);
|
||||
$output->print_badge_tabs($badgeid, $context, 'overview');
|
||||
echo $output->print_badge_overview($badge, $context);
|
||||
|
||||
echo $OUTPUT->footer();
|
||||
echo $OUTPUT->footer();
|
||||
|
||||
+3
-1
@@ -75,6 +75,8 @@ if ($type == BADGE_TYPE_SITE) {
|
||||
$PAGE->set_heading($title);
|
||||
}
|
||||
|
||||
require_capability('moodle/badges:viewbadges', $PAGE->context);
|
||||
|
||||
$PAGE->set_title($title);
|
||||
$output = $PAGE->get_renderer('core', 'badges');
|
||||
|
||||
@@ -103,4 +105,4 @@ if ($totalcount) {
|
||||
echo $output->notification(get_string('nobadges', 'badges'));
|
||||
}
|
||||
|
||||
echo $output->footer();
|
||||
echo $output->footer();
|
||||
|
||||
@@ -173,6 +173,8 @@ class core_calendar_external extends external_api {
|
||||
|
||||
// Let us findout courses that we can return events from.
|
||||
if (!$hassystemcap) {
|
||||
$courses = enrol_get_my_courses('id');
|
||||
$courses = array_keys($courses);
|
||||
foreach ($params['events']['courseids'] as $id) {
|
||||
try {
|
||||
$context = context_course::instance($id);
|
||||
@@ -221,21 +223,21 @@ class core_calendar_external extends external_api {
|
||||
$funcparam['courses'][] = $SITE->id;
|
||||
}
|
||||
|
||||
// Event list does not check visibility and permissions, we'll check that later.
|
||||
$eventlist = calendar_get_events($params['options']['timestart'], $params['options']['timeend'], $funcparam['users'], $funcparam['groups'],
|
||||
$funcparam['courses'], true, $params['options']['ignorehidden']);
|
||||
|
||||
// WS expects arrays.
|
||||
$events = array();
|
||||
foreach ($eventlist as $id => $event) {
|
||||
$events[$id] = (array) $event;
|
||||
}
|
||||
|
||||
// We need to get events asked for eventids.
|
||||
$eventsbyid = calendar_get_events_by_id($params['events']['eventids']);
|
||||
foreach ($eventsbyid as $eventid => $eventobj) {
|
||||
if ($eventsbyid = calendar_get_events_by_id($params['events']['eventids'])) {
|
||||
$eventlist += $eventsbyid;
|
||||
}
|
||||
|
||||
foreach ($eventlist as $eventid => $eventobj) {
|
||||
$event = (array) $eventobj;
|
||||
if (isset($events[$eventid])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($hassystemcap) {
|
||||
// User can see everything, no further check is needed.
|
||||
$events[$eventid] = $event;
|
||||
|
||||
@@ -363,6 +363,30 @@ class core_calendar_externallib_testcase extends externallib_advanced_testcase {
|
||||
$events = external_api::clean_returnvalue(core_calendar_external::get_calendar_events_returns(), $events);
|
||||
$this->assertEquals(1, count($events['events'])); // site.
|
||||
$this->assertEquals(0, count($events['warnings']));
|
||||
|
||||
// Now, create an activity event.
|
||||
$this->setAdminUser();
|
||||
$nexttime = time() + DAYSECS;
|
||||
$assign = $this->getDataGenerator()->create_module('assign', array('course' => $course->id, 'duedate' => $nexttime));
|
||||
|
||||
$this->setUser($user);
|
||||
$paramevents = array ('courseids' => array($course->id));
|
||||
$options = array ('siteevents' => true, 'userevents' => true, 'timeend' => time() + WEEKSECS);
|
||||
$events = core_calendar_external::get_calendar_events($paramevents, $options);
|
||||
$events = external_api::clean_returnvalue(core_calendar_external::get_calendar_events_returns(), $events);
|
||||
|
||||
$this->assertCount(5, $events['events']);
|
||||
|
||||
// Hide the assignment.
|
||||
set_coursemodule_visible($assign->cmid, 0);
|
||||
// Empty all the caches that may be affected by this change.
|
||||
accesslib_clear_all_caches_for_unit_testing();
|
||||
course_modinfo::clear_instance_cache();
|
||||
|
||||
$events = core_calendar_external::get_calendar_events($paramevents, $options);
|
||||
$events = external_api::clean_returnvalue(core_calendar_external::get_calendar_events_returns(), $events);
|
||||
// Expect one less.
|
||||
$this->assertCount(4, $events['events']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+38
-9
@@ -363,7 +363,10 @@ class core_enrol_external extends external_api {
|
||||
)
|
||||
), 'Option names:
|
||||
* withcapability (string) return only users with this capability. This option requires \'moodle/role:review\' on the course context.
|
||||
* groupid (integer) return only users in this group id. This option requires \'moodle/site:accessallgroups\' on the course context.
|
||||
* groupid (integer) return only users in this group id. If the course has groups enabled and this param
|
||||
isn\'t defined, returns all the viewable users.
|
||||
This option requires \'moodle/site:accessallgroups\' on the course context if the
|
||||
user doesn\'t belong to the group.
|
||||
* onlyactive (integer) return only users with active enrolments and matching time restrictions. This option requires \'moodle/course:enrolreview\' on the course context.
|
||||
* userfields (\'string, string, ...\') return only the values of these user fields.
|
||||
* limitfrom (integer) sql limit from.
|
||||
@@ -451,7 +454,7 @@ class core_enrol_external extends external_api {
|
||||
require_capability('moodle/role:review', $coursecontext);
|
||||
}
|
||||
// need accessallgroups capability if you want to overwrite this option
|
||||
if (!empty($groupid) && groups_is_member($groupid)) {
|
||||
if (!empty($groupid) && !groups_is_member($groupid)) {
|
||||
require_capability('moodle/site:accessallgroups', $coursecontext);
|
||||
}
|
||||
// to overwrite this option, you need course:enrolereview permission
|
||||
@@ -463,10 +466,29 @@ class core_enrol_external extends external_api {
|
||||
$ctxselect = ', ' . context_helper::get_preload_record_columns_sql('ctx');
|
||||
$ctxjoin = "LEFT JOIN {context} ctx ON (ctx.instanceid = u.id AND ctx.contextlevel = :contextlevel)";
|
||||
$enrolledparams['contextlevel'] = CONTEXT_USER;
|
||||
$sql = "SELECT u.* $ctxselect
|
||||
FROM {user} u $ctxjoin
|
||||
WHERE u.id IN ($enrolledsql)
|
||||
ORDER BY u.id ASC";
|
||||
|
||||
$groupjoin = '';
|
||||
if (empty($groupid) && groups_get_course_groupmode($course) == SEPARATEGROUPS &&
|
||||
!has_capability('moodle/site:accessallgroups', $coursecontext)) {
|
||||
// Filter by groups the user can view.
|
||||
$usergroups = groups_get_user_groups($course->id);
|
||||
if (!empty($usergroups['0'])) {
|
||||
list($groupsql, $groupparams) = $DB->get_in_or_equal($usergroups['0'], SQL_PARAMS_NAMED);
|
||||
$groupjoin = "JOIN {groups_members} gm ON (u.id = gm.userid AND gm.groupid $groupsql)";
|
||||
$enrolledparams = array_merge($enrolledparams, $groupparams);
|
||||
} else {
|
||||
// User doesn't belong to any group, so he can't see any user. Return an empty array.
|
||||
return array();
|
||||
}
|
||||
}
|
||||
$sql = "SELECT us.*
|
||||
FROM {user} us
|
||||
JOIN (
|
||||
SELECT DISTINCT u.id $ctxselect
|
||||
FROM {user} u $ctxjoin $groupjoin
|
||||
WHERE u.id IN ($enrolledsql)
|
||||
) q ON q.id = us.id
|
||||
ORDER BY us.id ASC";
|
||||
$enrolledusers = $DB->get_recordset_sql($sql, $enrolledparams, $limitfrom, $limitnumber);
|
||||
$users = array();
|
||||
foreach ($enrolledusers as $user) {
|
||||
@@ -581,14 +603,21 @@ class core_enrol_external extends external_api {
|
||||
*
|
||||
* @param int $courseid
|
||||
* @return array of course enrolment methods
|
||||
* @throws moodle_exception
|
||||
*/
|
||||
public static function get_course_enrolment_methods($courseid) {
|
||||
global $DB;
|
||||
|
||||
$params = self::validate_parameters(self::get_course_enrolment_methods_parameters(), array('courseid' => $courseid));
|
||||
|
||||
$coursecontext = context_course::instance($params['courseid']);
|
||||
$categorycontext = $coursecontext->get_parent_context();
|
||||
self::validate_context($categorycontext);
|
||||
// Note that we can't use validate_context because the user is not enrolled in the course.
|
||||
require_login(null, false, null, false, true);
|
||||
|
||||
$course = $DB->get_record('course', array('id' => $params['courseid']), '*', MUST_EXIST);
|
||||
$context = context_course::instance($course->id);
|
||||
if (!$course->visible and !has_capability('moodle/course:viewhiddencourses', $context)) {
|
||||
throw new moodle_exception('coursehidden');
|
||||
}
|
||||
|
||||
$result = array();
|
||||
$enrolinstances = enrol_get_instances($params['courseid'], true);
|
||||
|
||||
@@ -309,7 +309,7 @@ function enrol_meta_sync($courseid = NULL, $verbose = false) {
|
||||
}
|
||||
}
|
||||
|
||||
$meta->enrol_user($instance, $ue->userid, $ue->status);
|
||||
$meta->enrol_user($instance, $ue->userid, null, 0, 0, $ue->status);
|
||||
if ($verbose) {
|
||||
mtrace(" enrolling: $ue->userid ==> $instance->courseid");
|
||||
}
|
||||
|
||||
@@ -52,6 +52,7 @@ class enrol_self_external extends external_api {
|
||||
*
|
||||
* @param int $instanceid instance id of self enrolment plugin.
|
||||
* @return array instance information.
|
||||
* @throws moodle_exception
|
||||
*/
|
||||
public static function get_instance_info($instanceid) {
|
||||
global $DB, $CFG;
|
||||
@@ -66,10 +67,15 @@ class enrol_self_external extends external_api {
|
||||
throw new moodle_exception('invaliddata', 'error');
|
||||
}
|
||||
|
||||
// Note that we can't use validate_context because the user is not enrolled in the course.
|
||||
require_login(null, false, null, false, true);
|
||||
|
||||
$enrolinstance = $DB->get_record('enrol', array('id' => $params['instanceid']), '*', MUST_EXIST);
|
||||
$coursecontext = context_course::instance($enrolinstance->courseid);
|
||||
$categorycontext = $coursecontext->get_parent_context();
|
||||
self::validate_context($categorycontext);
|
||||
$course = $DB->get_record('course', array('id' => $enrolinstance->courseid), '*', MUST_EXIST);
|
||||
$context = context_course::instance($course->id);
|
||||
if (!$course->visible and !has_capability('moodle/course:viewhiddencourses', $context)) {
|
||||
throw new moodle_exception('coursehidden');
|
||||
}
|
||||
|
||||
$instanceinfo = (array) $enrolplugin->get_enrol_info($enrolinstance);
|
||||
if (isset($instanceinfo['requiredparam']->enrolpassword)) {
|
||||
|
||||
@@ -47,7 +47,9 @@ class enrol_self_external_testcase extends externallib_advanced_testcase {
|
||||
$studentrole = $DB->get_record('role', array('shortname'=>'student'));
|
||||
$this->assertNotEmpty($studentrole);
|
||||
|
||||
$course = self::getDataGenerator()->create_course();
|
||||
$coursedata = new stdClass();
|
||||
$coursedata->visible = 0;
|
||||
$course = self::getDataGenerator()->create_course($coursedata);
|
||||
|
||||
// Add enrolment methods for course.
|
||||
$instanceid1 = $selfplugin->add_instance($course, array('status' => ENROL_INSTANCE_ENABLED,
|
||||
@@ -68,6 +70,7 @@ class enrol_self_external_testcase extends externallib_advanced_testcase {
|
||||
$enrolmentmethods = $DB->get_records('enrol', array('courseid' => $course->id, 'status' => ENROL_INSTANCE_ENABLED));
|
||||
$this->assertCount(3, $enrolmentmethods);
|
||||
|
||||
$this->setAdminUser();
|
||||
$instanceinfo1 = enrol_self_external::get_instance_info($instanceid1);
|
||||
$instanceinfo1 = external_api::clean_returnvalue(enrol_self_external::get_instance_info_returns(), $instanceinfo1);
|
||||
|
||||
@@ -95,5 +98,14 @@ class enrol_self_external_testcase extends externallib_advanced_testcase {
|
||||
$this->assertEquals('Test instance 3', $instanceinfo3['name']);
|
||||
$this->assertTrue($instanceinfo3['status']);
|
||||
$this->assertEquals(get_string('password', 'enrol_self'), $instanceinfo3['enrolpassword']);
|
||||
|
||||
// Try to retrieve information using a normal user for a hidden course.
|
||||
$user = self::getDataGenerator()->create_user();
|
||||
$this->setUser($user);
|
||||
try {
|
||||
enrol_self_external::get_instance_info($instanceid3);
|
||||
} catch (moodle_exception $e) {
|
||||
$this->assertEquals('coursehidden', $e->errorcode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,329 @@ require_once($CFG->dirroot . '/enrol/externallib.php');
|
||||
*/
|
||||
class core_enrol_externallib_testcase extends externallib_advanced_testcase {
|
||||
|
||||
/**
|
||||
* dataProvider for test_get_enrolled_users_visibility().
|
||||
*/
|
||||
public function get_enrolled_users_visibility_provider() {
|
||||
return array(
|
||||
'Course without groups, default behavior (not filtering by cap, group, active)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => NOGROUPS,
|
||||
'withcapability' => null,
|
||||
'groupid' => null,
|
||||
'onlyactive' => false,
|
||||
'allowedcaps' => array(),
|
||||
),
|
||||
'results' => array( // Everybody can view everybody.
|
||||
'user0' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'user1' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'user2' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'user31' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'userall' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with visible groups, default behavior (not filtering by cap, group, active)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => VISIBLEGROUPS,
|
||||
'withcapability' => null,
|
||||
'groupid' => null,
|
||||
'onlyactive' => false,
|
||||
'allowedcaps' => array(),
|
||||
),
|
||||
'results' => array( // Everybody can view everybody.
|
||||
'user0' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'user1' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'user2' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'user31' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'userall' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with separate groups, default behavior (not filtering by cap, group, active)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => SEPARATEGROUPS,
|
||||
'withcapability' => null,
|
||||
'groupid' => null,
|
||||
'onlyactive' => false,
|
||||
'allowedcaps' => array(),
|
||||
),
|
||||
'results' => array( // Only users from own groups are visible.
|
||||
'user0' => array('canview' => array()), // Poor guy, cannot see anybody, himself included.
|
||||
'user1' => array('canview' => array('user1', 'userall')),
|
||||
'user2' => array('canview' => array('user2', 'user2su', 'userall')),
|
||||
'user31' => array('canview' => array('user31', 'user32', 'userall')),
|
||||
'userall' => array('canview' => array('user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with separate groups, default behavior (not filtering but having moodle/site:accessallgroups)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => VISIBLEGROUPS,
|
||||
'withcapability' => null,
|
||||
'groupid' => null,
|
||||
'onlyactive' => false,
|
||||
'allowedcaps' => array('moodle/site:accessallgroups'),
|
||||
),
|
||||
'results' => array( // Everybody can view everybody.
|
||||
'user0' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'user1' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'user2' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'user31' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
'userall' => array('canview' => array('user0', 'user1', 'user2', 'user2su', 'user31', 'user32', 'userall')),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with separate groups, filtering onlyactive (missing moodle/course:enrolreview)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => SEPARATEGROUPS,
|
||||
'withcapability' => null,
|
||||
'groupid' => null,
|
||||
'onlyactive' => true,
|
||||
'allowedcaps' => array(),
|
||||
),
|
||||
'results' => array( // returns exception, cannot view anybody without the cap.
|
||||
'user2' => array('exception' => array(
|
||||
'type' => 'required_capability_exception',
|
||||
'message' => 'Review course enrolments')),
|
||||
'userall' => array('exception' => array(
|
||||
'type' => 'required_capability_exception',
|
||||
'message' => 'Review course enrolments')),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with separate groups, filtering onlyactive (having moodle/course:enrolreview)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => SEPARATEGROUPS,
|
||||
'withcapability' => null,
|
||||
'groupid' => null,
|
||||
'onlyactive' => true,
|
||||
'allowedcaps' => array('moodle/course:enrolreview'),
|
||||
),
|
||||
'results' => array( // Suspended are not returned.
|
||||
'user2' => array('canview' => array('user2', 'userall')),
|
||||
'user31' => array('canview' => array('user31', 'user32', 'userall')),
|
||||
'userall' => array('canview' => array('user1', 'user2', 'user31', 'user32', 'userall')),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with separate groups, filtering by groupid (not having moodle/site:accessallgroups)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => SEPARATEGROUPS,
|
||||
'withcapability' => null,
|
||||
'groupid' => 'group2',
|
||||
'onlyactive' => false,
|
||||
'allowedcaps' => array(),
|
||||
),
|
||||
'results' => array( // Only group 2 members and only for members. Exception for non-members.
|
||||
'user0' => array('exception' => array(
|
||||
'type' => 'required_capability_exception',
|
||||
'message' => 'Access all groups')),
|
||||
'user1' => array('exception' => array(
|
||||
'type' => 'required_capability_exception',
|
||||
'message' => 'Access all groups')),
|
||||
'user2' => array('canview' => array('user2', 'user2su', 'userall')),
|
||||
'userall' => array('canview' => array('user2', 'user2su', 'userall')),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with separate groups, filtering by groupid (having moodle/site:accessallgroups)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => SEPARATEGROUPS,
|
||||
'withcapability' => null,
|
||||
'groupid' => 'group2',
|
||||
'onlyactive' => false,
|
||||
'allowedcaps' => array('moodle/site:accessallgroups'),
|
||||
),
|
||||
'results' => array( // All users with 'moodle/site:accessallgroups' can view group 2
|
||||
'user0' => array('canview' => array('user2', 'user2su', 'userall')),
|
||||
'user1' => array('canview' => array('user2', 'user2su', 'userall')),
|
||||
'user2' => array('canview' => array('user2', 'user2su', 'userall')),
|
||||
'userall' => array('canview' => array('user2', 'user2su', 'userall')),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with separate groups, filtering by withcapability (not having moodle/role:review)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => SEPARATEGROUPS,
|
||||
'withcapability' => 'moodle/course:bulkmessaging',
|
||||
'groupid' => null,
|
||||
'onlyactive' => false,
|
||||
'allowedcaps' => array(),
|
||||
),
|
||||
'results' => array( // No user has 'moodle/role:review' so exception.
|
||||
'user0' => array('exception' => array(
|
||||
'type' => 'required_capability_exception',
|
||||
'message' => 'Review permissions for others')),
|
||||
'user1' => array('exception' => array(
|
||||
'type' => 'required_capability_exception',
|
||||
'message' => 'Review permissions for others')),
|
||||
'user2' => array('exception' => array(
|
||||
'type' => 'required_capability_exception',
|
||||
'message' => 'Review permissions for others')),
|
||||
'userall' => array('exception' => array(
|
||||
'type' => 'required_capability_exception',
|
||||
'message' => 'Review permissions for others')),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with separate groups, filtering by withcapability (having moodle/role:review)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => SEPARATEGROUPS,
|
||||
'withcapability' => 'moodle/course:bulkmessaging',
|
||||
'groupid' => null,
|
||||
'onlyactive' => false,
|
||||
'allowedcaps' => array('moodle/role:review'),
|
||||
),
|
||||
'results' => array( // No user has withcapability, but all have 'moodle/role:review'. Empties.
|
||||
'user0' => array('canview' => array()),
|
||||
'user1' => array('canview' => array()),
|
||||
'user2' => array('canview' => array()),
|
||||
'userall' => array('canview' => array()),
|
||||
),
|
||||
),
|
||||
|
||||
'Course with separate groups, filtering by withcapability (having moodle/role:review)' =>
|
||||
array(
|
||||
'settings' => array(
|
||||
'coursegroupmode' => SEPARATEGROUPS,
|
||||
'withcapability' => 'moodle/course:bulkmessaging',
|
||||
'groupid' => null,
|
||||
'onlyactive' => false,
|
||||
'allowedcaps' => array('moodle/role:review', 'moodle/course:bulkmessaging'),
|
||||
),
|
||||
'results' => array( // Users (previous) have withcapability, and all have 'moodle/role:review'.
|
||||
'user0' => array('canview' => array()),
|
||||
'user1' => array('canview' => array('user1')),
|
||||
'user2' => array('canview' => array('user2')),
|
||||
'userall' => array('canview' => array('user1', 'user2', 'userall')),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Verify get_enrolled_users() returned users are the expected in every situation.
|
||||
*
|
||||
* @dataProvider get_enrolled_users_visibility_provider
|
||||
*/
|
||||
public function test_get_enrolled_users_visibility($settings, $results) {
|
||||
|
||||
global $USER;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
// Create the course and the users.
|
||||
$course = $this->getDataGenerator()->create_course(array('groupmode' => $settings['coursegroupmode']));
|
||||
$coursecontext = context_course::instance($course->id);
|
||||
$user0 = $this->getDataGenerator()->create_user(array('username' => 'user0')); // A user without group.
|
||||
$user1 = $this->getDataGenerator()->create_user(array('username' => 'user1')); // User for group 1.
|
||||
$user2 = $this->getDataGenerator()->create_user(array('username' => 'user2')); // Two users for group 2.
|
||||
$user2su = $this->getDataGenerator()->create_user(array('username' => 'user2su')); // (one suspended).
|
||||
$user31 = $this->getDataGenerator()->create_user(array('username' => 'user31')); // Two users for group 3.
|
||||
$user32 = $this->getDataGenerator()->create_user(array('username' => 'user32')); // (both enabled).
|
||||
$userall = $this->getDataGenerator()->create_user(array('username' => 'userall')); // A user in all groups.
|
||||
|
||||
// Create utility array of created users, to produce better assertion messages.
|
||||
$createdusers = array();
|
||||
foreach (array($user0, $user1, $user2, $user2su, $user31, $user32, $userall) as $createduser) {
|
||||
$createdusers[$createduser->id] = $createduser->username;
|
||||
}
|
||||
|
||||
// Enrol the users in the course.
|
||||
$this->getDataGenerator()->enrol_user($user0->id, $course->id);
|
||||
$this->getDataGenerator()->enrol_user($user1->id, $course->id);
|
||||
$this->getDataGenerator()->enrol_user($user2->id, $course->id);
|
||||
$this->getDataGenerator()->enrol_user($user2su->id, $course->id, null, 'manual', 0, 0, ENROL_USER_SUSPENDED);
|
||||
$this->getDataGenerator()->enrol_user($user31->id, $course->id);
|
||||
$this->getDataGenerator()->enrol_user($user32->id, $course->id);
|
||||
$this->getDataGenerator()->enrol_user($userall->id, $course->id);
|
||||
|
||||
// Create 3 groups.
|
||||
$group1 = $this->getDataGenerator()->create_group(array('courseid' => $course->id));
|
||||
$group2 = $this->getDataGenerator()->create_group(array('courseid' => $course->id));
|
||||
$group3 = $this->getDataGenerator()->create_group(array('courseid' => $course->id));
|
||||
|
||||
// Add the users to the groups.
|
||||
$this->getDataGenerator()->create_group_member(array('groupid' => $group1->id, 'userid' => $user1->id));
|
||||
$this->getDataGenerator()->create_group_member(array('groupid' => $group2->id, 'userid' => $user2->id));
|
||||
$this->getDataGenerator()->create_group_member(array('groupid' => $group2->id, 'userid' => $user2su->id));
|
||||
$this->getDataGenerator()->create_group_member(array('groupid' => $group3->id, 'userid' => $user31->id));
|
||||
$this->getDataGenerator()->create_group_member(array('groupid' => $group3->id, 'userid' => $user32->id));
|
||||
$this->getDataGenerator()->create_group_member(array('groupid' => $group1->id, 'userid' => $userall->id));
|
||||
$this->getDataGenerator()->create_group_member(array('groupid' => $group2->id, 'userid' => $userall->id));
|
||||
$this->getDataGenerator()->create_group_member(array('groupid' => $group3->id, 'userid' => $userall->id));
|
||||
|
||||
// Create a role to add the allowedcaps. Users will have this role assigned.
|
||||
$roleid = $this->getDataGenerator()->create_role();
|
||||
// Allow the specified capabilities.
|
||||
if (!empty($settings['allowedcaps'])) {
|
||||
foreach ($settings['allowedcaps'] as $capability) {
|
||||
assign_capability($capability, CAP_ALLOW, $roleid, $coursecontext);
|
||||
}
|
||||
}
|
||||
|
||||
// For each of the users, configure everything, perform the call, and assert results.
|
||||
foreach ($results as $user => $expectations) {
|
||||
// Convert canview expectations into a nice array of ids for easier handling.
|
||||
$canview = array();
|
||||
$exception = null;
|
||||
// Analyse the expectations.
|
||||
if (isset($expectations['canview'])) {
|
||||
foreach ($expectations['canview'] as $canviewuser) {
|
||||
$canview[] = $createdusers[${$canviewuser}->id];
|
||||
}
|
||||
} else if (isset($expectations['exception'])) {
|
||||
$exception = $expectations['exception'];
|
||||
$this->setExpectedException($exception['type'], $exception['message']);
|
||||
} else {
|
||||
// Failed, only canview and exception are supported.
|
||||
$this->markTestIncomplete('Incomplete, only canview and exception are supported');
|
||||
}
|
||||
// Switch to the user and assign the role.
|
||||
$this->setUser(${$user});
|
||||
role_assign($roleid, $USER->id, $coursecontext);
|
||||
|
||||
// Convert groupid to proper id.
|
||||
$groupid = 0;
|
||||
if (isset($settings['groupid'])) {
|
||||
$groupid = ${$settings['groupid']}->id;
|
||||
}
|
||||
|
||||
// Call to the function.
|
||||
$options = array(
|
||||
array('name' => 'withcapability', 'value' => $settings['withcapability']),
|
||||
array('name' => 'groupid', 'value' => $groupid),
|
||||
array('name' => 'onlyactive', 'value' => $settings['onlyactive']),
|
||||
array('name' => 'userfields', 'value' => 'id')
|
||||
);
|
||||
$enrolledusers = core_enrol_external::get_enrolled_users($course->id, $options);
|
||||
|
||||
// We need to execute the return values cleaning process to simulate the web service server.
|
||||
$enrolledusers = external_api::clean_returnvalue(core_enrol_external::get_enrolled_users_returns(), $enrolledusers);
|
||||
|
||||
// We are only interested in ids to check visibility.
|
||||
$viewed = array();
|
||||
// Verify the user canview the expected users.
|
||||
foreach ($enrolledusers as $enrolleduser) {
|
||||
$viewed[] = $createdusers[$enrolleduser['id']];
|
||||
}
|
||||
// Verify viewed matches canview expectation (using canonicalize to ignore ordering).
|
||||
$this->assertEquals($canview, $viewed, "Problem checking visible users for '{$createdusers[$USER->id]}'", 0, 1, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get_enrolled_users
|
||||
*/
|
||||
@@ -229,7 +552,9 @@ class core_enrol_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertNotEmpty($studentrole);
|
||||
|
||||
$course1 = self::getDataGenerator()->create_course();
|
||||
$course2 = self::getDataGenerator()->create_course();
|
||||
$coursedata = new stdClass();
|
||||
$coursedata->visible = 0;
|
||||
$course2 = self::getDataGenerator()->create_course($coursedata);
|
||||
|
||||
// Add enrolment methods for course.
|
||||
$instanceid1 = $selfplugin->add_instance($course1, array('status' => ENROL_INSTANCE_ENABLED,
|
||||
@@ -246,6 +571,8 @@ class core_enrol_externallib_testcase extends externallib_advanced_testcase {
|
||||
$enrolmentmethods = $DB->get_records('enrol', array('courseid' => $course1->id, 'status' => ENROL_INSTANCE_ENABLED));
|
||||
$this->assertCount(2, $enrolmentmethods);
|
||||
|
||||
$this->setAdminUser();
|
||||
|
||||
// Check if information is returned.
|
||||
$enrolmentmethods = core_enrol_external::get_course_enrolment_methods($course1->id);
|
||||
$enrolmentmethods = external_api::clean_returnvalue(core_enrol_external::get_course_enrolment_methods_returns(),
|
||||
@@ -275,5 +602,14 @@ class core_enrol_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertEquals('self', $enrolmentmethod['type']);
|
||||
$this->assertTrue($enrolmentmethod['status']);
|
||||
$this->assertEquals('enrol_self_get_instance_info', $enrolmentmethod['wsfunction']);
|
||||
|
||||
// Try to retrieve information using a normal user for a hidden course.
|
||||
$user = self::getDataGenerator()->create_user();
|
||||
$this->setUser($user);
|
||||
try {
|
||||
core_enrol_external::get_course_enrolment_methods($course2->id);
|
||||
} catch (moodle_exception $e) {
|
||||
$this->assertEquals('coursehidden', $e->errorcode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
This files describes API changes in /enrol/* - plugins,
|
||||
information provided here is intended especially for developers.
|
||||
|
||||
=== 2.7.11 ===
|
||||
|
||||
* External function core_enrol_external::get_enrolled_users now returns only the viewable participants if the course has groups enabled and no groupid is passed.
|
||||
|
||||
=== 2.6 ===
|
||||
|
||||
* Enrolment plugin which supports self enrolment should implement can_self_enrol()
|
||||
|
||||
+4
-1
@@ -1017,7 +1017,10 @@ class core_files_renderer extends plugin_renderer_base {
|
||||
<label class="control-label"></label>
|
||||
|
||||
<div class="controls"><select></select></div>
|
||||
</div>
|
||||
</div>';
|
||||
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
|
||||
$rv .= prevent_form_autofill_password();
|
||||
$rv .= '
|
||||
<div class="fp-login-input control-group clearfix">
|
||||
<label class="control-label"></label>
|
||||
<div class="controls"><input/></div>
|
||||
|
||||
@@ -206,7 +206,6 @@ foreach ($members as $gpgid=>$groupdata) {
|
||||
echo $OUTPUT->heading($groupings[$gpgid]->formattedname, 3);
|
||||
$description = file_rewrite_pluginfile_urls($groupings[$gpgid]->description, 'pluginfile.php', $context->id, 'grouping', 'description', $gpgid);
|
||||
$options = new stdClass;
|
||||
$options->noclean = true;
|
||||
$options->overflowdiv = true;
|
||||
echo $OUTPUT->box(format_text($description, $groupings[$gpgid]->descriptionformat, $options), 'generalbox boxwidthnarrow boxaligncenter');
|
||||
}
|
||||
|
||||
@@ -32,7 +32,10 @@ defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'Не';
|
||||
$string['cliansweryes'] = 'Да';
|
||||
$string['cliincorrectvalueerror'] = 'Грешка, некоректна стойност "{$a->value}" за "{$a->option}"';
|
||||
$string['cliincorrectvalueretry'] = 'Неправилна стойност. Моля опитайте отново';
|
||||
$string['clitypevalue'] = 'Тип стойност';
|
||||
$string['clitypevaluedefault'] = 'въведете стойност, натиснете Enter за да се използва стойността по подразбиране ({$a})';
|
||||
$string['cliyesnoprompt'] = 'Въведете y (означава да) или n (означава не)';
|
||||
$string['environmentrequireinstall'] = 'Трябва да бъде инсталиран и разрешен';
|
||||
$string['environmentrequireversion'] = 'Необходима е версия {$a->needed} а Вие имате {$a->current}';
|
||||
|
||||
@@ -31,6 +31,6 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['language'] = 'Език';
|
||||
$string['next'] = 'Следваща';
|
||||
$string['previous'] = 'Предишна';
|
||||
$string['next'] = 'Още';
|
||||
$string['previous'] = 'Обратно';
|
||||
$string['reload'] = 'Презареждане';
|
||||
|
||||
@@ -35,7 +35,7 @@ $string['cliansweryes'] = 'Sí';
|
||||
$string['cliincorrectvalueerror'] = 'Error, valor incorrecte "{$a->value}" per a "{$a->option}"';
|
||||
$string['cliincorrectvalueretry'] = 'Valor incorrecte, si us plau, torneu-ho a provar.';
|
||||
$string['clitypevalue'] = 'Valor de tipus';
|
||||
$string['clitypevaluedefault'] = 'valor de tipus, premeu Intro per fer servir un valor per defecte ({$a})';
|
||||
$string['clitypevaluedefault'] = 'valor de tipus, premeu la tecla de retorn (<em>Enter</em>) per fer servir un valor per defecte ({$a})';
|
||||
$string['cliunknowoption'] = 'Opcions invàlides:
|
||||
{$a}
|
||||
L\'opció --help us orientarà.';
|
||||
|
||||
@@ -90,5 +90,5 @@ $string['welcomep50'] = 'L\'ús de totes les aplicacions d\'aquest paquet és go
|
||||
<a href="http://www.opensource.org/docs/definition_plain.html">codi font obert</a> i es distribueix
|
||||
sota llicència <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>.';
|
||||
$string['welcomep60'] = 'Les pàgines següents us guiaran per una sèrie de passos fàcils de seguir per configurar <strong>Moodle</strong> en el vostre ordinador. Podeu acceptar els paràmetres per defecte o, opcionalment, modificar-los perquè s\'ajustin a les vostres necessitats.';
|
||||
$string['welcomep70'] = 'Feu clic en el botó "Següent" per continuar la configuració de <strong>Moodle</strong>.';
|
||||
$string['welcomep70'] = 'Feu clic al botó «Següent» per continuar amb la configuració de <strong>Moodle</strong>.';
|
||||
$string['wwwroot'] = 'Adreça web';
|
||||
|
||||
@@ -49,19 +49,19 @@ $string['environmentsub2'] = 'Každé vydání Moodle vyžaduje určitou minimá
|
||||
$string['errorsinenvironment'] = 'Kontrola serverového prostředí selhala!';
|
||||
$string['installation'] = 'Instalace';
|
||||
$string['langdownloaderror'] = 'Bohužel, jazyk "{$a}" se nepodařilo nainstalovat. Instalace bude pokračovat v angličtine.';
|
||||
$string['memorylimithelp'] = '<p>Limit paměti pro PHP skripty je na vašem serveru momentálně nastaven na hodnotu {$a}.</p>
|
||||
$string['memorylimithelp'] = '<p>Limit paměti pro PHP skripty je na vašem serveru momentálně nastaven na {$a}.</p>
|
||||
|
||||
<p>To může později způsobovat Moodlu problémy, zvláště při větším množství modulů a/nebo uživatelů.</p>
|
||||
|
||||
<p>Je-li to možné, doporučujeme vám nastavit v PHP vyšší limit, např. 40M. Můžete to provést několika způsoby:
|
||||
<p>Je-li to možné, doporučujeme vám nastavit v PHP vyšší limit, např. 40M. Můžete to provést několika způsoby:</p>
|
||||
<ol>
|
||||
<li>Můžete-li, překompilujte PHP s volbou <i>--enable-memory-limit</i>.
|
||||
Moodle si tak bude sám moci nastavit potřebný limit.</li>
|
||||
<li>Máte-li přístup k souboru php.ini, změňte nastavení <b>memory_limit</b>
|
||||
na hodnotu blízkou 40M. Nemáte-li taková práva, požádejte správce vašeho webového serveru, aby toto nastavení provedl on.</li>
|
||||
<li>Na některých serverech můžete v kořenovém adresáři Moodlu vytvořit soubor .htaccess s následujícím řádkem:
|
||||
<p><blockquote>php_value memory_limit 40M</blockquote></p>
|
||||
<p>Bohužel, v některých případech tím vyřadíte z provozu <b>všechny</b> PHP stránky (při jejich prohlížení uvidíte chybová hlášení), takže budete muset soubor .htaccess zase odstranit.</li>
|
||||
<blockquote><div>php_value memory_limit 40M</div></blockquote>
|
||||
<p>Bohužel, v některých případech tím vyřadíte z provozu <b>všechny</b> PHP stránky (při jejich prohlížení uvidíte chybová hlášení), takže budete muset soubor .htaccess zase odstranit.</p></li>
|
||||
</ol>';
|
||||
$string['paths'] = 'Cesty';
|
||||
$string['pathserrcreatedataroot'] = 'Datový adresář ({$a->dataroot}) nemůže být tímto průvodcem instalací vytvořen.';
|
||||
@@ -79,7 +79,7 @@ $string['phpversion'] = 'Verze PHP';
|
||||
$string['phpversionhelp'] = '<p>Moodle vyžaduje PHP alespoň verze 4.3.0 nebo 5.1.0 (PHP 5.0.x obsahuje množství chyb).</p>
|
||||
<p>Nyní používáte PHP verze {$a}.</p>
|
||||
<p>Musíte PHP upgradovat, nebo přejít k hostiteli s vyšší verzí!<br />
|
||||
(U PHP 5.0.x můžete také přejít na nižší verzi 4.4.x či 4.3.x.)</p>';
|
||||
(U PHP 5.0.x můžete také přejít na nižší verzi 4.4.x )</p>';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
$string['welcomep20'] = 'Podařilo se vám úspěšně nainstalovat a spustit balíček <strong>{$a->packname} {$a->packversion}</strong>. Gratulujeme!';
|
||||
$string['welcomep30'] = '<strong>{$a->installername}</strong> obsahuje aplikace k vytvoření prostředí, ve kterém bude provozován váš <strong>Moodle</strong>. Jmenovitě se jedná o:';
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = 'da';
|
||||
$string['thislanguage'] = 'Dansk (kursus)';
|
||||
@@ -30,6 +30,15 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'ο';
|
||||
$string['cliansweryes'] = 'ν';
|
||||
$string['cliincorrectvalueerror'] = 'Σφάλμα, λανθασμένη τιμή "{$a->value}" για το "{$a->option}"';
|
||||
$string['cliincorrectvalueretry'] = 'Λανθασμένη τιμή, παρακαλώ προσπαθήστε ξανά';
|
||||
$string['clitypevalue'] = 'δώσε μία τιμή';
|
||||
$string['clitypevaluedefault'] = 'δώσε μία τιμή, πάτησε Enter για να χρησιμοποιήσεις τη προκαθορισμένη τιμή ({$a})';
|
||||
$string['cliunknowoption'] = 'Μη αναγνωρίσιμες επιλογές:
|
||||
{$a}
|
||||
Παρακαλώ χρησιμοποιείστε την επιλογή --βοήθεια';
|
||||
$string['cliyesnoprompt'] = 'πατώντας ν (σημαίνει ναι) αλλιώς πατώντας ο (σημαίνει όχι)';
|
||||
$string['environmentrequireinstall'] = 'απαιτείται να εγκατασταθεί/ ενεργοποιηθεί';
|
||||
$string['environmentrequireversion'] = 'απαιτείται η έκδοση {$a->needed} ενώ εσείς έχετε την {$a->current}';
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['admindirname'] = 'Directorio Admin';
|
||||
$string['availablelangs'] = 'Lista de idiomas disponibles';
|
||||
$string['availablelangs'] = 'Packs de idiomas disponibles';
|
||||
$string['chooselanguagehead'] = 'Seleccionar idioma';
|
||||
$string['chooselanguagesub'] = 'Por favor, seleccione un idioma para el proceso de instalación. Este idioma se usará también como idioma por defecto del sitio, si bien puede cambiarse más adelante.';
|
||||
$string['clialreadyconfigured'] = 'El archivo de configuración config.php ya existe. Por favor, utilice admin/cli/install_database.php para instalar Moodle en este sitio.';
|
||||
@@ -74,7 +74,7 @@ $string['pathsroparentdataroot'] = 'El directorio padre ({$a->parent}) no tiene
|
||||
$string['pathssubadmindir'] = 'Muy pocos servidores web usan /admin como un URL especial para acceder a un
|
||||
panel de control o algo similar. Lamentablemente, esto entra en conflicto con la ubicación estándar para las páginas de administración de Moodle. Usted puede solucionar este problema, renombrando el directorio admin en su instalación Moodle, poniendo un nuevo nombre aquí. Por ejemplo: <em> moodleadmin </em>. Esto solucionará los enlaces de administración en instalación Moodle.';
|
||||
$string['pathssubdataroot'] = 'Usted necesita un espacio donde Moodle puede guardar los archivos subidos. En este directorio debe poder LEER y ESCRIBIR el usuario del servidor web (por lo general \'nobody\', \'apache\' o \'www-data\'), pero no debe poderse acceder a esta carpeta directamente a través de la web. El instalador tratará de crearla si no existe.';
|
||||
$string['pathssubdirroot'] = 'Ruta completa del directorio de instalación de Moodle.';
|
||||
$string['pathssubdirroot'] = '<p>Ruta completa del directorio que contiene el código de Moodle.</p>';
|
||||
$string['pathssubwwwroot'] = 'Dirección web completa para acceder a Moodle. No es posible acceder a Moodle utilizando múltiples direcciones. Si su sitio tiene varias direcciones públicas debe configurar redirecciones permanentes en todas ellas, excepto en ésta. Si su sitio web es accesible tanto desde una intranet como desde Internet, escriba aquí la dirección pública y configure su DNS para que los usuarios de su intranet puedan también utilizar la dirección pública.';
|
||||
$string['pathsunsecuredataroot'] = 'La ubicación de dataroot no es segura';
|
||||
$string['pathswrongadmindir'] = 'El directorio admin no existe';
|
||||
|
||||
@@ -45,7 +45,7 @@ $string['downloadedfilecheckfailed'] = 'Ha fallado la comprobación del archivo
|
||||
$string['invalidmd5'] = 'La variable de verificación MD5 es incorrecta no es valida - trate nuevamente';
|
||||
$string['missingrequiredfield'] = 'Falta algún campo necesario';
|
||||
$string['remotedownloaderror'] = '<p>Falló la descarga del componente a su servidor. Se recomienda ampliamente verificar los ajustes del proxy, extensión PHP cURL.</p>
|
||||
<p>Debe descargar el<a href="{$a->url}">{$a->url}</a> archivo manualmente, copiarlo en "{$a->dest}" en su servidor y descomprimirlo allí..</p>';
|
||||
<p>Debe descargar el<a href="{$a->url}">{$a->url}</a> archivo manualmente, copiarlo en "{$a->dest}" en su servidor y descomprimirlo allí.</p>';
|
||||
$string['wrongdestpath'] = 'Ruta de destino errónea.';
|
||||
$string['wrongsourcebase'] = 'Base de fuente de URL errónea.';
|
||||
$string['wrongzipfilename'] = 'Nombre de archivo ZIP erróneo.';
|
||||
|
||||
@@ -30,17 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['admindirname'] = 'Dossier d\'administration';
|
||||
$string['dataroot'] = 'Dossier de données';
|
||||
$string['dbprefix'] = 'Préfixe des tables';
|
||||
$string['dirroot'] = 'Dossier Moodle';
|
||||
$string['installation'] = 'Installation';
|
||||
$string['memorylimithelp'] = '<p>La limite de mémoire de PHP sur votre serveur est actuellement de {$a}.</p> <p>Cette valeur très faible risque de générer des problèmes de manque de mémoire pour Moodle, notamment si vous utilisez beaucoup de modules et/ou si vous avez un grand nombre d\'utilisateurs.</p> <p>Il est recommandé de configurer PHP avec une limite de mémoire aussi élevée que possible, par exemple 16 Mo. Vous pouvez obtenir cela de différentes façons :
|
||||
<ol>
|
||||
<li>si vous en avez la possibilité, recompilez PHP avec l\'option <i>--enable-memory-limit</i>. Cela permettra à Moodle de fixer lui-même sa limite de mémoire ;</li>
|
||||
<li>si vous avez accès à votre fichier « php.ini », vous pouvez attribuer au paramètre <b>memory_limit</b> une valeur comme 40M. Si vous n\'y avez pas accès, demandez à l\'administrateur de le faire pour vous ;</li>
|
||||
<li>sur certains serveur, vous pouvez créer dans le dossier principal de Moodle un fichier « .htaccess » contenant cette ligne : <p><blockquote>php_value memory_limit 40M</blockquote></p> <p>Cependant, sur certains serveur, cela empêchera le fonctionnement correcte de <b>tous</b> les fichiers PHP (vous verrez s\'afficher des erreurs lors de la consultation de pages). Dans ce cas, vous devrez supprimer le fichier « .htaccess ».</li>
|
||||
</ol>';
|
||||
$string['phpversion'] = 'Version de PHP';
|
||||
$string['phpversionhelp'] = '<p>Moodle nécessite au minimum la version 4.1.0 de PHP.</p> <p>Vous utilisez actuellement la version {$a}.</p> <p>Pour que Moodle fonctionne, vous devez mettre à jour PHP ou aller chez un hébergeur ayant une version récente de PHP.</p>';
|
||||
$string['wwwroot'] = 'Adresse web';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Non é posíbel crear a base de datos.</p>
|
||||
<p>A base de datos especificada non existe e o usuario indicado non ten permiso para crear a base de datos.</p>
|
||||
<p>O administrador do sitio debería verificar a configuración da base de datos.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Non se pode crear o directorio de idioma';
|
||||
$string['cannotcreatetempdir'] = 'Non se pode crear un directorio temporal';
|
||||
$string['cannotdownloadcomponents'] = 'Non foi posíbel descargar compoñentes';
|
||||
@@ -39,9 +42,12 @@ $string['cannotsavemd5file'] = 'Non é posíbel gardar o ficheiro md5';
|
||||
$string['cannotsavezipfile'] = 'Non é posíbel gardar o ficheiro ZIP';
|
||||
$string['cannotunzipfile'] = 'Non é posíbel descomprimir o ficheiro';
|
||||
$string['componentisuptodate'] = 'O compoñente está actualizado';
|
||||
$string['dmlexceptiononinstall'] = '<p>Produciuse un erro na base de datos [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'A comprobación do ficheiro descargado non foi satisfactoria';
|
||||
$string['invalidmd5'] = 'md5 non válido';
|
||||
$string['missingrequiredfield'] = 'Falta algún campo obrigatorio';
|
||||
$string['remotedownloaderror'] = '<p>Fallo a descarga do compoñente cara o seu servidor. Recomendase encarecidamente que verifiqoe os axustes do proxy, extensión PHP cURL.</p>
|
||||
<p>Debe descargar o ficheiro <a href="{$a->url}">{$a->url}</a> manualmente, copialo en «{$a->dest}» no seu servidor e descomprimilo alí.</p>';
|
||||
$string['wrongdestpath'] = 'Camiño de destino errado.';
|
||||
$string['wrongsourcebase'] = 'URL da fonte errado.';
|
||||
$string['wrongzipfilename'] = 'Nome de ficheiro ZIP errado.';
|
||||
|
||||
@@ -36,7 +36,7 @@ $string['cliincorrectvalueerror'] = 'שגיאה: ערך לא תקין
|
||||
"{$a->value}" עבור "{$a->option}"';
|
||||
$string['cliincorrectvalueretry'] = 'ערך שגוי, נסה שנית';
|
||||
$string['clitypevalue'] = 'סוג הערך';
|
||||
$string['clitypevaluedefault'] = 'סוג הערך, הקש Enter לשימוש בערך ברירת מחדל ({$a})';
|
||||
$string['clitypevaluedefault'] = 'יש להזין ערך, או להקיש על כפתור Enter לשימוש בערך בררת־המחדל ({$a})';
|
||||
$string['cliunknowoption'] = 'אפשרויות לא מוכרות :
|
||||
{$a}
|
||||
אנא השתמש באפשרות העזרה.';
|
||||
|
||||
@@ -35,8 +35,8 @@ $string['cannotcreatetempdir'] = 'לא ניתן ליצור סיפרייה זמנ
|
||||
$string['cannotdownloadcomponents'] = 'לא ניתן להוריד רכיבים.';
|
||||
$string['cannotdownloadzipfile'] = 'לא ניתן להוריד קובץ ZIP.';
|
||||
$string['cannotfindcomponent'] = 'הרכיב לא נמצא.';
|
||||
$string['cannotsavemd5file'] = 'לא ניתן לשמור קובץ md5.';
|
||||
$string['cannotsavezipfile'] = 'לא ניתן לשמור קובץ ZIP.';
|
||||
$string['cannotsavemd5file'] = 'לא ניתן לשמור קובץ md5';
|
||||
$string['cannotsavezipfile'] = 'לא ניתן לשמור קובץ ZIP';
|
||||
$string['cannotunzipfile'] = 'לא ניתן לפתוח את קובץ ה-ZIP.';
|
||||
$string['componentisuptodate'] = 'הרכיב מעודכן.';
|
||||
$string['downloadedfilecheckfailed'] = 'נכשלה בדיקת הקובץ המורד.';
|
||||
|
||||
@@ -32,8 +32,8 @@ defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['admindirname'] = 'ספריית מנהל המערכת';
|
||||
$string['availablelangs'] = 'חבילות שפה זמינות';
|
||||
$string['chooselanguagehead'] = 'בחר שפה';
|
||||
$string['chooselanguagesub'] = 'אנא בחר שפה עבור ההתקנה בלבד. תוכל לבחור בשפה שונה לאתר ולמשתמש באחד מהמסכים הבאים.';
|
||||
$string['chooselanguagehead'] = 'בחירת שפה';
|
||||
$string['chooselanguagesub'] = 'יש לבחור שפה עבור ההתקנה בלבד. תוכל לבחור בשפה שונה לאתר ולמשתמש באחד מהמסכים הבאים.';
|
||||
$string['clialreadyconfigured'] = 'קובץ config.php כבר קיים, אנא השתמש ב
|
||||
admin/cli/install_database.php
|
||||
אם ברצונך להתקין את אתר זה.';
|
||||
@@ -42,7 +42,7 @@ $string['clialreadyinstalled'] = 'קובץ ה-config.php קיים כבר, אנא
|
||||
$string['cliinstallheader'] = 'תוכנית התקנת Moodle {$a} בשורת הפקודה';
|
||||
$string['databasehost'] = 'מסד הנתונים המארח (host)';
|
||||
$string['databasename'] = 'שם מסד הנתונים';
|
||||
$string['databasetypehead'] = 'בחר התקן מסד הנתונים';
|
||||
$string['databasetypehead'] = 'בחירת התקן מסד הנתונים';
|
||||
$string['dataroot'] = 'ספריית הנתונים';
|
||||
$string['datarootpermission'] = 'הרשאות תיקיות bתונים (data)';
|
||||
$string['dbprefix'] = 'Tables prefix';
|
||||
@@ -104,7 +104,7 @@ $string['welcomep50'] = 'השימוש בכל היישומים בחבילה זו
|
||||
<a href="http://www.opensource.org/docs/definition_plain.html">קוד פתוח</a>
|
||||
והיא מופצת תחת רשיון
|
||||
<a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>';
|
||||
$string['welcomep60'] = 'העמודים הבאים יובילו אותך בצורה פשוטה דרך כמה צעדים לעיצוב הגדרות <strong>Moodle</strong> במחשבך.
|
||||
תוכל לאשר את הגדרות ברירת המחדל או, באפשרותך, לשנותם לפי צרכיך.';
|
||||
$string['welcomep60'] = 'העמודים הבאים יובילו אותך בצורה פשוטה דרך כמה צעדים לקביעת הגדרות <strong>Moodle</strong> בשרת.
|
||||
ניתן לאשר הגדרות בררת־המחדל או לשנותם לפי צרכיך.';
|
||||
$string['welcomep70'] = 'הקש על לחצן ה"המשך" למטה כדי להמשיך עם הגדרת ה-<strong>Moodle</strong>';
|
||||
$string['wwwroot'] = 'כתובת האתר';
|
||||
|
||||
@@ -32,6 +32,7 @@ defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'एन';
|
||||
$string['cliansweryes'] = 'वाई';
|
||||
$string['cliincorrectvalueerror'] = 'त्रुटि, "{$a->option}" के लिए गलत मान जो की "{$a->value}" है';
|
||||
$string['cliincorrectvalueretry'] = 'ग़लत मान, कृपया पुनः प्रयास करें';
|
||||
$string['clitypevalue'] = 'टाइप मूल्य';
|
||||
$string['cliyesnoprompt'] = 'टाइप Y (का मतलब है हाँ) या N (का मतलब है नहीं )';
|
||||
|
||||
@@ -39,4 +39,4 @@ $string['clitypevaluedefault'] = 'unesite vrijednost ili pritisnite Enter za kor
|
||||
$string['cliunknowoption'] = 'Nepoznate opcije: {$a} Molimo koristite --help opciju.';
|
||||
$string['cliyesnoprompt'] = 'unesite y (znači da) ili n (znači ne)';
|
||||
$string['environmentrequireinstall'] = 'je neophodno instalirati/omogućiti';
|
||||
$string['environmentrequireversion'] = 'neophodna inačica je {$a->needed}, a vi trenutno koristite inačicu {$a->current}';
|
||||
$string['environmentrequireversion'] = 'neophodna inačica je {$a->needed}, a vi trenutačno koristite inačicu {$a->current}';
|
||||
|
||||
@@ -41,7 +41,7 @@ $string['cannotunzipfile'] = 'Nije moguće otpakirati datoteku';
|
||||
$string['componentisuptodate'] = 'Komponenta je dostupna u svojoj najnovijoj inačici.';
|
||||
$string['downloadedfilecheckfailed'] = 'Došlo je do pogreške pri provjeri preuzete datoteke';
|
||||
$string['invalidmd5'] = 'Neispravna md5 datoteka';
|
||||
$string['missingrequiredfield'] = 'Nedostaje neko obvezno polje';
|
||||
$string['missingrequiredfield'] = 'Nedostaje neko obvezatno polje';
|
||||
$string['remotedownloaderror'] = 'Nije uspjelo preuzimanje komponente na poslužitelj, provjerite postavke proxyja. Preporuča se uporaba PHP cURL dodatka.<br /><br />Ručno preuzmite datoteku s <a href="{$a->url}">{$a->url}</a> iskopirajte ju u "{$a->dest}" na poslužitelju i raspakirajte.';
|
||||
$string['wrongdestpath'] = 'Pogrešna odredišna putanja.';
|
||||
$string['wrongsourcebase'] = 'Pogrešna baza izvornog URL-a';
|
||||
|
||||
@@ -45,12 +45,12 @@ $string['datarootpermission'] = 'Ovlasti nad mapom s podacima';
|
||||
$string['dbprefix'] = 'Prefiks tablice';
|
||||
$string['dirroot'] = 'Moodle mapa';
|
||||
$string['environmenthead'] = 'Provjera okruženja vašeg poslužitelja ...';
|
||||
$string['environmentsub2'] = 'Svaka inačica Moodle-a ima minimalne zahtjeve po pitanju odgovarajuće PHP inačice i nekoliko obveznih PHP ekstenzija.
|
||||
$string['environmentsub2'] = 'Svaka inačica Moodle-a ima minimalne zahtjeve po pitanju odgovarajuće PHP inačice i nekoliko obvezatnih PHP ekstenzija.
|
||||
Puna provjera okruženja se obavlja prije svake instalacije ili nadogradnje postojeće inačice. Ako ne znate kako instalirati novu inačicu ili omogućiti PHP ekstenzije, kontaktirajte administratora vašeg poslužitelja.';
|
||||
$string['errorsinenvironment'] = 'Pogreške u okruženju poslužitelja!';
|
||||
$string['installation'] = 'Instalacija';
|
||||
$string['langdownloaderror'] = 'Nažalost, jezik "{$a}" nije instaliran. Proces instalacije će biti nastavljen na engleskom jeziku.';
|
||||
$string['memorylimithelp'] = '<p>PHP ograničenje memorije na poslužitelju je trenutno podešeno na {$a}.</p>
|
||||
$string['memorylimithelp'] = '<p>PHP ograničenje memorije na poslužitelju je trenutačno podešeno na {$a}.</p>
|
||||
|
||||
<p>Ova postavka može kasnije rezultirati memorijskim problemima na vašem Moodle sustavu, posebno ako imate veći broj omogućenih modula i/ili veći broj korisnika.</p>
|
||||
|
||||
@@ -78,7 +78,7 @@ $string['pathsunsecuredataroot'] = 'Podatkovna (dataroot) mapa nije sigurna';
|
||||
$string['pathswrongadmindir'] = 'Admin mapa ne postoji';
|
||||
$string['phpextension'] = 'PHP ekstenzija {$a}';
|
||||
$string['phpversion'] = 'PHP inačica';
|
||||
$string['phpversionhelp'] = '<p>Moodle zahtijeva najmanje PHP inačicu 4.3.0 ili 5.1.0 (5.0.x funkcionira uz brojne uočene probleme).</p> <p>Trenutno imate inačicu {$a}</p> <p>Morate nadograditi PHP ili premestiti Moodle instalaciju na web poslužitelj s novijom inačicom PHP-a!</br> (U slučaju inačice 5.0.x bilo bi najbolje da je vratite na inačicu 4.4.x)</p>';
|
||||
$string['phpversionhelp'] = '<p>Moodle zahtijeva najmanje PHP inačicu 4.3.0 ili 5.1.0 (5.0.x funkcionira uz brojne uočene probleme).</p> <p>Trenutačno imate inačicu {$a}</p> <p>Morate nadograditi PHP ili premestiti Moodle instalaciju na web poslužitelj s novijom inačicom PHP-a!</br> (U slučaju inačice 5.0.x bilo bi najbolje da je vratite na inačicu 4.4.x)</p>';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
$string['welcomep20'] = 'Prikazana vam je ova stranica jer ste uspješno instalirali i pokrenuli <strong>{$a->packname} {$a->packversion}</strong> paket na svom poslužitelju. Čestitamo!';
|
||||
$string['welcomep30'] = 'Ova inačica <strong>{$a->installername}</strong> uključuje aplikacije za stvaranje okruženja u kojem će sustav <strong>Moodle</strong> uspješno funkcionirati, konkretno:';
|
||||
|
||||
@@ -35,7 +35,7 @@ $string['cannotcreatedboninstall'] = '<p>データベースを作成できませ
|
||||
<p>サイト管理者はデータベース設定を確認してください。</p>';
|
||||
$string['cannotcreatelangdir'] = 'langディレクトリを作成できません。';
|
||||
$string['cannotcreatetempdir'] = 'tempディレクトリを作成できません。';
|
||||
$string['cannotdownloadcomponents'] = 'コンポーネットをダウンロードできません。';
|
||||
$string['cannotdownloadcomponents'] = 'コンポーネントをダウンロードできません。';
|
||||
$string['cannotdownloadzipfile'] = 'ZIPファイルをダウンロードできません。';
|
||||
$string['cannotfindcomponent'] = 'コンポーネントを見つけることができません。';
|
||||
$string['cannotsavemd5file'] = 'mp5ファイルを保存できません。';
|
||||
|
||||
+32
-21
@@ -33,10 +33,10 @@ defined('MOODLE_INTERNAL') || die();
|
||||
$string['admindirname'] = 'Adminディレクトリ';
|
||||
$string['availablelangs'] = '利用可能な言語パック';
|
||||
$string['chooselanguagehead'] = '言語を選択してください。';
|
||||
$string['chooselanguagesub'] = 'インストールのみに使用する言語を選択してください。この言語は、サイトのデフォルト言語としても使用されます。サイト言語は、後で変更することが可能です。';
|
||||
$string['clialreadyconfigured'] = '設定ファイルconfig.phpはすでに登録されています。このサイトをインストールしたい場合、admin/cli/install_database.phpを使用してください。';
|
||||
$string['clialreadyinstalled'] = '設定ファイルconfig.phpは、すでに登録されています。あなたのサイトをアップグレードしたい場合、admin/cli/upgrade.phpを使用してください。';
|
||||
$string['cliinstallheader'] = 'Moodle {$a} コマンドライン・インストールプログラム';
|
||||
$string['chooselanguagesub'] = 'インストールのみに使用する言語を選択してください。この言語はサイトのデフォルト言語としても使用されます。後でサイト言語を変更することができます。';
|
||||
$string['clialreadyconfigured'] = '設定ファイルconfig.phpはすでに登録されています。このサイトをインストールする場合、admin/cli/install_database.phpを使用してください。';
|
||||
$string['clialreadyinstalled'] = '設定ファイルconfig.phpは、すでに登録されています。このサイトをアップグレードする場合、admin/cli/upgrade.phpを使用してください。';
|
||||
$string['cliinstallheader'] = 'Moodle {$a} コマンドラインインストールプログラム';
|
||||
$string['databasehost'] = 'データベースホスト :';
|
||||
$string['databasename'] = 'データベース名 :';
|
||||
$string['databasetypehead'] = 'データベースドライバを選択する';
|
||||
@@ -45,44 +45,55 @@ $string['datarootpermission'] = 'データディレクトリパーミッショ
|
||||
$string['dbprefix'] = 'テーブル接頭辞';
|
||||
$string['dirroot'] = 'Moodleディレクトリ';
|
||||
$string['environmenthead'] = 'あなたの環境を確認しています ...';
|
||||
$string['environmentsub2'] = 'それぞれのMoodleリリースには、PHPバージョンの最小必要条件および多くの必須PHP拡張モジュールがあります。完全な環境チェックは、インストールおよびアップグレードごとに実行されます。新しいPHPバージョンのインストールまたはPHP拡張モジュールの有効化に関して分からない場合、あなたのサーバ管理者に連絡してください。';
|
||||
$string['environmentsub2'] = 'それぞれのMoodleリリースにはPHPバージョンの最小必要条件および多くの必須PHP拡張モジュールがあります。完全な環境チェックはインストールおよびアップグレードごとに実行されます。新しいPHPバージョンのインストールまたはPHP拡張モジュールの有効化に関して分からない場合、あなたのサーバ管理者にご連絡ください。';
|
||||
$string['errorsinenvironment'] = '環境チェックが失敗しました!';
|
||||
$string['installation'] = 'インストレーション';
|
||||
$string['langdownloaderror'] = '残念ですが、言語「 {$a} 」がインストールされていません。インストール処理は英語で継続されます。';
|
||||
$string['memorylimithelp'] = '<p>現在、サーバのPHPメモリー制限が {$a} に設定されています。</p>
|
||||
$string['langdownloaderror'] = '残念ですが、言語「 {$a} 」をダウンロードできませんでした。インストール処理は英語で継続されます。';
|
||||
$string['memorylimithelp'] = '<p>現在、サーバのPHPメモリ制限が {$a} に設定されています。</p>
|
||||
|
||||
<p>この設定ではMoodleのメモリーに関わるトラブルが発生する可能性があります。 特に多くのモジュールを使用したり、多くのユーザがMoodleを使用する場合にトラブルが発生します。</p>
|
||||
<p>この設定ではMoodleのメモリに関わるトラブルが発生する可能性があります。 特に多くのモジュールを使用したり、多くのユーザがMoodleを使用する場合にトラブルが発生します。</p>
|
||||
|
||||
<p>可能でしたら、PHPのメモリー制限上限を40M以上に設定されることをお勧めします。この設定を実現するために、いくつかの方法があります:
|
||||
<p>可能でしたら、PHPのメモリ制限上限を40M以上に設定されることをお勧めします。この設定を実現するために、いくつかの方法があります:
|
||||
<ol>
|
||||
<li>あなたがリコンパイル可能な場合、PHPを<i>--enable-memory-limit</i>オプションでコンパイルしてください。これにより、Moodle自身がメモリー制限を設定することが可能になります。</li>
|
||||
<li>あなたがリコンパイル可能な場合、PHPを<i>--enable-memory-limit</i>オプションでコンパイルしてください。これにより、Moodle自身がメモリ制限を設定することが可能になります。</li>
|
||||
<li>あなたがphp.iniファイルにアクセスできる場合、<b>memory_limit</b>設定を40Mのように変更することができます。php.iniファイルにアクセスできない場合、管理者に変更を依頼してください。</li>
|
||||
<li>いくつかのPHPサーバでは、下記の行を含む.htaccessファイルをMoodleディレクトリに作成することができます:
|
||||
<blockquote><div>php_value memory_limit 40M</div></blockquote>
|
||||
<p>しかし、この設定が<b>すべての</b>PHPページの動作を妨げる場合もあります。ページ閲覧中にエラーが表示される場合、.htaccessファイルを削除してください。</p></li>
|
||||
</ol>';
|
||||
$string['paths'] = 'パス';
|
||||
$string['pathserrcreatedataroot'] = 'データディレクトリ ({$a->dataroot}) は、インストーラーで作成できません。';
|
||||
$string['pathserrcreatedataroot'] = 'データディレクトリ ({$a->dataroot}) はインストーラーで作成できません。';
|
||||
$string['pathshead'] = 'パスを確認する';
|
||||
$string['pathsrodataroot'] = 'datarootディレクトリに書き込み権がありません。';
|
||||
$string['pathsroparentdataroot'] = '親ディレクトリ ({$a->parent}) に書き込み権がありません。データディレクトリ ({$a->dataroot}) は、インストーラーで作成できません。';
|
||||
$string['pathssubadmindir'] = '極わずかですが、あなたがコントロールパネル等にアクセスするため、特別なURLとして/adminを使用するウェブホストがあります。残念なことに、これはMoodle管理ページの標準的なローケーションと競合してしまいます。ここに新しいディレクトリ名を入力することで、あなたのMoodleのadminディレクトリを修正することができます。例えば、<em>moodleadmin</em>です。これにより、Moodleのadminリンクが修正されます。';
|
||||
$string['pathssubdataroot'] = 'あなたには、Moodleがファイルをアップロードすることのできる場所が必要です。このディレクトリは、ウェブサーバユーザ (通常「nobody」または「apache」) から読み込みおよび「書き込み」できる必要があります。しかし、ウェブからは直接アクセスできないようにしてください。データディレクトリがない場合、インストーラーは作成を試みます。';
|
||||
$string['pathssubdirroot'] = 'Moodleコードを含むディレクトリに関するフルパスです。';
|
||||
$string['pathssubwwwroot'] = 'Moodleにアクセスすることのできるフルウェブアドレスです。複数アドレスを使用して、Moodleにアクセスすることはできません。あなたのサイトに複数のパブリックアドレスがある場合、このアドレスを除く、すべてのアドレスにパーマネントリダイレクトを設定してください。あなたのサイトにイントラネットおよびインターネットからアクセスできる場合、ここにはパブリックアドレスを入力してください。また、イントラネットユーザもパブリックアドレスを利用できるよう、DNSを設定してください。アドレスが正しくない場合、あなたのブラウザのURLを変更して、異なる値でインストールを再開してください。';
|
||||
$string['pathsunsecuredataroot'] = 'dirrootロケーションが安全ではありません。';
|
||||
$string['pathsroparentdataroot'] = '親ディレクトリ ({$a->parent}) に書き込み権がありません。データディレクトリ ({$a->dataroot}) はインストーラーで作成できません。';
|
||||
$string['pathssubadmindir'] = 'まれに、コントロールパネルまたはその他の管理ツールにアクセスするためのURLとして/adminディレクトリを使用しているウェブホストがあります。残念ですが、これはMoodle管理ページの標準的なロケーションと衝突します。あなたはインストール時にadminディレクトリをリネームすることができます。ここに新しいディレクトリ名を入力してください。例: <br /> <br /><b>moodleadmin</b><br /> <br />
|
||||
これによりMoodleでのadminへのリンクを変更します。';
|
||||
$string['pathssubdataroot'] = '<p>ユーザによってアップロードされたファイルコンテンツすべてをMoodleが保存するディレクトリです。</p>
|
||||
<p>このディレクトリはウェブサーバユーザ (通常「nobody」または「apache」) から読み込みおよび書き込みできる必要があります。</p>
|
||||
<p>ウェブからは直接アクセスできないようにしてください。</p>
|
||||
<p>現在ディレクトリが存在しない場合、インストレーションプロセスは作成を試みます。</p';
|
||||
$string['pathssubdirroot'] = '<p>Moodleコードを含むディレクトリに関するフルパスです。</p>';
|
||||
$string['pathssubwwwroot'] = '<p>Moodleにアクセスすることのできるフルウェブアドレスです。例えば、ユーザがブラウザのアドレスバーに入力してMoodleにアクセスするためのアドレスです。</p>
|
||||
|
||||
<p>複数アドレスを使用してMoodleにアクセスすることはできません。あなたのサイトに複数アドレスからアクセスできる場合、最も簡単なアドレスを選択して、すべてのアドレスにパーマネントリダイレクトを設定してください。</p>
|
||||
|
||||
<p>あなたのサイトにインターネットおよび内部ネットワーク (イントラネットと呼ばれます) からアクセスできる場合、ここではパブリックアドレスを使用してください。</p>
|
||||
|
||||
<p>現在のアドレスが正しくない場合、あなたのブラウザのURLを変更して、異なる値でインストレーションを再開してください。</p>';
|
||||
$string['pathsunsecuredataroot'] = 'dataroot ロケーションが安全ではありません。';
|
||||
$string['pathswrongadmindir'] = 'adminディレクトリがありません。';
|
||||
$string['phpextension'] = '{$a} PHP拡張モジュール';
|
||||
$string['phpversion'] = 'PHPバージョン';
|
||||
$string['phpversionhelp'] = '<p>Moodleには、少なくとも 4.3.0 または 5.1.0 のPHPバージョンが必要です (5.0.x には既知の多数の問題があります)。</p>
|
||||
$string['phpversionhelp'] = '<p>Moodleには少なくとも4.3.0または5.1.0のPHPバージョンが必要です (5.0.x には既知の多数の問題があります)。</p>
|
||||
<p>現在、バージョン {$a} が動作しています。</p>
|
||||
<p>PHPをアップグレードするか、新しいバージョンがインストールされているホストに移動してください!<br />
|
||||
(5.0.x の場合、バージョン 4.4.x にダウングレードすることもできます。)</p>';
|
||||
(5.0.x の場合、anataha
|
||||
バージョン 4.4.x にダウングレードすることもできます。)</p>';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
$string['welcomep20'] = 'インストールが正常に完了して、あなたのコンピュータで <strong>{$a->packname} {$a->packversion}</strong> パッケージが起動されたため、このページが表示されています。おめでとうございます!';
|
||||
$string['welcomep30'] = 'このリリース <strong>{$a->installername}</strong> には<strong>Moodle</strong>で環境を作成するアプリケーションが含まれています。すなわち:';
|
||||
$string['welcomep40'] = 'パッケージには <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong> も含まれています。';
|
||||
$string['welcomep50'] = 'このパッケージ内のすべてのアプリケーションの使用は個々のライセンスによって規定されています。全体の <strong>{$a->installername}</strong> パッケージは <a href="http://www.opensource.org/docs/definition_plain.html">オープンソース</a> であり、<a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>ライセンスの下で配布されています。';
|
||||
$string['welcomep60'] = '次からのページは、あなたのコンピュータに<strong>Moodle</strong>を簡単に設定およびセットアップする手順にしたがって進みます。あなたはデフォルトの設定を使用することも、必要に応じて任意で設定を変更することもできます。';
|
||||
$string['welcomep50'] = 'このパッケージ内のすべてのアプリケーションの使用は個々のライセンスによって規定されています。全体の<strong>{$a->installername}</strong>パッケージは<a href="http://www.opensource.org/docs/definition_plain.html">オープンソース</a>であり、<a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>ライセンスの下で配布されています。';
|
||||
$string['welcomep60'] = '次からのページはあなたのコンピュータに<strong>Moodle</strong>を簡単に設定およびセットアップする手順にしたがって進みます。あなたはデフォルトの設定を使用することも、必要に応じて任意で設定を変更することもできます。';
|
||||
$string['welcomep70'] = '<strong>Moodle</strong>のセットアップを続けるには「次へ」ボタンをクリックしてください。';
|
||||
$string['wwwroot'] = 'ウェブアドレス';
|
||||
|
||||
@@ -34,7 +34,14 @@ $string['admindirname'] = 'Директориум аdmin';
|
||||
$string['availablelangs'] = 'Достапни јазични пакети';
|
||||
$string['chooselanguagehead'] = 'Изберете јазик';
|
||||
$string['chooselanguagesub'] = 'Изберете јазик САМО за инсталацијата. Подоцна ќе можете да изберете јазик за страницата и за корисниците.';
|
||||
$string['clialreadyconfigured'] = 'Конфигурациската датотека config.php веќе постои. Ве молиме користете ја admin/cli/install_database.php за да го инсталирате Moodle на овој сајт.';
|
||||
$string['clialreadyinstalled'] = 'Конфигурациската датотека config.php веќе постои. Ве молиме користете ја admin/cli/install_database.php за да го надградите Moodle за овој сајт.';
|
||||
$string['cliinstallheader'] = 'Програма за инсталирање на Moodle {$a} командна линија';
|
||||
$string['databasehost'] = 'Домаќин на базата на податоци';
|
||||
$string['databasename'] = 'Име на базата на податоци';
|
||||
$string['databasetypehead'] = 'Одбери го двигателот на базата за податоци';
|
||||
$string['dataroot'] = 'Директориум';
|
||||
$string['datarootpermission'] = 'Дозвола за директориумот за податоци';
|
||||
$string['dbprefix'] = 'Префикс на табели';
|
||||
$string['dirroot'] = 'Moodle директориум';
|
||||
$string['environmenthead'] = 'Ја проверувам околината...';
|
||||
@@ -58,6 +65,7 @@ $string['memorylimithelp'] = '<p>Прагот на меморијата кај P
|
||||
<p><blockquote>php_value memory_limit 40M</blockquote></p>
|
||||
<p>Како и да е, на некои компјутери, ова може да ги спречи <b>сите </b> PHP страници да работат (ќе забележите грешки на страниците) па ќе треба да ја преместите датотеката .htaccess.</p></li>
|
||||
</ol>';
|
||||
$string['pathswrongadmindir'] = 'Администраторскиот директориум не постои';
|
||||
$string['phpversion'] = 'Верзија на PHP';
|
||||
$string['phpversionhelp'] = '<p>На Moodle му е потребна верзија на PHP, и тоа најмалку 4.1.0. </p>
|
||||
<p>Моментално работите на верзијата {$a} </p>
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'n';
|
||||
$string['cliansweryes'] = 'y';
|
||||
$string['cliincorrectvalueerror'] = 'Error, valor incorrècta « {$a->value} » peu paramètre « {$a->option} »';
|
||||
$string['cliincorrectvalueretry'] = 'Valor incorrècta, tornatz ensajar';
|
||||
$string['clitypevalue'] = 'tipe valor';
|
||||
$string['clitypevaluedefault'] = 'tipe valor, sasitz Entrada per utilizar la valor per defaut ({$a})';
|
||||
$string['cliunknowoption'] = 'Opcions pas reconegudas :
|
||||
{$a}.
|
||||
Utilizatz l\'opcion --help.';
|
||||
$string['cliyesnoprompt'] = 'Picatz y (per òc) o n (per non)';
|
||||
$string['environmentrequireinstall'] = 'deu èster installat e activat';
|
||||
$string['environmentrequireversion'] = 'la version {$a->needed} qu\'ei requerida ; utilizatz actuaument la version {$a->current}';
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Impossible de crear la banca de dadas.</p>
|
||||
<p>La banca de dadas indicada n\'existeish pas e l\'utilizaire especificat a pas las autorizacions que permeton de crear ua banca de dadas.</p>.
|
||||
<p>L\'administrator deu site deu repassar la configuracion de la banca de dadas.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Creacion deu dossièr lang impossible';
|
||||
$string['cannotcreatetempdir'] = 'Creacion deu dossièr temp impossibla';
|
||||
$string['cannotdownloadcomponents'] = 'Telecargament deus components impossible';
|
||||
$string['cannotdownloadzipfile'] = 'Telecargament deu fichèr ZIP impossible';
|
||||
$string['cannotfindcomponent'] = 'Component introbable';
|
||||
$string['cannotsavemd5file'] = 'Enregistrament deu fichèr md5 impossible';
|
||||
$string['cannotsavezipfile'] = 'Enregistrament deu fichèr ZIP impossible';
|
||||
$string['cannotunzipfile'] = 'Descompression deu fichèr ZIP impossibla';
|
||||
$string['componentisuptodate'] = 'Lo component qu\'ei a dia';
|
||||
$string['dmlexceptiononinstall'] = '<p>Ua error de banca de dadas que s\'ei produsida [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'La verificacion deu fichèr telecargat s\'i ei mauescadut';
|
||||
$string['invalidmd5'] = 'Lo còde de contraròtle md5 n\'ei pas valid';
|
||||
$string['missingrequiredfield'] = 'Un camp obligatòri n\'ei pas completat';
|
||||
$string['remotedownloaderror'] = '<p>Lo telecargament deu component suu vòste servidor s\'i ei mauescadut. Verificatz los reglatges de proxy. L\'extension cURL de PHP qu\'ei bravament recomandada.</p>
|
||||
<p>Que\'vs cau telecargar manuaument lo fichèr <a href="{$a->url}">{$a->url}</a>, lo copiar suu vòste servidor a l\'emplaçament « {$a->dest} » e lo descompressar a aqueste endret.</p>';
|
||||
$string['wrongdestpath'] = 'Camin de destinacion incorrècte';
|
||||
$string['wrongsourcebase'] = 'Adreça URL de basa de la hont incorrècta';
|
||||
$string['wrongzipfilename'] = 'Nom de fichèr ZIP incorrècte';
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['admindirname'] = 'Dossièr d\'administracion';
|
||||
$string['availablelangs'] = 'Paquetatges de lenga disponibles';
|
||||
$string['chooselanguagehead'] = 'Causitz ua lenga';
|
||||
$string['cliinstallheader'] = 'Programa d\'installacion de Moodle {$a} en linha de comanda';
|
||||
$string['databasehost'] = 'Servidor de banca de dadas';
|
||||
$string['databasename'] = 'Nom de la banca de dadas';
|
||||
$string['databasetypehead'] = 'Seleccionar un pilòt de banca de dadas';
|
||||
$string['dataroot'] = 'Dossièr de dadas';
|
||||
$string['dbprefix'] = 'Prefix de las taulas';
|
||||
$string['dirroot'] = 'Dossièr Moodle';
|
||||
$string['environmenthead'] = 'Verificacion de l\'environament...';
|
||||
$string['errorsinenvironment'] = 'Mauescaduda de la verificacion de l\'environament !';
|
||||
$string['installation'] = 'Installacion';
|
||||
$string['paths'] = 'Camins';
|
||||
$string['pathserrcreatedataroot'] = 'Lo dossièr de dadas ({$a->dataroot}) ne pòt pas èster creat per l\'installador.';
|
||||
$string['pathshead'] = 'Confirmar los camins d\'accès';
|
||||
$string['pathsrodataroot'] = 'Lo dossièr de dadas n\'ei pas accessible en escritura.';
|
||||
$string['pathsunsecuredataroot'] = 'L\'emplaçament deu dossièr de dadas n\'ei pas segur';
|
||||
$string['pathswrongadmindir'] = 'Lo dossièr d\'administracion n\'existeish pas';
|
||||
$string['phpextension'] = 'Extension PHP {$a}';
|
||||
$string['phpversion'] = 'Version de PHP';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
$string['wwwroot'] = 'Adreça web';
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = '';
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Gascon';
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['language'] = 'Lenga';
|
||||
$string['next'] = 'Seguent';
|
||||
$string['previous'] = 'Precedent';
|
||||
$string['reload'] = 'Actualizar';
|
||||
@@ -42,7 +42,7 @@ $string['cannotsavemd5file'] = 'Enregistrament del fichièr md5 impossible';
|
||||
$string['cannotsavezipfile'] = 'Enregistrament del fichièr ZIP impossible';
|
||||
$string['cannotunzipfile'] = 'Descompression del fichièr ZIP impossibla';
|
||||
$string['componentisuptodate'] = 'Lo component es a jorn';
|
||||
$string['dmlexceptiononinstall'] = '<p>Una error de banca de donadas s\'es produsida [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['dmlexceptiononinstall'] = '<p>Una error de banca de donadas s\'es producha [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'La verificacion del fichièr telecargat a fracassat';
|
||||
$string['invalidmd5'] = 'Lo còde de contraròtle md5 es pas valid';
|
||||
$string['missingrequiredfield'] = 'Un camp obligatòri es pas completat';
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['language'] = 'Langue';
|
||||
$string['language'] = 'Lenga';
|
||||
$string['next'] = 'Seguent';
|
||||
$string['previous'] = 'Precedent';
|
||||
$string['reload'] = 'Actualizar';
|
||||
|
||||
@@ -31,4 +31,4 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Српски';
|
||||
$string['thislanguage'] = 'ଓଡ଼ିଆ';
|
||||
@@ -34,8 +34,8 @@ $string['clianswerno'] = 'n';
|
||||
$string['cliansweryes'] = 's';
|
||||
$string['cliincorrectvalueerror'] = 'Erro: o valor "{$a->value}" não é permitido para a opção "{$a->option}"';
|
||||
$string['cliincorrectvalueretry'] = 'Valor incorreto, por favor tente novamente';
|
||||
$string['clitypevalue'] = 'valor do tipo';
|
||||
$string['clitypevaluedefault'] = 'valor do tipo, pressione a tecla Enter para usar o valor predefinido ({$a})';
|
||||
$string['clitypevalue'] = 'introduza valor';
|
||||
$string['clitypevaluedefault'] = 'introduza valor, pressione a tecla Enter para usar o valor predefinido ({$a})';
|
||||
$string['cliunknowoption'] = 'Opções desconhecidas: {$a} Por favor use a opção --help';
|
||||
$string['cliyesnoprompt'] = 'digite s (para sim) ou n (para não)';
|
||||
$string['environmentrequireinstall'] = 'deve estar instalada e ativa';
|
||||
|
||||
@@ -55,7 +55,7 @@ $string['pathserrcreatedataroot'] = 'O programa de instalação não conseguiu c
|
||||
$string['pathshead'] = 'Confirmar caminhos';
|
||||
$string['pathsrodataroot'] = 'A pasta de dados não tem permissões de escrita.';
|
||||
$string['pathsroparentdataroot'] = 'A pasta pai <b>{$a->parent}</b> não tem permissões de escrita. O programa de instalação não conseguiu criar a pasta <b>{$a->dataroot}</b>.';
|
||||
$string['pathssubadmindir'] = 'Alguns servidores Web utilizam a pasta <strong>admin</strong> em URLs especiais de acesso a funcionalidades especiais, como é o caso de painéis de controlo. Algumas situações podem criar conflitos com a localização normal das páginas de administração do Moodle. Estes problemas podem ser resolvidos renomeando a pasta <strong>admin</strong> na instalação do Moodle e indicando aqui o novo nome a utilizar. Por exemplo:<br /><br /><b>moodleadmin</b><br /><br />Esta ação resolverá os problemas de acesso dos links para as funcionalidades de administração do Moodle.';
|
||||
$string['pathssubadmindir'] = 'Alguns servidores Web utilizam a pasta <strong>admin</strong> em URLs especiais de acesso a funcionalidades especiais, como é o caso de painéis de controlo. Algumas situações podem criar conflitos com a localização normal das páginas de administração do Moodle. Estes problemas podem ser resolvidos renomeando a pasta <strong>admin</strong> na instalação do Moodle e indicando aqui o novo nome a utilizar. Por exemplo:<br /><br /><b>moodleadmin</b><br /><br />Esta ação resolverá os problemas de acesso das hiperligações para as funcionalidades de administração do Moodle.';
|
||||
$string['pathssubdataroot'] = '<p>Uma diretoria em que o Moodle irá armazenar todo o conteúdo de ficheiros enviados pelos utilizadores.</p>
|
||||
<p>Esta diretoria deve ser legível e gravável pelo utilizador do servidor web (geralmente \'www-data\', \'nobody\', ou \'apache\').</p>
|
||||
<p>Não deve ser diretamente acessível através da web.</p>
|
||||
|
||||
@@ -46,7 +46,7 @@ $string['dmlexceptiononinstall'] = '<p> Ocorreu um erro no banco de dados [{$a->
|
||||
$string['downloadedfilecheckfailed'] = 'A verificação do arquivo baixado falhou';
|
||||
$string['invalidmd5'] = 'A variável de verificação estava errada - tente novamente';
|
||||
$string['missingrequiredfield'] = 'Faltam informações obrigatórias';
|
||||
$string['remotedownloaderror'] = 'O download do componente falhou, por favor verifique as configurações do proxy. A extensão cURL do PHP é altamente recomendada.<br /><br />Você precisar baixar o <a href="{$a->url}">arquivo</a> manualmente, copiar para "{$a->dest}" e descompactar lá.';
|
||||
$string['remotedownloaderror'] = '<p>O download do componente falhou, por favor verifique as configurações do proxy. A extensão cURL do PHP é altamente recomendada.<p/><p>Você precisar baixar o <a href="{$a->url}">arquivo</a> manualmente, copiar para "{$a->dest}" e descompactar lá.<p/>';
|
||||
$string['wrongdestpath'] = 'Caminho do destino errado';
|
||||
$string['wrongsourcebase'] = 'URL do recurso errada';
|
||||
$string['wrongzipfilename'] = 'Nome do arquivo ZIP errado';
|
||||
|
||||
@@ -31,11 +31,11 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['admindirname'] = 'Diretório admin';
|
||||
$string['availablelangs'] = 'Lista de idiomas disponíveis';
|
||||
$string['availablelangs'] = 'Pacotes de idioma disponíveis';
|
||||
$string['chooselanguagehead'] = 'Escolha um idioma';
|
||||
$string['chooselanguagesub'] = 'Por favor, escolha o idioma para a instalação.Este idioma também será utilizado como idioma padrão do site, embora você possa mudar mais tarde.';
|
||||
$string['clialreadyconfigured'] = 'Arquivo config.php já existente. Por favor use admin/cli/install_database.php se você quer instalar este site';
|
||||
$string['clialreadyinstalled'] = 'O arquivo config.php já existe, por favor use admin/cli/upgrade.php, se você quiser atualizar este site.';
|
||||
$string['clialreadyconfigured'] = 'Arquivo config.php já existe. Por favor, use admin/cli/install_database.php para instalar o Moodle neste site.';
|
||||
$string['clialreadyinstalled'] = 'Arquivo config.php já existe. Por favor use admin/cli/install_database.php para atualizar o Moodle neste site.';
|
||||
$string['cliinstallheader'] = 'Programa de instalação por linha de comando do Moodle {$a}';
|
||||
$string['databasehost'] = 'Host da base de dados';
|
||||
$string['databasename'] = 'Nome da base de dados';
|
||||
@@ -69,11 +69,15 @@ $string['pathshead'] = 'Confirme os caminhos';
|
||||
$string['pathsrodataroot'] = 'O diretório de dados raiz não pode ser acessado para escrita.';
|
||||
$string['pathsroparentdataroot'] = 'O diretório pai ({$a->parent}) não pode ser escrito. O diretório de dados ({$a->dataroot}) não pode ser criado pelo instalador.';
|
||||
$string['pathssubadmindir'] = 'Alguns poucos webhosts usam /admin como um URL especial para acesso ao painel de controle ou outras coisas. Infelizmente isto conflita com a localizaçao padrão das páginas do administrador Moodle. Você pode corrigir isso renomeando a pasta admin na sua instalação, e colocando esse novo nome aqui. Por exemplo: <em>moodleadmin</em>. Isto irá corrigir os links das páginas do administrador Moodle.';
|
||||
$string['pathssubdataroot'] = 'Você precisa de um local onde o Moodle possa salvar arquivos enviados. Este diretório deve possuir permissões de leitura e escrita pelo usuário do servidor web
|
||||
(geralmente \'nobody\' ou \'apache \'), mas não deverá ser acessível diretamente através da web. O instalador irá tentar criá-lo se ele não existir.';
|
||||
$string['pathssubdirroot'] = 'Caminho completo do diretório para instalação do Moddle.';
|
||||
$string['pathssubwwwroot'] = 'Endereço web completo onde o Moodle será acessado.
|
||||
Não é possível acessar o Moodle usando múltiplos endereços. Se seu site tem múltiplos endereços públicos você deve configurar redirecionamentos permantentes em todos eles exceto esse. Se seu site é acessado tanto da Intranet como Internet, use o endereço público aqui e configure o DNS para que os usuários da Intranet possam usar o endereço público também. Se o endereço não estiver correto, por favo mude a URL no seu navegador para reiniciar a instalação com um valor diferente.';
|
||||
$string['pathssubdataroot'] = '<p>Um diretório em que Moodle pode armazenar todo o conteúdo de arquivos enviados pelos usuários. </p>
|
||||
<p>Este diretório deve ser legível e gravável tanto pelo usuário do servidor web (geralmente "www-data \',\' nobody \', ou\' apache\'). </p>
|
||||
<p>Não deve ser diretamente acessível através da web. </p>
|
||||
<p>Se o diretório não existir atualmente, o processo de instalação irá tentar criá-la. </p>';
|
||||
$string['pathssubdirroot'] = '<p>Caminho completo do diretório para instalação do Moddle.</p>';
|
||||
$string['pathssubwwwroot'] = '<p>O endereço completo em que Moodle pode ser acessado ou seja, o endereço que os usuários vão digitar na barra de endereços do seu navegador para acessar Moodle. </p>
|
||||
<p>Não é possível acessar Moodle usando múltiplos endereços. Se o seu site é acessível através de múltiplos endereços, em seguida, escolher o mais fácil e configurar um redirecionamento permanente para cada um dos outros endereços. </p>
|
||||
<p>Se o seu site é acessível tanto a partir da Internet e, a partir de uma rede interna (às vezes chamado de Intranet), em seguida, use o endereço público aqui. </p>
|
||||
<p>Se o endereço atual não está correto, por favor, mude o URL na barra de endereços do navegador e reiniciar a instalação. </p>';
|
||||
$string['pathsunsecuredataroot'] = 'A localização da pasta de dados não é segura.';
|
||||
$string['pathswrongadmindir'] = 'Diretório Admin não existe';
|
||||
$string['phpextension'] = 'Extensão PHP {$a}';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Nu se poate crea baza de date.</p>
|
||||
<p>Baza de date specificată nu există iar utilizatorul nu are permisiunea de a crea baza de date.</p>
|
||||
<p>Admistratorul site-ului trebuie să verfice configurarea bazei de date.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Nu se poate crea un director lang';
|
||||
$string['cannotcreatetempdir'] = 'Nu se poate crea director temporar';
|
||||
$string['cannotdownloadcomponents'] = 'Nu se pot descărca componente';
|
||||
|
||||
@@ -34,6 +34,8 @@ $string['admindirname'] = 'Director Admin';
|
||||
$string['availablelangs'] = 'Pachete de limbă disponibile';
|
||||
$string['chooselanguagehead'] = 'Selectare limbă';
|
||||
$string['chooselanguagesub'] = 'Vă rugăm selectaţi limba pentru interfaţa de instalare, limba selectată va fi folosită EXCLUSIV în cadrul procedurii de instalare. Ulterior veţi putea selecta limba în care doriţi să fie afişată interfaţa.';
|
||||
$string['clialreadyconfigured'] = 'Fișierul de configurare';
|
||||
$string['clialreadyinstalled'] = 'Fișierul de configurare config.php există deja. Vă rugăm să folosiți dmin/cli/install_database.php to pentru a upgrada Moodle pentru acest site.';
|
||||
$string['databasehost'] = 'Gazdă baza de date';
|
||||
$string['databasename'] = 'Nume baza de date';
|
||||
$string['databasetypehead'] = 'Alegere driver baza de date';
|
||||
@@ -43,8 +45,13 @@ $string['dbprefix'] = 'Prefix tabele';
|
||||
$string['dirroot'] = 'Director Moodle';
|
||||
$string['environmenthead'] = 'Se verifică mediul...';
|
||||
$string['installation'] = 'Instalare';
|
||||
$string['langdownloaderror'] = 'Din păcate, limba "{$a}" nu a putut fi descărcată. Procesul de instalare va continua în limba engleză.';
|
||||
$string['paths'] = 'Căi';
|
||||
$string['pathshead'] = 'Confirmare căi';
|
||||
$string['pathsrodataroot'] = 'Directorul dataroot nu poate fi scris.';
|
||||
$string['pathssubdirroot'] = '<p>Calea completă către directorul care conține codul Moodle .</p>';
|
||||
$string['pathsunsecuredataroot'] = 'Locația dataroot nu este sigură';
|
||||
$string['pathswrongadmindir'] = 'Directorul admin nu există';
|
||||
$string['phpextension'] = 'extensie PHP {$a}';
|
||||
$string['phpversion'] = 'Versiune PHP';
|
||||
$string['welcomep10'] = '{$a->installername} ({$a->installerversion})';
|
||||
|
||||
@@ -38,7 +38,7 @@ $string['clialreadyinstalled'] = 'Súbor config.php už existuje. Použite admin
|
||||
$string['cliinstallheader'] = 'Mooodle {$a} inštalačný program z príkazového riadku';
|
||||
$string['databasehost'] = 'Databázový server';
|
||||
$string['databasename'] = 'Názov databázy';
|
||||
$string['databasetypehead'] = 'Vyberte driver pre databázu';
|
||||
$string['databasetypehead'] = 'Vyberte ovládač pre databázu';
|
||||
$string['dataroot'] = 'Adresár pre údaje';
|
||||
$string['dbprefix'] = 'Predpona tabuliek';
|
||||
$string['dirroot'] = 'Adresár Moodle';
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = 'no';
|
||||
$string['thislanguage'] = 'Sørsamisk';
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = 'no';
|
||||
$string['thislanguage'] = 'Lulesamisk';
|
||||
@@ -67,15 +67,15 @@ $string['pathshead'] = 'Потврди путање';
|
||||
$string['pathsrodataroot'] = 'У директоријум за податке није могућ упис';
|
||||
$string['pathsroparentdataroot'] = 'Није могућ упис у надређени директоријум ({$a->parent}). Инсталациони програм не може да креира директоријум за податке ({$a->dataroot}).';
|
||||
$string['pathssubadmindir'] = 'Врло мали број веб сервера користи /admin као специјални URL за приступ разним подешавањима (контролни панел и сл.). Нажалост, то доводи до конфликта са стандардном локацијом за администраторске странице у Moodleu. Овај проблем можете решити тако што ћете променити име администраторског директоријума у вашој инсталацији, и овде уписати то ново име. На пример <em>moodleadmin</em>. Ово подешавање ће преправити администраторске линкове у Moodle систему.';
|
||||
$string['pathssubdataroot'] = '<p>Директоријум у којем ћe Moodle чувати садржај свих датотека које су корисници поставили на сервер.</p>
|
||||
<p>Овај директоријум мора да има одобрена овлашћења за читање и уписивање од стране корисника веб сервера (обично \'www-data\', \'nobody\', или \'apache\').</p>
|
||||
<p>Директоријум не сме да буде директно доступан преко интернета.</p>
|
||||
<p>Ако директоријум тренутно не постоји процес за инсталацију ће покушати да га креира.</p>';
|
||||
$string['pathssubdataroot'] = '<p>Директоријум где ће Moodle чувати датотеке и садржај који су поставили корисници. </p>
|
||||
<p>Овај директоријум треба да буде подешен тако да корисник веб сервера (обично \'nobody\' или \'apache\') може да га чита и у њега уписује.</p>
|
||||
<p>Директоријум не сме бити доступан директно преко веба. </p>
|
||||
<p>Уколико овај директоријум не постоји процес инсталације ће покушати да га креира.</p>';
|
||||
$string['pathssubdirroot'] = '<p>Пуна путања до директоријума који садржи код Moodlea.</p>';
|
||||
$string['pathssubwwwroot'] = '<p> Пуна интернет адреса путем које ће се приступати Moodleu тј. адреса коју ће корисници унети у поље за веб адресу својих читача како би приступили сајту.</p>
|
||||
<p> Није могуће приступати Moodleu коришћењем више адреса. Ако се вашем сајту може приступити преко више адреса онда изаберите најлакшу и подесите перманентну редирекцију за све преостале адресе.</p>
|
||||
<p>Ако је ваш сајт доступан и преко интернета и унутар локалне мреже (интранет), онда овде унесите јавну адресу.</p>
|
||||
<p>Ако тренутна адреса није исправна, молимо вас промените URL у пољу за адресу вашег читача и поново покрените инсталацију.</p>';
|
||||
$string['pathssubwwwroot'] = '<p>Пуна адреса путем које ће се приступати Moodleu, тј. адреса коју ће корисници унети у адресну траку својих веб читача како би приступили Moodleu.</p>
|
||||
<p>Није могуће приступати Moodleu коришћењем више адреса Ако се вашем сајту може приступити са више адреса, онда изаберите најлакшу, а за све остале адресе подесите перманентну редирекцију.</p>
|
||||
<p>Ако се вашем сајту може приступити са интернета али и са унутрашње мреже (која се понекад назив интранет), онда овде употребите јавну адресу.</p>
|
||||
<p>Ако је текућа адреса нетачна, молимо вас, промените URL адресу у адресној траци свог веб читача и поново покрените инсталацију.</p>';
|
||||
$string['pathsunsecuredataroot'] = 'Dataroot локација није безбедна';
|
||||
$string['pathswrongadmindir'] = 'Админ директоријум не постоји';
|
||||
$string['phpextension'] = '{$a} PHP екстензија';
|
||||
|
||||
@@ -67,15 +67,15 @@ $string['pathshead'] = 'Potvrdi putanje';
|
||||
$string['pathsrodataroot'] = 'U direktorijum za podatke nije moguć upis';
|
||||
$string['pathsroparentdataroot'] = 'Nije moguć upis u nadređeni direktorijum ({$a->parent}). Instalacioni program ne može da kreira direktorijum za podatke ({$a->dataroot}).';
|
||||
$string['pathssubadmindir'] = 'Vrlo mali broj veb servera koristi /admin kao specijalni URL za pristup raznim podešavanjima (kontrolni panel i sl.). Nažalost, to dovodi do konflikta sa standardnom lokacijom za administratorske stranice u Moodleu. Ovaj problem možete rešiti tako što ćete promeniti ime administratorskog direktorijuma u vašoj instalaciji, i ovde upisati to novo ime. Na primer <em>moodleadmin</em>. Ovo podešavanje će prepraviti administratorske linkove u Moodle sistemu.';
|
||||
$string['pathssubdataroot'] = '<p>Direktorijum u kojem će Moodle čuvati sadržaj svih datoteka koje su korisnici postavili na server.</p>
|
||||
<p>Ovaj direktorijum mora da ima odobrena ovlašćenja za čitanje i upisivanje od strane korisnika veb servera (obično \'www-data\', \'nobody\', ili \'apache\').</p>
|
||||
<p>Direktorijum ne sme da bude direktno dostupan preko interneta.</p>
|
||||
<p>Ako direktorijum trenutno ne postoji proces za instalaciju će pokušati da ga kreira.</p>';
|
||||
$string['pathssubdataroot'] = '<p>Direktorijum gde će Moodle čuvati datoteke i sadržaj koji su postavili korisnici. </p>
|
||||
<p>Ovaj direktorijum treba da bude podešen tako da korisnik veb servera (obično \'nobody\' ili \'apache\') može da ga čita i u njega upisuje.</p>
|
||||
<p>Direktorijum ne sme biti dostupan direktno preko veba. </p>
|
||||
<p>Ukoliko ovaj direktorijum ne postoji proces instalacije će pokušati da ga kreira.</p>';
|
||||
$string['pathssubdirroot'] = '<p>Puna putanja do direktorijuma koji sadrži kod Moodlea.</p>';
|
||||
$string['pathssubwwwroot'] = '<p> Puna internet adresa putem koje će se pristupati Moodleu tj. adresa koju će korisnici uneti u polje za veb adresu svojih čitača kako bi pristupili sajtu.</p>
|
||||
<p> Nije moguće pristupati Moodleu korišćenjem više adresa. Ako se vašem sajtu može pristupiti preko više adresa onda izaberite najlakšu i podesite permanentnu redirekciju za sve preostale adrese.</p>
|
||||
<p>Ako je vaš sajt dostupan i preko interneta i unutar lokalne mreže (intranet), onda ovde unesite javnu adresu.</p>
|
||||
<p>Ako trenutna adresa nije ispravna, molimo vas promenite URL u polju za adresu vašeg čitača i ponovo pokrenite instalaciju.</p>';
|
||||
$string['pathssubwwwroot'] = '<p>Puna adresa putem koje će se pristupati Moodleu, tj. adresa koju će korisnici uneti u adresnu traku svojih veb čitača kako bi pristupili Moodleu.</p>
|
||||
<p>Nije moguće pristupati Moodleu korišćenjem više adresa Ako se vašem sajtu može pristupiti sa više adresa, onda izaberite najlakšu, a za sve ostale adrese podesite permanentnu redirekciju.</p>
|
||||
<p>Ako se vašem sajtu može pristupiti sa interneta ali i sa unutrašnje mreže (koja se ponekad naziv intranet), onda ovde upotrebite javnu adresu.</p>
|
||||
<p>Ako je tekuća adresa netačna, molimo vas, promenite URL adresu u adresnoj traci svog veb čitača i ponovo pokrenite instalaciju.</p>';
|
||||
$string['pathsunsecuredataroot'] = 'Dataroot lokacija nije bezbedna';
|
||||
$string['pathswrongadmindir'] = 'Admin direktorijum ne postoji';
|
||||
$string['phpextension'] = '{$a} PHP ekstenѕija';
|
||||
|
||||
@@ -34,9 +34,9 @@ $string['clianswerno'] = 'n';
|
||||
$string['cliansweryes'] = 'y';
|
||||
$string['cliincorrectvalueerror'] = 'ผิดพลาด, ค่าต่อไปนี้ไม่ถูกต้อง "{$a->value}" สำหรับ "{$a->option}"';
|
||||
$string['cliincorrectvalueretry'] = 'ค่าไม่ถูกต้องกรุณาลองใหม่อีกครั้ง';
|
||||
$string['clitypevalue'] = 'ประเภทของค่า';
|
||||
$string['clitypevalue'] = 'พิมพ์ค่า';
|
||||
$string['clitypevaluedefault'] = 'ประเภทของค่า กด Enter หากต้องการใช้ค่าที่ตั้งไว้ ({$a})';
|
||||
$string['cliunknowoption'] = 'ตัวเลือกที่ไม่สามารถระบุได้ : {$a}';
|
||||
$string['cliunknowoption'] = 'ตัวเลือกที่ไม่สามารถระบุได้ : {$a} กรุณาเลือก การช่วยเหลือ';
|
||||
$string['cliyesnoprompt'] = 'พิมพ์ y (สำหรับ ใช่) หรือ n (สำหรับ ไม่)';
|
||||
$string['environmentrequireinstall'] = 'ต้องการเพื่อทำการติดตั้ง/เปิดใช้งาน';
|
||||
$string['environmentrequireversion'] = 'ต้องการเวอร์ชัน {$a->needed} ขณะนี้ท่านกำลังใช้งานเวอร์ชัน {$a->current}';
|
||||
|
||||
@@ -33,3 +33,4 @@ defined('MOODLE_INTERNAL') || die();
|
||||
$string['language'] = 'ภาษาที่ใช้ในเว็บ';
|
||||
$string['next'] = 'ต่อไป';
|
||||
$string['previous'] = 'หน้าก่อน';
|
||||
$string['reload'] = 'โหลดใหม่';
|
||||
|
||||
@@ -31,4 +31,4 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Српски';
|
||||
$string['thislanguage'] = 'Setswana';
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Automatically generated strings for Moodle installer
|
||||
*
|
||||
* Do not edit this file manually! It contains just a subset of strings
|
||||
* needed during the very first steps of installation. This file was
|
||||
* generated automatically by export-installer.php (which is part of AMOS
|
||||
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
|
||||
* list of strings defined in /install/stringnames.txt.
|
||||
*
|
||||
* @package installer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['thislanguage'] = 'བོད་ཡིག';
|
||||
@@ -39,10 +39,11 @@ $string['cannotsavemd5file'] = '无法保存 md5 文件';
|
||||
$string['cannotsavezipfile'] = '无法保存 ZIP 文件';
|
||||
$string['cannotunzipfile'] = '无法解压文件';
|
||||
$string['componentisuptodate'] = '组件已经是最新的了';
|
||||
$string['dmlexceptiononinstall'] = '<p>发生了一个数据库错误[{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = '下载文件检查失败';
|
||||
$string['invalidmd5'] = '无效的 md5';
|
||||
$string['missingrequiredfield'] = '缺少了必需的字段';
|
||||
$string['remotedownloaderror'] = '下载组件至服务器失败,请校验代理设置,推荐安装 PHP cURL 扩展。<br /><br />您必须手动下载下载<a href="{$a->url}">{$a->url}</a> ,拷贝至服务器上的“{$a->dest}”并解压至此。';
|
||||
$string['remotedownloaderror'] = '<p>下载组件至服务器失败,请校验代理设置,推荐安装 PHP cURL 扩展。</p> <p>您必须手动下载下载<a href="{$a->url}">{$a->url}</a> ,拷贝至服务器上的“{$a->dest}”并解压至此。</p>';
|
||||
$string['wrongdestpath'] = '错误的目标路径';
|
||||
$string['wrongsourcebase'] = '错误的源 URL 基地址。';
|
||||
$string['wrongzipfilename'] = '错误的 ZIP 文件名。';
|
||||
|
||||
@@ -50,15 +50,18 @@ $string['environmentsub2'] = '每一個Moodle版本都有一些PHP版本的最
|
||||
$string['errorsinenvironment'] = '環境檢查失敗!';
|
||||
$string['installation'] = '安裝';
|
||||
$string['langdownloaderror'] = '很不幸地,語言“{$a}”無法下載安裝。此安裝過程將以英文繼續進行。';
|
||||
$string['memorylimithelp'] = '<p>PHP記憶體上限目前設定為{$a}。</p>
|
||||
<p>稍後它可能會造成Moodle記憶體的問題,尤其是您啟動了很多的模組及大量的使用者後。
|
||||
<p>建議您儘可能將PHP的上限設得高一點,比如16M。
|
||||
以下有幾種方式您可以試試:
|
||||
$string['memorylimithelp'] = '<p>你的伺服器的PHP記憶體上限目前設定為{$a}。</p>
|
||||
<p>稍後它可能會造成Moodle記憶體的問題,尤其當您啟動了很多的模組以及有大量的用戶之後。</p>
|
||||
<p>若可能,建議您將PHP的上限設得高一點,比如40M。
|
||||
以下有幾種方式您可以試試:</p>
|
||||
<ol>
|
||||
<li>如果可以的話,用<i>--enable-memory-limit</i>重新編譯PHP。讓Moodle自己設定記憶體上限.
|
||||
<li>如果您要使用php.ini檔, 您可以改變<b>memory_limit</b>這個設定值,例如到16M。如果您無法使用這個檔,您可以請您的管理者幫您做
|
||||
<li>在一些PHP伺服器上,您可以在Moodle目錄下,建立.htaccess檔,包含這行:<p><blockquote>php_value memory_limit 16M</blockquote></p>
|
||||
<p>然而,在一些伺服器上,這將造成<b>所有的</b> PHP 網頁無法運作(當您看這些網頁時,您就會看到錯誤) 因此,您就必須將 .htaccess 檔案移除。
|
||||
<li>如果可以的話,用<i>--enable-memory-limit</i>重新編譯PHP。讓Moodle自己設定記憶體上限。
|
||||
<li>如果您可以更改 php.ini 檔,就改變<b>memory_limit</b> 這個設定值,例如,改到40M。如果您無法更改這個檔案,您可以請寄存主機的管理者幫您做。</li>
|
||||
<li>在一些PHP伺服器上,您可以在Moodle目錄下,建立.htaccess檔,包含這行:
|
||||
|
||||
<blockquote>php_value memory_limit 40M</blockquote>
|
||||
|
||||
<p>然而,在某些伺服器上,這可能造成<b>所有的</b> PHP 網頁無法運作(當您查看這些網頁時,您就會看到錯誤訊息) 因此,您就必須將 .htaccess 檔案移除。</li>
|
||||
</ol>';
|
||||
$string['paths'] = '路徑';
|
||||
$string['pathserrcreatedataroot'] = '資料目錄 ({$a->dataroot})無法由這安裝程式建立';
|
||||
|
||||
+2
-1
@@ -323,7 +323,7 @@ $string['configsitedefaultlicense'] = 'Default site licence';
|
||||
$string['configsitedefaultlicensehelp'] = 'The default licence for publishing content on this site';
|
||||
$string['configsitemaxcategorydepth'] = 'Maximum category depth';
|
||||
$string['configsitemaxcategorydepthhelp'] = 'This specifies the maximum depth of child categories expanded when displaying categories or combo list. Deeper level categories will appear as links and user can expand them with AJAX request.';
|
||||
$string['configslasharguments'] = 'Files (images, uploads etc) are provided via a script using \'slash arguments\'. This method allows files to be more easily cached in web browsers, proxy servers etc. Unfortunately, some PHP servers don\'t allow this method, so if you have trouble viewing uploaded files or images (eg user pictures), disable this setting.';
|
||||
$string['configslasharguments'] = '\'Slash arguments\' (using <em>PATH_INFO</em>) is required for SCORM packages and multiple-file resources to display correctly. If your web server doesn\'t support \'slash arguments\' and you are unable to configure it, this setting can be disabled, though it will result in things not working.<br />Note: The use of \'slash arguments\' will be required in future versions of Moodle.';
|
||||
$string['configsmartpix'] = 'With this on, icons are served through a PHP script that searches the current theme, then all parent themes, then the Moodle /pix folder. This reduces the need to duplicate image files within themes, but has a slight performance cost.';
|
||||
$string['configstartwday'] = 'Start of week';
|
||||
$string['configstatsfirstrun'] = 'This specifies how far back the logs should be processed <b>the first time</b> the cronjob wants to process statistics. If you have a lot of traffic and are on shared hosting, it\'s probably not a good idea to go too far back, as it could take a long time to run and be quite resource intensive. (Note that for this setting, 1 month = 28 days. In the graphs and reports generated, 1 month = 1 calendar month.)';
|
||||
@@ -1055,6 +1055,7 @@ $string['unsettheme'] = 'Unset theme';
|
||||
$string['unsupported'] = 'Unsupported';
|
||||
$string['unsupporteddbstorageengine'] = 'The database storage engine being used is no longer supported.';
|
||||
$string['unsupporteddbtablerowformat'] = 'Your database has tables using Antelope as the file format. You are recommended to convert the tables to the Barracuda file format. See the documentation <a href="https://docs.moodle.org/en/cli">Administration via command line</a> for details of a tool for converting InnoDB tables to Barracuda.';
|
||||
$string['unsupportedphpversion7'] = 'PHP version 7 is not supported.';
|
||||
$string['unsuspenduser'] = 'Activate user account';
|
||||
$string['updateaccounts'] = 'Update existing accounts';
|
||||
$string['updatecomponent'] = 'Update component';
|
||||
|
||||
@@ -32,6 +32,10 @@ require_once(dirname(__FILE__) . '/../../config.php');
|
||||
/** Include course lib for its functions */
|
||||
require_once($CFG->dirroot.'/course/lib.php');
|
||||
|
||||
if (!empty($CFG->forcelogin)) {
|
||||
require_login();
|
||||
}
|
||||
|
||||
try {
|
||||
// Start buffer capture so that we can `remove` any errors
|
||||
ob_start();
|
||||
|
||||
@@ -49,6 +49,9 @@ class core_user {
|
||||
/** @var stdClass keep record of support user */
|
||||
public static $supportuser = false;
|
||||
|
||||
/** @var array store user fields properties cache. */
|
||||
protected static $propertiescache = null;
|
||||
|
||||
/**
|
||||
* Return user object from db or create noreply or support user,
|
||||
* if userid matches corse_user::NOREPLY_USER or corse_user::SUPPORT_USER
|
||||
@@ -238,4 +241,104 @@ class core_user {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Definition of user profile fields and the expected parameter type for data validation.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected static function fill_properties_cache() {
|
||||
|
||||
if (self::$propertiescache !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Array of user fields properties and expected parameters.
|
||||
// Every new field on the user table should be added here otherwise it won't be validated.
|
||||
$fields = array();
|
||||
$fields['id'] = array('type' => PARAM_INT);
|
||||
$fields['auth'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['confirmed'] = array('type' => PARAM_BOOL);
|
||||
$fields['policyagreed'] = array('type' => PARAM_BOOL);
|
||||
$fields['deleted'] = array('type' => PARAM_BOOL);
|
||||
$fields['suspended'] = array('type' => PARAM_BOOL);
|
||||
$fields['mnethostid'] = array('type' => PARAM_BOOL);
|
||||
$fields['username'] = array('type' => PARAM_USERNAME);
|
||||
$fields['password'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['idnumber'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['firstname'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['lastname'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['surname'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['email'] = array('type' => PARAM_RAW_TRIMMED);
|
||||
$fields['emailstop'] = array('type' => PARAM_INT);
|
||||
$fields['icq'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['skype'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['aim'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['yahoo'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['msn'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['phone1'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['phone2'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['institution'] = array('type' => PARAM_TEXT);
|
||||
$fields['department'] = array('type' => PARAM_TEXT);
|
||||
$fields['address'] = array('type' => PARAM_TEXT);
|
||||
$fields['city'] = array('type' => PARAM_TEXT);
|
||||
$fields['country'] = array('type' => PARAM_TEXT);
|
||||
$fields['lang'] = array('type' => PARAM_TEXT);
|
||||
$fields['calendartype'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['theme'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['timezones'] = array('type' => PARAM_TEXT);
|
||||
$fields['firstaccess'] = array('type' => PARAM_INT);
|
||||
$fields['lastaccess'] = array('type' => PARAM_INT);
|
||||
$fields['lastlogin'] = array('type' => PARAM_INT);
|
||||
$fields['currentlogin'] = array('type' => PARAM_INT);
|
||||
$fields['lastip'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['secret'] = array('type' => PARAM_TEXT);
|
||||
$fields['picture'] = array('type' => PARAM_INT);
|
||||
$fields['url'] = array('type' => PARAM_URL);
|
||||
$fields['description'] = array('type' => PARAM_CLEANHTML);
|
||||
$fields['descriptionformat'] = array('type' => PARAM_INT);
|
||||
$fields['mailformat'] = array('type' => PARAM_INT);
|
||||
$fields['maildigest'] = array('type' => PARAM_INT);
|
||||
$fields['maildisplay'] = array('type' => PARAM_INT);
|
||||
$fields['autosubscribe'] = array('type' => PARAM_INT);
|
||||
$fields['trackforums'] = array('type' => PARAM_INT);
|
||||
$fields['timecreated'] = array('type' => PARAM_INT);
|
||||
$fields['timemodified'] = array('type' => PARAM_INT);
|
||||
$fields['trustbitmask'] = array('type' => PARAM_INT);
|
||||
$fields['imagealt'] = array('type' => PARAM_TEXT);
|
||||
$fields['lastnamephonetic'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['firstnamephonetic'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['middlename'] = array('type' => PARAM_NOTAGS);
|
||||
$fields['alternatename'] = array('type' => PARAM_NOTAGS);
|
||||
|
||||
self::$propertiescache = $fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get properties of a user field.
|
||||
*
|
||||
* @param string $property property name to be retrieved.
|
||||
* @throws coding_exception if the requested property name is invalid.
|
||||
* @return array the property definition.
|
||||
*/
|
||||
public static function get_property_definition($property) {
|
||||
|
||||
self::fill_properties_cache();
|
||||
|
||||
if (!array_key_exists($property, self::$propertiescache)) {
|
||||
throw new coding_exception('Invalid property requested.');
|
||||
}
|
||||
|
||||
return self::$propertiescache[$property];
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean the properties cache.
|
||||
*
|
||||
* During unit tests we need to be able to reset all caches so that each new test starts in a known state.
|
||||
* Intended for use only for testing, phpunit calls this before every test.
|
||||
*/
|
||||
public static function reset_caches() {
|
||||
self::$propertiescache = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,6 +103,11 @@ class atto_texteditor extends texteditor {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Remove manage files if requested.
|
||||
if ($plugin == 'managefiles' && isset($options['enable_filemanagement']) && !$options['enable_filemanagement']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$jsplugin = array();
|
||||
$jsplugin['name'] = $plugin;
|
||||
$jsplugin['params'] = array();
|
||||
|
||||
@@ -108,6 +108,13 @@ class tinymce_texteditor extends texteditor {
|
||||
$config->disabledsubplugins = '';
|
||||
}
|
||||
|
||||
// Remove the manage files button if requested.
|
||||
if (isset($options['enable_filemanagement']) && !$options['enable_filemanagement']) {
|
||||
if (!strpos($config->disabledsubplugins, 'managefiles')) {
|
||||
$config->disabledsubplugins .= ',managefiles';
|
||||
}
|
||||
}
|
||||
|
||||
$fontselectlist = empty($config->fontselectlist) ? '' : $config->fontselectlist;
|
||||
|
||||
$langrev = -1;
|
||||
|
||||
@@ -1513,3 +1513,37 @@ function process_environment_result($element, &$result) {
|
||||
/// Process restrict, modifying $result if needed.
|
||||
process_environment_restrict($element, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the current PHP version is greater than or equal to
|
||||
* PHP version 7.
|
||||
*
|
||||
* @param object $result an environment_results instance
|
||||
* @return bool result of version check
|
||||
*/
|
||||
function restrict_php_version_7(&$result) {
|
||||
return restrict_php_version($result, '7');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the current PHP version is greater than or equal to an
|
||||
* unsupported version.
|
||||
*
|
||||
* @param object $result an environment_results instance
|
||||
* @param string $version the version of PHP that can't be used
|
||||
* @return bool result of version check
|
||||
*/
|
||||
function restrict_php_version(&$result, $version) {
|
||||
|
||||
// Get the current PHP version.
|
||||
$currentversion = normalize_version(phpversion());
|
||||
|
||||
// Confirm we're using a supported PHP version.
|
||||
if (version_compare($currentversion, $version, '<')) {
|
||||
// Everything is ok, the restriction doesn't apply.
|
||||
return false;
|
||||
} else {
|
||||
// We're using an unsupported PHP version, apply restriction.
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -376,6 +376,73 @@ class core_files_zip_packer_testcase extends advanced_testcase implements file_p
|
||||
unlink($archive);
|
||||
}
|
||||
|
||||
public function test_close_archive() {
|
||||
global $CFG;
|
||||
|
||||
$this->resetAfterTest(true);
|
||||
|
||||
$archive = "$CFG->tempdir/archive.zip";
|
||||
$textfile = "$CFG->tempdir/textfile.txt";
|
||||
touch($textfile);
|
||||
|
||||
$this->assertFileNotExists($archive);
|
||||
$this->assertFileExists($textfile);
|
||||
|
||||
// Create archive and close it without files.
|
||||
// (returns true, without any warning).
|
||||
$zip_archive = new zip_archive();
|
||||
$result = $zip_archive->open($archive, file_archive::CREATE);
|
||||
$this->assertTrue($result);
|
||||
$result = $zip_archive->close();
|
||||
$this->assertTrue($result);
|
||||
unlink($archive);
|
||||
|
||||
// Create archive and close it with files.
|
||||
// (returns true, without any warning).
|
||||
$zip_archive = new zip_archive();
|
||||
$result = $zip_archive->open($archive, file_archive::CREATE);
|
||||
$this->assertTrue($result);
|
||||
$result = $zip_archive->add_file_from_string('test.txt', 'test');
|
||||
$this->assertTrue($result);
|
||||
$result = $zip_archive->add_file_from_pathname('test2.txt', $textfile);
|
||||
$result = $zip_archive->close();
|
||||
$this->assertTrue($result);
|
||||
unlink($archive);
|
||||
|
||||
// Create archive and close if forcing error.
|
||||
// (returns true for old PHP versions and
|
||||
// false with warnings for new PHP versions). MDL-51863.
|
||||
$zip_archive = new zip_archive();
|
||||
$result = $zip_archive->open($archive, file_archive::CREATE);
|
||||
$this->assertTrue($result);
|
||||
$result = $zip_archive->add_file_from_string('test.txt', 'test');
|
||||
$this->assertTrue($result);
|
||||
$result = $zip_archive->add_file_from_pathname('test2.txt', $textfile);
|
||||
$this->assertTrue($result);
|
||||
// Delete the file before closing does force close() to fail.
|
||||
unlink($textfile);
|
||||
// Behavior is different between old PHP versions and new ones. Let's detect it.
|
||||
$result = false;
|
||||
try {
|
||||
// Old PHP versions were not printing any warning.
|
||||
$result = $zip_archive->close();
|
||||
} catch (Exception $e) {
|
||||
// New PHP versions print PHP Warning.
|
||||
$this->assertInstanceOf('PHPUnit_Framework_Error_Warning', $e);
|
||||
$this->assertContains('ZipArchive::close', $e->getMessage());
|
||||
}
|
||||
// This is crazy, but it shows how some PHP versions do return true.
|
||||
try {
|
||||
// And some PHP versions do return correctly false (5.4.25, 5.6.14...)
|
||||
$this->assertFalse($result);
|
||||
} catch (Exception $e) {
|
||||
// But others do insist into returning true (5.6.13...). Only can accept them.
|
||||
$this->assertInstanceOf('PHPUnit_Framework_ExpectationFailedException', $e);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
$this->assertFileNotExists($archive);
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends test_add_files
|
||||
*/
|
||||
|
||||
@@ -191,7 +191,7 @@ class zip_archive extends file_archive {
|
||||
}
|
||||
|
||||
if ($this->emptyziphack) {
|
||||
$this->za->close();
|
||||
@$this->za->close();
|
||||
$this->za = null;
|
||||
$this->mode = null;
|
||||
$this->namelookup = null;
|
||||
@@ -202,7 +202,7 @@ class zip_archive extends file_archive {
|
||||
|
||||
} else if ($this->za->numFiles == 0) {
|
||||
// PHP can not create empty archives, so let's fake it.
|
||||
$this->za->close();
|
||||
@$this->za->close();
|
||||
$this->za = null;
|
||||
$this->mode = null;
|
||||
$this->namelookup = null;
|
||||
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Flowplayer handling file.
|
||||
*
|
||||
* @package core
|
||||
* @copyright Petr Skoda <petr.skoda@totaralms.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
define('NO_DEBUG_DISPLAY', true);
|
||||
define('NO_MOODLE_COOKIES', true);
|
||||
define('NO_UPGRADE_CHECK', true);
|
||||
|
||||
require('../../config.php');
|
||||
require('../../lib/flowplayer/lib.php');
|
||||
|
||||
flowplayer_send_flash_content('flowplayer-3.2.18.swf');
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Flowplayer audio swf handling.
|
||||
*
|
||||
* @package core
|
||||
* @copyright Petr Skoda <petr.skoda@totaralms.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
define('NO_DEBUG_DISPLAY', true);
|
||||
define('NO_MOODLE_COOKIES', true);
|
||||
define('NO_UPGRADE_CHECK', true);
|
||||
|
||||
require('../../config.php');
|
||||
require('../../lib/flowplayer/lib.php');
|
||||
|
||||
flowplayer_send_flash_content('flowplayer.audio-3.2.11.swf');
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Flowplayer audio controls handling.
|
||||
*
|
||||
* @package core
|
||||
* @copyright Petr Skoda <petr.skoda@totaralms.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
define('NO_DEBUG_DISPLAY', true);
|
||||
define('NO_MOODLE_COOKIES', true);
|
||||
define('NO_UPGRADE_CHECK', true);
|
||||
|
||||
require('../../config.php');
|
||||
require('../../lib/flowplayer/lib.php');
|
||||
|
||||
flowplayer_send_flash_content('flowplayer.controls-3.2.16.swf');
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Flowplayer library.
|
||||
*
|
||||
* @package core
|
||||
* @copyright Petr Skoda <petr.skoda@totaralms.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
* Safer flash serving code.
|
||||
*
|
||||
* @param string $filename
|
||||
* @return void does not return, ends with die()
|
||||
*/
|
||||
function flowplayer_send_flash_content($filename) {
|
||||
global $CFG;
|
||||
// Note: Do not use any fancy APIs here, this must work in all supported versions.
|
||||
|
||||
// No url params.
|
||||
if (!empty($_GET) or !empty($_POST)) {
|
||||
header("HTTP/1.1 404 Not Found");
|
||||
die;
|
||||
}
|
||||
|
||||
// Our referrers only, nobody else should embed these scripts.
|
||||
if (!empty($_SERVER['HTTP_REFERER'])) {
|
||||
$refhost = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
|
||||
$host = parse_url($CFG->wwwroot . '/', PHP_URL_HOST);
|
||||
if ($refhost and $host and strtolower($refhost) !== strtolower($host)) {
|
||||
header("HTTP/1.1 404 Not Found");
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
// Fetch and decode the original content.
|
||||
$content = file_get_contents($CFG->dirroot . '/lib/flowplayer/' . $filename . '.bin');
|
||||
if (!$content) {
|
||||
header("HTTP/1.1 404 Not Found");
|
||||
die;
|
||||
}
|
||||
$content = base64_decode($content);
|
||||
|
||||
// No caching allowed.
|
||||
if (strpos($CFG->wwwroot, 'https://') === 0) {
|
||||
// HTTPS sites - watch out for IE! KB812935 and KB316431.
|
||||
header('Cache-Control: private, max-age=10, no-transform');
|
||||
header('Expires: '. gmdate('D, d M Y H:i:s', 0) .' GMT');
|
||||
header('Pragma: ');
|
||||
} else {
|
||||
header('Cache-Control: private, must-revalidate, pre-check=0, post-check=0, max-age=0, no-transform');
|
||||
header('Expires: '. gmdate('D, d M Y H:i:s', 0) .' GMT');
|
||||
header('Pragma: no-cache');
|
||||
}
|
||||
|
||||
// Send the original binary code.
|
||||
header('Content-Type: application/x-shockwave-flash');
|
||||
echo $content;
|
||||
die;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
Description of FlowPlayer import
|
||||
|
||||
Our changes:
|
||||
* the handling of flash content now it's done by PHP, checking url parameter to avoid security issues.
|
||||
* we do not load the flow player if flash not present - this is much better
|
||||
for accessibility and flash incompatible devices - they may play mp3 or flv directly
|
||||
* no splashscreens
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element {
|
||||
/** @var array options provided to initalize filepicker */
|
||||
protected $_options = array('subdirs' => 0, 'maxbytes' => 0, 'maxfiles' => 0, 'changeformat' => 0,
|
||||
'areamaxbytes' => FILE_AREA_MAX_BYTES_UNLIMITED, 'context' => null, 'noclean' => 0, 'trusttext' => 0,
|
||||
'return_types' => 7);
|
||||
'return_types' => 7, 'enable_filemanagement' => true);
|
||||
// $_options['return_types'] = FILE_INTERNAL | FILE_EXTERNAL | FILE_REFERENCE
|
||||
|
||||
/** @var array values for editor */
|
||||
|
||||
+9
-3
@@ -188,6 +188,10 @@ abstract class moodleform {
|
||||
$this->_form->hardFreeze();
|
||||
}
|
||||
|
||||
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
|
||||
$element = $this->_form->addElement('hidden');
|
||||
$element->setType('password');
|
||||
|
||||
$this->definition();
|
||||
|
||||
$this->_form->addElement('hidden', 'sesskey', null); // automatic sesskey protection
|
||||
@@ -2229,9 +2233,11 @@ function validate_' . $this->_formName . '_' . $escapedElementName . '(element)
|
||||
ret = validate_' . $this->_formName . '_' . $escapedElementName.'(frm.elements[\''.$elementName.'\']) && ret;
|
||||
if (!ret && !first_focus) {
|
||||
first_focus = true;
|
||||
Y.Global.fire(M.core.globalEvents.FORM_ERROR, {formid: \''. $this->_attributes['id'] .'\',
|
||||
elementid: \'id_error_'.$elementName.'\'});
|
||||
document.getElementById(\'id_error_'.$elementName.'\').focus();
|
||||
Y.use(\'moodle-core-event\', function() {
|
||||
Y.Global.fire(M.core.globalEvents.FORM_ERROR, {formid: \''. $this->_attributes['id'] .'\',
|
||||
elementid: \'id_error_'.$elementName.'\'});
|
||||
document.getElementById(\'id_error_'.$elementName.'\').focus();
|
||||
});
|
||||
}
|
||||
';
|
||||
|
||||
|
||||
@@ -103,3 +103,69 @@ class HTMLPurifier_URIScheme_teamspeak extends HTMLPurifier_URIScheme {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* A custom HTMLPurifier transformation. Adds rel="noreferrer" to all links with target="_blank".
|
||||
*
|
||||
* @package core
|
||||
* @copyright Cameron Ball
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class HTMLPurifier_AttrTransform_Noreferrer extends HTMLPurifier_AttrTransform {
|
||||
/** @var HTMLPurifier_URIParser $parser */
|
||||
private $parser;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->parser = new HTMLPurifier_URIParser();
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms a tags such that when a target attribute is present, rel="noreferrer" is added.
|
||||
*
|
||||
* Note that this will not respect Attr.AllowedRel
|
||||
*
|
||||
* @param array $attr Assoc array of attributes, usually from
|
||||
* HTMLPurifier_Token_Tag::$attr
|
||||
* @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object.
|
||||
* @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object
|
||||
* @return array Processed attribute array.
|
||||
*/
|
||||
public function transform($attr, $config, $context) {
|
||||
// Nothing to do If we already have noreferrer in the rel attribute
|
||||
if (!empty($attr['rel']) && substr($attr['rel'], 'noreferrer') !== false) {
|
||||
return $attr;
|
||||
}
|
||||
|
||||
// If _blank target attribute exists, add rel=noreferrer
|
||||
if (!empty($attr['target']) && $attr['target'] == '_blank') {
|
||||
$attr['rel'] = !empty($attr['rel']) ? $attr['rel'] . ' noreferrer' : 'noreferrer';
|
||||
}
|
||||
|
||||
return $attr;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A custom HTMLPurifier module to add rel="noreferrer" attributes a tags.
|
||||
*
|
||||
* @package core
|
||||
* @copyright Cameron Ball
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class HTMLPurifier_HTMLModule_Noreferrer extends HTMLPurifier_HTMLModule {
|
||||
/** @var string $name */
|
||||
public $name = 'Noreferrer';
|
||||
|
||||
/**
|
||||
* Module setup
|
||||
*
|
||||
* @param HTMLPurifier_Config $config
|
||||
*/
|
||||
public function setup($config) {
|
||||
$a = $this->addBlankElement('a');
|
||||
$a->attr_transform_post[] = new HTMLPurifier_AttrTransform_Noreferrer();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -343,8 +343,7 @@ M.util.init_maximised_embed = function(Y, id) {
|
||||
};
|
||||
|
||||
var resize_object = function() {
|
||||
obj.setStyle('width', '0px');
|
||||
obj.setStyle('height', '0px');
|
||||
obj.setStyle('display', 'none');
|
||||
var newwidth = get_htmlelement_size('maincontent', 'width') - 35;
|
||||
|
||||
if (newwidth > 500) {
|
||||
@@ -360,13 +359,16 @@ M.util.init_maximised_embed = function(Y, id) {
|
||||
newheight = 400;
|
||||
}
|
||||
obj.setStyle('height', newheight+'px');
|
||||
obj.setStyle('display', '');
|
||||
};
|
||||
|
||||
resize_object();
|
||||
// fix layout if window resized too
|
||||
window.onresize = function() {
|
||||
resize_object();
|
||||
};
|
||||
Y.use('event-resize', function (Y) {
|
||||
Y.on("windowresize", function() {
|
||||
resize_object();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1799,6 +1801,7 @@ M.util.load_flowplayer = function() {
|
||||
loaded = true;
|
||||
|
||||
var controls = {
|
||||
url: M.cfg.wwwroot + '/lib/flowplayer/flowplayer.controls-3.2.16.swf.php',
|
||||
autoHide: true
|
||||
}
|
||||
/* TODO: add CSS color overrides for the flv flow player */
|
||||
@@ -1806,9 +1809,9 @@ M.util.load_flowplayer = function() {
|
||||
for(var i=0; i<M.util.video_players.length; i++) {
|
||||
var video = M.util.video_players[i];
|
||||
if (video.width > 0 && video.height > 0) {
|
||||
var src = {src: M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.18.swf', width: video.width, height: video.height};
|
||||
var src = {src: M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.18.swf.php', width: video.width, height: video.height};
|
||||
} else {
|
||||
var src = M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.18.swf';
|
||||
var src = M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.18.swf.php';
|
||||
}
|
||||
flowplayer(video.id, src, {
|
||||
plugins: {controls: controls},
|
||||
@@ -1844,6 +1847,7 @@ M.util.load_flowplayer = function() {
|
||||
return;
|
||||
}
|
||||
var controls = {
|
||||
url: M.cfg.wwwroot + '/lib/flowplayer/flowplayer.controls-3.2.16.swf.php',
|
||||
autoHide: false,
|
||||
fullscreen: false,
|
||||
next: false,
|
||||
@@ -1908,8 +1912,8 @@ M.util.load_flowplayer = function() {
|
||||
controls.height = 25;
|
||||
controls.time = true;
|
||||
}
|
||||
flowplayer(audio.id, M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.18.swf', {
|
||||
plugins: {controls: controls, audio: {url: M.cfg.wwwroot + '/lib/flowplayer/flowplayer.audio-3.2.11.swf'}},
|
||||
flowplayer(audio.id, M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.18.swf.php', {
|
||||
plugins: {controls: controls, audio: {url: M.cfg.wwwroot + '/lib/flowplayer/flowplayer.audio-3.2.11.swf.php'}},
|
||||
clip: {url: audio.fileurl, provider: "audio", autoPlay: false}
|
||||
});
|
||||
}
|
||||
|
||||
+55
-6
@@ -1033,11 +1033,15 @@ function clean_param($param, $type) {
|
||||
// Simulate the HTTPS version of the site.
|
||||
$httpswwwroot = str_replace('http://', 'https://', $CFG->wwwroot);
|
||||
|
||||
if (preg_match(':^/:', $param)) {
|
||||
if ($param === $CFG->wwwroot) {
|
||||
// Exact match;
|
||||
} else if (!empty($CFG->loginhttps) && $param === $httpswwwroot) {
|
||||
// Exact match;
|
||||
} else if (preg_match(':^/:', $param)) {
|
||||
// Root-relative, ok!
|
||||
} else if (preg_match('/^' . preg_quote($CFG->wwwroot, '/') . '/i', $param)) {
|
||||
} else if (preg_match('/^' . preg_quote($CFG->wwwroot . '/', '/') . '/i', $param)) {
|
||||
// Absolute, and matches our wwwroot.
|
||||
} else if (!empty($CFG->loginhttps) && preg_match('/^' . preg_quote($httpswwwroot, '/') . '/i', $param)) {
|
||||
} else if (!empty($CFG->loginhttps) && preg_match('/^' . preg_quote($httpswwwroot . '/', '/') . '/i', $param)) {
|
||||
// Absolute, and matches our httpswwwroot.
|
||||
} else {
|
||||
// Relative - let's make sure there are no tricks.
|
||||
@@ -7783,14 +7787,16 @@ function count_letters($string) {
|
||||
* @param int $length The length of the string to be created.
|
||||
* @return string
|
||||
*/
|
||||
function random_string ($length=15) {
|
||||
function random_string($length=15) {
|
||||
$randombytes = random_bytes_emulate($length);
|
||||
$pool = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
$pool .= 'abcdefghijklmnopqrstuvwxyz';
|
||||
$pool .= '0123456789';
|
||||
$poollen = strlen($pool);
|
||||
$string = '';
|
||||
for ($i = 0; $i < $length; $i++) {
|
||||
$string .= substr($pool, (mt_rand()%($poollen)), 1);
|
||||
$rand = ord($randombytes[$i]);
|
||||
$string .= substr($pool, ($rand%($poollen)), 1);
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
@@ -7811,13 +7817,56 @@ function complex_random_string($length=null) {
|
||||
if ($length===null) {
|
||||
$length = floor(rand(24, 32));
|
||||
}
|
||||
$randombytes = random_bytes_emulate($length);
|
||||
$string = '';
|
||||
for ($i = 0; $i < $length; $i++) {
|
||||
$string .= $pool[(mt_rand()%$poollen)];
|
||||
$rand = ord($randombytes[$i]);
|
||||
$string .= $pool[($rand%$poollen)];
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to generates cryptographically secure pseudo-random bytes.
|
||||
*
|
||||
* Note this is achieved by fallbacking between:
|
||||
* - PHP 7 random_bytes().
|
||||
* - OpenSSL openssl_random_pseudo_bytes().
|
||||
* - In house random generator getting its entropy from various, hard to guess, pseudo-random sources.
|
||||
*
|
||||
* @param int $length requested length in bytes
|
||||
* @return string binary data
|
||||
*/
|
||||
function random_bytes_emulate($length) {
|
||||
global $CFG;
|
||||
if ($length <= 0) {
|
||||
debugging('Invalid random bytes length', DEBUG_DEVELOPER);
|
||||
return '';
|
||||
}
|
||||
if (function_exists('random_bytes')) {
|
||||
// Use PHP 7 goodness.
|
||||
$hash = @random_bytes($length);
|
||||
if ($hash !== false) {
|
||||
return $hash;
|
||||
}
|
||||
}
|
||||
if (function_exists('openssl_random_pseudo_bytes')) {
|
||||
// For PHP 5.3 and later with openssl extension.
|
||||
$hash = openssl_random_pseudo_bytes($length);
|
||||
if ($hash !== false) {
|
||||
return $hash;
|
||||
}
|
||||
}
|
||||
|
||||
// Bad luck, there is no reliable random generator, let's just hash some unique stuff that is hard to guess.
|
||||
$hash = sha1(serialize($CFG) . serialize($_SERVER) . microtime(true) . uniqid('', true), true);
|
||||
// NOTE: the last param in sha1() is true, this means we are getting 20 bytes, not 40 chars as usual.
|
||||
if ($length <= 20) {
|
||||
return substr($hash, 0, $length);
|
||||
}
|
||||
return $hash . random_bytes_emulate($length - 20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Given some text (which may contain HTML) and an ideal length,
|
||||
* this function truncates the text neatly on a word boundary if possible
|
||||
|
||||
@@ -204,6 +204,7 @@ class phpunit_util extends testing_util {
|
||||
filter_manager::reset_caches();
|
||||
// Reset internal users.
|
||||
core_user::reset_internal_users();
|
||||
core_user::reset_caches();
|
||||
|
||||
//TODO MDL-25290: add more resets here and probably refactor them to new core function
|
||||
|
||||
|
||||
@@ -1405,4 +1405,26 @@ class behat_general extends behat_base {
|
||||
fwrite(STDOUT, "\033[2A\033[u\033[2B");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Presses a given button in the browser.
|
||||
* NOTE: Phantomjs and goutte driver reloads page while navigating back and forward.
|
||||
*
|
||||
* @Then /^I press the "(back|forward|reload)" button in the browser$/
|
||||
* @param string $button the button to press.
|
||||
* @throws ExpectationException
|
||||
*/
|
||||
public function i_press_in_the_browser($button) {
|
||||
$session = $this->getSession();
|
||||
|
||||
if ($button == 'back') {
|
||||
$session->back();
|
||||
} else if ($button == 'forward') {
|
||||
$session->forward();
|
||||
} else if ($button == 'reload') {
|
||||
$session->reload();
|
||||
} else {
|
||||
throw new ExpectationException('Unknown browser button.', $session);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,4 +53,69 @@ class core_environment_testcase extends advanced_testcase {
|
||||
$this->assertTrue($environment_result->getStatus(), "Problem detected in environment ($environment_result->part:$environment_result->info), fix all warnings and errors!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the restrict_php_version() function returns true if the current
|
||||
* PHP version is greater than the restricted version
|
||||
*/
|
||||
public function test_restrict_php_version_greater_than_restricted_version() {
|
||||
global $CFG;
|
||||
require_once($CFG->libdir.'/environmentlib.php');
|
||||
|
||||
$result = new environment_results('php');
|
||||
$delimiter = '.';
|
||||
// Get the current PHP version.
|
||||
$currentversion = explode($delimiter, normalize_version(phpversion()));
|
||||
// Lets drop back one major version to ensure we trip the restriction.
|
||||
$currentversion[0]--;
|
||||
$restrictedversion = implode($delimiter, $currentversion);
|
||||
|
||||
// Make sure the status is true before the test to see it flip to false.
|
||||
$result->setStatus(true);
|
||||
|
||||
$this->assertTrue(restrict_php_version($result, $restrictedversion),
|
||||
'restrict_php_version returns true if the current version exceeds the restricted version');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the restrict_php_version() function returns true if the current
|
||||
* PHP version is equal to the restricted version
|
||||
*/
|
||||
public function test_restrict_php_version_equal_to_restricted_version() {
|
||||
global $CFG;
|
||||
require_once($CFG->libdir.'/environmentlib.php');
|
||||
|
||||
$result = new environment_results('php');
|
||||
// Get the current PHP version.
|
||||
$currentversion = normalize_version(phpversion());
|
||||
|
||||
// Make sure the status is true before the test to see it flip to false.
|
||||
$result->setStatus(true);
|
||||
|
||||
$this->assertTrue(restrict_php_version($result, $currentversion),
|
||||
'restrict_php_version returns true if the current version is equal to the restricted version');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the restrict_php_version() function returns false if the current
|
||||
* PHP version is less than the restricted version
|
||||
*/
|
||||
public function test_restrict_php_version_less_than_restricted_version() {
|
||||
global $CFG;
|
||||
require_once($CFG->libdir.'/environmentlib.php');
|
||||
|
||||
$result = new environment_results('php');
|
||||
$delimiter = '.';
|
||||
// Get the current PHP version.
|
||||
$currentversion = explode($delimiter, normalize_version(phpversion()));
|
||||
// Lets increase the major version to ensure don't trip the restriction.
|
||||
$currentversion[0]++;
|
||||
$restrictedversion = implode($delimiter, $currentversion);
|
||||
|
||||
// Make sure the status is true before the test to see it flip to false.
|
||||
$result->setStatus(true);
|
||||
|
||||
$this->assertFalse(restrict_php_version($result, $restrictedversion),
|
||||
'restrict_php_version returns false if the current version is less than the restricted version');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,9 +40,13 @@ class core_htmlpurifier_testcase extends basic_testcase {
|
||||
* Verify _blank target is allowed.
|
||||
*/
|
||||
public function test_allow_blank_target() {
|
||||
// See MDL-52651 for an explanation as to why the rel="noreferrer" attribute is expected here.
|
||||
// Also note we do not need to test links with an existing rel attribute as the HTML Purifier is configured to remove
|
||||
// the rel attribute.
|
||||
$text = '<a href="http://moodle.org" target="_blank">Some link</a>';
|
||||
$expected = '<a href="http://moodle.org" target="_blank" rel="noreferrer">Some link</a>';
|
||||
$result = format_text($text, FORMAT_HTML);
|
||||
$this->assertSame($text, $result);
|
||||
$this->assertSame($expected, $result);
|
||||
|
||||
$result = format_text('<a href="http://moodle.org" target="some">Some link</a>', FORMAT_HTML);
|
||||
$this->assertSame('<a href="http://moodle.org">Some link</a>', $result);
|
||||
|
||||
@@ -583,6 +583,9 @@ class core_moodlelib_testcase extends advanced_testcase {
|
||||
|
||||
public function test_clean_param_localurl() {
|
||||
global $CFG;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
// External, invalid.
|
||||
$this->assertSame('', clean_param('funny:thing', PARAM_LOCALURL));
|
||||
$this->assertSame('', clean_param('http://google.com/', PARAM_LOCALURL));
|
||||
@@ -600,7 +603,6 @@ class core_moodlelib_testcase extends advanced_testcase {
|
||||
|
||||
// Local absolute HTTPS.
|
||||
$httpsroot = str_replace('http:', 'https:', $CFG->wwwroot);
|
||||
$initialloginhttps = $CFG->loginhttps;
|
||||
$CFG->loginhttps = false;
|
||||
$this->assertSame('', clean_param($httpsroot, PARAM_LOCALURL));
|
||||
$this->assertSame('', clean_param($httpsroot . '/with/something?else=true', PARAM_LOCALURL));
|
||||
@@ -608,7 +610,13 @@ class core_moodlelib_testcase extends advanced_testcase {
|
||||
$this->assertSame($httpsroot, clean_param($httpsroot, PARAM_LOCALURL));
|
||||
$this->assertSame($httpsroot . '/with/something?else=true',
|
||||
clean_param($httpsroot . '/with/something?else=true', PARAM_LOCALURL));
|
||||
$CFG->loginhttps = $initialloginhttps;
|
||||
|
||||
// Test open redirects are not possible.
|
||||
$CFG->loginhttps = false;
|
||||
$CFG->wwwroot = 'http://www.example.com';
|
||||
$this->assertSame('', clean_param('http://www.example.com.evil.net/hack.php', PARAM_LOCALURL));
|
||||
$CFG->loginhttps = true;
|
||||
$this->assertSame('', clean_param('https://www.example.com.evil.net/hack.php', PARAM_LOCALURL));
|
||||
}
|
||||
|
||||
public function test_clean_param_file() {
|
||||
@@ -2845,4 +2853,100 @@ class core_moodlelib_testcase extends advanced_testcase {
|
||||
$_SERVER['HTTP_X_FORWARDED_FOR'] = $xforwardedfor;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Test emulation of random_bytes() function.
|
||||
*/
|
||||
public function test_random_bytes_emulate() {
|
||||
$result = random_bytes_emulate(10);
|
||||
$this->assertSame(10, strlen($result));
|
||||
$this->assertnotSame($result, random_bytes_emulate(10));
|
||||
|
||||
$result = random_bytes_emulate(21);
|
||||
$this->assertSame(21, strlen($result));
|
||||
$this->assertnotSame($result, random_bytes_emulate(21));
|
||||
|
||||
$result = random_bytes_emulate(666);
|
||||
$this->assertSame(666, strlen($result));
|
||||
|
||||
$this->assertDebuggingNotCalled();
|
||||
|
||||
$result = random_bytes_emulate(0);
|
||||
$this->assertSame('', $result);
|
||||
$this->assertDebuggingCalled();
|
||||
|
||||
$result = random_bytes_emulate(-1);
|
||||
$this->assertSame('', $result);
|
||||
$this->assertDebuggingCalled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test function for creation of random strings.
|
||||
*/
|
||||
public function test_random_string() {
|
||||
$pool = 'a-zA-Z0-9';
|
||||
|
||||
$result = random_string(10);
|
||||
$this->assertSame(10, strlen($result));
|
||||
$this->assertRegExp('/^[' . $pool . ']+$/', $result);
|
||||
$this->assertNotSame($result, random_string(10));
|
||||
|
||||
$result = random_string(21);
|
||||
$this->assertSame(21, strlen($result));
|
||||
$this->assertRegExp('/^[' . $pool . ']+$/', $result);
|
||||
$this->assertNotSame($result, random_string(21));
|
||||
|
||||
$result = random_string(666);
|
||||
$this->assertSame(666, strlen($result));
|
||||
$this->assertRegExp('/^[' . $pool . ']+$/', $result);
|
||||
|
||||
$result = random_string();
|
||||
$this->assertSame(15, strlen($result));
|
||||
$this->assertRegExp('/^[' . $pool . ']+$/', $result);
|
||||
|
||||
$this->assertDebuggingNotCalled();
|
||||
|
||||
$result = random_string(0);
|
||||
$this->assertSame('', $result);
|
||||
$this->assertDebuggingCalled();
|
||||
|
||||
$result = random_string(-1);
|
||||
$this->assertSame('', $result);
|
||||
$this->assertDebuggingCalled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test function for creation of complex random strings.
|
||||
*/
|
||||
public function test_complex_random_string() {
|
||||
$pool = preg_quote('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`~!@#%^&*()_+-=[];,./<>?:{} ', '/');
|
||||
|
||||
$result = complex_random_string(10);
|
||||
$this->assertSame(10, strlen($result));
|
||||
$this->assertRegExp('/^[' . $pool . ']+$/', $result);
|
||||
$this->assertNotSame($result, complex_random_string(10));
|
||||
|
||||
$result = complex_random_string(21);
|
||||
$this->assertSame(21, strlen($result));
|
||||
$this->assertRegExp('/^[' . $pool . ']+$/', $result);
|
||||
$this->assertNotSame($result, complex_random_string(21));
|
||||
|
||||
$result = complex_random_string(666);
|
||||
$this->assertSame(666, strlen($result));
|
||||
$this->assertRegExp('/^[' . $pool . ']+$/', $result);
|
||||
|
||||
$result = complex_random_string();
|
||||
$this->assertEquals(28, strlen($result), '', 4); // Expected length is 24 - 32.
|
||||
$this->assertRegExp('/^[' . $pool . ']+$/', $result);
|
||||
|
||||
$this->assertDebuggingNotCalled();
|
||||
|
||||
$result = complex_random_string(0);
|
||||
$this->assertSame('', $result);
|
||||
$this->assertDebuggingCalled();
|
||||
|
||||
$result = complex_random_string(-1);
|
||||
$this->assertSame('', $result);
|
||||
$this->assertDebuggingCalled();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,4 +116,29 @@ class core_user_testcase extends advanced_testcase {
|
||||
// Assert that a user not in the db return false.
|
||||
$this->assertFalse(core_user::get_user_by_username('janedoe'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get_property_definition() method.
|
||||
*/
|
||||
public function test_get_property_definition() {
|
||||
// Try to get a existing property.
|
||||
$properties = core_user::get_property_definition('id');
|
||||
$this->assertEquals($properties['type'], PARAM_INT);
|
||||
$properties = core_user::get_property_definition('username');
|
||||
$this->assertEquals($properties['type'], PARAM_USERNAME);
|
||||
|
||||
// Invalid property.
|
||||
try {
|
||||
core_user::get_property_definition('fullname');
|
||||
} catch (coding_exception $e) {
|
||||
$this->assertRegExp('/Invalid property requested./', $e->getMessage());
|
||||
}
|
||||
|
||||
// Empty parameter.
|
||||
try {
|
||||
core_user::get_property_definition('');
|
||||
} catch (coding_exception $e) {
|
||||
$this->assertRegExp('/Invalid property requested./', $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2290
-2298
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,18 @@
|
||||
This files describes API changes in core libraries and APIs,
|
||||
information provided here is intended especially for developers.
|
||||
|
||||
=== 2.7.13 ===
|
||||
|
||||
* The core_user::fill_properties_cache() static method has been introduced to be a reference
|
||||
and allow standard user fields data validation. Right now only type validation is supported
|
||||
checking it against the parameter (PARAM_*) type of the target user field. MDL-52781 is
|
||||
going to add support to null/not null and choices validation, replacing the existing code to
|
||||
validate the user fields in different places in a common way.
|
||||
|
||||
=== 2.7.10 ===
|
||||
|
||||
* In the html_editors (tinyMCE, Atto), the manage files button can be hidden by changing the 'enable_filemanagement' option to false.
|
||||
|
||||
=== 2.7.6 ===
|
||||
|
||||
* The authorization procedure in the mdeploy.php script has been improved. The script
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user