Compare commits
306 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 928f14b3cc | |||
| e417377e89 | |||
| c110815236 | |||
| bc4fd27768 | |||
| 2576939e4d | |||
| c8beaf6d70 | |||
| 64d9b08a99 | |||
| b5dacb5488 | |||
| 8380722bb1 | |||
| a1ae35173b | |||
| a99ad20d94 | |||
| 470a466d7f | |||
| f25f472be4 | |||
| 8f7d596058 | |||
| a2bf5412a7 | |||
| 9b60a086cf | |||
| 3b68d1b23a | |||
| 5c4ef26c39 | |||
| cb2b42aed8 | |||
| a5abafcde2 | |||
| 33bd0be19d | |||
| dadf5df9a1 | |||
| 67ed4cf0db | |||
| c02a7aa383 | |||
| a66d3cf108 | |||
| a4cbbf1513 | |||
| 693b574a7e | |||
| e6ec9e634a | |||
| 89f0eef044 | |||
| 7f1c9be2b0 | |||
| bab839a451 | |||
| a06829f8ac | |||
| 2776e08311 | |||
| 1315b34bff | |||
| c3a5b90bf5 | |||
| c348d41703 | |||
| 9bf48960a3 | |||
| 729783c4ba | |||
| 42367c0f27 | |||
| ec22de0a5e | |||
| 437240b5aa | |||
| 40ad22fdd0 | |||
| a57eacc114 | |||
| 5c8dd04a6c | |||
| e893e0bf51 | |||
| 5bcd9913b9 | |||
| 7e69ec54cc | |||
| 55399b5964 | |||
| 1199892ebd | |||
| c24fc9707c | |||
| 8ec057ca45 | |||
| fbc50fb699 | |||
| b0ec2d8cb5 | |||
| eee61675f0 | |||
| 4bc5dd3217 | |||
| d9596365e5 | |||
| 7748e17207 | |||
| aea324963d | |||
| fd4b7f5739 | |||
| ae0ec61180 | |||
| b97e5658ea | |||
| c3083344ec | |||
| b186033382 | |||
| a3edb5252a | |||
| b268d4a05c | |||
| e50a4e2386 | |||
| 9b19a46099 | |||
| 77f8c68f44 | |||
| 798b7b04af | |||
| 88c96fd2f3 | |||
| 16ae4b809d | |||
| 35f6017d21 | |||
| 085abbb371 | |||
| c3cd5e1db9 | |||
| 1f771e4103 | |||
| cc18262792 | |||
| ba7340108e | |||
| 9dadea2557 | |||
| 832d5b682d | |||
| a2c9045867 | |||
| 76b9a9407f | |||
| 532df04583 | |||
| f8d0e9ad5b | |||
| a4a01b4b96 | |||
| 93d224f333 | |||
| 09aa9e90b9 | |||
| 143dc29e0d | |||
| cf51a722c7 | |||
| 076792a3f1 | |||
| 32d89e0c0d | |||
| 8b2dca7427 | |||
| a4720e016e | |||
| f8acb4a7de | |||
| 31a70002d3 | |||
| 506bae6791 | |||
| e9576ab6b4 | |||
| a902db80d6 | |||
| b8ac884f9d | |||
| 6e2745d238 | |||
| b9bdec3f35 | |||
| 87f62d8e09 | |||
| 76f354d196 | |||
| fb327938c9 | |||
| 6cafb62b1e | |||
| 73c8dc3692 | |||
| 6537f3525e | |||
| 199ca97486 | |||
| adf8e5ce6e | |||
| 14d1f4e42e | |||
| 52c4f06af3 | |||
| 27b1ba527a | |||
| 085c2fd228 | |||
| 235b5a0c1d | |||
| 04d6be9bb2 | |||
| f66f661ce0 | |||
| 7f4fa839fe | |||
| faf4e51da9 | |||
| a7dae3ef8e | |||
| a35428cf86 | |||
| f06d89b2b5 | |||
| 346ef562dc | |||
| 2718718464 | |||
| 05c42f7539 | |||
| 05ca6dadf8 | |||
| 4226a54d53 | |||
| 02d052026c | |||
| 19ef016778 | |||
| 5e64cff4f1 | |||
| e575b2f6d1 | |||
| 3cc1d4b9fe | |||
| a7b9ce4caf | |||
| 17d617dc66 | |||
| ceb23943ee | |||
| 44eaae9610 | |||
| 47358bdaa5 | |||
| a39ff69d58 | |||
| c70955dfa9 | |||
| 8187097dc0 | |||
| 3d947610a0 | |||
| 003638cb8d | |||
| c30533cfed | |||
| 6af74e102c | |||
| 18559a0df6 | |||
| eb17e8ecd5 | |||
| 96e60a978e | |||
| 1b5fea23bd | |||
| 00621ce929 | |||
| 1ed22de511 | |||
| 48ffd4c677 | |||
| 4a59b3b555 | |||
| 00f2669025 | |||
| 4d3ee68536 | |||
| 0034080028 | |||
| c8d061208d | |||
| 5df656cadd | |||
| 6a68b92cff | |||
| 1ce52ce8db | |||
| 7d07632f7a | |||
| 34965b0d31 | |||
| 7105ca55cb | |||
| 0d3e293c5c | |||
| f4776ae40a | |||
| c9a3d370c4 | |||
| ebe7179a88 | |||
| aec655131b | |||
| 0291a8b492 | |||
| fca50b95ef | |||
| 5506f0482c | |||
| 410fff85d0 | |||
| 9a5af14929 | |||
| a847569195 | |||
| 7cbba9b175 | |||
| c21708e5e4 | |||
| 133870d759 | |||
| 690c28e94a | |||
| 82882a9034 | |||
| 172321d7d8 | |||
| bf139ab2c2 | |||
| bea3c273a3 | |||
| 143c8e7489 | |||
| 10f476e3a5 | |||
| de1982ca05 | |||
| 79205746bc | |||
| 71e7d2552b | |||
| 2c4120360a | |||
| 780a21f62a | |||
| 9b378f3dc5 | |||
| ada23f968a | |||
| 1da6855d1c | |||
| 3f007ca625 | |||
| 71660782eb | |||
| 8c5ca6531b | |||
| 98f4a31ce0 | |||
| 9aeef50434 | |||
| a6a85dc49b | |||
| f2858a669a | |||
| 2c7a4204e7 | |||
| 8ecbc00c77 | |||
| 45c03504ad | |||
| e7698992b7 | |||
| 309481dde0 | |||
| 532a6ba83c | |||
| 5267a05191 | |||
| 7183b0f995 | |||
| 16d88af2ab | |||
| cf569389ab | |||
| dc76ce70b2 | |||
| 4818244d27 | |||
| 838a2120fb | |||
| d8d43cdc18 | |||
| e623b9afcc | |||
| db217f006c | |||
| 60aae880a4 | |||
| 22bf788f6b | |||
| 7842d36f71 | |||
| fc9a82669f | |||
| e88938d9cc | |||
| d7b0846147 | |||
| 95b732848e | |||
| afab006332 | |||
| 71d414b090 | |||
| 828aff67d9 | |||
| 83f506da1e | |||
| 553672355c | |||
| eaccc920db | |||
| 416d7a94be | |||
| 70f62d8944 | |||
| c96069566a | |||
| da568835a5 | |||
| 9bd1ba9ee6 | |||
| f0cfc08699 | |||
| 62daeecc11 | |||
| 7d784e4ade | |||
| e5ca507c6e | |||
| 10123d02f6 | |||
| 3476a15b0f | |||
| 689c45e54e | |||
| 117c147757 | |||
| 45d9d6d710 | |||
| 717612c7aa | |||
| ccdfa44df0 | |||
| 0ecaebd487 | |||
| 709752225c | |||
| 70127f1f3c | |||
| a61d4eff50 | |||
| 9c3bfbfa3f | |||
| 9e46c17505 | |||
| 6cf0f60c7d | |||
| f0a9fb36a3 | |||
| 8fb24d2b43 | |||
| 7da998aee8 | |||
| c577657600 | |||
| 4dba407997 | |||
| 183c7cb3f5 | |||
| 5ba78ea1ff | |||
| b6ebf8d770 | |||
| 199e6445f8 | |||
| 3cf10869b6 | |||
| 2e0a4ca447 | |||
| 12bba6cc09 | |||
| c53ee31d46 | |||
| 7bfd342445 | |||
| 7d181fd82d | |||
| 34f1a739f1 | |||
| f7a061c2c1 | |||
| 67c0ced049 | |||
| 0b0e98d794 | |||
| e0a4008f4e | |||
| cade07b451 | |||
| 00d737bbe8 | |||
| 24e3e96a78 | |||
| 6c6ae7361c | |||
| 9f887be6a6 | |||
| c250a0d330 | |||
| 546a27cb50 | |||
| edab808254 | |||
| 3d4c212f85 | |||
| 48488ae1d7 | |||
| dd031e7462 | |||
| 28177a0a07 | |||
| 2847f9c8fc | |||
| a761cef6df | |||
| 3699331396 | |||
| 1ef6b2298e | |||
| f77c1d2098 | |||
| 61a9dd5cd9 | |||
| e39e0243b2 | |||
| ef2a27eac1 | |||
| 903c5bf341 | |||
| 32ef8734a9 | |||
| e87d98d541 | |||
| eba496e2ae | |||
| 715cd44d3a | |||
| 50a946f5bb | |||
| 50e9f0e048 | |||
| bf2324ef15 | |||
| 53d3cd568c | |||
| 49202ec3e6 | |||
| 42d72f3297 | |||
| be56d390b7 | |||
| 2f5768b983 | |||
| 65930a0593 | |||
| 62b41d8dda | |||
| bcad5fa2de | |||
| 5b09d5e8cf | |||
| 2d124e8f4e |
@@ -1007,4 +1007,127 @@
|
||||
</PHP_SETTING>
|
||||
</PHP_SETTINGS>
|
||||
</MOODLE>
|
||||
<MOODLE version="2.7" 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="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
|
||||
<FEEDBACK>
|
||||
<ON_ERROR message="quizattemptsupgradedmessage" />
|
||||
</FEEDBACK>
|
||||
</CUSTOM_CHECK>
|
||||
</CUSTOM_CHECKS>
|
||||
</MOODLE>
|
||||
</COMPATIBILITY_MATRIX>
|
||||
|
||||
@@ -16,8 +16,6 @@ require_login();
|
||||
|
||||
admin_externalpage_setup('ssoaccesscontrol');
|
||||
|
||||
echo $OUTPUT->header();
|
||||
|
||||
if (!extension_loaded('openssl')) {
|
||||
print_error('requiresopenssl', 'mnet');
|
||||
}
|
||||
@@ -65,9 +63,11 @@ if (!empty($action) and confirm_sesskey()) {
|
||||
|
||||
if (mnet_update_sso_access_control($idrec->username, $idrec->mnet_host_id, $accessctrl)) {
|
||||
if ($accessctrl == 'allow') {
|
||||
redirect('access_control.php', get_string('ssl_acl_allow','mnet', array('uset'=>$idrec->username, 'host'=>$mnethosts[$idrec->mnet_host_id])));
|
||||
} elseif ($accessctrl == 'deny') {
|
||||
redirect('access_control.php', get_string('ssl_acl_deny','mnet', array('user'=>$idrec->username, 'host'=>$mnethosts[$idrec->mnet_host_id])));
|
||||
redirect('access_control.php', get_string('ssl_acl_allow','mnet', array('user' => $idrec->username,
|
||||
'host' => $mnethosts[$idrec->mnet_host_id])));
|
||||
} else if ($accessctrl == 'deny') {
|
||||
redirect('access_control.php', get_string('ssl_acl_deny','mnet', array('user' => $idrec->username,
|
||||
'host' => $mnethosts[$idrec->mnet_host_id])));
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -118,6 +118,8 @@ if ($form = data_submitted() and confirm_sesskey()) {
|
||||
exit;
|
||||
}
|
||||
|
||||
echo $OUTPUT->header();
|
||||
|
||||
// Explain
|
||||
echo $OUTPUT->box(get_string('ssoacldescr','mnet'));
|
||||
// Are the needed bits enabled?
|
||||
|
||||
@@ -139,9 +139,15 @@ if ($capability) {
|
||||
// Put the contexts into a tree structure.
|
||||
foreach ($contexts as $conid => $con) {
|
||||
$context = context::instance_by_id($conid);
|
||||
$parentcontextid = get_parent_contextid($context);
|
||||
if ($parentcontextid) {
|
||||
$contexts[$parentcontextid]->children[] = $conid;
|
||||
try {
|
||||
$parentcontext = $context->get_parent_context();
|
||||
if ($parentcontext) { // Will be false if $context is the system context.
|
||||
$contexts[$parentcontext->id]->children[] = $conid;
|
||||
}
|
||||
} catch (dml_missing_record_exception $e) {
|
||||
// Ignore corrupt context tree structure here. Don't let it break
|
||||
// showing the rest of the report.
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ class tool_qeupgradehelper_extract_options_form extends moodleform {
|
||||
|
||||
$qtypes = get_plugin_list('qtype');
|
||||
foreach ($qtypes as $qtype => $notused) {
|
||||
$qtypes[$qtype] = get_string($qtype, 'qtype_' . $qtype);
|
||||
$qtypes[$qtype] = get_string('pluginname', 'qtype_' . $qtype);
|
||||
}
|
||||
|
||||
$mform->addElement('header', 'h1', 'Either extract a specific question_session');
|
||||
|
||||
@@ -179,12 +179,12 @@ function search_spammers($keywords) {
|
||||
$conditions7 = '( '.implode(' OR ', $keywordfull7).' )';
|
||||
|
||||
$sql = "SELECT * FROM {user} WHERE deleted = 0 AND id <> :userid AND $conditions"; // Exclude oneself
|
||||
$sql2 = "SELECT u.*, p.summary FROM {user} AS u, {post} AS p WHERE $conditions2 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid";
|
||||
$sql3 = "SELECT u.*, p.subject as postsubject FROM {user} AS u, {post} AS p WHERE $conditions3 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid";
|
||||
$sql4 = "SELECT u.*, c.content FROM {user} AS u, {comments} AS c WHERE $conditions4 AND u.deleted = 0 AND u.id=c.userid AND u.id <> :userid";
|
||||
$sql5 = "SELECT u.*, m.fullmessage FROM {user} AS u, {message} AS m WHERE $conditions5 AND u.deleted = 0 AND u.id=m.useridfrom AND u.id <> :userid";
|
||||
$sql6 = "SELECT u.*, fp.message FROM {user} AS u, {forum_posts} AS fp WHERE $conditions6 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid";
|
||||
$sql7 = "SELECT u.*, fp.subject FROM {user} AS u, {forum_posts} AS fp WHERE $conditions7 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid";
|
||||
$sql2 = "SELECT u.*, p.summary FROM {user} u, {post} p WHERE $conditions2 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid";
|
||||
$sql3 = "SELECT u.*, p.subject as postsubject FROM {user} u, {post} p WHERE $conditions3 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid";
|
||||
$sql4 = "SELECT u.*, c.content FROM {user} u, {comments} c WHERE $conditions4 AND u.deleted = 0 AND u.id=c.userid AND u.id <> :userid";
|
||||
$sql5 = "SELECT u.*, m.fullmessage FROM {user} u, {message} m WHERE $conditions5 AND u.deleted = 0 AND u.id=m.useridfrom AND u.id <> :userid";
|
||||
$sql6 = "SELECT u.*, fp.message FROM {user} u, {forum_posts} fp WHERE $conditions6 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid";
|
||||
$sql7 = "SELECT u.*, fp.subject FROM {user} u, {forum_posts} fp WHERE $conditions7 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid";
|
||||
|
||||
$spamusers_desc = $DB->get_recordset_sql($sql, $params);
|
||||
$spamusers_blog = $DB->get_recordset_sql($sql2, $params);
|
||||
|
||||
@@ -231,10 +231,10 @@ if ($formdata = $mform2->is_cancelled()) {
|
||||
$user->$key['text'] = $value;
|
||||
$user->$key['format'] = FORMAT_MOODLE;
|
||||
} else {
|
||||
$user->$key = $value;
|
||||
$user->$key = trim($value);
|
||||
}
|
||||
} else {
|
||||
$user->$key = $value;
|
||||
$user->$key = trim($value);
|
||||
}
|
||||
|
||||
if (in_array($key, $upt->columns)) {
|
||||
@@ -870,6 +870,7 @@ if ($formdata = $mform2->is_cancelled()) {
|
||||
if ($rid) {
|
||||
// find duration
|
||||
$timeend = 0;
|
||||
|
||||
if (!empty($user->{'enrolperiod'.$i})) {
|
||||
$duration = (int)$user->{'enrolperiod'.$i} * 60*60*24; // convert days to seconds
|
||||
if ($duration > 0) { // sanity check
|
||||
@@ -1001,7 +1002,7 @@ while ($linenum <= $previewrows and $fields = $cir->next()) {
|
||||
$rowcols = array();
|
||||
$rowcols['line'] = $linenum;
|
||||
foreach($fields as $key => $field) {
|
||||
$rowcols[$filecolumns[$key]] = s($field);
|
||||
$rowcols[$filecolumns[$key]] = s(trim($field));
|
||||
}
|
||||
$rowcols['status'] = array();
|
||||
|
||||
@@ -1027,7 +1028,7 @@ while ($linenum <= $previewrows and $fields = $cir->next()) {
|
||||
}
|
||||
|
||||
if (isset($rowcols['city'])) {
|
||||
$rowcols['city'] = trim($rowcols['city']);
|
||||
$rowcols['city'] = $rowcols['city'];
|
||||
if (empty($rowcols['city'])) {
|
||||
$rowcols['status'][] = get_string('fieldrequired', 'error', 'city');
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ class check_foreign_keys extends XMLDBCheckAction {
|
||||
'noviolatedforeignkeysfound' => 'tool_xmldb',
|
||||
'violatedforeignkeysfound' => 'tool_xmldb',
|
||||
'violations' => 'tool_xmldb',
|
||||
'unknowntable' => 'tool_xmldb',
|
||||
'unknownfield' => 'tool_xmldb',
|
||||
));
|
||||
}
|
||||
|
||||
@@ -75,6 +77,19 @@ class check_foreign_keys extends XMLDBCheckAction {
|
||||
}
|
||||
$o.=' <li>' . $this->str['key'] . ': ' . $xmldb_key->readableInfo() . ' ';
|
||||
|
||||
$reftable = $xmldb_key->getRefTable();
|
||||
if (!$dbman->table_exists($reftable)) {
|
||||
$o.='<font color="red">' . $this->str['unknowntable'] . '</font>';
|
||||
// Add the missing index to the list
|
||||
$violation = new stdClass();
|
||||
$violation->string = 'fkunknowntable';
|
||||
$violation->table = $xmldb_table;
|
||||
$violation->key = $xmldb_key;
|
||||
$violation->reftable = $reftable;
|
||||
$violatedkeys[] = $violation;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Work out the SQL to find key violations.
|
||||
$keyfields = $xmldb_key->getFields();
|
||||
$reffields = $xmldb_key->getRefFields();
|
||||
@@ -82,6 +97,19 @@ class check_foreign_keys extends XMLDBCheckAction {
|
||||
$nullnessconditions = array();
|
||||
$params = array();
|
||||
foreach ($keyfields as $i => $field) {
|
||||
if (!$dbman->field_exists($reftable, $reffields[$i])) {
|
||||
$o.='<font color="red">' . $this->str['unknownfield'] . '</font>';
|
||||
// Add the missing index to the list
|
||||
$violation = new stdClass();
|
||||
$violation->string = 'fkunknownfield';
|
||||
$violation->table = $xmldb_table;
|
||||
$violation->key = $xmldb_key;
|
||||
$violation->reftable = $reftable;
|
||||
$violation->reffield = $reffields[$i];
|
||||
$violatedkeys[] = $violation;
|
||||
continue 2;
|
||||
}
|
||||
|
||||
$joinconditions[] = 't1.' . $field . ' = t2.' . $reffields[$i];
|
||||
$xmldb_field = $xmldb_table->getField($field);
|
||||
$default = $xmldb_field->getDefault();
|
||||
@@ -97,7 +125,7 @@ class check_foreign_keys extends XMLDBCheckAction {
|
||||
}
|
||||
$nullnessconditions[] = 't2.id IS NULL';
|
||||
$sql = 'SELECT count(1) FROM {' . $xmldb_table->getName() .
|
||||
'} t1 LEFT JOIN {' . $xmldb_key->getRefTable() . '} t2 ON ' .
|
||||
'} t1 LEFT JOIN {' . $reftable . '} t2 ON ' .
|
||||
implode(' AND ', $joinconditions) . ' WHERE ' .
|
||||
implode(' AND ', $nullnessconditions);
|
||||
|
||||
@@ -109,6 +137,7 @@ class check_foreign_keys extends XMLDBCheckAction {
|
||||
$o.='<font color="red">' . $this->str['violations'] . '</font>';
|
||||
// Add the missing index to the list
|
||||
$violation = new stdClass;
|
||||
$violation->string = 'fkviolationdetails';
|
||||
$violation->table = $xmldb_table;
|
||||
$violation->key = $xmldb_key;
|
||||
$violation->numviolations = $violations;
|
||||
@@ -145,8 +174,11 @@ class check_foreign_keys extends XMLDBCheckAction {
|
||||
$violation->tablename = $violation->table->getName();
|
||||
$violation->keyname = $violation->key->getName();
|
||||
|
||||
$r.= ' <li>' .get_string('fkviolationdetails', 'tool_xmldb', $violation) .
|
||||
'<pre>' . s($violation->sql) . '; ' . s($violation->sqlparams) . '</pre></li>';
|
||||
$r.= ' <li>' .get_string($violation->string, 'tool_xmldb', $violation);
|
||||
if (!empty($violation->sql)) {
|
||||
$r.= '<pre>' . s($violation->sql) . '; ' . s($violation->sqlparams) . '</pre>';
|
||||
}
|
||||
$r.= '</li>';
|
||||
}
|
||||
$r.= ' </ul>';
|
||||
} else {
|
||||
|
||||
@@ -106,6 +106,8 @@ $string['fieldsusedinindex'] = 'This field is used as index';
|
||||
$string['fieldsusedinkey'] = 'This field is used as key.';
|
||||
$string['filemodifiedoutfromeditor'] = 'Warning: File locally modified while using the XMLDB Editor. Saving will overwrite local changes.';
|
||||
$string['filenotwriteable'] = 'File not writeable';
|
||||
$string['fkunknownfield'] = 'Foreign key {$a->keyname} on table {$a->tablename} points to a non-existent field {$a->reffield} in referenced table {$a->reftable}.';
|
||||
$string['fkunknowntable'] = 'Foreign key {$a->keyname} on table {$a->tablename} points to a non-existent table {$a->reftable}.';
|
||||
$string['fkviolationdetails'] = 'Foreign key {$a->keyname} on table {$a->tablename} is violated by {$a->numviolations} out of {$a->numrows} rows.';
|
||||
$string['floatincorrectdecimals'] = 'Incorrect number of decimals for float field';
|
||||
$string['floatincorrectlength'] = 'Incorrect length for float field';
|
||||
@@ -183,6 +185,8 @@ $string['selecttable'] = 'Select table:';
|
||||
$string['table'] = 'Table';
|
||||
$string['tablenameempty'] = 'The table name cannot be empty';
|
||||
$string['tables'] = 'Tables';
|
||||
$string['unknownfield'] = 'Refers to an unknown field';
|
||||
$string['unknowntable'] = 'Refers to an unknown table';
|
||||
$string['unload'] = 'Unload';
|
||||
$string['up'] = 'Up';
|
||||
$string['view'] = 'View';
|
||||
|
||||
@@ -941,7 +941,6 @@ class auth_plugin_mnet extends auth_plugin_base {
|
||||
// run the keepalive client
|
||||
$this->keepalive_client();
|
||||
|
||||
// admin/cron.php should have run srand for us
|
||||
$random100 = rand(0,100);
|
||||
if ($random100 < 10) { // Approximately 10% of the time.
|
||||
// nuke olden sessions
|
||||
|
||||
@@ -47,21 +47,7 @@
|
||||
if ($shibbolethauth->user_login($frm->username, $frm->password)
|
||||
&& $user = authenticate_user_login($frm->username, $frm->password)) {
|
||||
|
||||
enrol_check_plugins($user);
|
||||
session_set_user($user);
|
||||
|
||||
$USER->loggedin = true;
|
||||
$USER->site = $CFG->wwwroot; // for added security, store the site in the
|
||||
|
||||
update_user_login_times();
|
||||
|
||||
// Don't show previous shibboleth username on login page
|
||||
|
||||
set_login_session_preferences();
|
||||
|
||||
unset($SESSION->lang);
|
||||
$SESSION->justloggedin = true;
|
||||
|
||||
complete_user_login($user);
|
||||
add_to_log(SITEID, 'user', 'login', "view.php?id=$USER->id&course=".SITEID, $USER->id, 0, $USER->id);
|
||||
|
||||
if (user_not_fully_set_up($USER)) {
|
||||
|
||||
@@ -309,7 +309,6 @@ class entities {
|
||||
$source = str_split($source, 1);
|
||||
|
||||
for ($i = 1; $i <= $length; $i++) {
|
||||
mt_srand((double) microtime() * 1000000);
|
||||
$num = mt_rand(1, count($source));
|
||||
$response .= $source[$num - 1];
|
||||
}
|
||||
|
||||
@@ -129,20 +129,37 @@ class backup_course_task extends backup_task {
|
||||
/**
|
||||
* Code the transformations to perform in the course in
|
||||
* order to get transportable (encoded) links
|
||||
* @param string $content content in which to encode links.
|
||||
* @return string content with links encoded.
|
||||
*/
|
||||
static public function encode_content_links($content) {
|
||||
global $CFG;
|
||||
|
||||
$base = preg_quote($CFG->wwwroot, '/');
|
||||
|
||||
// Link to the course main page (it also covers "&topic=xx" and "&week=xx"
|
||||
// because they don't become transformed (section number) in backup/restore
|
||||
$search = '/(' . $base . '\/course\/view.php\?id\=)([0-9]+)/';
|
||||
$content= preg_replace($search, '$@COURSEVIEWBYID*$2@$', $content);
|
||||
// because they don't become transformed (section number) in backup/restore.
|
||||
$content = self::encode_links_helper($content, 'COURSEVIEWBYID', '/course/view.php?id=');
|
||||
|
||||
// A few other key course links.
|
||||
$content = self::encode_links_helper($content, 'GRADEINDEXBYID', '/grade/index.php?id=');
|
||||
$content = self::encode_links_helper($content, 'GRADEREPORTINDEXBYID', '/grade/report/index.php?id=');
|
||||
$content = self::encode_links_helper($content, 'USERINDEXVIEWBYID', '/user/index.php?id=');
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method, used by encode_content_links.
|
||||
* @param string $content content in which to encode links.
|
||||
* @param unknown_type $name the name of this type of encoded link.
|
||||
* @param unknown_type $path the path that identifies this type of link, up
|
||||
* to the ?paramname= bit.
|
||||
* @return string content with one type of link encoded.
|
||||
*/
|
||||
static private function encode_links_helper($content, $name, $path) {
|
||||
global $CFG;
|
||||
$base = preg_quote($CFG->wwwroot . $path, '/');
|
||||
return preg_replace('/(' . $base . ')([0-9]+)/', '$@' . $name . '*$2@$', $content);
|
||||
}
|
||||
|
||||
// Protected API starts here
|
||||
|
||||
/**
|
||||
|
||||
@@ -210,7 +210,7 @@ abstract class backup_questions_activity_structure_step extends backup_activity_
|
||||
|
||||
$qas = new backup_nested_element($nameprefix . 'question_attempts');
|
||||
$qa = new backup_nested_element($nameprefix . 'question_attempt', array('id'), array(
|
||||
'slot', 'behaviour', 'questionid', 'maxmark', 'minfraction',
|
||||
'slot', 'behaviour', 'questionid', 'variant', 'maxmark', 'minfraction',
|
||||
'flagged', 'questionsummary', 'rightanswer', 'responsesummary',
|
||||
'timemodified'));
|
||||
|
||||
|
||||
@@ -135,10 +135,16 @@ class restore_course_task extends restore_task {
|
||||
static public function define_decode_rules() {
|
||||
$rules = array();
|
||||
|
||||
$rules[] = new restore_decode_rule('COURSEVIEWBYID', '/course/view.php?id=$1', 'course');
|
||||
// Link to the course main page (it also covers "&topic=xx" and "&week=xx"
|
||||
// because they don't become transformed (section number) in backup/restore.
|
||||
$rules[] = new restore_decode_rule('COURSEVIEWBYID', '/course/view.php?id=$1', 'course');
|
||||
|
||||
// A few other key course links.
|
||||
$rules[] = new restore_decode_rule('GRADEINDEXBYID', '/grade/index.php?id=$1', 'course');
|
||||
$rules[] = new restore_decode_rule('GRADEREPORTINDEXBYID', '/grade/report/index.php?id=$1', 'course');
|
||||
$rules[] = new restore_decode_rule('USERINDEXVIEWBYID', '/user/index.php?id=$1', 'course');
|
||||
|
||||
return $rules;
|
||||
|
||||
}
|
||||
|
||||
// Protected API starts here
|
||||
|
||||
@@ -3837,6 +3837,9 @@ abstract class restore_questions_activity_structure_step extends restore_activit
|
||||
|
||||
$data->questionusageid = $this->get_new_parentid($nameprefix . 'question_usage');
|
||||
$data->questionid = $question->newitemid;
|
||||
if (!property_exists($data, 'variant')) {
|
||||
$data->variant = 1;
|
||||
}
|
||||
$data->timemodified = $this->apply_date_offset($data->timemodified);
|
||||
|
||||
$newitemid = $DB->insert_record('question_attempts', $data);
|
||||
|
||||
@@ -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/>.
|
||||
|
||||
/**
|
||||
* @package core_backup
|
||||
* @category phpunit
|
||||
* @copyright 2013 The Open University
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
|
||||
global $CFG;
|
||||
require_once($CFG->dirroot . '/backup/util/includes/backup_includes.php');
|
||||
require_once($CFG->dirroot . '/backup/moodle2/backup_course_task.class.php');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Tests for encoding content links in backup_course_task.
|
||||
*
|
||||
* The code that this tests is acutally in backup/moodle2/backup_course_task.class.php,
|
||||
* but there is no place for unit tests near there, and perhaps one day it will
|
||||
* be refactored so it becomes more generic.
|
||||
*/
|
||||
class backup_course_task_testcase extends basic_testcase {
|
||||
|
||||
/**
|
||||
* Test the encode_content_links method for course.
|
||||
*/
|
||||
public function test_course_encode_content_links() {
|
||||
global $CFG;
|
||||
$encoded = backup_course_task::encode_content_links(
|
||||
$CFG->wwwroot . '/course/view.php?id=123, ' .
|
||||
$CFG->wwwroot . '/grade/index.php?id=123, ' .
|
||||
$CFG->wwwroot . '/grade/report/index.php?id=123 and ' .
|
||||
$CFG->wwwroot . '/user/index.php?id=123.');
|
||||
$this->assertEquals('$@COURSEVIEWBYID*123@$, $@GRADEINDEXBYID*123@$, ' .
|
||||
'$@GRADEREPORTINDEXBYID*123@$ and $@USERINDEXVIEWBYID*123@$.', $encoded);
|
||||
}
|
||||
}
|
||||
@@ -73,6 +73,11 @@ abstract class base_moodleform extends moodleform {
|
||||
*/
|
||||
function __construct(base_ui_stage $uistage, $action=null, $customdata=null, $method='post', $target='', $attributes=null, $editable=true) {
|
||||
$this->uistage = $uistage;
|
||||
$attributes = (array)$attributes;
|
||||
if (!isset($attributes['enctype'])) {
|
||||
$attributes['enctype'] = 'application/x-www-form-urlencoded'; // Enforce compatibility with our max_input_vars hack.
|
||||
}
|
||||
|
||||
parent::__construct($action, $customdata, $method, $target, $attributes, $editable);
|
||||
}
|
||||
/**
|
||||
|
||||
@@ -697,6 +697,7 @@ class restore_ui_stage_process extends restore_ui_stage {
|
||||
$html .= html_writer::start_tag('form', array(
|
||||
'action' => $url->out_omit_querystring(),
|
||||
'class' => 'backup-restore',
|
||||
'enctype' => 'application/x-www-form-urlencoded', // Enforce compatibility with our max_input_vars hack.
|
||||
'method' => 'post'));
|
||||
foreach ($url->params() as $name => $value) {
|
||||
$html .= html_writer::empty_tag('input', array(
|
||||
|
||||
@@ -83,6 +83,7 @@ class block_blog_recent extends block_base {
|
||||
|
||||
$this->content = new stdClass();
|
||||
$this->content->footer = '';
|
||||
$this->content->text = '';
|
||||
|
||||
$context = $this->page->context;
|
||||
|
||||
|
||||
@@ -34,7 +34,14 @@ class block_course_list extends block_list {
|
||||
|
||||
if (empty($CFG->disablemycourses) and isloggedin() and !isguestuser() and
|
||||
!(has_capability('moodle/course:update', context_system::instance()) and $adminseesall)) { // Just print My Courses
|
||||
if ($courses = enrol_get_my_courses(NULL, 'visible DESC, fullname ASC')) {
|
||||
// As this is producing navigation sort order should default to $CFG->navsortmycoursessort instead
|
||||
// of using the default.
|
||||
if (!empty($CFG->navsortmycoursessort)) {
|
||||
$sortorder = 'visible DESC, ' . $CFG->navsortmycoursessort . ' ASC';
|
||||
} else {
|
||||
$sortorder = 'visible DESC, sortorder ASC';
|
||||
}
|
||||
if ($courses = enrol_get_my_courses(NULL, $sortorder)) {
|
||||
foreach ($courses as $course) {
|
||||
$coursecontext = context_course::instance($course->id);
|
||||
$linkcss = $course->visible ? "" : " class=\"dimmed\" ";
|
||||
@@ -120,8 +127,7 @@ class block_course_list extends block_list {
|
||||
$this->content->items[] = get_string('remotecourses','mnet');
|
||||
$this->content->icons[] = '';
|
||||
foreach ($courses as $course) {
|
||||
$coursecontext = context_course::instance($course->id);
|
||||
$this->content->items[]="<a title=\"" . format_string($course->shortname, true, array('context' => $coursecontext)) . "\" ".
|
||||
$this->content->items[]="<a title=\"" . format_string($course->shortname, true) . "\" ".
|
||||
"href=\"{$CFG->wwwroot}/auth/mnet/jump.php?hostid={$course->hostid}&wantsurl=/course/view.php?id={$course->remoteid}\">"
|
||||
.$icon. format_string($course->fullname) . "</a>";
|
||||
}
|
||||
|
||||
+5
-2
@@ -33,7 +33,7 @@
|
||||
* @todo MDL-36050 improve capability check on stick blocks, so we can check user capability before sending images.
|
||||
*/
|
||||
function block_html_pluginfile($course, $birecord_or_cm, $context, $filearea, $args, $forcedownload, array $options=array()) {
|
||||
global $DB, $CFG;
|
||||
global $DB, $CFG, $USER;
|
||||
|
||||
if ($context->contextlevel != CONTEXT_BLOCK) {
|
||||
send_file_not_found();
|
||||
@@ -53,8 +53,11 @@ function block_html_pluginfile($course, $birecord_or_cm, $context, $filearea, $a
|
||||
if (!$category->visible) {
|
||||
require_capability('moodle/category:viewhiddencategories', $parentcontext);
|
||||
}
|
||||
} else if ($parentcontext->contextlevel === CONTEXT_USER && $parentcontext->instanceid != $USER->id) {
|
||||
// The block is in the context of a user, it is only visible to the user who it belongs to.
|
||||
send_file_not_found();
|
||||
}
|
||||
// At this point there is no way to check SYSTEM or USER context, so ignoring it.
|
||||
// At this point there is no way to check SYSTEM context, so ignoring it.
|
||||
}
|
||||
|
||||
if ($filearea !== 'content') {
|
||||
|
||||
@@ -46,5 +46,14 @@ class block_mentees extends block_base {
|
||||
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the block can be docked.
|
||||
* The mentees block can only be docked if it has a non-empty title.
|
||||
* @return bool
|
||||
*/
|
||||
public function instance_can_be_docked() {
|
||||
return parent::instance_can_be_docked() && isset($this->config->title) && !empty($this->config->title);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -81,6 +81,7 @@ class block_tags extends block_base {
|
||||
}
|
||||
|
||||
$this->content = new stdClass;
|
||||
$this->content->text = '';
|
||||
$this->content->footer = '';
|
||||
|
||||
// Get a list of tags.
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ if (empty($CFG->enableblogs)) {
|
||||
|
||||
//correct tagid if a text tag is provided as a param
|
||||
if (!empty($tag)) {
|
||||
if ($tagrec = $DB->get_record_sql("SELECT * FROM {tag} WHERE ". $DB->sql_like('name', '?', false), array("%$tag%"))) {
|
||||
if ($tagrec = $DB->get_record('tag', array('name' => $tag))) {
|
||||
$tagid = $tagrec->id;
|
||||
} else {
|
||||
unset($tagid);
|
||||
|
||||
+6
-2
@@ -957,8 +957,12 @@ function blog_get_headers($courseid=null, $groupid=null, $userid=null, $tagid=nu
|
||||
$tagrec = $DB->get_record('tag', array('id'=>$tagid));
|
||||
$PAGE->navbar->add($tagrec->name, $blogurl);
|
||||
} elseif (!empty($tag)) {
|
||||
$blogurl->param('tag', $tag);
|
||||
$PAGE->navbar->add(get_string('tagparam', 'blog', $tag), $blogurl);
|
||||
if ($tagrec = $DB->get_record('tag', array('name' => $tag))) {
|
||||
$tagid = $tagrec->id;
|
||||
$headers['filters']['tag'] = $tagid;
|
||||
$blogurl->param('tag', $tag);
|
||||
$PAGE->navbar->add(get_string('tagparam', 'blog', $tag), $blogurl);
|
||||
}
|
||||
}
|
||||
|
||||
// Append Search info
|
||||
|
||||
Vendored
+1
@@ -177,6 +177,7 @@ if (!empty($action) && confirm_sesskey()) {
|
||||
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->set_heading($SITE->fullname);
|
||||
/* @var core_cache_renderer $renderer */
|
||||
$renderer = $PAGE->get_renderer('core_cache');
|
||||
|
||||
echo $renderer->header();
|
||||
|
||||
Vendored
+43
-2
@@ -256,7 +256,7 @@ class cache_definition {
|
||||
* An array of identifiers provided to this cache when it was initialised.
|
||||
* @var array
|
||||
*/
|
||||
protected $identifiers = array();
|
||||
protected $identifiers = null;
|
||||
|
||||
/**
|
||||
* Key prefix for use with single key cache stores
|
||||
@@ -582,6 +582,9 @@ class cache_definition {
|
||||
* @return array
|
||||
*/
|
||||
public function get_identifiers() {
|
||||
if (!isset($this->identifiers)) {
|
||||
return array();
|
||||
}
|
||||
return $this->identifiers;
|
||||
}
|
||||
|
||||
@@ -694,11 +697,22 @@ class cache_definition {
|
||||
* @throws coding_exception
|
||||
*/
|
||||
public function set_identifiers(array $identifiers = array()) {
|
||||
// If we are setting the exact same identifiers then just return as nothing really changed.
|
||||
// We don't care about order as cache::make will use the same definition order all the time.
|
||||
if ($identifiers === $this->identifiers) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($this->requireidentifiers as $identifier) {
|
||||
if (!array_key_exists($identifier, $identifiers)) {
|
||||
throw new coding_exception('Identifier required for cache has not been provided: '.$identifier);
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->identifiers === null) {
|
||||
// Initialize identifiers if they have not been.
|
||||
$this->identifiers = array();
|
||||
}
|
||||
foreach ($identifiers as $name => $value) {
|
||||
$this->identifiers[$name] = (string)$value;
|
||||
}
|
||||
@@ -820,7 +834,7 @@ class cache_definition {
|
||||
'area' => $this->area,
|
||||
'siteidentifier' => $this->get_cache_identifier()
|
||||
);
|
||||
if (!empty($this->identifiers)) {
|
||||
if (isset($this->identifiers) && !empty($this->identifiers)) {
|
||||
$identifiers = array();
|
||||
foreach ($this->identifiers as $key => $value) {
|
||||
$identifiers[] = htmlentities($key, ENT_QUOTES, 'UTF-8').'='.htmlentities($value, ENT_QUOTES, 'UTF-8');
|
||||
@@ -867,4 +881,31 @@ class cache_definition {
|
||||
protected function get_cache_identifier() {
|
||||
return cache_helper::get_site_identifier();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the possible sharing options that can be used with this defintion.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function get_sharing_options() {
|
||||
return $this->sharingoptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the user entered sharing key for this definition.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_user_input_sharing_key() {
|
||||
return $this->userinputsharingkey;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the user selected sharing option for this definition.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function get_selected_sharing_option() {
|
||||
return $this->selectedsharingoption;
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+9
-8
@@ -235,14 +235,14 @@ class cache_factory {
|
||||
*/
|
||||
public function create_cache(cache_definition $definition) {
|
||||
$class = $definition->get_cache_class();
|
||||
if ($this->is_initialising()) {
|
||||
// Do nothing we just want the dummy store.
|
||||
$stores = array();
|
||||
} else {
|
||||
$stores = cache_helper::get_cache_stores($definition);
|
||||
$stores = cache_helper::get_stores_suitable_for_definition($definition);
|
||||
foreach ($stores as $key => $store) {
|
||||
if (!$store::are_requirements_met()) {
|
||||
unset($stores[$key]);
|
||||
}
|
||||
}
|
||||
if (count($stores) === 0) {
|
||||
// Hmm no stores, better provide a dummy store to mimick functionality. The dev will be none the wiser.
|
||||
// Hmm still no stores, better provide a dummy store to mimic functionality. The dev will be none the wiser.
|
||||
$stores[] = $this->create_dummy_store($definition);
|
||||
}
|
||||
$loader = null;
|
||||
@@ -258,7 +258,7 @@ class cache_factory {
|
||||
/**
|
||||
* Creates a store instance given its name and configuration.
|
||||
*
|
||||
* If the store has already been instantiated then the original objetc will be returned. (reused)
|
||||
* If the store has already been instantiated then the original object will be returned. (reused)
|
||||
*
|
||||
* @param string $name The name of the store (must be unique remember)
|
||||
* @param array $details
|
||||
@@ -272,8 +272,9 @@ class cache_factory {
|
||||
$store = new $class($details['name'], $details['configuration']);
|
||||
$this->stores[$name] = $store;
|
||||
}
|
||||
/* @var cache_store $store */
|
||||
$store = $this->stores[$name];
|
||||
if (!$store->is_ready() || !$store->is_supported_mode($definition->get_mode())) {
|
||||
if (!$store::are_requirements_met() || !$store->is_ready() || !$store->is_supported_mode($definition->get_mode())) {
|
||||
return false;
|
||||
}
|
||||
// We always create a clone of the original store.
|
||||
|
||||
Vendored
+70
-8
@@ -143,7 +143,7 @@ class cache_helper {
|
||||
*
|
||||
* @param array $stores
|
||||
* @param cache_definition $definition
|
||||
* @return array
|
||||
* @return cache_store[]
|
||||
*/
|
||||
protected static function initialise_cachestore_instances(array $stores, cache_definition $definition) {
|
||||
$return = array();
|
||||
@@ -377,34 +377,40 @@ class cache_helper {
|
||||
/**
|
||||
* Record a cache hit in the stats for the given store and definition.
|
||||
*
|
||||
* @internal
|
||||
* @param string $store
|
||||
* @param string $definition
|
||||
* @param int $hits The number of hits to record (by default 1)
|
||||
*/
|
||||
public static function record_cache_hit($store, $definition) {
|
||||
public static function record_cache_hit($store, $definition, $hits = 1) {
|
||||
self::ensure_ready_for_stats($store, $definition);
|
||||
self::$stats[$definition][$store]['hits']++;
|
||||
self::$stats[$definition][$store]['hits'] += $hits;
|
||||
}
|
||||
|
||||
/**
|
||||
* Record a cache miss in the stats for the given store and definition.
|
||||
*
|
||||
* @internal
|
||||
* @param string $store
|
||||
* @param string $definition
|
||||
* @param int $misses The number of misses to record (by default 1)
|
||||
*/
|
||||
public static function record_cache_miss($store, $definition) {
|
||||
public static function record_cache_miss($store, $definition, $misses = 1) {
|
||||
self::ensure_ready_for_stats($store, $definition);
|
||||
self::$stats[$definition][$store]['misses']++;
|
||||
self::$stats[$definition][$store]['misses'] += $misses;
|
||||
}
|
||||
|
||||
/**
|
||||
* Record a cache set in the stats for the given store and definition.
|
||||
*
|
||||
* @internal
|
||||
* @param string $store
|
||||
* @param string $definition
|
||||
* @param int $sets The number of sets to record (by default 1)
|
||||
*/
|
||||
public static function record_cache_set($store, $definition) {
|
||||
public static function record_cache_set($store, $definition, $sets = 1) {
|
||||
self::ensure_ready_for_stats($store, $definition);
|
||||
self::$stats[$definition][$store]['sets']++;
|
||||
self::$stats[$definition][$store]['sets'] += $sets;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -449,8 +455,9 @@ class cache_helper {
|
||||
$class = $store['class'];
|
||||
|
||||
// Found the store: is it ready?
|
||||
/* @var cache_store $instance */
|
||||
$instance = new $class($store['name'], $store['configuration']);
|
||||
if (!$instance->is_ready()) {
|
||||
if (!$instance::are_requirements_met() || !$instance->is_ready()) {
|
||||
unset($instance);
|
||||
return false;
|
||||
}
|
||||
@@ -638,4 +645,59 @@ class cache_helper {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of stores that would meet the requirements for every definition.
|
||||
*
|
||||
* These stores would be 100% suitable to map as defaults for cache modes.
|
||||
*
|
||||
* @return array[] An array of stores, keys are the store names.
|
||||
*/
|
||||
public static function get_stores_suitable_for_mode_default() {
|
||||
$factory = cache_factory::instance();
|
||||
$config = $factory->create_config_instance();
|
||||
$requirements = 0;
|
||||
foreach ($config->get_definitions() as $definition) {
|
||||
$definition = cache_definition::load($definition['component'].'/'.$definition['area'], $definition);
|
||||
$requirements = $requirements | $definition->get_requirements_bin();
|
||||
}
|
||||
$stores = array();
|
||||
foreach ($config->get_all_stores() as $name => $store) {
|
||||
if (!empty($store['features']) && ($store['features'] & $requirements)) {
|
||||
$stores[$name] = $store;
|
||||
}
|
||||
}
|
||||
return $stores;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns stores suitable for use with a given definition.
|
||||
*
|
||||
* @param cache_definition $definition
|
||||
* @return cache_store[]
|
||||
*/
|
||||
public static function get_stores_suitable_for_definition(cache_definition $definition) {
|
||||
$factory = cache_factory::instance();
|
||||
$stores = array();
|
||||
if ($factory->is_initialising() || $factory->stores_disabled()) {
|
||||
// No suitable stores here.
|
||||
return $stores;
|
||||
} else {
|
||||
$stores = self::get_cache_stores($definition);
|
||||
if (count($stores) === 0) {
|
||||
// No suitable stores we found for the definition. We need to come up with a sensible default.
|
||||
// If this has happened we can be sure that the user has mapped custom stores to either the
|
||||
// mode of the definition. The first alternative to try is the system default for the mode.
|
||||
// e.g. the default file store instance for application definitions.
|
||||
$config = $factory->create_config_instance();
|
||||
foreach ($config->get_stores($definition->get_mode()) as $name => $details) {
|
||||
if (!empty($details['default'])) {
|
||||
$stores[] = $factory->create_store_from_config($name, $details, $definition);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $stores;
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+35
-7
@@ -463,6 +463,20 @@ class cache implements cache_loader {
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->perfdebug) {
|
||||
$hits = 0;
|
||||
$misses = 0;
|
||||
foreach ($fullresult as $value) {
|
||||
if ($value === false) {
|
||||
$misses++;
|
||||
} else {
|
||||
$hits++;
|
||||
}
|
||||
}
|
||||
cache_helper::record_cache_hit($this->storetype, $this->definition->get_id(), $hits);
|
||||
cache_helper::record_cache_miss($this->storetype, $this->definition->get_id(), $misses);
|
||||
}
|
||||
|
||||
// Return the result. Phew!
|
||||
return $fullresult;
|
||||
}
|
||||
@@ -633,10 +647,11 @@ class cache implements cache_loader {
|
||||
$this->set_in_persist_cache($data[$key]['key'], $value);
|
||||
}
|
||||
}
|
||||
if ($this->perfdebug) {
|
||||
cache_helper::record_cache_set($this->storetype, $this->definition->get_id());
|
||||
$successfullyset = $this->store->set_many($data);
|
||||
if ($this->perfdebug && $successfullyset) {
|
||||
cache_helper::record_cache_set($this->storetype, $this->definition->get_id(), $successfullyset);
|
||||
}
|
||||
return $this->store->set_many($data);
|
||||
return $successfullyset;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1872,7 +1887,19 @@ class cache_session extends cache {
|
||||
if ($hasmissingkeys && $strictness === MUST_EXIST) {
|
||||
throw new coding_exception('Requested key did not exist in any cache stores and could not be loaded.');
|
||||
}
|
||||
|
||||
if ($this->perfdebug) {
|
||||
$hits = 0;
|
||||
$misses = 0;
|
||||
foreach ($return as $value) {
|
||||
if ($value === false) {
|
||||
$misses++;
|
||||
} else {
|
||||
$hits++;
|
||||
}
|
||||
}
|
||||
cache_helper::record_cache_hit($this->storetype, $this->get_definition()->get_id(), $hits);
|
||||
cache_helper::record_cache_miss($this->storetype, $this->get_definition()->get_id(), $misses);
|
||||
}
|
||||
return $return;
|
||||
|
||||
}
|
||||
@@ -1946,10 +1973,11 @@ class cache_session extends cache {
|
||||
'value' => $value
|
||||
);
|
||||
}
|
||||
if ($this->perfdebug) {
|
||||
cache_helper::record_cache_set($this->storetype, $definitionid);
|
||||
$successfullyset = $this->get_store()->set_many($data);
|
||||
if ($this->perfdebug && $successfullyset) {
|
||||
cache_helper::record_cache_set($this->storetype, $definitionid, $successfullyset);
|
||||
}
|
||||
return $this->get_store()->set_many($data);
|
||||
return $successfullyset;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Vendored
+20
-41
@@ -672,59 +672,32 @@ abstract class cache_administration_helper extends cache_helper {
|
||||
* @return array
|
||||
*/
|
||||
public static function get_definition_summaries() {
|
||||
$instance = cache_config::instance();
|
||||
$definitions = $instance->get_definitions();
|
||||
|
||||
$factory = cache_factory::instance();
|
||||
$config = $factory->create_config_instance();
|
||||
$storenames = array();
|
||||
foreach ($instance->get_all_stores() as $key => $store) {
|
||||
foreach ($config->get_all_stores() as $key => $store) {
|
||||
if (!empty($store['default'])) {
|
||||
$storenames[$key] = new lang_string('store_'.$key, 'cache');
|
||||
}
|
||||
}
|
||||
|
||||
$modemappings = array();
|
||||
foreach ($instance->get_mode_mappings() as $mapping) {
|
||||
$mode = $mapping['mode'];
|
||||
if (!array_key_exists($mode, $modemappings)) {
|
||||
$modemappings[$mode] = array();
|
||||
}
|
||||
if (array_key_exists($mapping['store'], $storenames)) {
|
||||
$modemappings[$mode][] = $storenames[$mapping['store']];
|
||||
} else {
|
||||
$modemappings[$mode][] = $mapping['store'];
|
||||
$storenames[$store['name']] = $store['name'];
|
||||
}
|
||||
}
|
||||
|
||||
$definitionmappings = array();
|
||||
foreach ($instance->get_definition_mappings() as $mapping) {
|
||||
$definition = $mapping['definition'];
|
||||
if (!array_key_exists($definition, $definitionmappings)) {
|
||||
$definitionmappings[$definition] = array();
|
||||
}
|
||||
if (array_key_exists($mapping['store'], $storenames)) {
|
||||
$definitionmappings[$definition][] = $storenames[$mapping['store']];
|
||||
} else {
|
||||
$definitionmappings[$definition][] = $mapping['store'];
|
||||
}
|
||||
/* @var cache_definition[] $definitions */
|
||||
$definitions = array();
|
||||
foreach ($config->get_definitions() as $key => $definition) {
|
||||
$definitions[$key] = cache_definition::load($definition['component'].'/'.$definition['area'], $definition);
|
||||
}
|
||||
|
||||
$return = array();
|
||||
|
||||
foreach ($definitions as $id => $definition) {
|
||||
|
||||
$mappings = array();
|
||||
if (array_key_exists($id, $definitionmappings)) {
|
||||
$mappings = $definitionmappings[$id];
|
||||
} else if (empty($definition['mappingsonly'])) {
|
||||
$mappings = $modemappings[$definition['mode']];
|
||||
foreach (cache_helper::get_stores_suitable_for_definition($definition) as $store) {
|
||||
$mappings[] = $storenames[$store->my_name()];
|
||||
}
|
||||
|
||||
$return[$id] = array(
|
||||
'id' => $id,
|
||||
'name' => cache_helper::get_definition_name($definition),
|
||||
'mode' => $definition['mode'],
|
||||
'component' => $definition['component'],
|
||||
'area' => $definition['area'],
|
||||
'name' => $definition->get_name(),
|
||||
'mode' => $definition->get_mode(),
|
||||
'component' => $definition->get_component(),
|
||||
'area' => $definition->get_area(),
|
||||
'mappings' => $mappings
|
||||
);
|
||||
}
|
||||
@@ -976,7 +949,10 @@ abstract class cache_administration_helper extends cache_helper {
|
||||
* @return array An array containing sub-arrays, one for each mode.
|
||||
*/
|
||||
public static function get_default_mode_stores() {
|
||||
global $OUTPUT;
|
||||
$instance = cache_config::instance();
|
||||
$adequatestores = cache_helper::get_stores_suitable_for_mode_default();
|
||||
$icon = new pix_icon('i/warning', new lang_string('inadequatestoreformapping', 'cache'));
|
||||
$storenames = array();
|
||||
foreach ($instance->get_all_stores() as $key => $store) {
|
||||
if (!empty($store['default'])) {
|
||||
@@ -999,6 +975,9 @@ abstract class cache_administration_helper extends cache_helper {
|
||||
} else {
|
||||
$modemappings[$mode][$mapping['store']] = $mapping['store'];
|
||||
}
|
||||
if (!array_key_exists($mapping['store'], $adequatestores)) {
|
||||
$modemappings[$mode][$mapping['store']] = $modemappings[$mode][$mapping['store']].' '.$OUTPUT->render($icon);
|
||||
}
|
||||
}
|
||||
return $modemappings;
|
||||
}
|
||||
|
||||
Vendored
+7
-2
@@ -131,7 +131,7 @@ class cachestore_memcache extends cache_store implements cache_is_configurable {
|
||||
|
||||
$this->connection = new Memcache;
|
||||
foreach ($this->servers as $server) {
|
||||
$this->connection->addServer($server[0], $server[1], true, $server[2]);
|
||||
$this->connection->addServer($server[0], (int) $server[1], true, (int) $server[2]);
|
||||
}
|
||||
// Test the connection to the pool of servers.
|
||||
$this->isready = @$this->connection->set($this->parse_key('ping'), 'ping', MEMCACHE_COMPRESSED, 1);
|
||||
@@ -350,7 +350,12 @@ class cachestore_memcache extends cache_store implements cache_is_configurable {
|
||||
$lines = explode("\n", $data->servers);
|
||||
$servers = array();
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line, ':');
|
||||
// Trim surrounding colons and default whitespace.
|
||||
$line = trim(trim($line), ":");
|
||||
// Skip blank lines.
|
||||
if ($line === '') {
|
||||
continue;
|
||||
}
|
||||
$servers[] = explode(':', $line, 3);
|
||||
}
|
||||
return array(
|
||||
|
||||
Vendored
+6
-1
@@ -374,7 +374,12 @@ class cachestore_memcached extends cache_store implements cache_is_configurable
|
||||
$lines = explode("\n", $data->servers);
|
||||
$servers = array();
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line, ':');
|
||||
// Trim surrounding colons and default whitespace.
|
||||
$line = trim(trim($line), ":");
|
||||
// Skip blank lines.
|
||||
if ($line === '') {
|
||||
continue;
|
||||
}
|
||||
$servers[] = explode(':', $line, 3);
|
||||
}
|
||||
return array(
|
||||
|
||||
@@ -280,6 +280,7 @@ class core_calendar_renderer extends plugin_renderer_base {
|
||||
*/
|
||||
public function event(calendar_event $event, $showactions=true) {
|
||||
$event = calendar_add_event_metadata($event);
|
||||
$context = $event->context;
|
||||
|
||||
$anchor = html_writer::tag('a', '', array('name'=>'event_'.$event->id));
|
||||
|
||||
@@ -302,7 +303,7 @@ class core_calendar_renderer extends plugin_renderer_base {
|
||||
if (!empty($event->referer)) {
|
||||
$table->data[0]->cells[1]->text .= html_writer::tag('div', $event->referer, array('class'=>'referer'));
|
||||
} else {
|
||||
$table->data[0]->cells[1]->text .= html_writer::tag('div', $event->name, array('class'=>'name'));
|
||||
$table->data[0]->cells[1]->text .= html_writer::tag('div', format_string($event->name, false, array('context' => $context)), array('class'=>'name'));
|
||||
}
|
||||
if (!empty($event->courselink)) {
|
||||
$table->data[0]->cells[1]->text .= html_writer::tag('div', $event->courselink, array('class'=>'course'));
|
||||
@@ -316,7 +317,7 @@ class core_calendar_renderer extends plugin_renderer_base {
|
||||
$table->data[1]->cells[0] = new html_table_cell(' ');
|
||||
$table->data[1]->cells[0]->attributes['class'] .= 'side';
|
||||
|
||||
$table->data[1]->cells[1] = new html_table_cell($event->description);
|
||||
$table->data[1]->cells[1] = new html_table_cell(format_text($event->description, $event->format, array('context' => $context)));
|
||||
$table->data[1]->cells[1]->attributes['class'] .= ' description';
|
||||
if (isset($event->cssclass)) {
|
||||
$table->data[1]->cells[1]->attributes['class'] .= ' '.$event->cssclass;
|
||||
|
||||
@@ -554,7 +554,7 @@ abstract class format_base {
|
||||
$sectionid = $section->id;
|
||||
} else if ($this->courseid && is_int($section) &&
|
||||
($sectionobj = $DB->get_record('course_sections',
|
||||
array('section' => $section, 'courseid' => $this->courseid), 'id'))) {
|
||||
array('section' => $section, 'course' => $this->courseid), 'id'))) {
|
||||
// course section format options will be returned
|
||||
$sectionid = $sectionobj->id;
|
||||
} else {
|
||||
|
||||
+22
-11
@@ -2917,14 +2917,6 @@ function set_coursemodule_visible($id, $visible) {
|
||||
}
|
||||
}
|
||||
|
||||
// Hide the associated grade items so the teacher doesn't also have to go to the gradebook and hide them there.
|
||||
$grade_items = grade_item::fetch_all(array('itemtype'=>'mod', 'itemmodule'=>$modulename, 'iteminstance'=>$cm->instance, 'courseid'=>$cm->course));
|
||||
if ($grade_items) {
|
||||
foreach ($grade_items as $grade_item) {
|
||||
$grade_item->set_hidden(!$visible);
|
||||
}
|
||||
}
|
||||
|
||||
// Updating visible and visibleold to keep them in sync. Only changing a section visibility will
|
||||
// affect visibleold to allow for an original visibility restore. See set_section_visible().
|
||||
$cminfo = new stdClass();
|
||||
@@ -2933,6 +2925,25 @@ function set_coursemodule_visible($id, $visible) {
|
||||
$cminfo->visibleold = $visible;
|
||||
$DB->update_record('course_modules', $cminfo);
|
||||
|
||||
require_once($CFG->dirroot . '/mod/' . $modulename . '/lib.php');
|
||||
$functionname = $modulename . '_grade_item_update';
|
||||
|
||||
// Hide the associated grade items so the teacher doesn't also have to go to the gradebook and hide them there.
|
||||
// Note that this must be done after updating the row in course_modules, in case
|
||||
// the modules grade_item_update function needs to access $cm->visible.
|
||||
if (plugin_supports('mod', $modulename, FEATURE_CONTROLS_GRADE_VISIBILITY) &&
|
||||
function_exists($functionname)) {
|
||||
$instance = $DB->get_record($modulename, array('id' => $cm->instance), '*', MUST_EXIST);
|
||||
$functionname($instance);
|
||||
} else {
|
||||
$grade_items = grade_item::fetch_all(array('itemtype'=>'mod', 'itemmodule'=>$modulename, 'iteminstance'=>$cm->instance, 'courseid'=>$cm->course));
|
||||
if ($grade_items) {
|
||||
foreach ($grade_items as $grade_item) {
|
||||
$grade_item->set_hidden(!$visible);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rebuild_course_cache($cm->course, true);
|
||||
return true;
|
||||
}
|
||||
@@ -4558,7 +4569,7 @@ function include_course_ajax($course, $usedmodules = array(), $enabledmodules =
|
||||
);
|
||||
|
||||
// Include course dragdrop
|
||||
if ($course->id != $SITE->id) {
|
||||
if (course_format_uses_sections($course->format)) {
|
||||
$PAGE->requires->yui_module('moodle-course-dragdrop', 'M.course.init_section_dragdrop',
|
||||
array(array(
|
||||
'courseid' => $course->id,
|
||||
@@ -4603,8 +4614,8 @@ function include_course_ajax($course, $usedmodules = array(), $enabledmodules =
|
||||
'movesection',
|
||||
), 'moodle');
|
||||
|
||||
// Include format-specific strings
|
||||
if ($course->id != $SITE->id) {
|
||||
// Include section-specific strings for formats which support sections.
|
||||
if (course_format_uses_sections($course->format)) {
|
||||
$PAGE->requires->strings_for_js(array(
|
||||
'showfromothers',
|
||||
'hidefromothers',
|
||||
|
||||
@@ -60,6 +60,23 @@ if (has_capability('moodle/user:loginas', $systemcontext)) {
|
||||
print_error('usernotincourse');
|
||||
}
|
||||
$context = $coursecontext;
|
||||
|
||||
// Check if course has SEPARATEGROUPS and user is part of that group.
|
||||
if (groups_get_course_groupmode($course) == SEPARATEGROUPS &&
|
||||
!has_capability('moodle/site:accessallgroups', $context)) {
|
||||
$samegroup = false;
|
||||
if ($groups = groups_get_all_groups($course->id, $USER->id)) {
|
||||
foreach ($groups as $group) {
|
||||
if (groups_is_member($group->id, $userid)) {
|
||||
$samegroup = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$samegroup) {
|
||||
print_error('nologinas');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Login as this user and return to course home page.
|
||||
|
||||
@@ -52,7 +52,6 @@ foreach ($allmodules as $key=>$module) {
|
||||
}
|
||||
|
||||
$strresources = get_string('resources');
|
||||
$strsectionname = get_string('sectionname', 'format_'.$course->format);
|
||||
$strname = get_string('name');
|
||||
$strintro = get_string('moduleintro');
|
||||
$strlastmodified = get_string('lastmodified');
|
||||
@@ -100,6 +99,7 @@ $table = new html_table();
|
||||
$table->attributes['class'] = 'generaltable mod_index';
|
||||
|
||||
if ($usesections) {
|
||||
$strsectionname = get_string('sectionname', 'format_'.$course->format);
|
||||
$table->head = array ($strsectionname, $strname, $strintro);
|
||||
$table->align = array ('center', 'left', 'left');
|
||||
} else {
|
||||
|
||||
@@ -239,6 +239,14 @@
|
||||
}
|
||||
|
||||
$PAGE->set_title(get_string('course') . ': ' . $course->fullname);
|
||||
// If viewing a section, make the title more specific
|
||||
if ($section and $section > 0 and course_format_uses_sections($course->format)) {
|
||||
// Get section details and check it exists.
|
||||
$newtitle = $PAGE->title.', '.get_string('sectionname', "format_$course->format").': '.
|
||||
get_section_name($course, $section);
|
||||
$PAGE->set_title($newtitle);
|
||||
}
|
||||
|
||||
$PAGE->set_heading($course->fullname);
|
||||
echo $OUTPUT->header();
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
$string['allowguests'] = 'This course allows guest users to enter';
|
||||
$string['guest:config'] = 'Configure guest access instances';
|
||||
$string['guestaccess_withpassword'] = 'Guest access requires password';
|
||||
$string['guestaccess_withoutpassword'] = 'Guest access';
|
||||
$string['password'] = 'Password';
|
||||
$string['password_help'] = 'A password allows guest access to the course to be restricted to only those who know the password. Guests will be required to supply the password each time they access the course.';
|
||||
$string['passwordinvalid'] = 'Incorrect access password, please try again';
|
||||
|
||||
+2
-2
@@ -45,9 +45,9 @@ class enrol_guest_plugin extends enrol_plugin {
|
||||
public function get_info_icons(array $instances) {
|
||||
foreach ($instances as $instance) {
|
||||
if ($instance->password !== '') {
|
||||
return array(new pix_icon('withpassword', get_string('pluginname', 'enrol_guest'), 'enrol_guest'));
|
||||
return array(new pix_icon('withpassword', get_string('guestaccess_withpassword', 'enrol_guest'), 'enrol_guest'));
|
||||
} else {
|
||||
return array(new pix_icon('withoutpassword', get_string('pluginname', 'enrol_guest'), 'enrol_guest'));
|
||||
return array(new pix_icon('withoutpassword', get_string('guestaccess_withoutpassword', 'enrol_guest'), 'enrol_guest'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
require_once(dirname(dirname(dirname(__FILE__))) . '/config.php');
|
||||
require_login(0, false);
|
||||
require_capability('moodle/site:config', context_system::instance());
|
||||
require_sesskey();
|
||||
|
||||
$site = get_site();
|
||||
|
||||
|
||||
@@ -83,6 +83,8 @@ if ($ADMIN->fulltree) {
|
||||
|
||||
$settings->add(new admin_setting_configcheckbox('enrol_imsenterprise/imscapitafix', get_string('usecapitafix', 'enrol_imsenterprise'), get_string('usecapitafix_desc', 'enrol_imsenterprise'), 0));
|
||||
|
||||
$importnowstring = get_string('aftersaving...', 'enrol_imsenterprise').' <a href="../enrol/imsenterprise/importnow.php">'.get_string('doitnow', 'enrol_imsenterprise').'</a>';
|
||||
$importurl = new moodle_url('/enrol/imsenterprise/importnow.php', array('sesskey' => sesskey()));
|
||||
$importnowstring = get_string('aftersaving...', 'enrol_imsenterprise').' '.
|
||||
html_writer::link($importurl, get_string('doitnow', 'enrol_imsenterprise'));
|
||||
$settings->add(new admin_setting_heading('enrol_imsenterprise_doitnowmessage', '', $importnowstring));
|
||||
}
|
||||
|
||||
@@ -43,6 +43,10 @@ if ($course->id == SITEID) {
|
||||
redirect("$CFG->wwwroot/");
|
||||
}
|
||||
|
||||
if (!$course->visible && !has_capability('moodle/course:viewhiddencourses', context_course::instance($course->id))) {
|
||||
print_error('coursehidden');
|
||||
}
|
||||
|
||||
$PAGE->set_course($course);
|
||||
$PAGE->set_pagelayout('course');
|
||||
$PAGE->set_url('/enrol/index.php', array('id'=>$course->id));
|
||||
|
||||
+1
-1
@@ -915,7 +915,7 @@ class course_enrolment_manager {
|
||||
continue;
|
||||
} else if ($ue->timestart and $ue->timeend) {
|
||||
$period = get_string('periodstartend', 'enrol', array('start'=>userdate($ue->timestart), 'end'=>userdate($ue->timeend)));
|
||||
$periodoutside = ($ue->timestart && $ue->timeend && $now < $ue->timestart && $now > $ue->timeend);
|
||||
$periodoutside = ($ue->timestart && $ue->timeend && ($now < $ue->timestart || $now > $ue->timeend));
|
||||
} else if ($ue->timestart) {
|
||||
$period = get_string('periodstart', 'enrol', userdate($ue->timestart));
|
||||
$periodoutside = ($ue->timestart && $now < $ue->timestart);
|
||||
|
||||
+2
-5
@@ -156,11 +156,8 @@ YUI.add('moodle-enrol_manual-quickenrolment', function(Y) {
|
||||
}
|
||||
|
||||
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).one('img').setAttribute('src', M.util.image_url(collapsedimage, 'moodle'));
|
||||
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).once('click', function() {
|
||||
// We want to do this just once, the first time the controls are shown.
|
||||
this.populateStartDates();
|
||||
this.populateDuration();
|
||||
}, this);
|
||||
this.populateStartDates();
|
||||
this.populateDuration();
|
||||
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).on('click', function(){
|
||||
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).toggleClass(CSS.ACTIVE);
|
||||
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEAREA).toggleClass(CSS.HIDDEN);
|
||||
|
||||
+25
-2
@@ -29,6 +29,9 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
// Disable moodle specific debug messages and any errors in output,
|
||||
// comment out when debugging or better look into error log!
|
||||
define('NO_DEBUG_DISPLAY', true);
|
||||
|
||||
require("../../config.php");
|
||||
require_once("lib.php");
|
||||
@@ -36,6 +39,9 @@ require_once($CFG->libdir.'/eventslib.php');
|
||||
require_once($CFG->libdir.'/enrollib.php');
|
||||
require_once($CFG->libdir . '/filelib.php');
|
||||
|
||||
// PayPal does not like when we return error messages here,
|
||||
// the custom handler just logs exceptions and stops.
|
||||
set_exception_handler('enrol_paypal_ipn_exception_handler');
|
||||
|
||||
/// Keep out casual intruders
|
||||
if (empty($_POST) or !empty($_GET)) {
|
||||
@@ -236,6 +242,7 @@ if (strlen($result) > 0) {
|
||||
|
||||
|
||||
if (!empty($mailstudents)) {
|
||||
$a = new stdClass();
|
||||
$a->coursename = format_string($course->fullname, true, array('context' => $coursecontext));
|
||||
$a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id";
|
||||
|
||||
@@ -243,7 +250,7 @@ if (strlen($result) > 0) {
|
||||
$eventdata->modulename = 'moodle';
|
||||
$eventdata->component = 'enrol_paypal';
|
||||
$eventdata->name = 'paypal_enrolment';
|
||||
$eventdata->userfrom = $teacher;
|
||||
$eventdata->userfrom = empty($teacher) ? get_admin() : $teacher;
|
||||
$eventdata->userto = $user;
|
||||
$eventdata->subject = get_string("enrolmentnew", 'enrol', $shortname);
|
||||
$eventdata->fullmessage = get_string('welcometocoursetext', '', $a);
|
||||
@@ -254,7 +261,7 @@ if (strlen($result) > 0) {
|
||||
|
||||
}
|
||||
|
||||
if (!empty($mailteachers)) {
|
||||
if (!empty($mailteachers) && !empty($teacher)) {
|
||||
$a->course = format_string($course->fullname, true, array('context' => $coursecontext));
|
||||
$a->user = fullname($user);
|
||||
|
||||
@@ -329,4 +336,20 @@ function message_paypal_error_to_admin($subject, $data) {
|
||||
message_send($eventdata);
|
||||
}
|
||||
|
||||
/**
|
||||
* Silent exception handler.
|
||||
*
|
||||
* @param Exception $ex
|
||||
* @return void - does not return. Terminates execution!
|
||||
*/
|
||||
function enrol_paypal_ipn_exception_handler($ex) {
|
||||
$info = get_exception_info($ex);
|
||||
|
||||
$logerrmsg = "enrol_paypal IPN exception handler: ".$info->message;
|
||||
if (debugging('', DEBUG_NORMAL)) {
|
||||
$logerrmsg .= ' Debug: '.$info->debuginfo."\n".format_backtrace($info->backtrace, true);
|
||||
}
|
||||
error_log($logerrmsg);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,11 @@ function xmldb_enrol_self_upgrade($oldversion) {
|
||||
|
||||
// Moodle v2.4.0 release upgrade line
|
||||
// Put any upgrade step following this
|
||||
|
||||
if ($oldversion < 2012112901) {
|
||||
// Set customint1 (group enrolment key) to 0 if it was not set (null).
|
||||
$DB->execute("UPDATE {enrol} SET customint1 = 0 WHERE enrol = 'self' AND customint1 IS NULL");
|
||||
upgrade_plugin_savepoint(true, 2012112901, 'enrol', 'self');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
|
||||
$plugin->version = 2012112901; // The current plugin version (Date: YYYYMMDDXX)
|
||||
$plugin->requires = 2012112900; // Requires this Moodle version
|
||||
$plugin->component = 'enrol_self'; // Full name of the plugin (used for diagnostics)
|
||||
$plugin->cron = 600;
|
||||
|
||||
@@ -132,8 +132,13 @@ class filter_urltolink extends moodle_text_filter {
|
||||
$querystring = '(?:\?(?:[\pL0-9\.!$&\'\(\)*+,;=_~:@/?-]|%[a-fA-F0-9]{2})*)';
|
||||
$fragment = '(?:\#(?:[\pL0-9\.!$&\'\(\)*+,;=_~:@/?-]|%[a-fA-F0-9]{2})*)';
|
||||
|
||||
$regex = "(?<!=[\"'])$urlstart((?:$domainsegment\.)+$domainsegment|$numericip)" .
|
||||
"($port?$path$querystring?$fragment?)(?<![]),.;])";
|
||||
// Lookbehind assertions.
|
||||
// Is not HTML attribute or CSS URL property. Unfortunately legit text like "url(http://...)" will not be a link.
|
||||
$lookbehindstart = "(?<!=[\"']|\burl\([\"' ]|\burl\()";
|
||||
$lookbehindend = "(?<![]),.;])";
|
||||
|
||||
$regex = "$lookbehindstart$urlstart((?:$domainsegment\.)+$domainsegment|$numericip)" .
|
||||
"($port?$path$querystring?$fragment?)$lookbehindend";
|
||||
if ($unicoderegexp) {
|
||||
$regex = '#' . $regex . '#ui';
|
||||
} else {
|
||||
|
||||
@@ -31,19 +31,6 @@ require_once($CFG->dirroot . '/filter/urltolink/filter.php'); // Include the cod
|
||||
|
||||
class filter_urltolink_testcase extends basic_testcase {
|
||||
|
||||
/**
|
||||
* Helper function that represents the legacy implementation
|
||||
* of convert_urls_into_links()
|
||||
*/
|
||||
protected function old_convert_urls_into_links(&$text) {
|
||||
/// Make lone URLs into links. eg http://moodle.com/
|
||||
$text = preg_replace("%([[:space:]]|^|\(|\[)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])%i",
|
||||
'$1<a href="$2://$3$4" target="_blank">$2://$3$4</a>', $text);
|
||||
/// eg www.moodle.com
|
||||
$text = preg_replace("%([[:space:]]|^|\(|\[)www\.([^[:space:]]*)([[:alnum:]#?/&=])%i",
|
||||
'$1<a href="http://www.$2$3" target="_blank">www.$2$3</a>', $text);
|
||||
}
|
||||
|
||||
function get_convert_urls_into_links_test_cases() {
|
||||
$texts = array (
|
||||
//just a url
|
||||
@@ -144,6 +131,11 @@ class filter_urltolink_testcase extends basic_testcase {
|
||||
'<td background="www.moodle.org"> </td>' => '<td background="www.moodle.org"> </td>',
|
||||
'<form name="input" action="http://moodle.org/submit.asp" method="get">'=>'<form name="input" action="http://moodle.org/submit.asp" method="get">',
|
||||
'<td background="https://www.moodle.org"> </td>' => '<td background="https://www.moodle.org"> </td>',
|
||||
// CSS URLs.
|
||||
'<table style="background-image: url(\'http://moodle.org/pic.jpg\');">' => '<table style="background-image: url(\'http://moodle.org/pic.jpg\');">',
|
||||
'<table style="background-image: url(http://moodle.org/pic.jpg);">' => '<table style="background-image: url(http://moodle.org/pic.jpg);">',
|
||||
'<table style="background-image: url("http://moodle.org/pic.jpg");">' => '<table style="background-image: url("http://moodle.org/pic.jpg");">',
|
||||
'<table style="background-image: url( http://moodle.org/pic.jpg );">' => '<table style="background-image: url( http://moodle.org/pic.jpg );">',
|
||||
//partially escaped img tag
|
||||
'partially escaped img tag <img src="http://moodle.org/logo/logo-240x60.gif" />' => 'partially escaped img tag <img src="http://moodle.org/logo/logo-240x60.gif" />',
|
||||
//fully escaped img tag. Commented out as part of MDL-21183
|
||||
@@ -181,32 +173,6 @@ class filter_urltolink_testcase extends basic_testcase {
|
||||
$this->assertEquals($correctresult, $text);
|
||||
}
|
||||
|
||||
function test_convert_urls_into_links_performance() {
|
||||
$testablefilter = new testable_filter_urltolink();
|
||||
|
||||
$reps = 1000;
|
||||
$text = file_get_contents(__DIR__ . '/fixtures/sample.txt');
|
||||
$time_start = microtime(true);
|
||||
for($i=0;$i<$reps;$i++) {
|
||||
$testablefilter->convert_urls_into_links($text);
|
||||
}
|
||||
$time_end = microtime(true);
|
||||
$new_time = $time_end - $time_start;
|
||||
|
||||
$time_start = microtime(true);
|
||||
for($i=0;$i<$reps;$i++) {
|
||||
$this->old_convert_urls_into_links($text);
|
||||
}
|
||||
$time_end = microtime(true);
|
||||
$old_time = $time_end - $time_start;
|
||||
|
||||
$fast_enough = false;
|
||||
if( $new_time < $old_time ) {
|
||||
$fast_enough = true;
|
||||
}
|
||||
|
||||
$this->assertEquals($fast_enough, true, 'Timing test: ' . $new_time . 'secs (new) < ' . $old_time . 'secs (old)');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -100,6 +100,7 @@ class moodlequickform_guideeditor extends HTML_QuickForm_input {
|
||||
$mode = gradingform_guide_controller::DISPLAY_EDIT_FULL;
|
||||
$module = array('name'=>'gradingform_guideeditor',
|
||||
'fullpath'=>'/grade/grading/form/guide/js/guideeditor.js',
|
||||
'requires' => array('base', 'dom', 'event', 'event-touch', 'escape'),
|
||||
'strings' => array(
|
||||
array('confirmdeletecriterion', 'gradingform_guide'),
|
||||
array('clicktoedit', 'gradingform_guide'),
|
||||
|
||||
@@ -10,7 +10,7 @@ M.gradingform_guide.init = function(Y, options) {
|
||||
currentfocus = e.currentTarget;
|
||||
});
|
||||
Y.all('.markingguidecomment').on('click', function(e) {
|
||||
currentfocus.set('value', currentfocus.get('value') + '\n' + e.currentTarget.get('innerHTML'));
|
||||
currentfocus.set('value', currentfocus.get('value') + '\n' + e.currentTarget.get('text'));
|
||||
currentfocus.focus();
|
||||
});
|
||||
|
||||
|
||||
@@ -111,9 +111,9 @@ M.gradingform_guideeditor.editmode = function(el, editmode) {
|
||||
value = M.str.gradingform_guide.clicktoedit
|
||||
taplain.addClass('empty')
|
||||
}
|
||||
taplain.one('.textvalue').set('innerHTML', value)
|
||||
taplain.one('.textvalue').set('innerHTML', Y.Escape.html(value))
|
||||
if (tb) {
|
||||
tbplain.one('.textvalue').set('innerHTML', tb.get('value'))
|
||||
tbplain.one('.textvalue').set('innerHTML', Y.Escape.html(tb.get('value')))
|
||||
}
|
||||
// hide/display textarea, textbox and plaintexts
|
||||
taplain.removeClass('hiddenelement')
|
||||
|
||||
@@ -845,7 +845,7 @@ class gradingform_guide_instance extends gradingform_instance {
|
||||
if (!empty($this->validationerrors)) {
|
||||
foreach ($this->validationerrors as $id => $err) {
|
||||
$a = new stdClass();
|
||||
$a->criterianame = $criteria[$id]['shortname'];
|
||||
$a->criterianame = s($criteria[$id]['shortname']);
|
||||
$a->maxscore = $criteria[$id]['maxscore'];
|
||||
$html .= html_writer::tag('div', get_string('err_scoreinvalid', 'gradingform_guide', $a),
|
||||
array('class' => 'gradingform_guide-error'));
|
||||
|
||||
@@ -93,20 +93,20 @@ class gradingform_guide_renderer extends plugin_renderer_base {
|
||||
'name' => '{NAME}[criteria][{CRITERION-id}][sortorder]', 'value' => $criterion['sortorder']));
|
||||
|
||||
$shortname = html_writer::empty_tag('input', array('type'=> 'text',
|
||||
'name' => '{NAME}[criteria][{CRITERION-id}][shortname]', 'value' => htmlspecialchars($criterion['shortname']),
|
||||
'name' => '{NAME}[criteria][{CRITERION-id}][shortname]', 'value' => $criterion['shortname'],
|
||||
'id ' => '{NAME}[criteria][{CRITERION-id}][shortname]'));
|
||||
$shortname = html_writer::tag('div', $shortname, array('class'=>'criterionname'));
|
||||
$description = html_writer::tag('textarea', htmlspecialchars($criterion['description']),
|
||||
$description = html_writer::tag('textarea', s($criterion['description']),
|
||||
array('name' => '{NAME}[criteria][{CRITERION-id}][description]', 'cols' => '65', 'rows' => '5'));
|
||||
$description = html_writer::tag('div', $description, array('class'=>'criteriondesc'));
|
||||
|
||||
$descriptionmarkers = html_writer::tag('textarea', htmlspecialchars($criterion['descriptionmarkers']),
|
||||
$descriptionmarkers = html_writer::tag('textarea', s($criterion['descriptionmarkers']),
|
||||
array('name' => '{NAME}[criteria][{CRITERION-id}][descriptionmarkers]', 'cols' => '65', 'rows' => '5'));
|
||||
$descriptionmarkers = html_writer::tag('div', $descriptionmarkers, array('class'=>'criteriondescmarkers'));
|
||||
|
||||
$maxscore = html_writer::empty_tag('input', array('type'=> 'text',
|
||||
'name' => '{NAME}[criteria][{CRITERION-id}][maxscore]', 'size' => '3',
|
||||
'value' => htmlspecialchars($criterion['maxscore']),
|
||||
'value' => $criterion['maxscore'],
|
||||
'id' => '{NAME}[criteria][{CRITERION-id}][maxscore]'));
|
||||
$maxscore = html_writer::tag('div', $maxscore, array('class'=>'criterionmaxscore'));
|
||||
} else {
|
||||
@@ -125,7 +125,7 @@ class gradingform_guide_renderer extends plugin_renderer_base {
|
||||
$mode == gradingform_guide_controller::DISPLAY_VIEW) {
|
||||
$descriptionclass = 'descriptionreadonly';
|
||||
}
|
||||
$shortname = html_writer::tag('div', $criterion['shortname'],
|
||||
$shortname = html_writer::tag('div', s($criterion['shortname']),
|
||||
array('class'=>'criterionshortname', 'name' => '{NAME}[criteria][{CRITERION-id}][shortname]'));
|
||||
$descmarkerclass = '';
|
||||
$descstudentclass = '';
|
||||
@@ -137,13 +137,13 @@ class gradingform_guide_renderer extends plugin_renderer_base {
|
||||
$descstudentclass = ' hide';
|
||||
}
|
||||
}
|
||||
$description = html_writer::tag('div', $criterion['description'],
|
||||
$description = html_writer::tag('div', s($criterion['description']),
|
||||
array('class'=>'criteriondescription'.$descstudentclass,
|
||||
'name' => '{NAME}[criteria][{CRITERION-id}][descriptionmarkers]'));
|
||||
$descriptionmarkers = html_writer::tag('div', $criterion['descriptionmarkers'],
|
||||
$descriptionmarkers = html_writer::tag('div', s($criterion['descriptionmarkers']),
|
||||
array('class'=>'criteriondescriptionmarkers'.$descmarkerclass,
|
||||
'name' => '{NAME}[criteria][{CRITERION-id}][descriptionmarkers]'));
|
||||
$maxscore = html_writer::tag('div', $criterion['maxscore'],
|
||||
$maxscore = html_writer::tag('div', s($criterion['maxscore']),
|
||||
array('class'=>'criteriondescriptionscore', 'name' => '{NAME}[criteria][{CRITERION-id}][maxscore]'));
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ class gradingform_guide_renderer extends plugin_renderer_base {
|
||||
$scoreclass = 'error';
|
||||
$currentscore = $validationerrors[$criterion['id']]['score']; // Show invalid score in form.
|
||||
}
|
||||
$input = html_writer::tag('textarea', htmlspecialchars($currentremark),
|
||||
$input = html_writer::tag('textarea', s($currentremark),
|
||||
array('name' => '{NAME}[criteria][{CRITERION-id}][remark]', 'cols' => '65', 'rows' => '5',
|
||||
'class' => 'markingguideremark'));
|
||||
$criteriontemplate .= html_writer::tag('td', $input, array('class' => 'remark'));
|
||||
@@ -197,7 +197,7 @@ class gradingform_guide_renderer extends plugin_renderer_base {
|
||||
$score .= html_writer::empty_tag('input', array('type'=> 'text',
|
||||
'name' => '{NAME}[criteria][{CRITERION-id}][score]', 'class' => $scoreclass,
|
||||
'id' => '{NAME}[criteria][{CRITERION-id}][score]',
|
||||
'size' => '3', 'value' => htmlspecialchars($currentscore)));
|
||||
'size' => '3', 'value' => $currentscore));
|
||||
$score .= '/'.$maxscore;
|
||||
|
||||
$criteriontemplate .= html_writer::tag('td', $score, array('class' => 'score'));
|
||||
@@ -206,9 +206,9 @@ class gradingform_guide_renderer extends plugin_renderer_base {
|
||||
'name' => '{NAME}[criteria][{CRITERION-id}][remark]', 'value' => $currentremark));
|
||||
} else if ($mode == gradingform_guide_controller::DISPLAY_REVIEW ||
|
||||
$mode == gradingform_guide_controller::DISPLAY_VIEW) {
|
||||
$criteriontemplate .= html_writer::tag('td', $currentremark, array('class' => 'remark'));
|
||||
$criteriontemplate .= html_writer::tag('td', s($currentremark), array('class' => 'remark'));
|
||||
if (!empty($options['showmarkspercriterionstudents'])) {
|
||||
$criteriontemplate .= html_writer::tag('td', htmlspecialchars($currentscore). ' / '.$maxscore,
|
||||
$criteriontemplate .= html_writer::tag('td', s($currentscore). ' / '.$maxscore,
|
||||
array('class' => 'score'));
|
||||
}
|
||||
}
|
||||
@@ -267,7 +267,7 @@ class gradingform_guide_renderer extends plugin_renderer_base {
|
||||
$criteriontemplate .= html_writer::end_tag('td'); // Controls.
|
||||
$criteriontemplate .= html_writer::empty_tag('input', array('type' => 'hidden',
|
||||
'name' => '{NAME}[comments][{COMMENT-id}][sortorder]', 'value' => $comment['sortorder']));
|
||||
$description = html_writer::tag('textarea', htmlspecialchars($comment['description']),
|
||||
$description = html_writer::tag('textarea', s($comment['description']),
|
||||
array('name' => '{NAME}[comments][{COMMENT-id}][description]', 'cols' => '65', 'rows' => '5'));
|
||||
$description = html_writer::tag('div', $description, array('class'=>'criteriondesc'));
|
||||
} else {
|
||||
@@ -278,12 +278,12 @@ class gradingform_guide_renderer extends plugin_renderer_base {
|
||||
'name' => '{NAME}[comments][{COMMENT-id}][description]', 'value' => $comment['description']));
|
||||
}
|
||||
if ($mode == gradingform_guide_controller::DISPLAY_EVAL) {
|
||||
$description = html_writer::tag('span', htmlspecialchars($comment['description']),
|
||||
$description = html_writer::tag('span', s($comment['description']),
|
||||
array('name' => '{NAME}[comments][{COMMENT-id}][description]',
|
||||
'title' => get_string('clicktocopy', 'gradingform_guide'),
|
||||
'id' => '{NAME}[comments][{COMMENT-id}]', 'class'=>'markingguidecomment'));
|
||||
} else {
|
||||
$description = $comment['description'];
|
||||
$description = s($comment['description']);
|
||||
}
|
||||
}
|
||||
$descriptionclass = 'description';
|
||||
|
||||
@@ -93,8 +93,8 @@ M.gradingform_rubriceditor.editmode = function(el, editmode, focustb) {
|
||||
value = (el.hasClass('level')) ? M.str.gradingform_rubric.levelempty : M.str.gradingform_rubric.criterionempty
|
||||
taplain.addClass('empty')
|
||||
}
|
||||
taplain.one('.textvalue').set('innerHTML', value)
|
||||
if (tb) tbplain.one('.textvalue').set('innerHTML', tb.get('value'))
|
||||
taplain.one('.textvalue').set('innerHTML', Y.Escape.html(value));
|
||||
if (tb) tbplain.one('.textvalue').set('innerHTML', Y.Escape.html(tb.get('value')));
|
||||
// hide/display textarea, textbox and plaintexts
|
||||
taplain.removeClass('hiddenelement')
|
||||
ta.addClass('hiddenelement')
|
||||
|
||||
@@ -74,13 +74,13 @@ class gradingform_rubric_renderer extends plugin_renderer_base {
|
||||
}
|
||||
$criteriontemplate .= html_writer::end_tag('td'); // .controls
|
||||
$criteriontemplate .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => '{NAME}[criteria][{CRITERION-id}][sortorder]', 'value' => $criterion['sortorder']));
|
||||
$description = html_writer::tag('textarea', htmlspecialchars($criterion['description']), array('name' => '{NAME}[criteria][{CRITERION-id}][description]', 'cols' => '10', 'rows' => '5'));
|
||||
$description = html_writer::tag('textarea', s($criterion['description']), array('name' => '{NAME}[criteria][{CRITERION-id}][description]', 'cols' => '10', 'rows' => '5'));
|
||||
} else {
|
||||
if ($mode == gradingform_rubric_controller::DISPLAY_EDIT_FROZEN) {
|
||||
$criteriontemplate .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => '{NAME}[criteria][{CRITERION-id}][sortorder]', 'value' => $criterion['sortorder']));
|
||||
$criteriontemplate .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => '{NAME}[criteria][{CRITERION-id}][description]', 'value' => $criterion['description']));
|
||||
}
|
||||
$description = $criterion['description'];
|
||||
$description = s($criterion['description']);
|
||||
}
|
||||
$descriptionclass = 'description';
|
||||
if (isset($criterion['error_description'])) {
|
||||
@@ -106,12 +106,12 @@ class gradingform_rubric_renderer extends plugin_renderer_base {
|
||||
$currentremark = $value['remark'];
|
||||
}
|
||||
if ($mode == gradingform_rubric_controller::DISPLAY_EVAL) {
|
||||
$input = html_writer::tag('textarea', htmlspecialchars($currentremark), array('name' => '{NAME}[criteria][{CRITERION-id}][remark]', 'cols' => '10', 'rows' => '5'));
|
||||
$input = html_writer::tag('textarea', s($currentremark), array('name' => '{NAME}[criteria][{CRITERION-id}][remark]', 'cols' => '10', 'rows' => '5'));
|
||||
$criteriontemplate .= html_writer::tag('td', $input, array('class' => 'remark'));
|
||||
} else if ($mode == gradingform_rubric_controller::DISPLAY_EVAL_FROZEN) {
|
||||
$criteriontemplate .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => '{NAME}[criteria][{CRITERION-id}][remark]', 'value' => $currentremark));
|
||||
}else if ($mode == gradingform_rubric_controller::DISPLAY_REVIEW || $mode == gradingform_rubric_controller::DISPLAY_VIEW) {
|
||||
$criteriontemplate .= html_writer::tag('td', $currentremark, array('class' => 'remark')); // TODO maybe some prefix here like 'Teacher remark:'
|
||||
$criteriontemplate .= html_writer::tag('td', s($currentremark), array('class' => 'remark'));
|
||||
}
|
||||
}
|
||||
$criteriontemplate .= html_writer::end_tag('tr'); // .criterion
|
||||
@@ -163,7 +163,7 @@ class gradingform_rubric_renderer extends plugin_renderer_base {
|
||||
$leveltemplate = html_writer::start_tag('td', $tdattributes);
|
||||
$leveltemplate .= html_writer::start_tag('div', array('class' => 'level-wrapper'));
|
||||
if ($mode == gradingform_rubric_controller::DISPLAY_EDIT_FULL) {
|
||||
$definition = html_writer::tag('textarea', htmlspecialchars($level['definition']), array('name' => '{NAME}[criteria][{CRITERION-id}][levels][{LEVEL-id}][definition]', 'cols' => '10', 'rows' => '4'));
|
||||
$definition = html_writer::tag('textarea', s($level['definition']), array('name' => '{NAME}[criteria][{CRITERION-id}][levels][{LEVEL-id}][definition]', 'cols' => '10', 'rows' => '4'));
|
||||
$score = html_writer::label(get_string('criterionempty', 'gradingform_rubric'), '{NAME}criteria{CRITERION-id}levels{LEVEL-id}', false, array('class' => 'accesshide'));
|
||||
$score .= html_writer::empty_tag('input', array('type' => 'text','id' => '{NAME}criteria{CRITERION-id}levels{LEVEL-id}', 'name' => '{NAME}[criteria][{CRITERION-id}][levels][{LEVEL-id}][score]', 'size' => '3', 'value' => $level['score']));
|
||||
} else {
|
||||
@@ -171,7 +171,7 @@ class gradingform_rubric_renderer extends plugin_renderer_base {
|
||||
$leveltemplate .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => '{NAME}[criteria][{CRITERION-id}][levels][{LEVEL-id}][definition]', 'value' => $level['definition']));
|
||||
$leveltemplate .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => '{NAME}[criteria][{CRITERION-id}][levels][{LEVEL-id}][score]', 'value' => $level['score']));
|
||||
}
|
||||
$definition = $level['definition'];
|
||||
$definition = s($level['definition']);
|
||||
$score = $level['score'];
|
||||
}
|
||||
if ($mode == gradingform_rubric_controller::DISPLAY_EVAL) {
|
||||
|
||||
@@ -85,6 +85,7 @@ class MoodleQuickForm_rubriceditor extends HTML_QuickForm_input {
|
||||
if (!$this->_flagFrozen) {
|
||||
$mode = gradingform_rubric_controller::DISPLAY_EDIT_FULL;
|
||||
$module = array('name'=>'gradingform_rubriceditor', 'fullpath'=>'/grade/grading/form/rubric/js/rubriceditor.js',
|
||||
'requires' => array('base', 'dom', 'event', 'event-touch', 'escape'),
|
||||
'strings' => array(array('confirmdeletecriterion', 'gradingform_rubric'), array('confirmdeletelevel', 'gradingform_rubric'),
|
||||
array('criterionempty', 'gradingform_rubric'), array('levelempty', 'gradingform_rubric')
|
||||
));
|
||||
|
||||
@@ -156,7 +156,7 @@ $reporthtml = $report->get_grade_table();
|
||||
|
||||
// print submit button
|
||||
if ($USER->gradeediting[$course->id] && ($report->get_pref('showquickfeedback') || $report->get_pref('quickgrading'))) {
|
||||
echo '<form action="index.php" method="post">';
|
||||
echo '<form action="index.php" enctype="application/x-www-form-urlencoded" method="post">'; // Enforce compatibility with our max_input_vars hack.
|
||||
echo '<div>';
|
||||
echo '<input type="hidden" value="'.s($courseid).'" name="id" />';
|
||||
echo '<input type="hidden" value="'.sesskey().'" name="sesskey" />';
|
||||
|
||||
@@ -1734,51 +1734,10 @@ class grade_report_grader extends grade_report {
|
||||
/**
|
||||
* Returns the maximum number of students to be displayed on each page
|
||||
*
|
||||
* Takes into account the 'studentsperpage' user preference and the 'max_input_vars'
|
||||
* PHP setting. Too many fields is only a problem when submitting grades but
|
||||
* we respect 'max_input_vars' even when viewing grades to prevent students disappearing
|
||||
* when toggling editing on and off.
|
||||
*
|
||||
* @return int The maximum number of students to display per page
|
||||
*/
|
||||
public function get_students_per_page() {
|
||||
global $USER;
|
||||
static $studentsperpage = null;
|
||||
|
||||
if ($studentsperpage === null) {
|
||||
$originalstudentsperpage = $studentsperpage = $this->get_pref('studentsperpage');
|
||||
|
||||
// Will this number of students result in more fields that we are allowed?
|
||||
$maxinputvars = ini_get('max_input_vars');
|
||||
if ($maxinputvars !== false) {
|
||||
// We can't do anything about there being more grade items than max_input_vars,
|
||||
// but we can decrease number of students per page if there are >= max_input_vars
|
||||
$fieldsperstudent = 0; // The number of fields output per student
|
||||
|
||||
if ($this->get_pref('quickgrading') || $this->get_pref('showquickfeedback')) {
|
||||
// Each array (grade, feedback) will gain one element
|
||||
$fieldsperstudent ++;
|
||||
}
|
||||
|
||||
$fieldsrequired = $studentsperpage * $fieldsperstudent;
|
||||
if ($fieldsrequired >= $maxinputvars) {
|
||||
$studentsperpage = $maxinputvars - 1; // Subtract one to be on the safe side
|
||||
if ($studentsperpage<1) {
|
||||
// Make sure students per page doesn't fall below 1, though if your
|
||||
// max_input_vars is only 1 you've got bigger problems!
|
||||
$studentsperpage = 1;
|
||||
}
|
||||
|
||||
$a = new stdClass();
|
||||
$a->originalstudentsperpage = $originalstudentsperpage;
|
||||
$a->studentsperpage = $studentsperpage;
|
||||
$a->maxinputvars = $maxinputvars;
|
||||
debugging(get_string('studentsperpagereduced', 'grades', $a));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $studentsperpage;
|
||||
return $this->get_pref('studentsperpage');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,5 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = 'es';
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Español - España';
|
||||
$string['thislanguage'] = 'Aragonés';
|
||||
@@ -30,17 +30,19 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Nije moguće kreirati bazu podataka.</p> <p>Određena baza podataka ne postoji i dati korisnik nema dozvolu da kreira bazu podataka.</p> <p>Site administrator bi trebao verificirati postavke baze podataka.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Nije moguće kreirati direktorij jezika';
|
||||
$string['cannotcreatetempdir'] = 'Nije moguće kreirati privremeni direktorij';
|
||||
$string['cannotdownloadcomponents'] = 'Nije moguće preuzeti komponente.';
|
||||
$string['cannotdownloadzipfile'] = 'Nije moguće preuzeti arhivu';
|
||||
$string['cannotdownloadcomponents'] = 'Nije moguće preuzeti komponente';
|
||||
$string['cannotdownloadzipfile'] = 'Nije moguće preuzeti ZIP arhivu';
|
||||
$string['cannotfindcomponent'] = 'Nije moguće pronaći komponentu.';
|
||||
$string['cannotsavemd5file'] = 'Nije moguće sačuvati md5 datoteku.';
|
||||
$string['cannotsavezipfile'] = 'Nije moguće sačuvati ZIP arhivu.';
|
||||
$string['cannotunzipfile'] = 'Nije moguće raspakovati ZIP datoteku.';
|
||||
$string['componentisuptodate'] = 'Komponenta je dostupna u svojoj najnovijoj verziji';
|
||||
$string['dmlexceptiononinstall'] = '<p>Nastala je greška u bazi podataka: [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Nije uspjela provjera preuzete datoteke';
|
||||
$string['invalidmd5'] = 'Neispravna md5 datoteka';
|
||||
$string['invalidmd5'] = 'Provjerena varijabla (md5 datoteka) je pogrešna - pokušajte ponovo';
|
||||
$string['missingrequiredfield'] = 'Nedostaje neko obavezno polje';
|
||||
$string['remotedownloaderror'] = 'Preuzimanje komponente na Vaš server nije uspjelo. Provjerite podešavanja proksi servera. PHP cURL ekstenzija se preporučuje.<br /><br />Morate da preuzmete <a href="{$a->url}">{$a->url}</a> datoteku ručno, kopirate je u direktorij "{$a->dest}" na svom sereveru i tamo je raspakovati.';
|
||||
$string['wrongdestpath'] = 'Pogrešna odredišna putanja';
|
||||
|
||||
@@ -40,5 +40,5 @@ $string['cliunknowoption'] = 'Opcions invàlides:
|
||||
{$a}
|
||||
L\'opció --help us orientarà.';
|
||||
$string['cliyesnoprompt'] = 'Escriu y (significa Sí) o n (significa No)';
|
||||
$string['environmentrequireinstall'] = 'es requereix instal·lar/habilitar';
|
||||
$string['environmentrequireinstall'] = 'cal instal·lar-lo i habilitar-lo';
|
||||
$string['environmentrequireversion'] = 'esteu executant la versió {$a->current} i es requereix la {$a->needed}';
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>No és pot crear la base de dades.</p> <p>La base de dades especificada no existeix i l\'usuari que heu proporcionat no té permís per a crear-la.</p>
|
||||
<p>L\'administrador del lloc hauria de verificar la configuració de la base de dades.</p>';
|
||||
$string['cannotcreatelangdir'] = 'No s\'ha pogut crear el directori d\'idiomes.';
|
||||
$string['cannotcreatetempdir'] = 'No s\'ha pogut crear el directori temporal';
|
||||
$string['cannotdownloadcomponents'] = 'No s\'han pogut baixar components';
|
||||
@@ -39,6 +41,7 @@ $string['cannotsavemd5file'] = 'No s\'ha pogut desar el fitxer md5';
|
||||
$string['cannotsavezipfile'] = 'No s\'ha pogut desar el fitxer zip';
|
||||
$string['cannotunzipfile'] = 'No s\'ha pogut descomprimir el fitxer';
|
||||
$string['componentisuptodate'] = 'El component està al dia';
|
||||
$string['dmlexceptiononinstall'] = '<p>S\'ha produït un error de la base de dades [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Ha fallat la comprovació del fitxer baixat';
|
||||
$string['invalidmd5'] = 'L\'md5 no és vàlid. Torneu-ho a provar';
|
||||
$string['missingrequiredfield'] = 'Falta algun camp necessari';
|
||||
|
||||
@@ -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>ناتوانرێت داتابەیس دروست بکرێت.</p>
|
||||
<p>داتابەیستی دیاری کراو بوونی نییەو بەکارهێنەری دراو مۆڵەتی دروست کردنی داتابەیسی نییە.</p>
|
||||
<p>پێویستە سەرپەرشتیاری ماڵپەڕ سازاندنی داتابەیس پەسەند بکات.</p>';
|
||||
$string['cannotcreatelangdir'] = 'ناتوانریت ڕابەرنامەی زمان دروست بکرێت';
|
||||
$string['cannotcreatetempdir'] = 'ناتوانرێت ڕابەرنامەی کاتیی دروست بکرێت';
|
||||
$string['cannotdownloadcomponents'] = 'ناتوانرێت پێکهێنەرەکان داببەزێنرێن';
|
||||
$string['cannotdownloadzipfile'] = 'ناتوانریت فایلی زیپ داببەزێنرێت';
|
||||
$string['cannotfindcomponent'] = 'تانتوانرێت پێکهێنەر بدۆزرێتەوە';
|
||||
$string['cannotsavemd5file'] = 'ناتوانرێت فایلی md5 پاشەکەوت بکرێت';
|
||||
$string['cannotsavezipfile'] = 'ناتوانرێت فایلی زیپ پاشەکەوت بکرێت';
|
||||
$string['cannotunzipfile'] = 'ناتوانرێت فایلەکە لە زیپ بهێنرێتە دەرەوە';
|
||||
$string['componentisuptodate'] = 'سەرنجەکە تەواو نوێیە';
|
||||
$string['dmlexceptiononinstall'] = '<p>هەڵە ڕویدا لە داتابەیس [{$a->errorcode}]. <br />{$a->debuginfo}</p>.
|
||||
|
||||
<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'پشکنینی دابەزاندنی فایل سەرکەوتوو نەبوو';
|
||||
$string['invalidmd5'] = 'پشکنینی گۆڕاو هەڵە بو - دووبارە بکەوە';
|
||||
$string['missingrequiredfield'] = 'هەندێ بواری داواکراو دیاری نەکراون';
|
||||
$string['wrongdestpath'] = 'ڕێڕەوی ئامانج هەڵەیە';
|
||||
$string['wrongsourcebase'] = 'بنچینەی URLی سەرچاوە هەڵەیە';
|
||||
$string['wrongzipfilename'] = 'ناوی فایلی زیپ هەڵەیە';
|
||||
@@ -31,4 +31,6 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['language'] = 'زمان';
|
||||
$string['next'] = 'دواتر';
|
||||
$string['previous'] = 'پێشوو';
|
||||
$string['reload'] = 'بارکردنەوە';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Nelze vytvořit databázi.</p>
|
||||
<p>Určená databáze neexistuje a uživatel nemá oprávnění k vytvoření databáze.</p>
|
||||
<p>Správce stránek by měl ověřit konfiguraci databáze.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Nelze vytvořit adresář pro jazykové soubory';
|
||||
$string['cannotcreatetempdir'] = 'Nelze vytvořit dočasný adresář';
|
||||
$string['cannotdownloadcomponents'] = 'Nelze stáhnout komponenty';
|
||||
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Nelze uložit soubor MD5';
|
||||
$string['cannotsavezipfile'] = 'Nelze uložit soubor ZIP';
|
||||
$string['cannotunzipfile'] = 'Nelze dekomprimovat soubor';
|
||||
$string['componentisuptodate'] = 'Komponenta je aktuální';
|
||||
$string['dmlexceptiononinstall'] = '<p>Došlo k chybě databáze [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Selhala kontrola staženého souboru';
|
||||
$string['invalidmd5'] = 'Ověření selhalo - zkuste to znovu';
|
||||
$string['missingrequiredfield'] = 'Chybí některé z povinných polí';
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Methu creu y gronfa ddata.</p> <p>Dydy’r gronfa ddata benodedig ddim yn bodoli a does gan y defnyddiwr dan sylw ddim hawl i greu cronfa ddata.</p> <p>Dylai gweinyddwr y safle wirio ffurfweddu cronfeydd data.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Does dim modd creu cyfeiriadur iaith';
|
||||
$string['cannotcreatetempdir'] = 'Does dim modd creu cyfeiriadur dros dro';
|
||||
$string['cannotdownloadcomponents'] = 'Does dim modd llwytho cydrannau i lawr';
|
||||
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'Does dim modd cadw ffeil md5';
|
||||
$string['cannotsavezipfile'] = 'Does dim modd cadw ffeil ZIP';
|
||||
$string['cannotunzipfile'] = 'Does dim modd dadzipio\'r ffeil';
|
||||
$string['componentisuptodate'] = 'Mae\'r gydran wedi\'i diweddaru';
|
||||
$string['dmlexceptiononinstall'] = '<p>Roed gwall cronfa ddata [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Heb lwyddo i wirio\'r ffeil a lwythwyd i lawr';
|
||||
$string['invalidmd5'] = 'Roedd y newidyn gwirio yn anghywir - rhowch gynnig arall arni';
|
||||
$string['missingrequiredfield'] = 'Mae maes gofynnol ar goll';
|
||||
|
||||
@@ -38,7 +38,7 @@ $string['clitypevalue'] = 'Wert eingeben';
|
||||
$string['clitypevaluedefault'] = 'Wert eingeben oder Standardwert benutzen ({$a})';
|
||||
$string['cliunknowoption'] = 'Nicht erkannte Optionen:
|
||||
{$a}
|
||||
Hilfe wird über die Option -help angezeigt.';
|
||||
Hilfe wird über die Option --help angezeigt.';
|
||||
$string['cliyesnoprompt'] = 'y (yes=ja) oder n (no=nein) eingeben';
|
||||
$string['environmentrequireinstall'] = 'muss installiert und aktiviert sein';
|
||||
$string['environmentrequireversion'] = 'Version {$a->needed} ist erforderlich - aktuell ist {$a->current} installiert.';
|
||||
$string['environmentrequireversion'] = 'notwendig: {$a->needed} - installiert: {$a->current}';
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Die Datenbank konnte nicht angelegt werden.</p><p>Die angegebene Datenbank existiert nicht und das genannten Nutzerkonto hat keine Rechte, die Datenbank neu anzulegen. Die Datenbank-Konfiguration muss überprüft werden.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Verzeichnis \'lang\' wurde nicht angelegt';
|
||||
$string['cannotcreatetempdir'] = 'Das Verzeichnis \'temp\' wurde nicht angelegt';
|
||||
$string['cannotdownloadcomponents'] = 'Einige Komponenten können nicht geladen werden.';
|
||||
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'Die md5-Datei wurde nicht gespeichert';
|
||||
$string['cannotsavezipfile'] = 'Die ZIP-Datei wurde nicht gespeichert';
|
||||
$string['cannotunzipfile'] = 'Die Datei kann nicht entpackt werden';
|
||||
$string['componentisuptodate'] = 'Die Komponente ist aktuell.';
|
||||
$string['dmlexceptiononinstall'] = '<p>Ein Datenbankfehler ist aufgetreten [{$a->errorcode}]. <br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Die Überprüfung der heruntergeladenen Datei ist gescheitert';
|
||||
$string['invalidmd5'] = 'Der Prüfwert ist ungültig. Versuchen Sie es bitte nochmal!';
|
||||
$string['missingrequiredfield'] = 'Einige erforderliche Felder sind nicht ausgefüllt.';
|
||||
|
||||
@@ -83,6 +83,6 @@ $string['welcomep30'] = 'Diese Version von <strong>{$a->installername}</strong>
|
||||
$string['welcomep40'] = 'Das Paket enthält: <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong>.';
|
||||
$string['welcomep50'] = 'Die Nutzung dieser Anwendungen ist lizenzrechtlich geprüft. Alle Anwendungen von <strong>{$a->installername}</strong> sind
|
||||
<a href="http://www.opensource.org/docs/definition_plain.html"> Open Source </a> und unterliegen der <a href="http://www.gnu.org/copyleft/gpl.html"> GPL</a> Lizenz.';
|
||||
$string['welcomep60'] = 'Die folgenden Webseiten führen Sie in einfachen Schritten durch die Konfiguration und Installation von <strong>Moodle</strong> auf Ihrem Computer. Sie können die vorgeschlagenen Einstellungen übernehmen oder an Ihre Bedürfnisse anpassen.';
|
||||
$string['welcomep60'] = 'Die folgenden Webseiten führen Sie in einfachen Schritten durch die Installation von <strong>Moodle</strong> auf Ihrem Computer. Sie können die vorgeschlagenen Einstellungen übernehmen oder an eigene Bedürfnisse anpassen.';
|
||||
$string['welcomep70'] = 'Klicken Sie auf die Taste \'Weiter\', um mit der Installation von Moodle fortzufahren.';
|
||||
$string['wwwroot'] = 'Webadresse';
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = 'གཞི་གྲངས་མཛོད་<p>བཟོ་མི་བཏུབ། བཀོད་མི་གཞི་གྲངས་མཛོད་</p> <p>དེ་མེད་པའི་ཁར་ ལག་ལེན་པ་ལུ་ གཞི་གྲངས་མཛོད་བཟོ་ནི་གི་གནང་བ་མེད།གནས་ཁོངས་བདག་སྐྱོང་པ་ </p> <p>་གིས་གཞི་གྲངས་མཛོད་དེ་གི་སྡེབ་སྒྲིག་</p>གཏན་འབེབས་འབད་དགོ';
|
||||
$string['cannotcreatelangdir'] = 'སྐད་ཡིག་སྣོད་ཐོ་ གསར་བསྐྲུན་འབད་མི་བཏུབ།';
|
||||
$string['cannotcreatetempdir'] = 'གནས་སྐབས་ཀྱི་སྣོད་ཐོ་ གསར་བསྐྲུན་འབད་མི་བཏུབ།';
|
||||
$string['cannotdownloadcomponents'] = 'ཆ་ཤས་ཚུ་ཕབ་ལེན་འབད་མི་བཏུབ།';
|
||||
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'md5 ཡིག་སྣོད་ སྲུངས
|
||||
$string['cannotsavezipfile'] = 'ZIP ཡིག་སྣོད་ སྲུངས་མི་བཏུབ།';
|
||||
$string['cannotunzipfile'] = 'ཡིག་སྣོད་ unzip འབད་མི་བཏུབ།';
|
||||
$string['componentisuptodate'] = 'ཆ་ཤས་འདི་ དུས་མཐུན་སྦེ་ཡོད།';
|
||||
$string['dmlexceptiononinstall'] = 'p>གཞི་གྲངས་མཛོད་ཀྱི་འཛོལ་བཅིག་འཐོན་ནུག [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'ཕབ་ལེན་འབད་ཡོད་པའི་ཡིག་སྣོད་ཞིབ་དཔྱད་འཐུས་ཤོར་བྱུང་ཡོདཔ།';
|
||||
$string['invalidmd5'] = 'check འགྱུར་ཅནའདི་ཕྱི་འགྱུར་ཨིན་མས་ - ལོག་འབད་གནང་།';
|
||||
$string['missingrequiredfield'] = 'དགོ་པའི་ས་སྒོ་འདི་མིན་འདུག';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Cannot create the database.</p>
|
||||
<p>The specified database does not exist and the given user does not have permission to create the database.</p>
|
||||
<p>The site administrator should verify database configuration.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Cannot create lang directory';
|
||||
$string['cannotcreatetempdir'] = 'Cannot create temp directory';
|
||||
$string['cannotdownloadcomponents'] = 'Cannot download components';
|
||||
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Cannot save md5 file';
|
||||
$string['cannotsavezipfile'] = 'Cannot save ZIP file';
|
||||
$string['cannotunzipfile'] = 'Cannot unzip file';
|
||||
$string['componentisuptodate'] = 'Component is up-to-date';
|
||||
$string['dmlexceptiononinstall'] = '<p>A database error has occurred [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Downloaded file check failed';
|
||||
$string['invalidmd5'] = 'The check variable was wrong - try again';
|
||||
$string['missingrequiredfield'] = 'Some required field is missing';
|
||||
|
||||
@@ -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['cliunknowoption'] = 'Unrecognized options:
|
||||
{$a}
|
||||
Please use --help option.';
|
||||
@@ -30,5 +30,4 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = 'es';
|
||||
$string['thislanguage'] = 'Español - Argentina';
|
||||
$string['thislanguage'] = 'Esperanto';
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p> No se puede crear la base de datos. </p><p> La base de datos especificada no existe y el usuario indicado no tiene permiso para crear la base de datos. </p><p> El administrador del sitio debe comprobar la configuración de base de datos. </p>';
|
||||
$string['cannotcreatelangdir'] = 'No se puede crear el directorio de idioma.';
|
||||
$string['cannotcreatetempdir'] = 'No se puede crear el directorio temp.';
|
||||
$string['cannotdownloadcomponents'] = 'No se puede descargar componentes';
|
||||
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'No se puede guardar el archivo md5';
|
||||
$string['cannotsavezipfile'] = 'No se puede guardar el archivo ZIP';
|
||||
$string['cannotunzipfile'] = 'No se puede descomprimir el archivo';
|
||||
$string['componentisuptodate'] = 'El componente está actualizado';
|
||||
$string['dmlexceptiononinstall'] = '<p>Se ha producido un error de base de datos [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Ha fallado la comprobación del archivo descargado';
|
||||
$string['invalidmd5'] = 'La variable de verificación MD5 es incorrecta no es valida - trate nuevamente';
|
||||
$string['missingrequiredfield'] = 'Falta algún campo necesario';
|
||||
|
||||
@@ -30,5 +30,6 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = '';
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Español - Internacional';
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>No puede crearse la BasedeDatos.</p> <p>La BasedeDatos especificada no existe y el usuario dado no tiene permiso para crear la BasedeDatos.</p> <p>El administrador del sitio debería verificar la configuración de la BasedeDatos.</p>';
|
||||
$string['cannotcreatelangdir'] = 'No se puede crear el directorio de idioma.';
|
||||
$string['cannotcreatetempdir'] = 'No se puede crear el directorio temp.';
|
||||
$string['cannotdownloadcomponents'] = 'No se puede descargar componentes';
|
||||
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'No se puede guardar el archivo md5';
|
||||
$string['cannotsavezipfile'] = 'No se puede guardar el archivo ZIP';
|
||||
$string['cannotunzipfile'] = 'No se puede descomprimir el archivo';
|
||||
$string['componentisuptodate'] = 'El componente está actualizado';
|
||||
$string['dmlexceptiononinstall'] = '<p>Ocurrió un error en la BasedeDatos[{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Ha fallado la comprobación del archivo descargado';
|
||||
$string['invalidmd5'] = 'La variable de verificación MD5 es incorrecta no es valida - trate nuevamente';
|
||||
$string['missingrequiredfield'] = 'Falta algún campo necesario';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Impossible de créer la base de données.</p>
|
||||
<p>La base de données indiquées n\'existe pas et l\'utilisateur spécifié n\'a pas les autorisations permettant de créer une base de données.</p>.
|
||||
<p>L\'administrateur du site doit revoir la configuration de la base de données.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Création du dossier lang impossible';
|
||||
$string['cannotcreatetempdir'] = 'Création du dossier temp impossible';
|
||||
$string['cannotdownloadcomponents'] = 'Téléchargement des composants impossible';
|
||||
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Enregistrement du fichier md5 impossible';
|
||||
$string['cannotsavezipfile'] = 'Enregistrement du fichier ZIP impossible';
|
||||
$string['cannotunzipfile'] = 'Décompression du fichier ZIP impossible';
|
||||
$string['componentisuptodate'] = 'Le composant est à jour';
|
||||
$string['dmlexceptiononinstall'] = '<p>Une erreur de base de données est survenue [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'La vérification du fichier téléchargé à échoué';
|
||||
$string['invalidmd5'] = 'Le code de contrôle md5 n\'est pas valide';
|
||||
$string['missingrequiredfield'] = 'Un champ obligatoire n\'est pas renseigné';
|
||||
|
||||
@@ -32,4 +32,6 @@ defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'एन';
|
||||
$string['cliansweryes'] = 'वाई';
|
||||
$string['cliincorrectvalueretry'] = 'ग़लत मान, कृपया पुनः प्रयास करें';
|
||||
$string['clitypevalue'] = 'टाइप मूल्य';
|
||||
$string['cliyesnoprompt'] = 'टाइप Y (का मतलब है हाँ) या N (का मतलब है नहीं )';
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Az adatbázis nem hozható létre.</p> <p>A megadott adatbázis nem létezik, a felhasználó pedig nem jogosult létrehozni egyet.</p> <p>A portál rendszergazdájának ellenőrizni kell az adatbázis-beállításokat.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Nem hozható létre a lang könyvtár.';
|
||||
$string['cannotcreatetempdir'] = 'Nem hozható létre a temp könyvtár.';
|
||||
$string['cannotdownloadcomponents'] = 'Az összetevőket nem lehet letölteni.';
|
||||
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'Az md5 állományt nem lehet elmenteni.';
|
||||
$string['cannotsavezipfile'] = 'A tömörített állományt nem lehet elmenteni.';
|
||||
$string['cannotunzipfile'] = 'A tömörített állományt nem lehet kicsomagolni.';
|
||||
$string['componentisuptodate'] = 'Az összetevő a legújabb.';
|
||||
$string['dmlexceptiononinstall'] = '<p>Adatbázishiba történt [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'A letöltött állomány ellenőrzése nem sikerült.';
|
||||
$string['invalidmd5'] = 'Az ellenőrző változó hibás volt – próbálkozzék ismét';
|
||||
$string['missingrequiredfield'] = 'Egy szükséges mező hiányzik.';
|
||||
|
||||
@@ -55,7 +55,7 @@ $string['paths'] = 'Útvonalak';
|
||||
$string['pathserrcreatedataroot'] = 'A telepítő nem tudja létrehozni az adatkönyvtárat ({$a->dataroot}).';
|
||||
$string['pathshead'] = 'Útvonalak megerősítése';
|
||||
$string['pathsrodataroot'] = 'Az adatok gyökérkönyvtára nem írható.';
|
||||
$string['pathsroparentdataroot'] = 'A felettes könyvtás ({$a->parent}) nem írható. A telepítő nem tudja létrehozni az adatkönyvtárat ({$a->dataroot}).';
|
||||
$string['pathsroparentdataroot'] = 'A felettes könyvtár ({$a->parent}) nem írható. A telepítő nem tudja létrehozni az adatkönyvtárat ({$a->dataroot}).';
|
||||
$string['pathssubadmindir'] = 'Egy pár webes gazdagép esetén az /admin speciális URL pl. a vezérlőpanel eléréséhez. Ez ütközik a Moodle admin oldalainak standard helyével. Javítás: a telepítésben nevezze át a rendszergazda könyvtárát, az új nevet pedig írja be ide. Például: <em>moodleadmin</em>. Ezzel helyrehozhatók a Moodle rendszergazdai ugrópontjai.';
|
||||
$string['pathssubdataroot'] = 'Szüksége van egy helyre, ahol a Moodle mentheti a feltöltött állományokat. Ez a könyvtár a webszerver felhasználója (általában \'nobody\' vagy \'apache\') számára legyen mind olvasható, MIND ÍRHATÓ. Ha nem létezik, a telepítő megpróbálja létrehozni.';
|
||||
$string['pathssubdirroot'] = 'Teljes útvonal a Moodle telepítéséhez. ';
|
||||
|
||||
@@ -30,5 +30,6 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = '';
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'magyar';
|
||||
|
||||
@@ -30,5 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'ոչ';
|
||||
$string['cliansweryes'] = 'այո';
|
||||
$string['environmentrequireinstall'] = 'անհրաժեշտ է, որպեսզի տեղակայված և թույլատրված լինի';
|
||||
$string['environmentrequireversion'] = 'պահանջվում է {$a->needed} տարբերակը, դուք գործարկում եք՝ {$a->current}';
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Non è possibile creare il database </p> <p>Il database non esiste e l\'utente fornito non è autorizzato a crearlo.</p>
|
||||
<p>E\' necessario che l\'amministratore del sito verifichi la configurazione del database.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Non è possibile creare la cartella lang';
|
||||
$string['cannotcreatetempdir'] = 'Non è possibile creare la cartella temp';
|
||||
$string['cannotdownloadcomponents'] = 'Non è possibile scaricare componenti.';
|
||||
@@ -39,6 +41,7 @@ $string['cannotsavemd5file'] = 'Non è possibile salvare il file md5';
|
||||
$string['cannotsavezipfile'] = 'Non è possibile salvare il file ZIP';
|
||||
$string['cannotunzipfile'] = 'Non è possibile decomprimere il file.';
|
||||
$string['componentisuptodate'] = 'Il componente è aggiornato.';
|
||||
$string['dmlexceptiononinstall'] = '<p>Si è verificato un errore nel database: [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Il controllo del file scaricato non è andato a buon fine.';
|
||||
$string['invalidmd5'] = 'La variabile di controllo era errata - prova di nuovo';
|
||||
$string['missingrequiredfield'] = 'Mancano alcuni campi richiesti';
|
||||
|
||||
@@ -46,7 +46,7 @@ $string['dbprefix'] = 'Prefisso tabelle';
|
||||
$string['dirroot'] = 'Cartella di Moodle';
|
||||
$string['environmenthead'] = 'Verifica dell\'ambiente...';
|
||||
$string['environmentsub2'] = 'Ciascuna release di Moodle prevede come requisito minimo una data versione del PHP ed una serie di estensioni. Prima di una installazione o di un aggiornamento viene eseguita la verifica dei requisiti minimi. Se non sai come installare nuove versioni del PHP o le sue estensioni, contatta l\'amministratore del tuo server.';
|
||||
$string['errorsinenvironment'] = 'Ci sono problemi nel vostro ambiente';
|
||||
$string['errorsinenvironment'] = 'Sono stati riscontarti problemi nel tuo ambiente';
|
||||
$string['installation'] = 'Installazione';
|
||||
$string['langdownloaderror'] = 'Purtroppo non è stato possibile scaricare la lingua "{$a}". L\'installazione proseguirà in lingua Inglese.';
|
||||
$string['memorylimithelp'] = '<p>Il limite di memoria assegnata al PHP attualmente è {$a}.</p>
|
||||
@@ -57,10 +57,10 @@ $string['memorylimithelp'] = '<p>Il limite di memoria assegnata al PHP attualmen
|
||||
<ol>
|
||||
<li>Se possibile, ricompila il PHP con l\'opzione <i>--enable-memory-limit</i>.
|
||||
Questo consentirà a Moodle di impostare in autonomia il limite di memoria.</li>
|
||||
<li>Se hai accesso al file php.ini, è possibile modificare la variabile <b>memory_limit</b> a un valore più alto, ad esempio 40M. Se non hai accesso, potete chiedere al vostro amministratore di sistema di farlo.</li>
|
||||
<li>Se hai accesso al file php.ini, è possibile modificare la variabile <b>memory_limit</b> a un valore più alto, ad esempio 40M. Se non hai accesso, puoi chiedere all\'amministratore di sistema di farlo.</li>
|
||||
<li>Su alcuni server con il PHP è possibile creare un file .htaccess nella cartella di Moodle contenente questa linea:
|
||||
<blockquote>php_value memory_limit 40M</blockquote>
|
||||
<p>Tuttavia, su alcuni server la direttiva potrebbe impedire a <b>tutte</b> le pagine PHP di funzionare (apapriranno degli erorri durante la visualizzazione delle pagine), in tal caso dovrai rimuovere il file .htaccess.</li></ol>';
|
||||
<p>Tuttavia, su alcuni server la direttiva potrebbe impedire a <b>tutte</b> le pagine PHP di funzionare (appariranno degli errori durante la visualizzazione delle pagine), in tal caso dovrai rimuovere il file .htaccess.</li></ol>';
|
||||
$string['paths'] = 'Percorsi';
|
||||
$string['pathserrcreatedataroot'] = 'Lo script di installazione non ha potuto creare la Cartella dei dati ({$a->dataroot}).';
|
||||
$string['pathshead'] = 'Conferma percorsi';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>データベースを作成できません。</p>
|
||||
<p>指定されたデータベースは存在しません。また、ユーザにはデータベースを作成するパーミッションがありません。</p>
|
||||
<p>サイト管理者はデータベース設定を確認してください。</p>';
|
||||
$string['cannotcreatelangdir'] = 'langディレクトリを作成できません。';
|
||||
$string['cannotcreatetempdir'] = 'tempディレクトリを作成できません。';
|
||||
$string['cannotdownloadcomponents'] = 'コンポーネットをダウンロードできません。';
|
||||
@@ -39,10 +42,11 @@ $string['cannotsavemd5file'] = 'mp5ファイルを保存できません。';
|
||||
$string['cannotsavezipfile'] = 'ZIPファイルを保存できません。';
|
||||
$string['cannotunzipfile'] = 'ZIPファイルを解凍できません。';
|
||||
$string['componentisuptodate'] = 'コンポーネントは最新です。';
|
||||
$string['dmlexceptiononinstall'] = '<p>データベースエラーが発生しました: [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'ダウンロードファイルのチェックに失敗しました。';
|
||||
$string['invalidmd5'] = 'チェック変数が正しくありません - 再度お試しください。';
|
||||
$string['missingrequiredfield'] = 'いくつかの必須入力フィールドが入力されていません。';
|
||||
$string['remotedownloaderror'] = 'あなたのサーバへのコンポーネントのダウンロードに失敗しました。プロクシ設定を確認してください。PHP cURL拡張モジュールの使用を強くお勧めします。<br /><br /><a href="{$a->url}">{$a->url}</a>ファイルを手動でダウンロードした後、あなたのサーバの「{$a->dest}」にコピーおよび解凍してください。';
|
||||
$string['wrongdestpath'] = '宛先パスが正しくありません。';
|
||||
$string['wrongsourcebase'] = 'ソースURIベースが正しくありません。';
|
||||
$string['wrongsourcebase'] = 'ソースURLベースが正しくありません。';
|
||||
$string['wrongzipfilename'] = 'ZIPファイル名が正しくありません。';
|
||||
|
||||
@@ -66,10 +66,10 @@ $string['pathserrcreatedataroot'] = 'データディレクトリ ({$a->dataroot}
|
||||
$string['pathshead'] = 'パスを確認する';
|
||||
$string['pathsrodataroot'] = 'datarootディレクトリに書き込み権がありません。';
|
||||
$string['pathsroparentdataroot'] = '親ディレクトリ ({$a->parent}) に書き込み権がありません。データディレクトリ ({$a->dataroot}) は、インストーラーで作成できません。';
|
||||
$string['pathssubadmindir'] = '極わずかですが、あなたがコントロールパネル等にアクセスするため、特別なURIとして/adminを使用するウェブホストがあります。残念なことに、これはMoodle管理ページの標準的なローケーションと競合してしまいます。ここに新しいディレクトリ名を入力することで、あなたのMoodleのadminディレクトリを修正することができます。例えば、<em>moodleadmin</em>です。これにより、Moodleのadminリンクが修正されます。';
|
||||
$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を設定してください。アドレスが正しくない場合、あなたのブラウザのURIを変更して、異なる値でインストールを再開してください。';
|
||||
$string['pathssubwwwroot'] = 'Moodleにアクセスすることのできるフルウェブアドレスです。複数アドレスを使用して、Moodleにアクセスすることはできません。あなたのサイトに複数のパブリックアドレスがある場合、このアドレスを除く、すべてのアドレスにパーマネントリダイレクトを設定してください。あなたのサイトにイントラネットおよびインターネットからアクセスできる場合、ここにはパブリックアドレスを入力してください。また、イントラネットユーザもパブリックアドレスを利用できるよう、DNSを設定してください。アドレスが正しくない場合、あなたのブラウザのURLを変更して、異なる値でインストールを再開してください。';
|
||||
$string['pathsunsecuredataroot'] = 'dirrootロケーションが安全ではありません。';
|
||||
$string['pathswrongadmindir'] = 'adminディレクトリがありません。';
|
||||
$string['phpextension'] = '{$a} PHP拡張モジュール';
|
||||
|
||||
@@ -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['language'] = 'Oqaaseq';
|
||||
$string['next'] = 'Tullia';
|
||||
@@ -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['cannotcreatelangdir'] = 'Negalima sukurti kalbos katalogo';
|
||||
$string['cannotcreatetempdir'] = 'Negalima sukurti laikinojo katalogo';
|
||||
$string['cannotdownloadcomponents'] = 'Negalima atsisiųsti komponentų';
|
||||
$string['cannotdownloadzipfile'] = 'Negalima atsisiųsti ZIP failo';
|
||||
@@ -30,8 +30,13 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'n';
|
||||
$string['cliansweryes'] = 't';
|
||||
$string['cliincorrectvalueerror'] = 'Klaida, klaidinga "{$a->option}" reikšmė "{$a->value}"';
|
||||
$string['cliincorrectvalueretry'] = 'Klaidinga reikšmė, bandykite dar kartą';
|
||||
$string['clitypevalue'] = 'tipo reikšmė';
|
||||
$string['clitypevaluedefault'] = 'tipo reikšmė, paspauskite „Enter“, jei norite naudoti numatytąją reikšmę ({$a})';
|
||||
$string['cliunknowoption'] = 'Neatpažintos parinktys: {$a} naudokite --žinyno parinktį.';
|
||||
$string['cliyesnoprompt'] = 'įveskite t (taip) arba n (ne)';
|
||||
$string['environmentrequireinstall'] = 'turi būti įdiegta ir įjungta';
|
||||
$string['environmentrequireversion'] = 'būtina naudoti versiją {$a->needed}, o jūs naudojate {$a->current}';
|
||||
|
||||
@@ -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'] = 'Mongolian';
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Kan databank niet maken.</p>
|
||||
<p>De opgegeven databank bestaat niet en de opgegeven gebruiker heeft onvoldoende rechten om de databank te maken.</p>
|
||||
<p>De site-beheerder moet de databankconfiguratie controleren.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Kan lang map niet maken';
|
||||
$string['cannotcreatetempdir'] = 'Kan tijdelijke map niet maken.';
|
||||
$string['cannotdownloadcomponents'] = 'Kan componenten niet downloaden.';
|
||||
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Kan md5-bestand niet bewaren.';
|
||||
$string['cannotsavezipfile'] = 'Kan ZIP-bestand niet bewaren.';
|
||||
$string['cannotunzipfile'] = 'Kon bestand niet unzippen';
|
||||
$string['componentisuptodate'] = 'Component is up-to-date';
|
||||
$string['dmlexceptiononinstall'] = '<p>Databankfout [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Controle van het gedownloade bestand mislukt';
|
||||
$string['invalidmd5'] = 'De controlevariable was fout - probeer nog eens';
|
||||
$string['missingrequiredfield'] = 'Vereist veld ontbreekt';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Kan ikke opprette databasen.</p>
|
||||
<p>Den angitte databasen eksisterer ikke og oppgitt bruker har ikke rettigheter til å opprette databasen.</p>
|
||||
<p>Portaladministratoren må derfor verifisere databaseoppsettet.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Kan ikke opprette mappen \'lang\'.';
|
||||
$string['cannotcreatetempdir'] = 'Kan ikke opprette mappen \'temp';
|
||||
$string['cannotdownloadcomponents'] = 'Kan ikke laste ned komponentene.';
|
||||
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Kan ikke lagre md5-fil.';
|
||||
$string['cannotsavezipfile'] = 'Kan ikke lagre ZIP-fil.';
|
||||
$string['cannotunzipfile'] = 'Kan ikke pakke opp filen.';
|
||||
$string['componentisuptodate'] = 'Komponenten er oppdatert';
|
||||
$string['dmlexceptiononinstall'] = '<p>Det oppstod en databasefeil [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Sjekk av nedlastet fil mislykkes.';
|
||||
$string['invalidmd5'] = 'Ugyldig md5, prøv igjen';
|
||||
$string['missingrequiredfield'] = 'Noen påkrevde felt mangler';
|
||||
|
||||
@@ -30,5 +30,6 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['parentlanguage'] = '';
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Norsk - bokmål';
|
||||
|
||||
@@ -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 incorrecte « {$a->value} » per lo paramètre « {$a->option} »';
|
||||
$string['cliincorrectvalueretry'] = 'Valor incorrecte, veuillez réessayer';
|
||||
$string['clitypevalue'] = 'tipe valor';
|
||||
$string['clitypevaluedefault'] = 'tipe valor, tapez Entrée per utilizar la valor per defaut ({$a})';
|
||||
$string['cliunknowoption'] = 'Options non reconnues :
|
||||
{$a}.
|
||||
Utilisez l\'option --help.';
|
||||
$string['cliyesnoprompt'] = 'Tapez y (pour oui) o n (pour non)';
|
||||
$string['environmentrequireinstall'] = 'doit être installé e activé';
|
||||
$string['environmentrequireversion'] = 'la version {$a->needed} es requise ; vous utilisez actualament la version {$a->current}';
|
||||
@@ -0,0 +1,51 @@
|
||||
<?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 donadas.</p>
|
||||
<p>La banca de donadas indicada existís pas e l\'utilizaire especificat a pas las autorizacions que permeton de crear una banca de donadas.</p>.
|
||||
<p>L\'administrator del site deu repassar la configuracion de la banca de donadas.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Creacion del dorsièr lang impossible';
|
||||
$string['cannotcreatetempdir'] = 'Creacion del dorsièr temp impossibla';
|
||||
$string['cannotdownloadcomponents'] = 'Telecargament dels components impossible';
|
||||
$string['cannotdownloadzipfile'] = 'Telecargament del fichièr ZIP impossible';
|
||||
$string['cannotfindcomponent'] = 'Component introbable';
|
||||
$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['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';
|
||||
$string['wrongdestpath'] = 'Camin de destinacion incorrècte';
|
||||
$string['wrongsourcebase'] = 'Adreça URL de basa de la font incorrècta';
|
||||
$string['wrongzipfilename'] = 'Nom de fichièr ZIP incorrècte';
|
||||
@@ -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'] = 'fr';
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Lengadocian';
|
||||
@@ -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'] = 'Langue';
|
||||
$string['next'] = 'Seguent';
|
||||
$string['previous'] = 'Précédent';
|
||||
$string['reload'] = 'Actualiser';
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user