Попытался портировать Modified Preorder Tree Traversal со Sprig-MPTT на Jelly (для Kohana 3). Вещь нужная, т.к. деревья встречаются часто, и с ними надо работать. Сильно помогло наличие юнит-тестов, правда, пришлось переделать их под PHPUnit. Буду благодарен за критические отзывы и сообщения об ошибках. На гитхабе это мой первый репозиторий, поэтому могут быть косяки.
+++++++
I tried to port Paul Banks' Sprig-MPTT for Jelly Kohana 3 extension. I have little experience with Jelly (and unit tests helped me very much to do this work) so any feedback especially bugs and coding principles will be highly appreciated. I'm a novice on github so pardon my git issues.
Comments: 9 RSS
1 Pendalff 12-05-2010 23:58
Есть ошибка, которая заключается в невозможности заблокировать на запись таблицы, если у таблиц есть перфиксы.
2 Александр Купреев 13-05-2010 10:00
спасибо, попытаюсь воспроизвести и пофиксить
3 Александр Купреев 19-05-2010 12:58
а можно подробнее про баг, как задавались префиксы и что пишет система?
4 Pendalff 19-05-2010 23:05
Префиксы задавались в конфиге БД. И, собственно, все проблемы вылазят там, где запросы проходят напрямую, т.е. через Database::instance($this->db)->query( ..EXPR.. ). Ругается на неверные запросы к бд. Я в своих моделях некоторые методы просто переопределил и ввел в модель свойство tbl_prefix и tbl_name. tbl_name задал в конструкторе как конкатенацию tbl_prefix и table - и во всех переопределенных методах использовал именно его для прямых запросов к БД. До какой то степени это работает в моем случае - но я не испольую и половины методов Jelly_MPTT.
Методы, которые в моем случае пришлось переопределить:
1. move
2. lock
3. unlock
4. verify_scope
5. get_scopes
Думаю, что часть оставшихся методов тоже пришлось бы переопределять, будь в них необходимость.
5 Pendalff 19-05-2010 23:16
В с Jelly_MPTT::move и некоторыми другими - наверное можно использовать нативные методы Jelly для работы с БД - Jelly::select, Jelly::update, отказавшись от DB::instance()->query(), который некорректно обрабатывает заданные в конфигурации БД префиксы (т.к. имена таблиц у него задаются вручную в каждом запросе.).
У меня сейчас туго с количеством времени - иначе бы предложил патч.
6 Александр Купреев 19-05-2010 23:19
понял, спасибо
времени тож немного, но постараюсь выправить поскорее
7 Александр Купреев 20-05-2010 16:11
Пофиксил баг (http://github.com/AlexKupreev/jelly-mptt/commit/c47becc61c28a5b9be6f43d3d3ee4388044ce74f). Пока что обошелся простым добавлением префикса, где это было необходимо по коду. Дальше буду думать, как сделать красивее.
8 Sartor 14-07-2010 15:13
Спасибо Вам за проделанную работу
9 Александр Купреев 14-07-2010 16:59
Спасибо за отзыв. Жаль, нету времени на совершенствование кода :(