Comments 49
Поздравляю с релизом.
Хотелось бы поинтересоваться о будущем проекта.
Какие планы на развитие? Промежуток между последнем релизом 4 года. На сколько актуальная версия 2 по нынешним стандартам?
Как вы планируете дальнейшее развитие?
Что сладкого готовите на ближайшее будущее?
Хотелось бы поинтересоваться о будущем проекта.
Какие планы на развитие? Промежуток между последнем релизом 4 года. На сколько актуальная версия 2 по нынешним стандартам?
Как вы планируете дальнейшее развитие?
Что сладкого готовите на ближайшее будущее?
Я просто оставлю это здесь в качестве демонстрации уровня ответственности топикстартера и поддержки предыдущих версий
(плюс ещё две потенциальных sql-инъекции, но эксплуатировать их извне без сторонних плагинов нельзя, поэтому меня послали)
(плюс ещё две потенциальных sql-инъекции, но эксплуатировать их извне без сторонних плагинов нельзя, поэтому меня послали)
К слову, пароли даже в версии 2.0 (сейчас проверил по гитхабу) хэшируются в обычный md5 даже без соли. В 2017 году, ага.
В общем, народ, не используйте LiveStreet для мало-мальски серьёзных сайтов.
Спасибо за информацию
Код на github, уже бы pull request-ов неделали...
Тут нужно всё выкидывать и переписывать с нуля. На питоне.))
UFO just landed and posted this here
Ну вы же уже запатчили себе именно этот код. Осталось совсем чуть чтобы сделать pull request и помочь продукту, который сами и используете. Да и профит будет — обновляться проще.
Лет несколько...
Поздравляю! :)
Осталась очередь за авторами плагинов и шаблонов перевести на новую версию движка…
PSR-2 — хорошо, а PSR-4?
А почему бы не вынести framework за пределы public директории в 2017 году?
А почему бы не использоватьнеймспейсы PSR-4 в 2017 году?
А почему бы не использоватьнормальное оформление кода PSR-2 в 2017 году?
А почему бы не использовать prepeared statements в ORM в 2017 году?
Дальше смотреть не хочется…
А почему бы не использовать
А почему бы не использовать
А почему бы не использовать prepeared statements в ORM в 2017 году?
Дальше смотреть не хочется…
Для тех, кто скажет, что PSR-2 заявлен во второй версии просто процитирую перевод стандарта.
В коде все методы начинаются с заглавной.
Имена методов ДОЛЖНЫ быть объявлены с использованием т.н. «camelCase» (первое слово пишется в нижнем регистре, далее каждое слово начинается с большой буквы, а между словами нет разделителей).
В коде все методы начинаются с заглавной.
UFO just landed and posted this here
Копирую из исходного кода Livestreet 2.0 без изменений
И это у них называется ORM, ага
Скрытый текст
/**
* Объект маппера для работы с БД
*
* @package application.modules.topic
* @since 1.0
*/
class ModuleTopic_MapperTopic extends Mapper
{
/**
* Строит строку условий для SQL запроса топиков
*
* @param array $aFilter Фильтр
* @return string
*/
protected function buildFilter($aFilter)
{
$sDateNow=date('Y-m-d H:i:s');
$sWhere = '';
if (isset($aFilter['topic_date_more'])) {
$sWhere .= " AND t.topic_date_publish > " . $this->oDb->escape($aFilter['topic_date_more']);
}
if (isset($aFilter['topic_slug'])) {
$sWhere .= " AND t.topic_slug = " . $this->oDb->escape($aFilter['topic_slug']);
}
if (isset($aFilter['topic_publish'])) {
$sWhere .= " AND t.topic_publish = " . (int)$aFilter['topic_publish'] . " AND t.topic_date_publish <= '{$sDateNow}' ";
}
if (isset($aFilter['topic_rating']) and is_array($aFilter['topic_rating'])) {
$sPublishIndex = '';
if (isset($aFilter['topic_rating']['publish_index']) and $aFilter['topic_rating']['publish_index'] == 1) {
$sPublishIndex = " or topic_publish_index = 1 ) and ( topic_skip_index = 0 and b.blog_skip_index = 0 ";
}
if ($aFilter['topic_rating']['type'] == 'top') {
$sWhere .= " AND ( t.topic_rating >= " . (float)$aFilter['topic_rating']['value'] . " {$sPublishIndex} ) ";
} else {
$sWhere .= " AND ( t.topic_rating < " . (float)$aFilter['topic_rating']['value'] . " ) ";
}
}
if (isset($aFilter['topic_new'])) {
$sWhere .= " AND t.topic_date_publish >= '" . $aFilter['topic_new'] . "'";
}
if (isset($aFilter['user_id'])) {
$sWhere .= is_array($aFilter['user_id'])
? " AND t.user_id IN(" . implode(', ', $aFilter['user_id']) . ")"
: " AND t.user_id = " . (int)$aFilter['user_id'];
}
if (isset($aFilter['blog_id'])) {
if (!is_array($aFilter['blog_id'])) {
$aFilter['blog_id'] = array($aFilter['blog_id']);
}
$sBlogList = join("','", $aFilter['blog_id']);
$sWhere .= " AND ( t.blog_id IN ('{$sBlogList}') ";
$sWhere .= " OR t.blog_id2 IN ('{$sBlogList}') ";
$sWhere .= " OR t.blog_id3 IN ('{$sBlogList}') ";
$sWhere .= " OR t.blog_id4 IN ('{$sBlogList}') ";
$sWhere .= " OR t.blog_id5 IN ('{$sBlogList}') ) ";
}
if (isset($aFilter['blog_type']) and is_array($aFilter['blog_type'])) {
$aBlogTypes = array();
foreach ($aFilter['blog_type'] as $sType => $aBlogId) {
/**
* Позиция вида 'type'=>array('id1', 'id2')
*/
if (!is_array($aBlogId) && is_string($sType)) {
$aBlogId = array($aBlogId);
}
/**
* Позиция вида 'type'
*/
if (is_string($aBlogId) && is_int($sType)) {
$sType = $aBlogId;
$aBlogId = array();
}
$aBlogTypes[] = (count($aBlogId) == 0)
? "(b.blog_type='" . $sType . "')"
: "(b.blog_type='" . $sType . "' AND t.blog_id IN ('" . join("','", $aBlogId) . "'))";
}
$sWhere .= " AND (" . join(" OR ", (array)$aBlogTypes) . ")";
}
if (isset($aFilter['topic_type'])) {
if (!is_array($aFilter['topic_type'])) {
$aFilter['topic_type'] = array($aFilter['topic_type']);
}
$sWhere .= " AND t.topic_type IN (" . join(",",
array_map(array($this->oDb, 'escape'), $aFilter['topic_type'])) . ")";
}
return $sWhere;
}
}
И это у них называется ORM, ага
Справедливости ради, в 2.0 это, если верить грепу, единственное такое место, в 1.0.3 такого было побольше
Это называется старый код, ORM есть во фреймворке и используется только в части проекта.
Весь код мы не переписывали, иначе бы и этого бы не было.
Код проекта ни на что не претендует, модных штук (фреймворки, контейнеры и прочее) не использует. Как-то так.
Весь код мы не переписывали, иначе бы и этого бы не было.
Код проекта ни на что не претендует, модных штук (фреймворки, контейнеры и прочее) не использует. Как-то так.
Конкретно это место, конечно, стоило бы переписать. С виду вроде всё проэкранировано, но уверенности всё равно нет.
Можно было бы хотя бы для приличия
А тот ORM, который
// TODO: переписать этот говнокод
воткнуть.)А тот ORM, который
EntityORM
, страшненький, неудивительно что не хочется его юзать. (Вообще, по моим грубым оценкам, CMS такого уровня можно накатать с нуля месяца за три, если не стесняться пользоваться сторонними батарейками.)Оптимистичные прикидки — они всегда такие ;)
Поздравляю с релизом! Нравится мне этот движок.
Увидел новость — обрадовался. Движок нравится, версию 2 уж и не ждал, а тут такой сюрприз.
Но после каментов озадачился, что-то сильно ругаете его…
Таки имеет смысл переходить на 2.0 (для новых сайтов) или лучше проверенную 1.0.3 использовать?
Но после каментов озадачился, что-то сильно ругаете его…
Таки имеет смысл переходить на 2.0 (для новых сайтов) или лучше проверенную 1.0.3 использовать?
Че там? Админку нормальную сделали? Все так-же тормозит как и 3 года назад? Или можно смотреть без боли?
А как оно в сравнении с инстансцмс?
Судя по количеству ошибок php7cc совместимости с php7 нет?
Или как с первой версией, LS заработает только после сильной правки модуля базы данных?
Или как с первой версией, LS заработает только после сильной правки модуля базы данных?
юзаю на локалке php7, ls2 полёт нормальный
С MySQL 5.7, по-видимому, несовместимо.
Sign up to leave a comment.
Релиз LiveStreet 2.0