Question Threads

Question Threads 2.1.2

Нет прав для скачивания
Угу. Написали уже и на офф форуме. Сейчас исправлю.

TechSide Там ошибка возникла уже в после-установочном процессе. То есть сама установка должна была пройти нормально. В вашем случае далее проблем быть не должно.
Все работает корректно?
 
Последнее редактирование модератором:
Аддон как и все переписать бы :). Доставляет удовольствие.
PHP:
namespace CMTV\QuestionThreads;

use CMTV\QuestionThreads\Constants as C;

class Constants
{
    const ADDON_ID = [
        'CMTV',
        'QuestionThreads'
    ];

    const ADDON_ID_SHORT = [
        'CMTV',
        'QT'
    ];

    public static function _(string $content = ''): string
    {
        $shortId = implode('_', self::ADDON_ID_SHORT);

        return $shortId . (empty($content) ? '' : '_' . $content);
    }

    public static function __(string $content): string
    {
        return implode('\\', self::ADDON_ID) . ':' . $content;
    }
}
PHP:
case C::_('questions_asked'):
                $db = \XF::db();
                $questions = $db->fetchOne(
                    "SELECT COUNT(*) FROM `xf_thread` WHERE `CMTV_QT_is_question` = 1 AND `user_id` = ?",
                    $user->user_id
                );

                $returnValue = $questions >= $data['questions'];
                break;
            case C::_('questions_maximum'):
                $db = \XF::db();
                $questions = $db->fetchOne(
                    "SELECT COUNT(*) FROM `xf_thread` WHERE `CMTV_QT_is_question` = 1 AND `user_id` = ?",
                    $user->user_id
                );

                $returnValue = $questions <= $data['questions'];
                break;
МММ а потом вот из-за таких авторов не подцепить что то другое минуя абстракцию и их прямыми запросами в бд. Привет Kolya groza morey, _Werewolf_, fara, AndyB, etc...
Ну раз бесплатный то и так сойдёт в принципе а не продаются... и вешать столько поддержки ну не найс =)...
 
Последнее редактирование:
А что не так с Constants?

Прямые запросы к БД - да нехорошо. Но другого пути без создания отдельных счетчиков вопросов я не нашел.
 
Так никто и не говорит, что они плохие. Суть в том, что лучше их вынести было бы в какие то утилы, с нормальными именами и комментариями. И в чём смысл юз этого же класса.
Насчёт жобов, ничего не говорю и разработчики сами грешат этим, но они стараются с каждым релизом избавляться от них. Для критериев, что идёт обычный файндер который найдёт к тому же идёт 1 и тот же запрос и вынести его выше свитча в виде файндера и и потом уже сравнивать в самом запросе свитче $questions <= $data['questions'].
 
утилы, с нормальными именами и комментариями
Типо как тут?


Просто мне стало лень придумывать разные имена. Решил сделать покороче. На это, кстати и напоролся. Эта ошибка выше косвенно из-за этого и вылезла.

И в чём смысл юз этого же класса.
Смысл в том, чтобы писать C::_('phrase'), а не 'CMTV_QT_phrase' и C::__('BestAnswer'), а не 'CMTV/QuestionThreads:BestAnswer'.

Для критериев, что идёт обычный файндер который найдёт к тому же идёт 1 и тот же запрос и вынести его выше свитча в виде файндера и и потом уже сравнивать в самом запросе
Можно и так. Просто я вроде где-то слышал (от Майка вроде), что Finder работает медленно. Но, возможно, это было про другое... Посмотрю, что можно сделать.
 
Последнее редактирование:
Да почти, только ещё комментарии.
Можно и так. Просто я вроде где-то слышал (от Майка вроде), что Finder работает медленно. Но, возможно, это было про другое... Посмотрю, что можно сделать.
Эм 1 и тот же запрос будет, не минуя абстракцию каким образом оно будет медленнее?
 
Captain так?
PHP:
$questions = \XF::finder('XF:Thread')
    ->where('CMTV_QT_is_question', true)
    ->where('user_id', $user->user_id)
    ->fetch()
    ->count();
Тут проблема в том, что он возвращает массив Entity. А что если вопросов 1000, 10000?

каким образом оно будет медленнее
Да, наврал.

Вот та тема. Там про другое речь шла.
 
Последнее редактирование:
Эм 1 и тот же запрос будет, не минуя абстракцию каким образом оно будет медленнее?
.в чём смысл? Если один и тот же запрос. Разработчики сами спокойно используют такие запросы. Одно дело использовать finder для того, чтобы получить какие-то объекты из БД, но когда тебе нужно сделать select count это не имеет смысла. Лишнюю память только занимать.
 
Они от них избавляются потихоньку с каждым релизом и переделывают и это прекрасно видно. Прикрутить свой любой адаптер и использовать тот же psql будет проблемно от таких прямых запросов.
 
Captain так?
PHP:
$questions = \XF::finder('XF:Thread')
    ->where('CMTV_QT_is_question', true)
    ->where('user_id', $user->user_id)
    ->fetch()
    ->count();
Тут проблема в том, что он возвращает массив Entity. А что если вопросов 1000, 10000?


Да, наврал.

Вот та тема. Там про другое речь шла.
Не совсем так, а вот так:
PHP:
$questions = \XF::finder('XF:Thread')
    ->where([
                    'CMTV_QT_is_question' => true,
                    'user_id' => $user->user_id
])->total();
Мы можем использовать массив
 
Они от них избавляются потихоньку с каждым релизом и переделывают и это прекрасно видно.
.чего? :D В каком это месте? 1555857904434.png1555857996439.png1555858015373.png

Прикрутить свой любой адаптер и использовать тот же psql будет проблемно от таких прямых запросов.
Так запрос пропускается через адаптер как бы в любом случае.

Всё нормально у тебя. Если ты будешь делать это через Finder, то ты будешь только тратить лишние ресурсы, а это уже не оптимизация.
 
102340
102341
102342
И я могу кучу привести примеров и из релиза в релиз переделывается это всё. Писать прямые запросы в бд, минуя абстракцию - моветон. И что если он пропускается? Если ты не прикрутишь не psql, mssql, mongodb и будет криво работать с этими запросами. в XF 2 не просто так используется ORM и нужно работать правильно с ним и если ты хочешь использовать любую другую субд помимо mysql ты это должен получить результат. Прямые запросы в бд это лишь подводит черту к тому, что ты будешь жёстко привязан лишь к 1 субд. Каким образом оно будет больше тратить памяти? Ну расскажи мне как устроена память и как она работает на низком уровне уж очень интересно. Раз будет больше требовать ресурсов это очень интересно :D.
 
И я могу кучу привести примеров и из релиза в релиз переделывается это всё.
.так ты посмотри, в каких случаях они используют total, в большинстве он используется только когда они с помощью него получают объекты.

Каким образом оно будет больше тратить памяти? Ну расскажи мне как устроена память и как она работает на низком уровне уж очень интересно. Раз будет больше требовать ресурсов это очень интересно :D.
memory_get_usage при db()->fetchOne('select count(*) from xf_user')
До: 4590344
После: 4592336

При $app->finder('XF:User')->total()
До: 4590320
После: 5428696
 
Угу. Написали уже и на офф форуме. Сейчас исправлю.

TechSide Там ошибка возникла уже в после-установочном процессе. То есть сама установка должна была пройти нормально. В вашем случае далее проблем быть не должно.
Все работает корректно?

Переустановил обновленную версию - всё стало без проблем и ошибок! Спасибо! Но нет иконки и фразы "пометить как лучший ответ"!102355
 
Последнее редактирование:
Когда создаешь тему из сообщения и переносишь в форум с ответами и вопросами, в которой только вопросы, то тема остается темой и конвертировать ее в вопрос можно только через админку.
Предложение: сделать конвертацию автоматической или через опцию в меню редактирования темы.
 
CMTV, здравствуйте, помогите разобраться с некоторыми проблемами пожалуйста.
Внутри категории где расположены списки вопросов на форуме, не отображаются иконки вообще никакие, а вот внутри самой темы все на месте

Без названия.png

Без названия (1).png

Без названия (2).png


Не применились модификации я так понял
12.png123.png

Стиль U/I 2
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу