Jelly-MPTT

Просмотров: 4059Комментарии: 9
Web frameworks

Попытался портировать 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. 


Github Jelly-MPTT repo

Discuss on Jelly Forum

Комментариев: 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

понял, спасибо

времени тож немного, но постараюсь выправить поскорее smile

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

Спасибо за отзыв. Жаль, нету времени на совершенствование кода :(

Оставьте комментарий!


Используйте нормальные имена.

     

  

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

MaxSiteAuth. Войти через loginza

(обязательно)