Jelly-MPTT

Вторник, 4 мая 2010 г.
Рубрика: Web frameworks
Метки: |
Просмотров: 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. 


Github Jelly-MPTT repo

Discuss on Jelly Forum

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 9

  1. Есть ошибка, которая заключается в невозможности заблокировать на запись таблицы, если у таблиц есть перфиксы.

  2. 2010-05-13 в 10:00:57 | Александр Купреев

    спасибо, попытаюсь воспроизвести и пофиксить

  3. 2010-05-19 в 12:58:57 | Александр Купреев

    а можно подробнее про баг, как задавались префиксы и что пишет система?

  4. Префиксы задавались в конфиге БД. И, собственно, все проблемы вылазят там, где запросы проходят напрямую, т.е. через 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. В с Jelly_MPTT::move и некоторыми другими - наверное можно использовать нативные методы Jelly для работы с БД - Jelly::select, Jelly::update, отказавшись от DB::instance()->query(), который некорректно обрабатывает заданные в конфигурации БД префиксы (т.к. имена таблиц у него задаются вручную в каждом запросе.).

    У меня сейчас туго с количеством времени - иначе бы предложил патч.

  6. 2010-05-19 в 23:19:40 | Александр Купреев

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

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

  7. 2010-05-20 в 16:11:21 | Александр Купреев

    Пофиксил баг (http://github.com/AlexKupreev/jelly-mptt/commit/c47becc61c28a5b9be6f43d3d3ee4388044ce74f). Пока что обошелся простым добавлением префикса, где это было необходимо по коду. Дальше буду думать, как сделать красивее.

  8. Спасибо Вам за проделанную работу

  9. 2010-07-14 в 16:59:48 | Александр Купреев

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

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

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

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

Авторизация: MaxSiteAuth. Войти через loginza

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