Filepicker элемента формы и файловый менеджер не отображаются с помощью $ mform- & gt; addElement (‘filepicker’ ….) Код ошибки: noguest

Я пытаюсь добавить вход файла загрузки в форме регистрации в Moodle v3
Используя $mform->addElement('filepicker' .... ) в moodle/login/signup_form.php

Но я получаю эту ошибку:
Error code: noguest

Stack trace:

line 488 of /lib/setuplib.php: moodle_exception thrown
line 348 of /lib/filelib.php: call to print_error()
line 131 of /lib/form/filepicker.php: call to file_get_unused_draft_itemid()
line 189 of /lib/pear/HTML/QuickForm/Renderer/Tableless.php: call to MoodleQuickForm_filepicker->toHtml()
line 2806 of /lib/formslib.php: call to HTML_QuickForm_Renderer_Tableless->renderElement()
line 408 of /lib/pear/HTML/QuickForm/element.php: call to MoodleQuickForm_Renderer->renderElement()
line 1639 of /lib/pear/HTML/QuickForm.php: call to HTML_QuickForm_element->accept()
line 1714 of /lib/formslib.php: call to HTML_QuickForm->accept()
line 1682 of /lib/pear/HTML/QuickForm.php: call to MoodleQuickForm->accept()
line 442 of /lib/pear/HTML/Common.php: call to HTML_QuickForm->toHtml()
line 204 of /lib/pear/HTML/QuickForm/DHTMLRulesTableless.php: call to HTML_Common->display()
line 933 of /lib/formslib.php: call to HTML_QuickForm_DHTMLRulesTableless->display()
line 117 of /login/signup.php: call to moodleform->display()

Поэтому я думаю, что это означает, что гостевой пользователь не имеет права использовать filepicker
Так как же это исправить?

1

Решение

В Moodle гости и не вошедшие в систему пользователи не могут загружать что-либо.

Если вы хотите добавить средство выбора файлов в форму регистрации, вам нужно изменить следующий код.

1./lib/filelib.php (отредактируйте следующую функцию)

     function file_get_unused_draft_itemid() {
if (isguestuser() or !isloggedin()) {
//  print_error('noguest');
}
}

в коротком комментарии строка «print_error (‘noguest’)».

  1. /lib/dml/moodle_database.php (отредактируйте следующую функцию)

     public function get_record_select($table, $select, array   $params=null,$fields='*',$strictness=IGNORE_MISSING){
    if ($select) {
    $select = "WHERE $select";
    }
    try {
    return $this->get_record_sql("SELECT $fields FROM {" . $table . "} $select", $params, $strictness);
    } catch (dml_missing_record_exception $e) {
    if (!isloggedin()){}
    else{
    // create new exception which will contain correct table name
    throw new dml_missing_record_exception($table, $e->sql, $e->params);
    }
    }
    }
    

отредактируйте вышеуказанные коды в соответствующих файлах, вы получите решение.

0

Другие решения

В случае, если кому-то нужен ответ, я наконец-то найду решение.

Но сначала причина, по которой гостевой пользователь не может использовать filepaicker/filemanager заключается в том, что черновые файлы для файловой области хранятся на основе идентификатора пользователя, и гостевые пользователи не должны хранить данные в системе (в противном случае разные люди, вошедшие в систему как «гость», потенциально могут получить доступ к черновым файлам друг друга).

Решение: с помощью $mform->addElement('file' .... ) и использовать RegEx с $mform->addRule() для проверки как следующее:

$mform->addRule('document_1', 'Error (allowed extensions are .jpg, .png and .pdf)', 'filename', 'myregex');
0

По вопросам рекламы [email protected]