Изменить один параметр во многих курсах. Запросом

Изменить один параметр во многих курсах. Запросом

от Alexey Piguzov -
Количество ответов: 6

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

Поясню, создали курс вроде шаблона (в курсе используется несколько элементов БД), расклонировали его много-много раз, а потом оказалось, что размер файла для поля файл указан слишком малым, и нужно его увеличить. Для всех курсов.

У меня есть доступ к базе напрямую, нашел я этот размер, поле param3 таблицы mdl_data_field, но как запрос правильный построить на замену всех значений на другие, не знаю.

Или есть какие-то другие способы?

В ответ на Alexey Piguzov

Re: Изменить один параметр во многих курсах. Запросом

от Vadim Tabunshchik -
Изображение пользователя Developers
таблицы mdl_data_field

Это не из той оперы улыбаюсь почти ©

Указанная таблица - это таблица модуля "База данных".

За размер загружаемого в курс файла отвечает поле maxbytes таблицы mdl_course

Запрос:

UPDATE mdl_course c
SET c.maxbytes = 'число в байтах'
WHERE c.id > '1' -- Для главной страницы менять не будем
В ответ на Vadim Tabunshchik

Re: Изменить один параметр во многих курсах. Запросом

от Alexey Piguzov -

Вадим, спасибо. Но для курса-то как раз размер стоит нужный, и именно в элементах База данных размер нужно поменять. Там используется поле файл, и у него свое ограничение на размер.

В ответ на Alexey Piguzov

Re: Изменить один параметр во многих курсах. Запросом

от Vadim Tabunshchik -
Изображение пользователя Developers
Но для курса-то как раз размер стоит нужный, и именно в элементах База данных размер нужно поменять

Алексей, так и пишите тогда понятно, что нужно изменить размер поля в элементе курса "База данных"

А у вас даже в названии темы - Изменить один параметр во многих курсах. Есть разница?

Запрос аналогичный:

UPDATE mdl_data_fields df
SET df.param3 = 'число в байтах'
WHERE df.type = 'file'

ЗЫ: "число в байтах" должно быть из списка доступных:

$sizelist = array(10240, 51200, 102400, 512000, 1048576, 2097152,
                      5242880, 10485760, 20971520, 52428800, 104857600);
В ответ на Vadim Tabunshchik

Re: Изменить один параметр во многих курсах. Запросом

от Alexey Piguzov -

Спасибо, Вадим. Замечание учту, и так уж думаешь-думаешь как бы по-логичнее тему назвать улыбаюсь

А почему число в байтах нужно именно из этого, массива? И где его подправить, если нет нужного размера?

Если вручную добавить в таблице например, 3145728 в поле param3, то в элементе БД в поле Файл в выпадающем списке появляется 3 Мб.

В ответ на Alexey Piguzov

Re: Изменить один параметр во многих курсах. Запросом

от Vadim Tabunshchik -
Изображение пользователя Developers
А почему число в байтах нужно именно из этого, массива? И где его подправить, если нет нужного размера?

Потому что этот массив используется везде в moodle. Это файл lib/moodlelib.php, function get_max_upload_sizes. Добавьте в $sizelist свое значение, появится в списке.

Если вручную добавить в таблице например, 3145728 в поле param3, то в элементе БД в поле Файл в выпадающем списке появляется 3 Мб.

Потому и появился, что добавили вручную. Измените на любой стандартный, сохраните, зайдите снова в настройки поля и 3 Мб уже не увидите.

В ответ на Alexey Piguzov

Re: Изменить один параметр во многих курсах. Запросом

от Alexey Piguzov -

Итак, итог (спасибо Вадиму). Вдруг кому еще понадобится, да и после обновления сам же искать буду (гит пока не освоил)

Задача: изменить в полях типа файл и/или изображение ресурса База данных максимальный размер файла одним запросом во многих курсах.

Решение:

UPDATE mdl_data_fields df
SET df.param3 = '3145728'
WHERE (df.type = 'picture' AND name = 'Имя поля1') OR (df.type = 'file' AND name = 'Имя поля2')

Если нужно, предварительно добавляем сюда lib/moodlelib.php, function get_max_upload_sizes в $sizelist свое значение, которое появится в списке выбора размера.

3145728 - 3 Мб