Ошибка при попытке вернуть страницу личного кабинета по умолчанию

Ошибка при попытке вернуть страницу личного кабинета по умолчанию

от Владимир Филиппов -
Количество ответов: 4
Здравствуйте! При нажатии на кнопку "Вернуть страницу по умолчанию" в режим редактирования блоков в личном кабинете возникает ошибка во всплывающем окне "Обнаружено неверное значение параметра", а на самой странице "Исключение - Call to a member function instance_copy() on bool".
Эта функция вызывается в /my/lib.php:

foreach ($blockinstances as $instance) {

        $originalid = $instance->id;

        unset($instance->id);

        $instance->parentcontextid = $usercontext->id;

        $instance->subpagepattern = $page->id;

        $instance->timecreated = time();

        $instance->timemodified = $instance->timecreated;

        $instance->id = $DB->insert_record('block_instances', $instance);

        $newblockinstanceids[$originalid] = $instance->id;

        $blockcontext = context_block::instance($instance->id);  // Just creates the context record

        $block = block_instance($instance->blockname, $instance);


        if (!$block->instance_copy($originalid)) {

            debugging("Unable to copy block-specific data for original block instance: $originalid to new block instance: $instance->id", DEBUG_DEVELOPER);

        }

    }

Как это исправить?

В ответ на Владимир Филиппов

Re: Ошибка при попытке вернуть страницу личного кабинета по умолчанию

от Vadim Tabunshchik -
Изображение пользователя Developers
Просмотр (правка - тем более) исходного кода вам ничего не даст.
Нужно искать неверные (недостающие) записи в базе данных, в ней что-то сломалось в размещении блоков по умолчанию и контекстом для этих блоков.
В ответ на Vadim Tabunshchik

Re: Ошибка при попытке вернуть страницу личного кабинета по умолчанию

от Владимир Филиппов -
А где и что именно смотреть в базе данных? В каких таблицах?
В ответ на Владимир Филиппов

Re: Ошибка при попытке вернуть страницу личного кабинета по умолчанию

от Vadim Tabunshchik -
Изображение пользователя Developers
Изучать нужно в основном 2 таблицы: mdl_block_instances и mdl_block_positions
Что искать - вам виднее, ошибка же у вас улыбаюсь
Попробуйте включить отладку на «Разработчик» с выводом ошибок на страницу, может будет видно, какие идентификаторы не найдены (неверные), дальше уже нужно будет «плясать» от них.
Удалить совсем все блки в личном кабинете не пробовали? Добавить/удалить другие блоки и после этого сбросить настройки?
Структуру БД (admin/cli/check_database_schema.php) не проверяли?
В ответ на Vadim Tabunshchik

Re: Ошибка при попытке вернуть страницу личного кабинета по умолчанию

от Владимир Филиппов -
В режиме отладки не показывает, какие идентификаторы не найдены.
При удалении всех блоков, кроме настроек (этот блок не удалаяется), ошибка та же.
Структуру БД проверил, ошибок в mdl_block_instances и mdl_block_positions не найдено.