+29.60
Рейтинг
72.60
Сила

Alexandr Kachanov

Плагин для блокировки и автоматического удаления спамеров/ботов "Total Антиспам"

4 фото
image
Представляю вашему вниманию плагин «Total Антиспам», который призван защитить ваш сайт от ботов и ручного спама, а также удалить с сайта уже действующих и неактивных ботов в автоматическом режиме.


Из возможностей плагина:
— JS защита форм регистрации, написания топика, комментария, личного сообщения.
— Установка и проверка капчи при написании топиков, комментариев, личных сообщений
— Возможность блокировки топиков/комментариев/личных сообщений/записей на стене, содержащих ссылки.
— Возможность установки вышеперечисленных ограничений по уровню рейтинга пользователя.
— Возможность проверки публикуемых комментариев и записей на стене по базе Akismet.
— Возможность запрещать размещение ссылок в профиле
— Проверка почты и IP по базе stopforumsapm.com при регистрации.
— Проверка почты и IP по базе stopforumsapm.com при написании топика/комментария/личного сообщения/записи на стене.
— Возможность автоматической отправки новых спамеров в базу stopforumsapm.com
— Периодическая проверка по расписанию всех пользователей по базе stopforumsapm.com
— Возможность автоматического удаления найденных спамеров по расписанию или в ручном режиме
— Удобная панель настройки без необходимости правки конфигов

Получить скидку
Сообщить о проблеме или ошибке

Новое во фронтенде в альфа версии LiveStreet

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

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

Новогодняя альфа

Первым делом хотим поздравить всех с наступающим Новым 2015 Годом! Прошлый год выдался не простым, как для страны в целом, так и для LS ) Нам не удалось полностью выполнить намеченные планы, а именно, выпустить стабильный релиз LS 2.0. Но мы провели достаточно большую работу и довели разработку до альфа версии, которую и хотим сегодня презентовать.

Почему она альфа? Альфа, т.к. не успели зафиксировать все необходимые правки по frontend'у, который претерпел значительные изменения (подробнее в отдельном посте — livestreet.ru/blog/dev_livestreet/17706.html). В остальном функционал достаточно устаканившийся, но требует тестирование и мелкие фиксы.

Ниже список основных новых возможностей альфы LS относительно LS 1.0:

  • Новая структура файлов/каталог движка. Фреймворк полностью отделен от приложения.
  • Механизм универсальных категорий. Возможность привязки категорий к разным объектам.
  • Механизм дополнительных полей (EAV) для различных объектов
  • Универсальный механизм управления медиа-файлами
  • Управление типами топиков и их кастомизация
  • Встроенная поддержка превью для топиков
  • Возможность вставлять в топик несколько опросов
  • Система управления правами пользователей
  • Центральный крон
  • Новый удобный механизм загрузки фото и аватара пользователя
  • Поддержка жалоб на пользователей
  • Новый продвинутый поиск пользователей
  • Упрощения системы рейтинга
  • Поиск по сайту «из коробки» (без sphinx)
  • Новый поиск блогов
  • Категории для блогов
  • Возможность постить топики в несколько блогов
  • Опционально каптча при авторизации
  • Новый инсталлятор
  • Возможность запустить процесс обновления LS из консоли (для крупных проектов)
  • Упрощена навигация по топикам
  • Официальная админ-панель (отдельный плагин в комплекте)
  • Редактирование комментариев
  • Поддержка мульти-авторизаций для пользователей (можно одновременно логиниться с разных браузеров)
  • Поддержка работы через https, в том числе принудительное использование для страниц регистрации/авторизации
  • Возможность расширения эвентов отдельными классами
  • Существенная доработка ORM
  • Возможность не только переопределять файлы шаблона, но и наследовать их
  • Для плагинов теперь не обязательно дублировать tpl файлы для всех шаблонов. Можно их все держать в шаблоне default, а в конкретный шаблон копировать только измененные
  • Поддержка разных конфигов для разных окружений
  • Конфиги плагинов теперь можно переопределять в каталоге с главным конфигом (/application/config/plugins/[plugin_name]/config.php)
  • Удобный механизм интеграции плагинов в админ-панель — управление конфигом и собственный функционал
  • Новый модуль кеширования и логирования
  • Новый модуль для работы с изображениями
  • Поддержка миграций для плагинов
  • Весь код отформатирован под PSR-2
  • Большое число мелких фиксов и улучшений ядра
  • Переработанный фронт

Самое главное! Скачать альфу можно по ссылке — livestreetcms.com/download/get-alfa/
Дополнительно мы сделали ежедневную ночную сборку девел версии, специально для самых ативных тестеров. Скачать ее можно здесь.
Демо версия доступна на сайте — alfa.demo.livestreetcms.com

Админ-панель сейчас может отображаться не совсем корректно — она еще не адаптирована к новым стилям/компонентам ядра. Не пугайтесь )

Еще раз всех с наступающим Новым Годом!

Плагин "Journal Page"

Давно подумывал сделать плагин, который выводил бы блоки с топиками из указанных блогов (для каждого блога отдельный блок с его топиками): просто иногда хочется разнообразить вывод топиков и такой плагин был бы очень кстати.

С последним же релизом плагина «Main Page» данная идея переросла в нечто большее, появилось немного свободного времени и в результате получился плагин «Journal Page».

Плагин представляет собой расширенную и дополненную версию плагина «Main Page», в нем так же создается новая страница, которую можно использовать в качестве главной страницы сайта, но здесь уже присутствует и набор блоков, которые можно выводить на этой странице.

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

CAS-сервер - единая авторизация для LiveStreet сайтов


CAS-сервер позволяет организовать единую точку авторизации (паспорт) ваших проектов на LiveStreet CMS. Ранее функционал обсуждался в топиках livestreet.ru/blog/16980.html и livestreet.ru/blog/17422.html
В комплекте идет плагин и полностью готовый к установке сайт CAS-сервера, шаблон которого реализован на Bootstrap. Подробнее от настройке будет ниже.

Как это работает
1. При попытке авторизации/регистрации пользователя на одном из ваших сайтов, он перенаправляется на сайт CAS-сервера.
2. После успешной авторизации/регистрации пользователь автоматически перенаправляется обратно на ваш сайт
3. Регистрация пользователя происходит только в БД того сайта, от куда он пришел и дополнительно в БД CAS-сервера
4. Если пользователь авторизовывается на сайте, где у него еще нет аккаунта, но есть аккаунт на другом вашем сайте, то будет произведена автоматическая регистрация на сайте с последующей авторизацией

Логика работы единой авторизации похожа на авторизацию на этом сайте, где весь процесс проходит через сайт passport.livestreetcms.com (происходит автоматическая регистрация/авторизация на 3-х сайтах).

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

Плагин «Черный список» (обновление 27.10.2015)

Описание

Проверка E-Mail и IP пользователей на наличие в базах спамеров (stopforumspam.org, botscout.com, fspamlist.com). Проверка осуществляется при регистрации и авторизации пользователей.

GitHub: github.com/wasja1982/livestreet_blacklist

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

Механизм обновления плагинов

В новой версии мы внедрили функционал миграций (обновлений) для плагинов. Функционал позволит разработчикам удобно выполнять обновления своих плагинов, в особенности, если эти обновления затрагивают изменения базы данных.

Как это работает
Пользователь заливает новую версию плагина в каталог /plugins/. Система сравнивает текущую версию плагина с версией этого плагина в БД. И если версия в БД старее, то в админке появляется кнопка «Применить обновление», которая автоматически запустит необходимые скрипты для обновления.


Скрипты (классы) для обновления у плагина находятся в каталоге /update/, который в свою очередь содержит каталоги с номерами версий. Для каждой версии можно создать несколько скриптов с произвольным названием, главное, что нужно помнить — названия файлов должно быть уникальным в рамках всего плагина для всех его версий.
Файл с обновлением представляет собой класс наследник от базового класса ModulePluginManager_EntityUpdate и название класса является производным от имени файла — Plugin[plugin_name]_Update_[file_name]. Например, для файла /update/1.0/CreateTable.php класс будет таким:
<?php

class PluginArticle_Update_CreateTable extends ModulePluginManager_EntityUpdate {
	/**
	 * Выполняется при обновлении версии
	 */
	public function up() {
		if (!$this->isTableExists('prefix_article')) {
			/**
			 * При активации выполняем SQL дамп
			 */
			$this->exportSQL(Plugin::GetPath(__CLASS__).'/dump.sql');
		}
	}

	/**
	 * Выполняется при откате версии
	 */
	public function down() {
		$this->exportSQLQuery('DROP TABLE prefix_article;');
	}
}

Как видно из примера, класс содержит два метода up и down. Первый выполняется при обновлении до версии, второй при откате версии. В этих методах может быть не только работа с БД, но и другая необходимая для обновления логика.

При удалении плагина из админки выполняется автоматический откат всех изменений всех версий (метод down).
Данный поход позволит «разгрузить» у плагинов методы Activate и Deactivate от лишней логики и дать удобный механизм обновления версий. Для корректной работы данного механизма, необходимо версии плагинов именовать используя вот этот стандарт — ru2.php.net/manual/ru/function.version-compare.php, он позволит правильно сортировать версии.

RBAC - управление правами на основе ролей

В новой версии появился новый модуль Rbac — модуль управления правами на основе ролей и разрешений (RBAC).
Суть его сводится к тому, что теперь в админке можно создавать различные роли, давать ролям необходимые права (разрешения) и назначать эти роли пользователям. Роли могут наследовать от других ролей. Таким образом можно очень гибко настраивать систему управления правами.



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

Центральный крон

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



В системный cron на сервере необходимо добавить скрипт — /application/utilities/cron/main.php с периодом 1 раз в 2 минуты.
Далее в специальном интерфейсе в админке можно управлять списком задач. По умолчанию созданы две задачи — очистка старого кеша и рассылка отложенных емайл сообщений. Там же можно в ручном режиме добавить новую задачу, в качестве вызываемого метода указывается полный синтаксис вызова метода модуля.

Центральный крон может работать в двух режимах — последовательное выполнение задач и параллельное (fork). Параллельный режим пока работает в тестовом режиме, т.к. до конца не протестирован. Выставляется режим в конфиге: $config['module']['cron']['use_fork'] = false;

Плагины могут добавлять в крон свои задачи. Для этого в главной файле плагина достаточно прописать специальные вызовы при активации и деактивации плагина.

public function Activate() {
    $this->Cron_CreateTask('Тестовая задача','PluginArticle_Main_RunTest',6,$this);
    return true;
}

public function Deactivate() {
    $this->Cron_RemoveTasksByPlugin($this);
    return true;
}

Новый функционал фреймворка - поведения (behavior)

В новой версии LS 2.0 появится функционал поведений (behaviors), который очень поход на подобный в Yii.
Суть сводится к тому, что теперь определенному типу объектов (пользователи, топики, блоги и т.п.) или конкретному объекту можно назначить через поведения определенный новый функционал.
Добавить новое поведение в объект достаточно просто, можно у объекта определить свойство $aBehaviors. Например:
	protected $aBehaviors=array(
		'category'=>'ModuleCategory_BehaviorCategory',
		'property'=>array(
			'class'=>'ModuleProperty_BehaviorPropertyEntity',
	        	'target_type'=>'article'
		)
	);

В этом примере добавляются два поведения — категории и дополнительные поля. В качестве ключа используется название поведение (далее по этому ключу можно обращаться к поведению), а в качестве значения идут параметры. Параметры идут произвольным массивом имя/значение, 'class' — это служебный параметр, означающий класс поведения. Если у повеления нет параметром, то его можно записать в короткой форме (смотри 'category'). Альтернативным (скорее дополнительным) способом добавления поведения является прямой вызов метода AttachBehavior, например:
$oTopic->AttachBehavior('property','ModuleProperty_BehaviorPropertyEntity');

// далее можно убрать поведение
$oTopic->DetachBehavior('property');


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