Ошибка плагина Exabis portfolio

Ошибка плагина Exabis portfolio

by Артур Аитбаев -
Number of replies: 8

Здравствуйте! Возникла проблема, при добавлении файла в портфолио у всех пользователей возникает такая ошибка:

Debug info: ОШИБКА: колонка "user" не существует
LINE 1: ...OM mdl_files WHERE contextid = $1 AND component = "user" AND...
^
SELECT SUM(filesize) AS allfilesize FROM mdl_files WHERE contextid = $1 AND component = "user" AND filearea="draft" AND itemid = $2
[array (
0 => 9004,
1 => 519437951,
)]
Error code: dmlreadexception
Stack trace:
  • line 443 of /lib/dml/moodle_database.php: dml_read_exception thrown
  • line 244 of /lib/dml/pgsql_native_moodle_database.php: call to moodle_database->query_end()
  • line 764 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->query_end()
  • line 1478 of /lib/dml/moodle_database.php: call to pgsql_native_moodle_database->get_records_sql()
  • line 1101 of /blocks/exaport/lib/lib.php: call to moodle_database->get_record_sql()
  • line 423 of /blocks/exaport/item.php: call to block_exaport_get_filesize_by_draftid()
  • line 208 of /blocks/exaport/item.php: call to block_exaport_do_add()
Может быть кто сталкивался? 
Sum of ratings: -
In reply to Артур Аитбаев

Re: Ошибка плагина Exabis portfolio

by Vadim Tabunshchik -
Picture of Developers

Проверил, версия 4.3 block_exaport в Мудл 2.9 работает без ошибок.

НО: у меня MySQL, а у вас - postgresql. Поэтому я бы копал в сторону соответствия синтаксиса запроса "SELECT SUM(filesize) AS allfilesize FROM…" правилам написания запросов в postgresql.

Такое ощущение, что сервер БД воспринимает "user" как имя столбца, а не значение поля в столбце "component", отсюда "ОШИБКА: колонка "user" не существует".

Но это сугубо ИМХО

ЗЫ: если не изменяет иамять, то по правилам postgresql названия столбцов тоже нужно брать в кавычки. Вообще-то, лучше "покурить мануалы" smile

In reply to Vadim Tabunshchik

Re: Ошибка плагина Exabis portfolio

by Артур Аитбаев -
Спасибо. Попробовал установить версию ниже 4.2, проблема ушла, но появилась новая(  При нажатие на "Экспорт портфолио" все пропадает остается белый экран. Не сталкивались?
In reply to Артур Аитбаев

Re: Ошибка плагина Exabis portfolio

by Vadim Tabunshchik -
Picture of Developers
все пропадает остается белый экран

В админке moodle включите отладку на "Разработчик", чтобы видеть, где ошибка. Результат - сюда, будем посмотреть.

In reply to Vadim Tabunshchik

Re: Ошибка плагина Exabis portfolio

by Артур Аитбаев -

При отладке разработчик не выводит ошибок, экран так же белый.

In reply to Артур Аитбаев

Re: Ошибка плагина Exabis portfolio

by Vadim Tabunshchik -
Picture of Developers

Посмотрите в логах веб-сервера, РНР, может там что-то будет. Белая страница - критическая ошибка в скрипте РНР

In reply to Артур Аитбаев

Re: Ошибка плагина Exabis portfolio

by Vadim Tabunshchik -
Picture of Developers

Артур, поставьте последнюю версию 4.3 и замените файл /blocks/exaport/lib/lib.php прикрепленным к этому сообщению.

Вся проблема в неправильном использовании разработчиком плагина одинарных и двойных кавычек в SQL-запросах в РНР-скриптах, например:

$result = $DB->get_record_sql('SELECT MAX(filesize) AS maxfilesize FROM {files} WHERE contextid = ? AND component ="user" AND filearea="draft" AND itemid = ?' ...

Такое работает в MySQL, но не работает в postgresql. А вот такое работает и там, и там:

$result = $DB->get_record_sql("SELECT MAX(filesize) AS maxfilesize FROM {files} WHERE contextid = ? AND component = 'user' AND filearea='draft' AND itemid = ?" ...

Разницу видите?

Тестировал в Ubuntu 14.04.03+Apache2.4.7+PHP Version 5.5.9-1+PostgreSQL 9.3 (и MySQL 5.5.44)

In reply to Vadim Tabunshchik

Re: Ошибка плагина Exabis portfolio

by Артур Аитбаев -
Здравствуйте Вадим. Сделал все как вы сказали и заработало, спасибо Вам. В процессе тестирования этого плагина возникло еще пару вопросов. 

1.  Когда я на своем портфолио ставлю общий доступ и захожу с другого пользователя, то при попытке открыть файл, ссылку или примечание разрешенного для просмотра портфолио выдает ошибку   "Обнаружена ошибка кодирования, она должна быть исправлена программистом: print_header() can not be used any more. Please use $PAGE methods instead."

Debug info: 
Error code: codingerror
Stack trace:
  • line 1143 of /lib/deprecatedlib.php: coding_exception thrown
  • line 107 of /blocks/exaport/shared_item.php: call to print_header()
Что снова не хватает?

2. После импорта полость заполненного портфолио другого пользователя пустыми оказались раздел резюме и виды (представления), импортировались личная информация и категории со всеми вложениями. Тут ошибка или так должно быть?


In reply to Артур Аитбаев

Re: Ошибка плагина Exabis portfolio

by Vadim Tabunshchik -
Picture of Developers

Артур, я не работаю с этим плагином и в планах не предвидится, тормошите разработчика.

Ошибка кодирования говорит о том, что в плагине используется устаревшая функция print_header, в версии 2.9 она запрещена, вместо неё нужно использовать $PAGE->set_heading

Тут ошибка или так должно быть?

Не могу сказать, к сожалению. См. первое предложение.