Вставка видео через ссылку (Готовое решение)

Поддержка видео для таких сайтов как:
  • youtube.com
  • vimeo.com
  • rutube.ru
  • coub.com
  • ok.ru
  • vk.com
  • dailymotion.com

Для: LS 1.0.3

В /engine/modules/text/Text.class.php

Меняем функцию public function VideoParser($sText)

На это:
public function VideoParser($sText) {
		
		// Размеры и атрибуты окна вставленного видео.
        $iWidth = 620;
        $iHeight = 360;
        $iAlign = "center";
        $sIframeAttr = 'frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen="allowfullscreen"';
		
		/**
         * youtu.be fixed
         */
        $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|m.|)youtu\.be\/([a-zA-Z0-9_\-]+)(&.+)?<\/video>/Ui',
            '<div align="'.$iAlign.'"><iframe src="//www.youtube.com/embed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
			$sText
		);
		/**
         * vimeo.com fixed
         */
        $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)vimeo\.com\/(\d+).*<\/video>/i',
            '<div align="'.$iAlign.'"><iframe src="//player.vimeo.com/video/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>',
            $sText
        );
		/**
         * rutube.ru fixed
         */
        $sText = preg_replace(
            '/<video>http(?:s|):\/\/(?:www\.|)rutube\.ru\/tracks\/(\d+)\.html.*<\/video>/Ui',
            '<div align="'.$iAlign.'"><iframe src="//rutube.ru/play/embed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>',
            $sText
        );
        $sText = preg_replace(
            '/<video>http(?:s|):\/\/(?:www\.|)rutube\.ru\/video\/(\w+)\/?<\/video>/Ui',
            '<div align="'.$iAlign.'"><iframe src="//rutube.ru/play/embed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>',
            $sText
        );
		/**
	    * coub.com fixed
	    */
	    $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)coub\.com\/view\/(\w+).*<\/video>/i', 
		    '<div align="'.$iAlign.'"><iframe src="//coub.com/embed/$1?muted=false&autostart=false&originalSize=false&hideTopBar=false&noSiteButtons=false&startWithHD=false" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
		/**
	    * ok.ru fixed
	    */
	    $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)ok\.ru\/video\/(\w+).*<\/video>/i', 
		    '<div align="'.$iAlign.'"><iframe src="//ok.ru/videoembed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
		/**
	    * vk.com HASH not working, embeded link only
	    */
		$sText = preg_replace(
		    '/<video>(https:\/\/(?:www\.|)vk\.com\/video_ext\.php.*)<\/video>/i', 
			'<div align="'.$iAlign.'"><iframe src="$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
            /**
	    * dailymotion.com fixed
	    */
	    $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)dai\.ly\/(\w+).*<\/video>/i', 
		    '
<div align="'.$iAlign.'"><iframe src="//dailymotion.com/embed/video/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
		return $sText;
	}

Конечно же в /config/jevix.php добавляем нехватающие сайты.

Свои параметры сюда:
// Размеры и атрибуты окна вставленного видео.
        $iWidth = 620;
        $iHeight = 360;
        $iAlign = "center";
        $sIframeAttr = 'frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen="allowfullscreen"';


Готово!

LsGallery + Mobile Template [FIX]

Эта штука лечит «пустой экран», когда у Вас включена мобильная тема и плагин Галерея…

/plugins/lsgallery/classes/hooksHookGallery.class.php (~ 20 строка), комментим вызов ProfileUserMarked. После этого начинает работать (сайт видно), но остаются еще глюки, давайте разбираться вместе…

    public function RegisterHook()
    {
        // $this->AddHook('template_profile_sidebar_menu_item_first', 'ProfileUserMarked');

...

Тонкая настройка почты

Столкнулся с тем, что при добавлении топиков, происходят достаточно сильные тормоза. После проведённого анализа выяснилось, что проблема тормозов ПОЧТА. При публикации топика происходит рассылка по всем пользователям, которые имеют отношение к блогу, в который происходит размещение материала.

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

В конфиге config/config.local.php добавляем следующие настройки

// Указывает на необходимость использовать режим отложенной рассылки сообщений на email
$config['module']['notify']['delayed'] = true;
// Если опция установлена в true, систему будет собирать записи заданий удаленной публикации, для вставки их в базу единым INSERT
$config['module']['notify']['insert_single'] = true;
// Количество отложенных заданий, обрабатываемых одним крон-процессом
$config['module']['notify']['per_process'] = 10;


Далее исправляем файл classes/modules/notify/Notify.class.php

Находим в нём функцию

public function Send($oUserTo,$sTemplate,$sSubject,$aAssign=array(),$sPluginName=null) {


В этой функции находим строчку

if(Config::Get('module.notify.delayed')) {


И заменяем её на

$isNotifyDelayed = Config::Get('module.notify.delayed');
if (($sTemplate == "notify.registration_activate.tpl") || ($sTemplate == "notify.registration.tpl") || ($sTemplate == "notify.reactivation.tpl") || ($sTemplate == "notify.reminder_code.tpl") || ($sTemplate == "notify.reminder_password.tpl")) { $isNotifyDelayed = false; }
if($isNotifyDelayed) {


PS: Возможно разместил топик не в тот блог, но в другие писать к сожалению не могу. Видимо не хватает рейтинга или силы.

Небольшое дополнение:
Кто-то может забыть, поэтому напоминаю, что необходимо по крону запускать скрипт include/cron/notify.php

есть 2 варианта запуска.

1. используя HTTP.

для этого необходимо поправить .htaccess в папке include/cron/
содержание должно быть

Order Deny,Allow
Deny from all
Allow from XXX.XXX.XXX.XXX


вместо XXX.XXX.XXX.XXX укажите IP, с которого будет производиться HTTP запрос.
и в крон можно внести следующую запись

*/5 * * * *   wget -O- http://www.livestreet.ru/include/cron/notify.php >> /dev/null


2. либо из консоли.

и в крон можно внести следующую запись

*/5 * * * *   /usr/bin/php /vhosts/site.ru/www/include/cron/notify.php


Пути указывайте в соответствии с настройками вашего сервера.

Фикс безопасности в LiveStreet 0.5.1

Новый Год не всегда приносит радостные эмоции и отличные подарки, иногда сюрпризы более мрачные.
В LiveStreet 0.5.1 в фото-сетах обнаружена XSS уязвимость.

Патч, исправляющий баг, здесь — github.com/livestreet/livestreet/commit/c5b8e20d0ec380c2f2222fa266261d22dc36f926
Либо можно просто повторно скачать архив с LS от сюда — livestreetcms.com/download/ (архив обновлен)

Настоятельно рекомендуем требуем выполнить обновление.

Исправления для модуля "DokuWiki integration" + обновление DokuWiki

Исправляем досадный баг с совпадающими именами и id-шниками сессий у DokuWiki и LiveStreet. Выглядело это так что сайт переставал отвечать на запросы пока не очистим куки или пока не разорвем сессию. (кстати тут и вина PHP есть т.к. ее поведение при возникновении этой ситуации не очень забавное, надо бы багрепорт оформить)
Обновляем DokuWiki до последней стабильной версии.

Нам понадобятся:
0. LiveStreet 0.4.2
1. Плагин DokuWiki integration
2. Свежая и стабильная сборка DokuWiki (на данный момент это Release 2011-05-25 «Rincewind»)

Последовательность:
1. Устанавливаете плагин «DokuWiki integration».
2. Переименовываете папку wiki в wiki_old
3. Создаем папку wiki и копируем в нее свежую DokuWiki
4. В папке wiki удаляем папки conf и data
5. Копируем в папку wiki папки conf и data из папки wiki_old
6. В папку wiki/inc/auth/ копируем файл livestreet.class.php из папки wiki_old/inc/auth/
7. В папку wiki/lib/tpl/ копируем папку livestreet из папки wiki_old/lib/tpl/
8. В файл wiki/doku.php в самом начале после "<?php" добавляем
if ($_SERVER['REQUEST_METHOD'] == 'GET' && !$_SERVER['HTTP_REFERER'])
{
        $_SERVER['HTTP_REFERER'] = 'http://' . $_SERVER['HTTP_HOST'] .'/wiki/';
}

9. Правим файл wiki/inc/load.php

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

Два исправления для плагина Pokupalka (версия под ls 0.4.2)

1. Исправляет не верный подсчет кол-ва объявлений в категориях.


Не верный подсчет кол-ва объявлений в категориях
Товар был добавлен в категорию «Компьютерная техника» в кол-ве одна штука.
Предыстория проблемы была описана тут: livestreet.ru/blog/addons/7073.html#comment118191

В файле /plugins/pokupalka/classes/modules/pokupalka/Pokupalka.class.php

функцию

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

Прикручиваем 3 Smarty к LS. Продолжение.

Оригинальная статья, которая подтолкнула меня к этому топику: Прикручиваем 3 Smarty к LS

Так как не только у меня возникли проблемы даже после проделывания всех инструкций, я решил исследовать проблему. И похоже у меня получилось решить ее. Так как комментарий получился бы большой, то я решил вынести это в отдельный топик.

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

Alpha канал при закруглении углов

Вот тут как-то писалось про закруглённые углы, но были и есть проблемы с альфой, белый цвет вместо прозрачности.
Рыл не долго, строка: 481, в файле: engine\lib\external\LiveImage\Image.php


$trans = imagecolorallocatealpha($corner, 255, 255, 255, 0);


нужно просто заменить на:


$trans = imagecolorallocatealpha($corner, 255, 255, 255, 127);


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

Обновление плагина "Static page"

Вышло обновление плагина управления статическими страницами для LiveStreet 0.4 — «Static page» 1.0.1.
Исправлена критическая ошибка при создании новой страницы.

Обновится можно двумя способами:
Скачать новую версию плагина
— Самостоятельно внести изменения в плагин: [873:882]