Jelly-MPTT
Вторник, 4 мая 2010 г.Рубрика: Web frameworks
Метки: Kohana | плагин
Просмотров: 1525
Подписаться на комментарии по RSS
Попытался портировать 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.
Комментариев: 9
Есть ошибка, которая заключается в невозможности заблокировать на запись таблицы, если у таблиц есть перфиксы.
спасибо, попытаюсь воспроизвести и пофиксить
а можно подробнее про баг, как задавались префиксы и что пишет система?
Префиксы задавались в конфиге БД. И, собственно, все проблемы вылазят там, где запросы проходят напрямую, т.е. через 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
Думаю, что часть оставшихся методов тоже пришлось бы переопределять, будь в них необходимость.
В с Jelly_MPTT::move и некоторыми другими - наверное можно использовать нативные методы Jelly для работы с БД - Jelly::select, Jelly::update, отказавшись от DB::instance()->query(), который некорректно обрабатывает заданные в конфигурации БД префиксы (т.к. имена таблиц у него задаются вручную в каждом запросе.).
У меня сейчас туго с количеством времени - иначе бы предложил патч.
понял, спасибо
времени тож немного, но постараюсь выправить поскорее
Пофиксил баг (http://github.com/AlexKupreev/jelly-mptt/commit/c47becc61c28a5b9be6f43d3d3ee4388044ce74f). Пока что обошелся простым добавлением префикса, где это было необходимо по коду. Дальше буду думать, как сделать красивее.
Спасибо Вам за проделанную работу
Спасибо за отзыв. Жаль, нету времени на совершенствование кода :(