Замечания block_formal_langs

Issue #254 closed
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 254

DDL sql execution error

More information about this error

Debug info: Unknown column 'lexemname' in 'mdl_block_formal_langs'
ALTER TABLE mdl_block_formal_langs ADD author BIGINT(10) NOT NULL DEFAULT 0 AFTER lexemname

Error code: ddlexecuteerror
Stack trace:
line 447 of \lib\dml\moodle_database.php: ddl_change_structure_exception thrown
line 833 of \lib\dml\mysqli_native_moodle_database.php: call to moodle_database->query_end()
line 88 of \lib\ddl\database_manager.php: call to mysqli_native_moodle_database->change_database_structure()
line 77 of \lib\ddl\database_manager.php: call to database_manager->execute_sql()
line 538 of \lib\ddl\database_manager.php: call to database_manager->execute_sql_arr()
line 102 of \blocks\formal_langs\db\upgrade.php: call to database_manager->add_field()
line 861 of \lib\upgradelib.php: call to xmldb_block_formal_langs_upgrade()
line 397 of \lib\upgradelib.php: call to upgrade_plugins_blocks()
line 1580 of \lib\upgradelib.php: call to upgrade_plugins()
line 422 of \admin\index.php: call to upgrade_noncore()

Reported by oasychev on 2013-12-27 00:18:15

Comments (17)

  1. Former user Account Deleted
    Вытолкнул изменения, которые должны исправить ситуацию.
    

    Reported by mamontov.dp on 2013-12-27 19:09:48 - Status changed: Fixed

  2. Oleg Sychev reporter
    1. Насчет ситуации с полем - надо проверить, как в загруженном на мудль официальном
    релизе. Если у вас возникла ситуация, когда update мог примениться не у всех, перед
    переименованием поля надо проверить на if его существование в "плохом" варианте, чтобы
    апгрейд не вылетел у тех, у кого нормально.
    
    2. Надпись Inherited должна не только исчезать, но и появляться. Может быть заменить
    ее на Global/Local? (или Course вместо Local, Site вместо Global)
    
    3. Названия глобальных настроек надо разбить на две строки. В админском дереве (где
    ссылки) просто оставить "Formal languages block" - как все остальные блоки, название
    блоков - настройки этого блока. А на самой странице сделать вверху надпись (заголовок)
    типа "Site language visibility" или "Global language visibility"
    

    Reported by oasychev on 2013-12-27 19:30:32 - Status changed: InProgress

  3. Oleg Sychev reporter
    4. Описать на вики значение надписей типа Inherited (или заменяющей ее, если предложение
    в пункте 2 больше понравится) и обновить скриншоты...
    

    Reported by oasychev on 2013-12-27 19:35:00

  4. Former user Account Deleted
    1. Именно так сейчас и работает исправление. Перед тем, как обновиться до последней
    версии оно проверяется на существование.
    
    2. Можно (Local/Global лучше - вдруг кто-то захочет крепить не только к курсам, может
    сделаем так?)
    

    Reported by mamontov.dp on 2013-12-27 19:35:52

  5. Oleg Sychev reporter
    1 - а, вижу, согласен
    2 - ну мне кажется если появится третий уровень, то как раз конкретные названия уровней
    будут лучше (Site/Category/Course) - а Global/Local хорошо при двух уровнях только.
    Но пока у нас 2 уровня любой вариант сойдет...
    
    5. Надо только быть уверенным в том, что 
    а) при редактировании вопроса контекст - это всегда контекст курса (лучше было бы делать
    контекст из $COURSE 
    б) что функция available_langs имеет значение по умолчанию по контексту для совместимости
    со старым кодом, в этом случае используются глобальные установки....
    

    Reported by oasychev on 2013-12-27 19:42:42

  6. Former user Account Deleted
    5. Хорошо, буду брать из $COURSE. Значение по умолчанию есть - в коде прописаны глобальные
    настройки.
    

    Reported by mamontov.dp on 2013-12-27 19:45:15

  7. Former user Account Deleted
    2. Хорощо, будем писать Site/Course.
    

    Reported by mamontov.dp on 2013-12-27 19:45:47

  8. Former user Account Deleted
    Пункт 5 исправлен.
    

    Reported by mamontov.dp on 2013-12-27 19:59:18

  9. Former user Account Deleted
    Пункт 3 исправлен.
    

    Reported by mamontov.dp on 2013-12-27 20:15:03

  10. Former user Account Deleted
    Поправил все остальное.
    

    Reported by mamontov.dp on 2013-12-28 06:17:22 - Status changed: Fixed

  11. Oleg Sychev reporter
    Для получения контекста курса есть функция context_course::instance которой достаточно
    передать id курса, а не лезть в БД....
    

    Reported by oasychev on 2013-12-30 14:07:20 - Status changed: InProgress

  12. Oleg Sychev reporter
    Я вот посмотрел на функцию available_langs - может ей выгоднее получить объект контекста,
    чем id? Так код может оказаться короче - и в самой функции, и при ее вызове. Или нет?
    

    Reported by oasychev on 2013-12-30 20:20:52

  13. Former user Account Deleted
    Там уберется только одна строка, увы.
    

    Reported by mamontov.dp on 2013-12-31 07:12:58

  14. Oleg Sychev reporter
    Больше если я правильно понимаю - уберутся строки и при вызове (который будет сдублирован
    в preg'е) и внутри функции. А то получается что мы при вызове берем объект, находим
    его id - передаем в функцию, после чего функция из id опять делает объект чтобы найти
    все родительские контексты...
    

    Reported by oasychev on 2013-12-31 13:59:17

  15. Oleg Sychev reporter
    Я правильно понимаю, что тут закончено?
    

    Reported by oasychev on 2014-01-17 15:24:25 - Status changed: Fixed

  16. Log in to comment