[UsersOnline] Пользователи онлайн
Достаточно часто появляются вопросы из серии «Как посмотреть дату последнего появления пользователя?» или «Как посмотреть, кто онлайн?»
Увидев очередной такой вопрос, мы решили создать простенький компонент, который не только ответит на такие вопросы, но и полностью их решит.
Возможности
Фиксация даты появления пользователя
Для этого используется объект UserOnline, в котором фиксируется:
Вывод списка пользователей онлайн
Для этой задачи используется сниппет getOnlineUsers, который является оберткой над pdoUsers. Соответственно, оформлением результатов занимается pdoUsers, которому передаются все параметры вызова.
Параметры сниппета getOnlineUsers:
Название: &contexts
По умолчанию: Пустое значение (проверка во всех контекстах)
Описание: Список контекстов через запятую, в которых проверяются пользователи
Название: &timeInterval
По умолчанию: -1 (взять значение из системной настройки usersonline_time_span)
Описание: Время в секундах, в течение которого пользователь считается находящимся на сайте
Системная настройка компонента:
Название: usersonline_time_span
По умолчанию: 900
Описание: Время в секундах, в течение которого пользователь считается находящимся на сайте
Сброс авторизации заблокированным пользователям
По умолчанию в MODX, после блокировки пользователь может делать на сайте все, что угодно, пока жива его сессия. Плагин UsersOnline проверяет, активен ли текущий пользователь. Если он заблокирован или отключен, будет запущен автоматический выход из системы и перенаправление на главную страницу, после чего беззаботная жизнь нарушителя закончится.
Пакет доступен в магазине и отправлен на модерацию в репозиторий modx.com.
Автор: Роман Садоян
Увидев очередной такой вопрос, мы решили создать простенький компонент, который не только ответит на такие вопросы, но и полностью их решит.
Возможности
- Фиксирует дату крайнего появления каждого пользователя (во всех контекстах)
- Выводит список пользователей онлайн на сайте
- Сбрасывает авторизацию отключенных и заблокированных пользователей
Фиксация даты появления пользователя
Для этого используется объект UserOnline, в котором фиксируется:
- ID пользователя
- Текущий контекст
- Дата и время появления
Вывод списка пользователей онлайн
Для этой задачи используется сниппет getOnlineUsers, который является оберткой над pdoUsers. Соответственно, оформлением результатов занимается pdoUsers, которому передаются все параметры вызова.
Параметры сниппета getOnlineUsers:
Название: &contexts
По умолчанию: Пустое значение (проверка во всех контекстах)
Описание: Список контекстов через запятую, в которых проверяются пользователи
Название: &timeInterval
По умолчанию: -1 (взять значение из системной настройки usersonline_time_span)
Описание: Время в секундах, в течение которого пользователь считается находящимся на сайте
Системная настройка компонента:
Название: usersonline_time_span
По умолчанию: 900
Описание: Время в секундах, в течение которого пользователь считается находящимся на сайте
Сброс авторизации заблокированным пользователям
По умолчанию в MODX, после блокировки пользователь может делать на сайте все, что угодно, пока жива его сессия. Плагин UsersOnline проверяет, активен ли текущий пользователь. Если он заблокирован или отключен, будет запущен автоматический выход из системы и перенаправление на главную страницу, после чего беззаботная жизнь нарушителя закончится.
Пакет доступен в магазине и отправлен на модерацию в репозиторий modx.com.
Автор: Роман Садоян
Комментарии: 55
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
А так, вроде, никто ничего не менял.
Ещё разделяю твою «радость» когда кто-то дарит функционал твоего платного дополнения.
Главное, что это не копипаста из моих же исходников, а своя собственная логика.
Кстати, о наличии этой полезности в Office напомнил мне сейчас ты. До того я помнил лишь, что проблема имеет место быть.
Кстати, одна из очень сильных возможностей твоего siteStatistics — раздел в админке. В нашем не вижу необходимости в подобном.
Я сделал сайтстатистик, чтобы заменить у себя HitsPage. И сделал его платным только из-за того, что считаю неправильно отбивать у них пользователей. Поэтому сделал выбор для пользователя — бесплатно меньше функций, платно больше. И ребятам из АртДевю не обидно. А чтобы пользователь чувствовал вес платного варианта, добавил ещё usersOnline, который вы и дарите тут.
Вопрос не в деньгах, а в солидарности разработчиков и уважении друг друга. Представь, что я сделаю свой бесплатный компонент, который копирует твой бесплатный. Т.е. ты ничего не потеряешь, но какие получишь эмоции?
1) Данный компонент повторяет лишь одну функцию платного компонента Сергея, при этом код писался разработчиком с нуля. Это немаловажный момент, я считаю!
2) В ситуации Володи и Василия, насколько я понял её, был несколько иной случай. В компонент Easy Custom Controller Володя скопировал часть логики компонента Office Василия. Поправьте, пожалуйста, если я ошибаюсь.
Исходя из этого, у меня получается лишь один вывод: если хочешь писать компонент — изучи все продукты на рынке, как в репозитории modx.com, так и в modstore.pro, репозитории MODX-клуба, а также ещё в кучке репозиториев, как иностранных, так и русских. И только после этого, начинай писать свой.
И вообще, кто-то из авторов miniShop2, ShopKeeper, shopModxBox поступил неправильно (извините, не знаю порядок появления), повторив какой-то функционал другого пакета.
Всё-таки, что-то в моём понимании здесь не сходится… может быть то, что опираться на эмоции не совсем верно в данной ситуации (да и во многих других)? Программисту логика как-то больше к лицу. Да и здоровая конкуренция никого ещё не делала слабее. Ну и что, что кто-то не хочет брать денег за свой труд? Ему можно только похлопать за безвозмездную помощь сообществу!
Повторюсь: я никого не собираюсь задеть этим, меня лишь волнует сложившаяся ситуация в целом.
Не получается. Разговор только о нашем тесном сообществе, где многие разработчики друг друга знают уже давно.
У меня стоит задача сделать себе на сайт промокоды. Вот я сделаю его и выложу здесь, чтобы послушать аплодисменты. А потом чуть допилю и сделаю купонатор. Тоже для аплодисментов. Ни строчки кода не скопирую с твоих компонентов. А чё, здоровая конкуренция. И тогда логика тебе в руки, а эмоции заверни в газету и убери на чердак.
Никого не хочу обидеть. Ответ чисто гипотетический, если бы вдруг меня об этом спросили.
А по поводу «чуть допилю», я не совсем понял, что ты хочешь сказать. Если ты полагаешь, что логика данных моих компонентов повторяет себя в большинстве своём — то покажи мне, пожалуйста, это. Ну, чтобы не было так безосновательно.
Я спросил, не будет ли в компоненте статистики функции сбора данных о посетителях, IP адрес, юзерагент и т.п., что позволяло бы понимать какие устройства используют, откуда приходят люди и т.п.
Да, это все в Яндекс Метрики есть, но не для любого случая, так я, например, заметил подключения к RSS множественные, мне бы знать кто, откуда, Метрика тут не помогает. Ты пишешь: "Не планировал. Не совсем понятно, зачем нужна такая информация. При разработке делал акцент на то, чтобы знать что смотрят, а не кто. Может в будущем, если руки дойдут, сделаю. " — т.е. я не могу рассчитывать на новый функционал, а тот кто хотел бы выпустить с таким функционалом расширение будет связан правилами и принятой в сообществе этикой. Поэтому, то что говорит Павел (Гвоздь) не противоречит ни логике ни здравому смыслу. Компоненты (платные, бесплатные) в репозитарии не должны быть препятствием для появление новых компонентов, с новыми функциями, идеями. Иначе, увы, «кто первый встал того и тапки»- а прогресс «давай до свиданья». О копировании чужого кода я не говорю.
Дальше следует обращение ко всем.
ИМХО:
Можно выпустить много элементарных вещей в виде компонентов и поставить их продажную стоимость в 190 рублей. Тем самым перекрыть в принципе возможность создания пользователями БЕСПЛАТНЫХ компонентов со схожим функционалом, говоря «этот компонент уже есть, покупайте его», а где конкуренция друзья?
Почему я не могу написать что-то свое и выложить это бесплатно в modstore, пусть даже это и дублирует компонент в магазине, но пользователь в праве выбирать что ему ставить, не так ли?
modx.com в данном контексте не рассматриваю т.к. в ближнем зарубежье и СНГ modstore — в приоритете.
Чем больше компонентов тем лучше для нас же.
P.S.: мой стаж программирования не позволяет мне похвастаться крупными вкладами в open source проекты, но я за бесплатное ПО и за улучшение его качества.
Ещё раз повторю, дело не в деньгах. Ты не задумывался, почему я более крутые дополнения делаю бесплатно, а сайтстатистик за деньги? Только из соображений «внутренней» порядочности и из уважения к Валентину из АртДевю. Я сделал свое позже. А мой доход позволяет мне покупать новую Ауди А4 каждый месяц и ещё немного останется. Мне эти 300 руб. вообще никуда не упирались. Вопрос только в уважении разработчиков друг к другу. Ваше отношение с Гвоздем к уважению ясно, но Михаил проявил себя вполне достойно. Настоящий мужик. Уважаю.
Лично я готов сделать свое дополнение бесплатным хоть сейчас. Уверен Валентин не будет против.
Ложь.
Ты сделал похожее и еще выложил его платно, где уважение?
Его исходники открыты на сайте проекта висит предложение форкнуть. Форкни, сделай пул реквест, не примет — выпусти свой компонент, как ТЫ считаешь нужным. Если бы он этого не хотел, то прятал бы исходники своих компонентов.
Я рад за тебя, дай Бог, что бы дальше дела шли только в гору и ты смог позволить себе покупать Lexus 570 каждый месяц.
Ведь дело тут совсем не в цене, а в том, что компонент платный.
Почему тогда ваши дополнения платные?
Ваши дополнения платные!!!
Предлагаю закончить на этом разборки. Я вас молодых всё равно не перегоню в агрессивности и хамстве.
Компоненты расчета доставки, о которых ты говоришь, платные из-за поддержки. При этом, их исходники открыты и абсолютно спокойно находятся с помощью Яндекса.
На что я ответил, что ваши тоже платные. И дело тут не в причинах, это твоего сотрудника не интересует. Он даже не понял почему я сделал его платным, а другие нет. И это после подробных объяснений.
У меня тоже немало запросов в поддержку по сайтстатистик. Может тогда это объяснение для него подойдет.
У меня к тебе нет претензий. Я об этом писал выше. Приятно найти единомышленника. Так что лучше говорить о полезном, чем разводить тут флуд на радость молодым идеалистам. :)
Но я уверен, что подобное обсуждение не последнее, ведь по мере увеличения количества компонентов и разработчиков пересечения будут случаться все чаще. И вот это уже радует меньше.
На modx.com около 700 дополнений. Много там повторяющихся дополнений, развивающихся одновременно. А там люди со всего мира. Неужели мы у себя на modx.pro не сможем решить данный вопрос (при желании сторон конечно). Нас тут не так много. Но главное, у modstore есть правила. Он следит за их соблюдением. А иначе никак. Ведь анархия — это палка о двух концах. Сегодня ты нарушил, завтра против тебя нарушат. Как Турция — снабжала и поддерживала террористов, а теперь сама хлебает полной ложкой.
Случился прецедент, который не настолько однозначен, как раньше, когда код одних компонентов использовался как часть (или даже бОльшая часть) новых компонентов.
В эту дискуссию я не праздно влез, а именно потому, что она прямо отражает суть некоторых процессов, в которых я так или иначе участвую.
Пример с расширением Статистика, он просто конкретный. Я имею к нему отношение как потребитель, вопросы поднятые мне (в данном случае как потребителю) весьма интересны. Итак, о не дублировании функционала- это прямая угроза развитию и именно абсурдно в отношении покупателей расширений. Т.е. если твой компонент не развивается как надо мне, я не могу рассчитывать на нужный мне (в твоем компоненте) функционал, кто то другой не может выпустить и разместить в магазине аналог с как раз тем недостающим функционалом и это по твоему правильно?
Заметь, вот конкретно по факту сбора статистики, я ведь не могу удалить твой компонент, он же собирает мне те данные, ради чего он был установлен. Дублировать другим компонентом? Еще базу раздувать? Учитывать разницу собранных данных одним, потом другим компонентом?
Т.е. явно отсутствует в этой схеме (не дублирования) интерес (в смысле не учитывается) покупателей.
А у Михаила есть почтовая доставка по России. Давай добавим и по странам СНГ и выложим бесплатно. Опять же большая радость пользователям. И так для каждого компонента, ведь нельзя придумать функционал для всех случаев в жизни. Нафиг эту этику.
2) По мне, так ты слишком утрируешь в данном вопросе. Т.к.:
— Одно дело, когда твой компонент называется UsersOnline и выполняет ту функцию, которая прослеживается из названия, и залезть на функционал, который выполняет твой компонент Статистика, он просто априори, исходя из названия, не может.
— Другое дело, когда ты копируешь полностью функциональные возможности компонента и добавляешь свою маленькую, но приятную пользователям, плюшку.
Можно прислать PR, сделать отдельным модулем, в крайнем случае связаться с автором и спросить планирует ли он внедрять это (или планирует ли поддерживать компонент, опять же предложить свой код), если нет, то можно как Николай Загумёнов сделал xPoller2.
Вариантов масса — главное открытый исходный код!
Я про себя говорил. Компоненты принадлежат Михаилу, а он как хочет так ими и распоряжается.
У меня пока нет собственных законченных компонентов.
Здесь есть моя точка зрения и точка зрения Михаила — не нужно их смешивать, также как и не нужно воспринимать нас в этом вопросе как одну сторону.
т.е. за 300 рублей ты готов отвечать на вопросы, а за бесплатно нет?
Понятное дело что вопросов будет больше, но ведь и на форуме появятся ответы.
Т.е я вот о чем. Конкретная ситуация с дополнением «Статистика...»
Покупка ли, просто установка, т.е. вообще факт использования ПО, всегда устанавливает некоторые взаимоотношения между разработчиком и пользователем.
Хочет ли пользователь (потребитель) что бы купленный компонент развивался, поддерживался? Хороши ли пользователю, если компонент Статистики придется заменить, с потерей данных ли, с переносом данных? Этика только по отношению к разработчикам? Не абсурд ли?
Кстати, я отвечаю на все вопросы по любым дополнениям — и платным и бесплатным. И багфиксы делаю ко всем дополнениям. А вот развиваю только то, что интересно и на что хватает времени. А у меня сейчас даже на свой сайт нет времени. Много основной работы.
Но… мне поступил запрос в техподдержку о неправильном подсчете статистики по сравнению с Яндексом. Для того, чтобы разобраться базового функционала не хватает, поэтому я добавил 3 поля — ip, userAgent и referer. Появится в новой версии. Так что ждать осталось недолго.
В любом случае, спасибо.
Буду теперь посматривать Лунный календарь на одном твоем сайте, Сергей.
Вот пишут там, «25 марта… Возможны конфликты, разбирательства, неприятности, возникшие из ничего. Необходимо проявить осмотрительность и терпимость… » — ужас.
Удачи в делах. Всем мира и добра!
Тем более, когда речь идёт о платном дополнении с поддержкой и регулярными обновлениями, против бесплатного пакета без каких-либо гарантий. Да еще и созданного значительно позже.
У магазина есть правила, и мы ими стараемся руководствоваться. А так — любой автор может что угодно добавлять в репозиторий modx.com, им без разницы.
У таких пакетов уже есть покупатели, и мы не можем оставить их без поддержки и обновлений.
Но любой подобный случай, если он будет, мы рассмотрим отдельно.
Как такой случай будет рассматриваться? Или не нужно добавлять расчет стоимости по другим странам, чтобы не произошло функционального поглощения? Но тогда, из-за отдельного компонента для EMS, без такой функции останутся и методы доставки стандартными способами Почты России.
хотя живут вместе mSearch2 и mSearch
про автора не сказано
и путаницы нет, про mSearch — четко сказано «Устаревший поиск и фильтр» и нам понятно, что есть новое…
но это просто как пример…
Давно пора уже было убрать эту старую версию, у которой почти в 2 раза меньше загрузок, несмотря на бесплатность.
Убрал.
Весь вопрос на мой взгляд сводится к тому, что весомее — узкоспециализированное или глобальное дополнение. Ну и % повтора функционала одного от другого.
Не совсем понятна позиция Сергея (не та часть, где говорится о копировании готового функционала с незначительными косметическими изменениями), т.к. код, как я понял, не пересекается — т.е. все сводится к позиции «я придумал выводить онлайн-пользователей первым».
С тем же успехом можно заблокировать функционал загрузки аватары пользователя с фронтэнда, т.к. это уже есть в Office (опять же, вопрос в долях, но все же).
+ позиция ModStore воспринимается потенциально-уязвимой, т.к. в рамках их правил можно зарегистрировать дополнение с большой зоной охвата (modFrontendTools) с ценой под 9к и засовывать туда вообще все подряд, блокируя доступ точечным дополнениям.
Описание в посте обновлено.
Когда-нибудь компонент появится и в официальном репозитории — все зависит от их скорости работы. Пакет на модерацию отправлен.
[[!UsersOnline]] — не выводит ничего
[[!getOnlineUsers]] — выводит массивом все на странице
[[!getOnlineUsers]] — обертка над pdoUsers, которому (как и всему, что входит в pdoTools) требуется параметр &tpl с указанием чанка для формирования красивого вывода.
[[!getOnlineUsers]] выдает ERROR 500 даже с &tpl.
В чем может быть дело?