Jelly-MPTT

Рубрика: Web frameworks
Метки: |
Вторник, 4 мая 2010 г.
Просмотров: 453
Подписаться на комментарии по 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 Google Buzz google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru]]>

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

  1. 2010-05-12 в 23:58:21 | Pendalff
    ]]>]]>

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

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

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

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

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

  4. 2010-05-19 в 23:05:15 | Pendalff
    ]]>]]>

    Префиксы задавались в конфиге БД. И, собственно, все проблемы вылазят там, где запросы проходят напрямую, т.е. через 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. 2010-05-19 в 23:16:52 | Pendalff
    ]]>]]>

    В с 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. 2010-07-14 в 15:13:52 | Sartor (анонимно)

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

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

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

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

Не регистрировать/аноним

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

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



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