+137.33
701 читатель, 145 топиков

LiveStreet - что дальше? Планы 2013.

В последнее время наблюдалась стагнация в развитии проекта, и мы хотим с новыми силами приступить к реализации очередного витка в жизни LiveStreet.

Публикуем наши планы по дальнейшему развитию LS на 2013 год. Скоро создадим отдельную страницу с roadmap, где можно будет наблюдать состояние работы, и что в текущий момент реализуется.
Ниже представлен основной план.

LiveStreet CMS
Для разработчиков
  1. Создание удобного front-end фреймворка для разработки шаблонов
  2. Улучшение механизма плагинов по части установки и обновления, возможность быстро и удобно создавать разделы настроек плагина
  3. Оптимизация и упрощение текущего кода
  4. Функционал дочерних шаблонов, когда можно создать новый шаблон но только с измененными файлами tpl, остальные будут браться из основного шаблона
  5. Струтурирование текущей документации, создание новой, в том числе новые подкасты и примера реализации разных плагинов
  6. Экспериментально: перевод всего на ORM, что значительно упростит количество кода
  7. Экспериментально: шаблон с использованием наследования блоков Smarty

Для пользователей
  1. Полный пересмотр текущего застоявшегося функционала. В комментариях можете внести свое предложение
  2. Категории для блогов
  3. Объединение разных видов топика в один с расширенным функционалом(пост, опросы, фото-сеты, ссылки)
  4. Упрощение навигации/меню по топикам. Принимаются предложения
  5. Работающий поиск из коробки, sphinx как альтернатива
  6. Завершить эпопею с нормальной админкой

Дополнительно
  1. Новый более удобный каталог плагинов(базовый функционал уже разработан)
  2. Регулирование правовых отношений в каталоге(идет юридическая подготовка документов)
  3. Единый центр регистрации и авторизации на официальных сайтах LS(разработан)
  4. Адаптация сайта livestreet.ru для более успешного общения и решения проблем в сообществе
  5. Программа поощрения для авторов плагинов/шаблонов — открутка баннерных показов, рассылки обзоров и премирование

Основная проблема в реализации — это нехватка человеческих ресурсов. Поэтому мы очень заинтересованны в помощи сторонних разработчиков в дальнейшей разработке LS.
Как это можно сделать:
  1. Предложения по улучшению текущего кода
  2. Принятие вашего кода в проект. Код проходит code review и принимается в проект. Через GitHub это делается пул-реквесты. Например, студия stfalcon регулярно вносит свои доработки в проект, за что им отдельное спасибо
  3. Любая другая помощь

Спасибо за терпение и надеемся на ваше понимание.

Релиз LiveStreet 1.0.3

Сообщаем о выходе новой версии LS 1.0.3. Версия носит багфиксный характер.
Были закрыты две XSS уязвимости(спасибо HiMiC и PSNet ) и исправлено раскрытие директории в сессиях(еще раз спасибо PSNet ).

Обновленный дистрибутив уже доступен для загрузки — livestreetcms.ru/download/
Для закрытия этих багов для версий 1.0.2, 0.5.1 и 0.4.2 достаточно скачать этот патч и залить его поверх вашей версии LS.

Важное замечание! Настоятельно рекомендуем обновиться с версий 0.5 и 0.4 до актуальной 1.0.3. Т.к. помимо исправлений этого патча старые версии содержать множество других бед, в том числе и потенциальные уязвимости.

Изменения коснулись 4-х файлов:
config/jevix.php
engine/lib/external/Jevix/jevix.class.php
engine/lib/external/swfupload/swfupload.swf
engine/modules/session/Session.class.php

Подробнее можно посмотреть на гитхабе — github.com/livestreet/livestreet/commit/83c15587388dec02f8b97eac8a0d809a3233702c

Релиз LiveStreet 1.0.2

Сообщаем о выпуске промежуточной версии LiveStreet 1.0.2.
Основная причина — закрытие пассивной XSS (спасибо HiMiC ). Также были исправлены другие незначительные моменты по безопасности.
Полный список изменений относительно версии 1.0.1 доступен здесь — github.com/livestreet/livestreet/commit/479e97bea183b8ab863d45b8150fe6549b42f8ce

В новую версию вошли практически все изменения ядра из девел версии на текущий момент, что повысит, в частности, скорость работы сайта. Шаблоны не изменялись, поэтому должна быть полная 100% совместимость с текущими шаблонами и плагинами.

При обновлении с 1.0.1 достаточно перезаписать файлы из нового архива, каталог /templates/skin/ можно не перезаписывать.

Скачать можно здесь — livestreetcms.ru/download/

UPD
Список изменений:
  • фикс бага смены емайла, если у пользователя не было старого
  • если класс модуля не существует, то теперь выбрасывается эксепшен
  • доступ к какум только через http
  • фикс генератора плагинов из консоли
  • в конфиг вынесены настройки допустимого логина пользователя
  • фикс отображения адреса сайта плагина в списке плагинов
  • вынос в конфиг максимального размера текста топика для ссылок и опросов
  • возможность отключить обязательность проверки каптчи
  • фикс удаления комментариев
  • фикс раскрытия путей на сервере — замена функции getRequest на getRequestStr для строковых параметров
  • закрытие прямого доступа к plugin.xml, закрытие некоторых каталогов через htaccess
  • список допустимых протоколов для ссылок в парсере jevix
  • в классе LS методы заменены на статические
  • в сущности топика добавлены новые вспомогательные методы: getUrlEdit, getIsAllowDelete, getIsAllowEdit, getIsAllowAction
  • новая опция в конфиге $config['smarty']['compile_check'] для отключения проверки шаблонов перед компиляцией
  • фикс бага с передачей сессии в каптчу
  • фикс предпросмотра у топика-ссылки и опроса
  • фикс установки уровня php ошибок в Viewer
  • теперь, если файл шаблона плагина не найден, будет попытка его найти в каталоге шаблона плагина /default/, это позволит не дублировать файлы шаблонов для разных скинов
  • фикс утечки памяти при обработке конфига
  • для топика устанавливается canonical url
  • фикс экранирования полей в ORM
  • для ORM связи many-many добавлен новый метод clear() для удаления всех текущих связей
  • возможность в определении ORM связи has-many указывать дополнительный фильтр (4-й параметр)
  • поддержка группировки в условиях ORM запроса
  • фикс XSS в пагинации
  • в определении таблицы в ORM учитывается имя плагина, например, prefix_pluginname_user_invite
  • теперь при запуски из консоли функция func_getIp вернет 127.0.0.1
  • в jevix в обработку тегов TR_TAG_CALLBACK_FULL дополнительно передается содержание между тегов
  • в ls.ajax в хук дополнительно передаются параметры callback и more
  • оптимизация выборки инбоксов
  • фикс бага подписки на комменты к топику из закрытого блога
  • фикс удаления файлов изображения фото-сетов при удалении топика

Оптимизация ЛС, часть 3

Топик залежался в черновиках, и хотя сегодня Максим уже сделал багфикс, я все же опубликую этот топик в общеобразовательных целях.

В одном из топиков по оптимизации мы уже касались темы доработки класса конфига ЛС. В данном топике рассмотрим ещё одну оптимизацию — заменим создание анонимной функции каждый раз при получении ключа на вызов уже созданного объекта. Изначальный код предложил пользователь empirik и данный код является небольшой его модификацией + результаты тестов.

Читать дальше →

Оптимизация ЛС, часть 2

А пока товарищи в соседнем топике спорят, я провел небольшие замеры и предлагаю взглянуть на некоторые варианты оптимизации.

Продолжаем эксперименты над движком.

Ахтунг! В данной статье будут приведены примеры кода, которые могут нарушить функциональность некоторых весьма хитро-умных плагинов, которые привязаны к этому механизму. Мне не известен ни один такой плагин, но я не исключаю возможность их существования.

В прошлом топике, где я опубликовал полный список стандартных хуков для ЛС 1.0.1, я обратил внимание на хуки, которые начинаются с префикса module_ — хуки, которые постоянно создаются динамически и вызываются парами до и после вызовов методом модулей. Как и было написано в предыдущем топике — хуки вызываются 486 раз, причем само их количество на «чистой» ЛС значится в 161 штуку.

Читать дальше →

Список хуков LiveStreet CMS 1.0.1

На днях написал черновик по списку хуков и так забыл о нем, пока не увидел новое видео от Максима и сразу вспомнил об этом тексте, решив под общий шумок вокруг хуков добавить и эту статью. Я видел разные топики, где спрашивали "есть ли список хуков?". Да, есть. Вот он.

Привожу список стандартных хуков для чистой официальной ЛС 1.0.1, большинство из них неявно прописаны в движке, поэтому попытка найти их вызовы в коде у вас не выйдет т.к. часть их них автоматически формируется ядром движка.
Из стандартной поставки ЛС хуки в сумме вызываются 486 раз, некоторые по нескольку раз. Это нормально. Здесь приведены 161 хук, которые доступны в ЛС 1.0.1, в порядке их вызова, начиная с самого первого, исключая дальнейшие повторения.

Читать дальше →

Плагин для IDE PhpStorm - автодополнение

Для разработчиков у нас отличная новость!
Рады представить плагин для IDE PhpStorm (лучшей IDE для разработки на PHP), теперь разрабатывать на LS стало еще проще — плагин поддерживает автодополнения методов LS + есть поддержка наследования через Inherit.

пример автодополнения

Скачать можно на странице docs.livestreetcms.com

Надеемся в Новом Году разрабатывать с помощью LS станет еще приятнее!
С наступающим!

UPD: выложили исходники github.com/livestreet/ide-plugin-phpstorm

Сегодня подключили к CI серверу первый плагин покрытый автоматическими тестами!

Наличие автоматических тестов это важная составляющая качественного программного продукта. А мы ведь хотим использовать качественные плагины на своих LiveStreet сайтах?

Именно поэтому stfalcon.com занимается внедрением автоматических тестов в LiveStreet и плагины, а также подключением всего этого дела к бесплатной платформе для Continuous integration Travis CI.

И вот сегодня состоялось важное событие — загорелся первый зеленый билд статус для плагина sitemap!



Немного перефразируя Армстронга это:
Один маленький шажок для человека, но огромный скачок для LiveStreet сообщества



PS. Для самого LiveStreet такой статус загорелся ещё две недели назад, но тестами покрыта пока лишь малая часть функционала.

LiveStreet исполнилось 4 года



Сегодня исполняется ровно 4 года нашему LiveStreet. Моментом отсчета является вот этот самый первый топик — livestreet.ru/blog/dev_livestreet/1.html, который и представил LS публике.

Тогда это была полная внешняя копия хабра с минимальными возможностями, но постепенно LS вырос из просто копии и стал чем то больше. Все началось с моего обычного увлечения, было просто интересно что-то сделать. А потом уже переросло практически во вторую работу, которая не отпускаем меня вот уже четыре года :)
За это время в команде LS появились два новых человека, без которых сейчас трудно представить как бы развивался LS и развивался ли вообще. Это Алексей Попов aka LeX и Денис Шахов aka deniart . Если Денис уже достаточно давно в LS, то Алексей присоединился буквально недавно, чему я очень рад :)

Постепенно в экосистему LS стали вливаться сторонние разработчики, которые своими плагинами/шаблона помогают очень развиваться проекту. Ключевым фактором стало именно появление системы плагинов в версии 0.4 и наследования классов, которое предложил avadim . Это позволило очень гибко проводить кастомизацию движка не трогая базовый код. Надеюсь и дальше разработчики будут всех радовать новыми и интересными плагинами.

Но главное это пользователи и их интерес к движку и проекту в целом. Именно вы помогали нам все это время работать над проектом, развивать его. За эти четыре года были моменты, когда уже хотелось все бросить и заняться чем-то другим. Но ваша поддержка, лояльность и интерес к проекту помогали пережить эти негативные периоды и двигали нас вперед с новыми силами. Спасибо вам большое!

Читать дальше →