Compare commits
256 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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
|
||||
|
||||
@@ -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>";
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
+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)');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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,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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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í';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
<?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'] = 'es';
|
||||
$string['thislanguage'] = 'Español - Argentina';
|
||||
@@ -1,35 +0,0 @@
|
||||
<?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'] = 'es';
|
||||
$string['thisdirection'] = 'ltr';
|
||||
$string['thislanguage'] = 'Español - España';
|
||||
@@ -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';
|
||||
|
||||
@@ -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拡張モジュール';
|
||||
|
||||
@@ -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}';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p> Não é possível criar a base de dados. </p><p> A base de dados especificada não existe e o utilizador em questão não tem permissão para criar a base de dados. </p><p> O administrador do site deve verificar a configuração da base de dados. </p>';
|
||||
$string['cannotcreatelangdir'] = 'Não é possível criar a pasta de pacotes linguísticos';
|
||||
$string['cannotcreatetempdir'] = 'Não é possível criar a pasta de ficheiros temporários';
|
||||
$string['cannotdownloadcomponents'] = 'Não é possível descarregar os componentes.';
|
||||
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'Não é possível gravar o ficheiro md5';
|
||||
$string['cannotsavezipfile'] = 'Não é possível gravar o ficheiro ZIP';
|
||||
$string['cannotunzipfile'] = 'Não é possível descompactar o ficheiro ZIP';
|
||||
$string['componentisuptodate'] = 'O componente está atualizado.';
|
||||
$string['dmlexceptiononinstall'] = '<p>Ocorreu um erro de base de dados [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'A verificação do ficheiro descarregado falhou.';
|
||||
$string['invalidmd5'] = 'A variável de verificação está errada - tente novamente.';
|
||||
$string['missingrequiredfield'] = 'Um dos campos obrigatórios está em falta';
|
||||
|
||||
@@ -39,6 +39,6 @@ $string['clitypevaluedefault'] = 'digite o valor, pressione Enter para utilizar
|
||||
$string['cliunknowoption'] = 'Opções não reconhecidas:
|
||||
{$a}
|
||||
Por favor use a opção --help.';
|
||||
$string['cliyesnoprompt'] = 'digite y (sim) ou n (não)';
|
||||
$string['cliyesnoprompt'] = 'digite s (sim) ou n (não)';
|
||||
$string['environmentrequireinstall'] = 'deve ser instalado e habilitado';
|
||||
$string['environmentrequireversion'] = 'a versão {$a->needed} é necessária e você está usando a versão {$a->current}';
|
||||
|
||||
@@ -32,7 +32,7 @@ defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['clianswerno'] = 'n';
|
||||
$string['cliansweryes'] = 'y';
|
||||
$string['cliincorrectvalueerror'] = 'Ошибка, некорректное значение "{$a->value}" для "{$a->option}"';
|
||||
$string['cliincorrectvalueerror'] = 'Ошибка, некорректное значение «{$a->value}» для «{$a->option}»';
|
||||
$string['cliincorrectvalueretry'] = 'Некорректное значение, пожалуйста, попробуйте заново';
|
||||
$string['clitypevalue'] = 'введите значение';
|
||||
$string['clitypevaluedefault'] = 'введите значение, нажмите Enter для использования значения по умолчанию ({$a})';
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p> Невозможно создать базу данных. </p><p> Указанная база данных не существует, и данный пользователь не имеет разрешения на создание базы данных. </p><p> Администратор сайта должен проверить конфигурацию базы данных. </p>';
|
||||
$string['cannotcreatelangdir'] = 'Не удается создать каталог языка';
|
||||
$string['cannotcreatetempdir'] = 'Не удается создать временный каталог';
|
||||
$string['cannotdownloadcomponents'] = 'Невозможно загрузить компоненты.';
|
||||
@@ -39,10 +40,11 @@ $string['cannotsavemd5file'] = 'Не удалось сохранить MD5-фа
|
||||
$string['cannotsavezipfile'] = 'Не удалось сохранить ZIP-файл';
|
||||
$string['cannotunzipfile'] = 'Не удалось распаковать файл';
|
||||
$string['componentisuptodate'] = 'Компонент не нуждается в обновлении';
|
||||
$string['dmlexceptiononinstall'] = '<p>Произошла ошибка базы данных [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Ошибка проверки загруженного файла';
|
||||
$string['invalidmd5'] = 'Некорректная md5';
|
||||
$string['missingrequiredfield'] = 'Отсутствуют некоторые обязательные поля';
|
||||
$string['remotedownloaderror'] = 'Не удалось загрузить компонент на сервер, проверьте настройки прокси-сервера, настоятельно рекомендуется установка расширения cURL языка PHP.<br /> <br />Вам следует вручную загрузить файл по ссылке <a href="{$a->url}">{$a->url}</a>, скопировать его в папку "{$a->dest}" на своём сервере и там его распаковать.';
|
||||
$string['remotedownloaderror'] = 'Не удалось загрузить компонент на сервер, проверьте настройки прокси-сервера, настоятельно рекомендуется установка расширения cURL языка PHP.<br /> <br />Вам следует вручную загрузить файл по ссылке <a href="{$a->url}">{$a->url}</a>, скопировать его в папку «{$a->dest}» на своем сервере и там его распаковать.';
|
||||
$string['wrongdestpath'] = 'Ошибочный путь назначения';
|
||||
$string['wrongsourcebase'] = 'Неправильный адрес источника';
|
||||
$string['wrongzipfilename'] = 'Неверное имя ZIP-файла';
|
||||
|
||||
@@ -42,7 +42,7 @@ $string['databasename'] = 'Название базы данных';
|
||||
$string['databasetypehead'] = 'Выберите драйвер базы данных';
|
||||
$string['dataroot'] = 'Каталог данных';
|
||||
$string['datarootpermission'] = 'Разрешения на каталоги данных';
|
||||
$string['dbprefix'] = 'Префикс имён таблиц';
|
||||
$string['dbprefix'] = 'Префикс имен таблиц';
|
||||
$string['dirroot'] = 'Каталог Moodle';
|
||||
$string['environmenthead'] = 'Проверка среды...';
|
||||
$string['environmentsub2'] = 'У каждой версии Moodle есть минимальные требования к версии PHP и набор обязательных расширений PHP.
|
||||
@@ -50,7 +50,7 @@ $string['environmentsub2'] = 'У каждой версии Moodle есть ми
|
||||
Пожалуйста, свяжитесь с администратором сервера, если не знаете, как установить новую версию или включить расширения PHP.';
|
||||
$string['errorsinenvironment'] = 'Проверка окружения не выполнена!';
|
||||
$string['installation'] = 'Установка';
|
||||
$string['langdownloaderror'] = 'К сожалению, не удалось установить язык "{$a}". Процесс установки продолжится на английском.';
|
||||
$string['langdownloaderror'] = 'К сожалению, не удалось установить язык «{$a}». Процесс установки продолжится на английском.';
|
||||
$string['memorylimithelp'] = '<p>Сейчас ограничение памяти в PHP на Вашем сервере установлено в {$a}.</p>
|
||||
|
||||
<p>Из-за этого у через какое-то время у Moodle могут возникнуть проблемы с памятью, особенно если у Вас будет много модулей и/или пользователей.</p>
|
||||
@@ -58,13 +58,13 @@ $string['memorylimithelp'] = '<p>Сейчас ограничение памят
|
||||
<p>Мы рекомендуем, если возможно, установить в PHP более высокое ограничение памяти, например 40M.
|
||||
Это можно попробовать сделать следующими способами:</p>
|
||||
<ol>
|
||||
<li>Если есть возможность, перекомпилируёте PHP с ключом <i>--enable-memory-limit</i>.
|
||||
<li>Если есть возможность, перекомпилируете PHP с ключом <i>--enable-memory-limit</i>.
|
||||
В этом случае Moodle сможет самостоятельна установить ограничение памяти.</li>
|
||||
<li>Если у Вас есть доступ к файлу php.ini, Вы можете изменить параметр <b>memory_limit</b>
|
||||
на что-нибудь типа 40M. Если доступа у Вас нет, может быть у Вас есть возможность попросить администратора сделать это.</li>
|
||||
<li>На некоторых серверах PHP можно создать в каталоге Moodle файл .htaccess содержащий следующую строку:
|
||||
<blockquote><div>php_value memory_limit 40M</div></blockquote>
|
||||
<p>Тем не менее, на некоторых серверах из-за этого могут перестать работать <b>все</b> страницы PHP (Вы увидите ошибки на страницах). В этом случае файл придётся удалить файл .htaccess.</p></li>
|
||||
<p>Тем не менее, на некоторых серверах из-за этого могут перестать работать <b>все</b> страницы PHP (Вы увидите ошибки на страницах). В этом случае файл придется удалить файл .htaccess.</p></li>
|
||||
</ol>';
|
||||
$string['paths'] = 'Пути';
|
||||
$string['pathserrcreatedataroot'] = 'Программа установки не может создать каталог данных ({$a->dataroot}).';
|
||||
@@ -81,7 +81,7 @@ $string['pathssubwwwroot'] = 'Полный веб-адрес, по которо
|
||||
Если указанный здесь адрес неверный, измените URL в строке адреса браузера, чтобы перезапустить установку с другим значением.';
|
||||
$string['pathsunsecuredataroot'] = 'Расположение каталога данных не отвечает требованиям безопасности';
|
||||
$string['pathswrongadmindir'] = 'Каталог admin не существует';
|
||||
$string['phpextension'] = 'Расширение PHP "{$a}"';
|
||||
$string['phpextension'] = 'Расширение PHP «{$a}»';
|
||||
$string['phpversion'] = 'Версия PHP';
|
||||
$string['phpversionhelp'] = '<p>Для Moodle необходим PHP версии 4.3.0 и выше или 5.1.0 и выше (известны некоторые проблемы с версией 5.0.x).</p>
|
||||
<p>Сейчас у Вас используется версия {$a}</p>
|
||||
@@ -93,5 +93,5 @@ $string['welcomep30'] = 'Эта версия набора программ <stro
|
||||
$string['welcomep40'] = 'Также в этот набор входит <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong>.';
|
||||
$string['welcomep50'] = 'Порядок использования приложений, входящих в этот набор, регламентируется соответствующими лицензиями. Набор программ <strong>{$a->installername}</strong> является полностью <a href="http://ru.wikipedia.org/wiki/Открытое_программное_обеспечение">открытым </a> и распространяется на условиях лицензии <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>.';
|
||||
$string['welcomep60'] = 'На следующих страницах Вы сможете за несколько простых шагов настроить и установить <strong>Moodle</strong> на свой компьютер. Вы сможете принять настройки по умолчанию или изменить их в зависимости от своих потребностей.';
|
||||
$string['welcomep70'] = 'Нажмите кнопку "Далее" чтобы продолжить процесс установки <strong>Moodle</strong>.';
|
||||
$string['welcomep70'] = 'Нажмите кнопку «Далее» чтобы продолжить процесс установки <strong>Moodle</strong>.';
|
||||
$string['wwwroot'] = 'Веб-адрес';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Није могуће креирати базу података.</p>
|
||||
<p>Специфицирана база не постоји и дати корисник нема права да је креира.</p>
|
||||
<p>Администратор сајта би требао да провери подешавања базе.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Није могуће креирати директоријум језика';
|
||||
$string['cannotcreatetempdir'] = 'Није могуће креирати привремени директоријум';
|
||||
$string['cannotdownloadcomponents'] = 'Није могуће преузети компоненте.';
|
||||
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Није могуће сачувати md5 да
|
||||
$string['cannotsavezipfile'] = 'Није могуће сачувти ZIP архиву.';
|
||||
$string['cannotunzipfile'] = 'Није могуће распаковати ZIP датотеку.';
|
||||
$string['componentisuptodate'] = 'Компонента је доступна у својој најновијој верзији';
|
||||
$string['dmlexceptiononinstall'] = '<p>Дошло је до грешке везане за базу података [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Није успела провера преузете датотеке';
|
||||
$string['invalidmd5'] = 'Неисправна md5 датотека';
|
||||
$string['missingrequiredfield'] = 'Недостаје неко обавезно поље';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>Nije moguće kreirati bazu podataka.</p>
|
||||
<p>Specificirana baza ne postoji i dati korisnik nema prava da je kreira.</p>
|
||||
<p>Administrator sajta bi trebao da proveri podešavanja baze.</p>';
|
||||
$string['cannotcreatelangdir'] = 'Nije moguće kreirati direktorijum jezika';
|
||||
$string['cannotcreatetempdir'] = 'Nije moguće kreirati privremeni direktorijum';
|
||||
$string['cannotdownloadcomponents'] = 'Nije moguće preuzeti komponente.';
|
||||
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Nije moguće sačuvati md5 datoteku.';
|
||||
$string['cannotsavezipfile'] = 'Nije moguće sačuvti ZIP arhivu.';
|
||||
$string['cannotunzipfile'] = 'Nije moguće raspakovati ZIP datoteku.';
|
||||
$string['componentisuptodate'] = 'Komponenta je dostupna u svojoj najnovijoj verziji';
|
||||
$string['dmlexceptiononinstall'] = '<p>Došlo je do greške vezane za bazu podataka [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['downloadedfilecheckfailed'] = 'Nije uspela provera preuzete datoteke';
|
||||
$string['invalidmd5'] = 'Neispravna md5 datoteka';
|
||||
$string['missingrequiredfield'] = 'Nedostaje neko obavezno polje';
|
||||
|
||||
@@ -38,7 +38,7 @@ $string['clitypevalue'] = 'değeri yazın';
|
||||
$string['clitypevaluedefault'] = 'değeri yazın, varsayılan değeri ({$a}) kullanmak için Enter tuşuna basın';
|
||||
$string['cliunknowoption'] = 'Tanınmayan seçenekler:
|
||||
{$a}
|
||||
. Lütfen --help seçeneğini kullanın.';
|
||||
Lütfen --help seçeneğini kullanın.';
|
||||
$string['cliyesnoprompt'] = 'e (evet) veya h (hayır) yazın';
|
||||
$string['environmentrequireinstall'] = 'yüklenmesi/etkinleştirilmesi gerekli';
|
||||
$string['environmentrequireinstall'] = 'yüklenmiş ve etkinleştirilmiş olmalıdır';
|
||||
$string['environmentrequireversion'] = 'sürüm {$a->needed} gerekli ve şu anda {$a->current} çalışıyor';
|
||||
|
||||
+15
-15
@@ -30,19 +30,19 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatelangdir'] = 'Dil dizini oluşturulamıyor.';
|
||||
$string['cannotcreatetempdir'] = 'Geçici dizin oluşturulamıyor.';
|
||||
$string['cannotdownloadcomponents'] = 'Bileşenler indirilemedi.';
|
||||
$string['cannotdownloadzipfile'] = 'ZIP dosyası indirilemedi.';
|
||||
$string['cannotfindcomponent'] = 'Bileşen bulunamadı.';
|
||||
$string['cannotsavemd5file'] = 'Md5 dosyadı kaydedilemedi.';
|
||||
$string['cannotsavezipfile'] = 'ZIP dosyası kaydedilemedi.';
|
||||
$string['cannotunzipfile'] = 'Dosya arşivi açılamadı.';
|
||||
$string['componentisuptodate'] = 'Bileşen günceldir.';
|
||||
$string['downloadedfilecheckfailed'] = 'İndirilmiş dosya kontrol hatası';
|
||||
$string['invalidmd5'] = 'Geçersiz md5';
|
||||
$string['missingrequiredfield'] = 'Bazı gerekli alanlar eksik';
|
||||
$string['cannotcreatelangdir'] = 'Dil dizini oluşturulamıyor';
|
||||
$string['cannotcreatetempdir'] = 'Geçici dizin oluşturulamıyor';
|
||||
$string['cannotdownloadcomponents'] = 'Bileşenler indirilemedi';
|
||||
$string['cannotdownloadzipfile'] = 'ZIP dosyası indirilemedi';
|
||||
$string['cannotfindcomponent'] = 'Bileşen bulunamadı';
|
||||
$string['cannotsavemd5file'] = 'md5 dosyası kaydedilemedi';
|
||||
$string['cannotsavezipfile'] = 'ZIP dosyası kaydedilemedi';
|
||||
$string['cannotunzipfile'] = 'Dosya arşivi açılamadı';
|
||||
$string['componentisuptodate'] = 'Bileşen güncel';
|
||||
$string['downloadedfilecheckfailed'] = 'İndirilen dosya kontrolü hatası';
|
||||
$string['invalidmd5'] = 'Kontrol değişkeni yanlış - yeniden deneyin';
|
||||
$string['missingrequiredfield'] = 'Gerekli alanlardan bazıları eksik';
|
||||
$string['remotedownloaderror'] = 'Bileşeni sunucunuza indirirken hata oluştu, lütfen proxy(vekil) ayarlarını kontrol edin. PHP cURL eklentisi şiddetle tavsiye edilir.<br /><br /><a href="{$a->url}">{$a->url}</a><br />dosyasını kendiniz indirmeli ve indirdiğiniz dosyayı sunucunuzundaki "{$a->dest}" klasörüne kaydetmeli ve zip arşivini açmalısınız.';
|
||||
$string['wrongdestpath'] = 'Hatalı hedef yolu';
|
||||
$string['wrongsourcebase'] = 'Hatalı kaynak URL base.';
|
||||
$string['wrongzipfilename'] = 'Hatalı ZIP dosya adı.';
|
||||
$string['wrongdestpath'] = 'Yanlış hedef yolu';
|
||||
$string['wrongsourcebase'] = 'Yanlış kaynak URL tabanı';
|
||||
$string['wrongzipfilename'] = 'Yanlış ZIP dosya adı';
|
||||
|
||||
@@ -31,19 +31,22 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['admindirname'] = 'Yönetici Dizini';
|
||||
$string['availablelangs'] = 'Kullanılabilir diller';
|
||||
$string['availablelangs'] = 'Kullanılabilir dil paketleri';
|
||||
$string['chooselanguagehead'] = 'Bir dil seçin';
|
||||
$string['chooselanguagesub'] = 'Lütfen, SADECE kurulum için bir dil seçin. Site ve kullanıcı dillerini sonraki ekranda seçebilirsiniz.';
|
||||
$string['clialreadyconfigured'] = 'config.php halihazırda mevcut, lütfen eğer bu siteyi yüklemek istiyorsanız şu dizini kullanın: admin/cli/install_database.php';
|
||||
$string['clialreadyinstalled'] = 'Config.php zaten var. Sitenizi güncellemek istiyorsanız bu adresi kullanın: admin/cli/upgrade.php';
|
||||
$string['cliinstallheader'] = 'Moodle {$a} komut satırı kurulum programı';
|
||||
$string['databasehost'] = 'Veritabanı sunucusu:';
|
||||
$string['databasename'] = 'Veritabanı adı:';
|
||||
$string['databasehost'] = 'Veritabanı sunucusu';
|
||||
$string['databasename'] = 'Veritabanı adı';
|
||||
$string['databasetypehead'] = 'Veritabanı sürücünü seçin';
|
||||
$string['dataroot'] = 'Veri Dizini';
|
||||
$string['datarootpermission'] = 'Veri dizinleri izni';
|
||||
$string['dbprefix'] = 'Tablo öneki';
|
||||
$string['dirroot'] = 'Moodle Dizini';
|
||||
$string['environmenthead'] = 'Ortam kontrol ediliyor...';
|
||||
$string['errorsinenvironment'] = 'Ortamda hatalar var!';
|
||||
$string['environmentsub2'] = 'Her Moodle dağıtımı, bazı PHP versiyon gereksinimi ve bir takım PHP uzantılarının yüklü olmalı zorunluluğuna sahiptir. Tüm ortam denetimi her yükleme ve güncellemeden önce yapılmalıdır. Eğer PHP \'nin yeni versiyonunu veya PHP uzantılarını nasıl yükleyeceğinizi bilmiyorsanız lütfen sunucu yöneticiniz ile iletişime geçiniz.';
|
||||
$string['errorsinenvironment'] = 'Ortam kontrolu başarısız oldu!';
|
||||
$string['installation'] = 'Kurulum';
|
||||
$string['langdownloaderror'] = 'Maalesef "{$a}" dil paketi kurulamadı. Kuruluma İngilizce olarak devam edilecek.';
|
||||
$string['memorylimithelp'] = '<p>Sunucunuz için PHP bellek limiti şu anda {$a} olarak ayarlanmış durumda.</p>
|
||||
@@ -74,7 +77,13 @@ $string['pathserrcreatedataroot'] = 'Veri Klasörü ({$a->dataroot}) kurulum tar
|
||||
$string['pathshead'] = 'Yolları doğrulayın';
|
||||
$string['pathsrodataroot'] = 'Veri yolu yazılabilir değil.';
|
||||
$string['pathsroparentdataroot'] = 'Ana klasör ({$a->parent}) yazılabilir değil. Veri Klasörü ({$a->dataroot}) kurulum tarafından oluşturulamıyor.';
|
||||
$string['pathssubadmindir'] = 'Pek az web sunucusu /admin adresini kontrol paneline yada benzeri birşeye erişmek için kullanır. Ne yazık ki bu Moodle admin sayfalarının standart konumuyla bir karışıklık yaratır. Bu durumu düzeltmek için kurulumunuzdaki admin dizinini yeniden isimlendirip buraya yeni ismi yazınız. Örneğin: <em>moodleadmin</em>. Bu Moodle\'daki admin bağlantısını düzeltecektir.';
|
||||
$string['pathssubdataroot'] = 'Moodle\'ın yüklenen dosyaları kayıt etmesi için bir yere ihtiyacınız var. Bu dizin/klasör web sunucusunun kullanıcı hesabı tarafından okunabilir ve yazılabilir olmalıdır. Bu okuma, yazma izinlerini klasöre vermelisiniz. Fakat bu klasör aynı zamanda web üzerinden direk erişilebilir olmamalıdır. Yükleyici eğer klasör yok ise oluşturmayı deneyecektir.';
|
||||
$string['pathssubdirroot'] = 'Moodle kurulumu için tam klasör yolu. Sadece sembolik linkleri kullanmaya gereksinim duyuyorsanız değiştirin.';
|
||||
$string['pathssubwwwroot'] = 'Moodle\'a erişlecek tam web adresi. Moodle\'ın birden çok adres kullanması mümkün değildir.
|
||||
Eğer siteniz birden fazla adrese sahip ise bu adres harici diğerlerinin yönlendirme ayarlarını yapılandırın.
|
||||
Eğer siteniz Intranet ve İnternet üzerinden erişilebilirse burada genel bir adres kullanın ve DNS\'iniz ayarlayın. Bu şekilde Intranet kullanıcları da genel adresi kullanabilirler.
|
||||
Eğer adres doğru değilse lütfen kurulumu tekrar başlatmak için tarayıcınızdaki URL\'i değiştirin.';
|
||||
$string['pathsunsecuredataroot'] = 'Veri yolu güvenli değil';
|
||||
$string['pathswrongadmindir'] = 'Yönetici klasörü yok';
|
||||
$string['phpextension'] = '{$a} PHP eklentisi';
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$string['cannotcreatedboninstall'] = '<p>無法建立資料庫</p>
|
||||
<p>指定之資料庫並不存在。使用者並未有權限建立資料庫</p>
|
||||
<p>網站管理員需查明資料庫之組態.</p>';
|
||||
$string['cannotcreatelangdir'] = '無法建立語言資料夾。';
|
||||
$string['cannotcreatetempdir'] = '無法建立暫存資料夾。';
|
||||
$string['cannotdownloadcomponents'] = '無法下載元件。';
|
||||
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = '無法儲存 md5 檔案。';
|
||||
$string['cannotsavezipfile'] = '無法儲存 ZIP 檔案。';
|
||||
$string['cannotunzipfile'] = '無法解壓縮檔案。';
|
||||
$string['componentisuptodate'] = '元件已經是最新的了。';
|
||||
$string['dmlexceptiononinstall'] = '<p>資料庫有誤 [{$a->錯誤碼}].<br />{$a->排除故障資訊}</p>';
|
||||
$string['downloadedfilecheckfailed'] = '下載的檔案檢查失敗';
|
||||
$string['invalidmd5'] = '這檢查變項是錯的,再試一次。';
|
||||
$string['missingrequiredfield'] = '缺少部份必填欄位';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
admindirname,install
|
||||
availablelangs,install
|
||||
cannotcreatedboninstall,error
|
||||
cannotcreatelangdir,error
|
||||
cannotcreatetempdir,error
|
||||
cannotdownloadcomponents,error
|
||||
@@ -28,6 +29,7 @@ databasetypehead,install
|
||||
dataroot,install
|
||||
datarootpermission,install
|
||||
dbprefix,install
|
||||
dmlexceptiononinstall,error
|
||||
dirroot,install
|
||||
downloadedfilecheckfailed,error
|
||||
environmenthead,install
|
||||
|
||||
@@ -856,6 +856,7 @@ $string['questioncwqpfscheck'] = 'One or more \'random\' questions in a quiz are
|
||||
$string['questioncwqpfsok'] = 'Good. There are no \'random\' questions in your quizzes that are set up to select questions from a mixture of shared and unshared question categories.';
|
||||
$string['questiontype'] = 'Question type';
|
||||
$string['questiontypes'] = 'Question types';
|
||||
$string['quizattemptsupgradedmessage'] = 'In Moodle 2.1 there was a major upgrade to questions. It was possible to delay parts of the database upgrade to be run later. Before upgrading to Moodle 2.7, this upgrade must be completed.';
|
||||
$string['recaptchaprivatekey'] = 'ReCAPTCHA private key';
|
||||
$string['recaptchapublickey'] = 'ReCAPTCHA public key';
|
||||
$string['register'] = 'Register your site';
|
||||
|
||||
@@ -67,6 +67,7 @@ $string['ex_unabletolock'] = 'Unable to acquire a lock for caching.';
|
||||
$string['ex_unmetstorerequirements'] = 'You are unable to use this store at the present time. Please refer to the documentation to determine its requirements.';
|
||||
$string['gethit'] = 'Get - Hit';
|
||||
$string['getmiss'] = 'Get - Miss';
|
||||
$string['inadequatestoreformapping'] = 'This store doesn\'t meet the requirements for all known definitions. Definitions for which this store is inadequate will be given the original default store instead of the selected store.';
|
||||
$string['invalidplugin'] = 'Invalid plugin';
|
||||
$string['invalidstore'] = 'Invalid cache store provided';
|
||||
$string['lockdefault'] = 'Default';
|
||||
|
||||
@@ -46,6 +46,9 @@ $string['cannotcallscript'] = 'You cannot call this script in that way';
|
||||
$string['cannotcallusgetselecteduser'] = 'You cannot call user_selector::get_selected_user if multi select is true.';
|
||||
$string['cannotcreatebackupdir'] = 'Could not create backupdata folder. The site administrator needs to fix the file permissions';
|
||||
$string['cannotcreatecategory'] = 'The category was not inserted';
|
||||
$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['cannotcreategroup'] = 'Error creating group';
|
||||
$string['cannotcreatelangbase'] = 'Error: Could not create base lang directory';
|
||||
$string['cannotcreatelangdir'] = 'Cannot create lang directory';
|
||||
@@ -199,6 +202,7 @@ $string['ddlunknownerror'] = 'Unknown DDL library error';
|
||||
$string['ddlxmlfileerror'] = 'XML database file errors found';
|
||||
$string['destinationcmnotexit'] = 'The destination course module does not exist';
|
||||
$string['detectedbrokenplugin'] = 'Plugin "{$a}" is defective or outdated, can not continue, sorry.';
|
||||
$string['dmlexceptiononinstall'] = '<p>A database error has occurred [{$a->errorcode}].<br />{$a->debuginfo}</p>';
|
||||
$string['dmlreadexception'] = 'Error reading from database';
|
||||
$string['dmltransactionexception'] = 'Database transaction error';
|
||||
$string['dmlwriteexception'] = 'Error writing to database';
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ $string['allmine'] = 'All messages to me or from me';
|
||||
$string['allstudents'] = 'All messages between students in course';
|
||||
$string['allusers'] = 'All messages from all users';
|
||||
$string['backupmessageshelp'] = 'If enabled, then instant messages will be included in SITE automated backups';
|
||||
$string['beepnewmessage'] = 'Beep on new message';
|
||||
$string['beepnewmessage'] = 'Beep when popup notification is displayed';
|
||||
$string['blockcontact'] = 'Block contact';
|
||||
$string['blockedmessages'] = '{$a} message(s) to/from blocked users';
|
||||
$string['blockedusers'] = 'Blocked users ({$a})';
|
||||
|
||||
+2
-2
@@ -213,8 +213,8 @@ $string['serviceswesubscribeto'] = 'Services on {$a} that we subscribe to.';
|
||||
$string['settings'] = 'Settings';
|
||||
$string['showlocal'] = 'Show local users';
|
||||
$string['showremote'] = 'Show remote users';
|
||||
$string['ssl_acl_allow'] = 'SSO ACL: Allow user {$a->user} from {$a->host}';
|
||||
$string['ssl_acl_deny'] = 'SSO ACL: Deny user {$a->user} from {$a->host}';
|
||||
$string['ssl_acl_allow'] = 'SSO ACL: Allow user \'{$a->user}\' from \'{$a->host}\'';
|
||||
$string['ssl_acl_deny'] = 'SSO ACL: Deny user \'{$a->user}\' from \'{$a->host}\'';
|
||||
$string['ssoaccesscontrol'] = 'SSO access control';
|
||||
$string['ssoacldescr'] = 'Use this page to grant/deny access to specific users from remote MNet hosts. This is functional when you are offering SSO services to remote users. To control your <em>local</em> users\' ability to roam to other MNet hosts, use the roles system to grant them the <em>mnetlogintoremote</em> capability.';
|
||||
$string['ssoaclneeds'] = 'For this functionality to work, you must have Networking on, plus the MNet authentication plugin enabled.';
|
||||
|
||||
@@ -5270,6 +5270,10 @@ abstract class context extends stdClass implements IteratorAggregate {
|
||||
public function delete() {
|
||||
global $DB;
|
||||
|
||||
if ($this->_contextlevel <= CONTEXT_SYSTEM) {
|
||||
throw new coding_exception('Cannot delete system context');
|
||||
}
|
||||
|
||||
// double check the context still exists
|
||||
if (!$DB->record_exists('context', array('id'=>$this->_id))) {
|
||||
context::cache_remove($this);
|
||||
@@ -5365,6 +5369,11 @@ abstract class context extends stdClass implements IteratorAggregate {
|
||||
public function get_child_contexts() {
|
||||
global $DB;
|
||||
|
||||
if (empty($this->_path) or empty($this->_depth)) {
|
||||
debugging('Can not find child contexts of context '.$this->_id.' try rebuilding of context paths');
|
||||
return array();
|
||||
}
|
||||
|
||||
$sql = "SELECT ctx.*
|
||||
FROM {context} ctx
|
||||
WHERE ctx.path LIKE ?";
|
||||
@@ -6337,6 +6346,11 @@ class context_coursecat extends context {
|
||||
public function get_child_contexts() {
|
||||
global $DB;
|
||||
|
||||
if (empty($this->_path) or empty($this->_depth)) {
|
||||
debugging('Can not find child contexts of context '.$this->_id.' try rebuilding of context paths');
|
||||
return array();
|
||||
}
|
||||
|
||||
$sql = "SELECT ctx.*
|
||||
FROM {context} ctx
|
||||
WHERE ctx.path LIKE ? AND (ctx.depth = ? OR ctx.contextlevel = ?)";
|
||||
|
||||
+30
-3
@@ -1552,7 +1552,20 @@ abstract class admin_setting {
|
||||
rebuild_course_cache(0, true);
|
||||
}
|
||||
|
||||
// log change
|
||||
$this->add_to_config_log($name, $oldvalue, $value);
|
||||
|
||||
return true; // BC only
|
||||
}
|
||||
|
||||
/**
|
||||
* Log config changes if necessary.
|
||||
* @param string $name
|
||||
* @param string $oldvalue
|
||||
* @param string $value
|
||||
*/
|
||||
protected function add_to_config_log($name, $oldvalue, $value) {
|
||||
global $DB, $USER;
|
||||
|
||||
$log = new stdClass();
|
||||
$log->userid = during_initial_install() ? 0 :$USER->id; // 0 as user id during install
|
||||
$log->timemodified = time();
|
||||
@@ -1561,8 +1574,6 @@ abstract class admin_setting {
|
||||
$log->value = $value;
|
||||
$log->oldvalue = $oldvalue;
|
||||
$DB->insert_record('config_log', $log);
|
||||
|
||||
return true; // BC only
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1919,6 +1930,22 @@ class admin_setting_configpasswordunmask extends admin_setting_configtext {
|
||||
parent::__construct($name, $visiblename, $description, $defaultsetting, PARAM_RAW, 30);
|
||||
}
|
||||
|
||||
/**
|
||||
* Log config changes if necessary.
|
||||
* @param string $name
|
||||
* @param string $oldvalue
|
||||
* @param string $value
|
||||
*/
|
||||
protected function add_to_config_log($name, $oldvalue, $value) {
|
||||
if ($value !== '') {
|
||||
$value = '********';
|
||||
}
|
||||
if ($oldvalue !== '' and $oldvalue !== null) {
|
||||
$oldvalue = '********';
|
||||
}
|
||||
parent::add_to_config_log($name, $oldvalue, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns XHTML for the field
|
||||
* Writes Javascript into the HTML below right before the last div
|
||||
|
||||
@@ -169,11 +169,6 @@
|
||||
die("Illegal path http:// or ftp://");
|
||||
}
|
||||
|
||||
|
||||
// Initialize random number generator for randomizing cache flushes
|
||||
// -- note Since PHP 4.2.0, the seed becomes optional and defaults to a random value if omitted.
|
||||
srand(((double)microtime())*1000000);
|
||||
|
||||
/**
|
||||
* ADODB version as a string.
|
||||
*/
|
||||
|
||||
@@ -19,6 +19,6 @@ Added:
|
||||
* readme_moodle.txt - this file ;-)
|
||||
|
||||
Our changes:
|
||||
* none
|
||||
* Removed random seed initialization from lib/adodb/adodb.inc.php:172
|
||||
|
||||
skodak, iarenaza, moodler, stronk7
|
||||
|
||||
@@ -80,3 +80,40 @@ function ajaxenabled(array $browsers = null) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts capturing output whilst processing an AJAX request.
|
||||
*
|
||||
* This should be used in combination with ajax_check_captured_output to
|
||||
* report any captured output to the user.
|
||||
*
|
||||
* @retrun Boolean Returns true on success or false on failure.
|
||||
*/
|
||||
function ajax_capture_output() {
|
||||
// Start capturing output in case of broken plugins.
|
||||
return ob_start();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check captured output for content. If the site has a debug level of
|
||||
* debugdeveloper set, and the content is non-empty, then throw a coding
|
||||
* exception which can be captured by the Y.IO request and displayed to the
|
||||
* user.
|
||||
*
|
||||
* @return Any output that was captured.
|
||||
*/
|
||||
function ajax_check_captured_output() {
|
||||
global $CFG;
|
||||
|
||||
// Retrieve the output - there should be none.
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
if ($CFG->debug == DEBUG_DEVELOPER && !empty($output)) {
|
||||
// Only throw an error if the site is in debugdeveloper.
|
||||
throw new coding_exception('Unexpected output whilst processing AJAX request. ' .
|
||||
'This could be caused by trailing whitespace. Output received: ' .
|
||||
var_export($output, true));
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
@@ -1195,9 +1195,12 @@ class completion_info {
|
||||
* @return int Completion state e.g. COMPLETION_INCOMPLETE
|
||||
*/
|
||||
public static function internal_get_grade_state($item, $grade) {
|
||||
if (!$grade) {
|
||||
// If no grade is supplied or the grade doesn't have an actual value, then
|
||||
// this is not complete.
|
||||
if (!$grade || (is_null($grade->finalgrade) && is_null($grade->rawgrade))) {
|
||||
return COMPLETION_INCOMPLETE;
|
||||
}
|
||||
|
||||
// Conditions to show pass/fail:
|
||||
// a) Grade has pass mark (default is 0.00000 which is boolean true so be careful)
|
||||
// b) Grade is visible (neither hidden nor hidden-until)
|
||||
|
||||
@@ -67,7 +67,6 @@ function cron_run() {
|
||||
// Run cleanup core cron jobs, but not every time since they aren't too important.
|
||||
// These don't have a timer to reduce load, so we'll use a random number
|
||||
// to randomly choose the percentage of times we should run these jobs.
|
||||
srand ((double) microtime() * 10000000);
|
||||
$random100 = rand(0,100);
|
||||
if ($random100 < 20) { // Approximately 20% of the time.
|
||||
mtrace("Running clean-up tasks...");
|
||||
|
||||
@@ -15,15 +15,16 @@
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* This is a one-line short description of the file
|
||||
* This is a place to put custom environment checks, if there is not a better place.
|
||||
*
|
||||
* This library contains a collection of functions able to perform
|
||||
* some custom checks executed by environmental tests (automatically
|
||||
* executed on install & upgrade and under petition in the admin block).
|
||||
*
|
||||
* Any function in this library must return:
|
||||
* Any function in this library gets a environment_results object passed in.
|
||||
* It must return:
|
||||
* - null: if the test isn't relevant and must not be showed (ignored)
|
||||
* - environment_results object with the status set to:
|
||||
* - the environment_results object that was passed in, with the status set to:
|
||||
* - true: if passed
|
||||
* - false: if failed
|
||||
*
|
||||
|
||||
+62
-5
@@ -1293,13 +1293,13 @@ function xmldb_main_upgrade($oldversion) {
|
||||
}
|
||||
|
||||
if ($oldversion < 2012103003.00) {
|
||||
// Fix uuid field in event table to match RFC-2445 UID property
|
||||
// Fix uuid field in event table to match RFC-2445 UID property.
|
||||
$table = new xmldb_table('event');
|
||||
$field = new xmldb_field('uuid', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, 'visible');
|
||||
if ($dbman->field_exists($table, $field)) {
|
||||
// Changing precision of field uuid on table event to (255)
|
||||
$dbman->change_field_precision($table, $field);
|
||||
}
|
||||
// The column already exists, so make sure there are no nulls (crazy mysql).
|
||||
$DB->set_field_select('event', 'uuid', $DB->sql_empty(), "uuid IS NULL");
|
||||
// Changing precision of field uuid on table event to (255).
|
||||
$dbman->change_field_precision($table, $field);
|
||||
// Main savepoint reached
|
||||
upgrade_main_savepoint(true, 2012103003.00);
|
||||
}
|
||||
@@ -1849,5 +1849,62 @@ function xmldb_main_upgrade($oldversion) {
|
||||
upgrade_main_savepoint(true, 2012120306.09);
|
||||
}
|
||||
|
||||
if ($oldversion < 2012120307.02) {
|
||||
|
||||
// Delete notes of deleted courses.
|
||||
$sql = "DELETE FROM {post}
|
||||
WHERE NOT EXISTS (SELECT {course}.id FROM {course}
|
||||
WHERE {course}.id = {post}.courseid)
|
||||
AND {post}.module = ?";
|
||||
$DB->execute($sql, array('notes'));
|
||||
|
||||
// Main savepoint reached.
|
||||
upgrade_main_savepoint(true, 2012120307.02);
|
||||
}
|
||||
|
||||
if ($oldversion < 2012120307.09) {
|
||||
// Purge stored passwords from config_log table, ideally this should be in each plugin
|
||||
// but that would complicate backporting...
|
||||
$items = array(
|
||||
'core/cronremotepassword', 'core/proxypassword', 'core/smtppass', 'core/jabberpassword',
|
||||
'enrol_database/dbpass', 'enrol_ldap/bind_pw', 'url/secretphrase');
|
||||
foreach ($items as $item) {
|
||||
list($plugin, $name) = explode('/', $item);
|
||||
$sqlcomparevalue = $DB->sql_compare_text('value');
|
||||
$sqlcompareoldvalue = $DB->sql_compare_text('oldvalue');
|
||||
$sqlempty = $DB->sql_empty();
|
||||
|
||||
if ($plugin === 'core') {
|
||||
$sql = "UPDATE {config_log}
|
||||
SET value = :value
|
||||
WHERE name = :name AND plugin IS NULL AND $sqlcomparevalue <> :empty";
|
||||
$params = array('value' => '********', 'name' => $name, 'empty' => $sqlempty);
|
||||
$DB->execute($sql, $params);
|
||||
|
||||
$sql = "UPDATE {config_log}
|
||||
SET oldvalue = :value
|
||||
WHERE name = :name AND plugin IS NULL AND $sqlcompareoldvalue <> :empty";
|
||||
$params = array('value' => '********', 'name' => $name, 'empty' => $sqlempty);
|
||||
$DB->execute($sql, $params);
|
||||
|
||||
} else {
|
||||
$sql = "UPDATE {config_log}
|
||||
SET value = :value
|
||||
WHERE name = :name AND plugin = :plugin AND $sqlcomparevalue <> :empty";
|
||||
$params = array('value' => '********', 'name' => $name, 'plugin' => $plugin, 'empty' => $sqlempty);
|
||||
$DB->execute($sql, $params);
|
||||
|
||||
$sql = "UPDATE {config_log}
|
||||
SET oldvalue = :value
|
||||
WHERE name = :name AND plugin = :plugin AND $sqlcompareoldvalue <> :empty";
|
||||
$params = array('value' => '********', 'name' => $name, 'plugin' => $plugin, 'empty' => $sqlempty);
|
||||
$DB->execute($sql, $params);
|
||||
}
|
||||
}
|
||||
// Main savepoint reached.
|
||||
upgrade_main_savepoint(true, 2012120307.09);
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user