Мое Live Street творчество
Еще с начала этого года приглядывался к Live Street (официальный сайт) - Open Source CMS для создания блого-социальных сервисов (на подобие Хабра). Проект очень динамичный и перспективный, но сама система еще в юношеском состоянии
Тем интереснее - больше работы с мозга.
Последний месяц ввиду производственной необходимости познакомился с этим движком намного теснее - разрабатывал три модуля под заказ - “Гараж”, “Объявления”, “JS Loader”. В процессе работы над модулями внес свою лепту в рост проекта и влился в общение разарботчиков на самом livestreet.ru. Написал три статьи с описанием своих хаков и доработок.
Представляю их вам.
Хак: Выполнение PHP кода на статических страницах
Заметка повествует о том, как выполнять PHP код на статических страницах (храня его в базе вместе с текстом). Хак достаточно просто и незамысловатый - достаточно добавить одну функцию в Event, который отвечает за показ страницы пользователю.
P.S. В архитектуре движка LiveStreet: Event - это аналог Action в Zend Framework. А action`ом называется то, что в Zend называется Controller. По началу не привычно было в названиях ориентироваться
Автоматическое составление сложных запросов в mapper`ах
Это статья познавательного характера. Здесь я просто рассказываю как выкрутился из ситуацией с составлением сложных SQL-запросов “на лету”, используя такой механизм библиотеки DbSimple как макроподстановки.
Суть проблемы.
Работая над модулем «Объявления» я столкнулся с необходимостью сделать достаточно сложный запрос к базе данных. Сложный не в плане SQL, а в том, что мы заранее не знаем каким он получиться. Такая ситуация возникла при создании пользовательского фильтра.
Технически задача заключается в следующем — есть три таблицы: объявления, категории объявлений — отсюда мы получаем название категории, пользователи — отсюда мы «дергаем» логин пользователя. Необходимо реализовать выборку по следующим условиям:
— категория или массив категорий (дочерние),
— ID пользователя или логин,
— статус (опубликовано или нет — для администратора),
— актуально объявление или нет,
— минимальная и/или максимальная цена,
— есть привилегии или нет,
Учесть при этом составную сортировку (по одному или двум полям), а также не забывать, что результат фильтрации нужно показывать с разбивкой на страницы. Сложности в это все добавляет то, что логин пользователя тянется из другой таблицы, поэтому необходимо использовать HAVING, а не WHERE.
Решение проблемы: читаем здесь.
Модернизация модуля Message - жизнь после редиректа
Это яркий пример реализации функционала Zend FW в системных возможностях LS.
Описание проблемы.
Создавая новый модуль или экшн, очень часто прибегаю к использованию сообщений Message_AddNotice() и Message_AddError(). Штука очень симпатичная и удобная. Но. Всегда есть одно но. И заключается оно в том, что модуль выводит сообщения только на «текущей» странице. Если же где-то в экшене выполняется редирект, то наше сообщение теряется.
Почему это неудобно? Давайте посмотрим конкретный пример. Я разрабатываю модуль «Гараж». По адресу /garage/user_login можно увидеть список машин пользователя, если просматривающий пользователь = текущему авторизированному, то у каждого автомобиля есть ссылка «Удалить». Эта ссылка указывает на /garage/user_login/del/car_id, где происходит обработка удаления. За это отвечает EventDeleteCar() и именно здесь удобно сказать пользователю «Парень, твоя машина успешно удалена», ну или «Сорри, не получается». Для этого используем стандартное Message_AddNotice(), Message_AddError().
Но, мы не можем оставить пользователя на этой страничке, и в конце реализации event`а перекидываем его назад к списку с помощью func_header_location(). И все. Никакого сообщения пользователь не увидит!
Идея решения.
В Zend Framework есть action-плагин FlashMessenger, который для тех же целей использует сессию. Мы поступим аналогично.
Решение проблемы: описано здесь.
Live Street
Вообще, заниматься развитием Open Source - это очень увлекательное занятие. Жаль только времени получается отводить на это мало. Надеюсь, найду среди читателей своего блога коллег по мысли и деятельности
Завтра постараюсь выложить описание сделанных мною модулей.
Спонсоры поста:
Доставка цветов в Москве
Сетка арматурная
Понравился пост? Будь в курсе последних событий: подпишись на RSS-ленту.!
Также читайте по теме:
- 8 августа

>>“Гараж”, “Объявления”, “JS Loader”.
Привет, Алексей, а что насчет их продажи? У меня просто интересовались люди уже модулем объявлений.
На мой взгляд Live Street весьма перспективна. Если только на неё не забьют разработчики. Такая участь постигла много хороших и интересных проектов.