Чиним Пост-Опрос, Пост-Фотосет и Пост-Ссылка

Как вы уже заметили на 1.0.3 не работают «Пост-Опрос, Пост-Фотосет и Пост-Ссылка»

Чиним так. В файле: /classes/modules/topic/entity/Topic.entity.class.php

Заменить функции на вот эти:(Извеняйте, что не описал что именно менять, тут лимит стоит 15000. Но там всё идёт по порядку. Найдите начало и конец, и замените на этот код)
/**
     * Извлекает сериализованные данные топика
     */
    protected function extractExtra() {

        if (null === $this->aExtra) {
            $aData = @unserialize($this->getExtra());
            if (is_array($aData)) {
                $this->aExtra = $aData;
            }
        }
    }

    /**
     * Устанавливает значение нужного параметра
     *
     * @param string $sName    Название параметра/данных
     * @param mixed  $data     Данные
     */
    protected function setExtraValue($sName, $data) {

        $this->extractExtra();
        $this->aExtra[$sName] = $data;
        $this->setExtra($this->aExtra);
    }

    /**
     * Извлекает значение параметра
     *
     * @param string $sName    Название параметра
     *
     * @return null|mixed
     */
    protected function getExtraValue($sName) {

        $this->extractExtra();
        if (isset($this->aExtra[$sName])) {
            return $this->aExtra[$sName];
        }
        return null;
    }

    /* *** ******************** *** */
    /* *** SOURCE LINK OF TOPIC *** */

    /**
     * Returns URL of topic's source link
     *
     * @param bool $bShort    Shorten URL
     *
     * @return null|string
     */
    public function getSourceLink($bShort = false) {

        if ($sUrl = $this->getExtraValue('url')) {
            if ($bShort) {
                $sUrl = htmlspecialchars($sUrl);
                if (preg_match('/^https?:\/\/(.*)$/i', $sUrl, $aMatch)) {
                    $sUrl = $aMatch[1];
                }
                $sUrlShort = substr($sUrl, 0, 30);
                if (strlen($sUrlShort) != strlen($sUrl)) {
                    return $sUrlShort . '...';
                }
                return $sUrl;
            } else {
                if (!preg_match('/^https?:\/\/(.*)$/i', $sUrl, $aMatch)) {
                    $sUrl = 'http://' . $sUrl;
                }
            }
            return $sUrl;
        }
        return null;
    }

    /**
     * Set URL of topic's source link
     *
     * @param string $data
     */
    public function setSourceLink($data) {

        $this->setExtraValue('url', strip_tags($data));
    }

    /**
     * Возвращает количество переходов по ссылке в топике-ссылке
     *
     * @return int
     */
    public function getSourceLinkCountJump() {

        return (int)$this->getExtraValue('count_jump');
    }

    /**
     * Устанавливает количество переходов по ссылке в топике-ссылке
     *
     * @param string $data
     */
    public function setSourceLinkCountJump($data) {

        $this->setExtraValue('count_jump', $data);
    }

    /* *** ********************** *** */
    /* *** QUESTIONNAIRE OF TOPIC *** */

    /**
     * Устанавливает вопрос
     *
     * @param string $data
     */
    public function setQuestionTitle($data) {

        $this->setExtraValue('question_title', $data);
    }

    /**
     * Возвращает вопрос, если вопрос не указан - заголовок топика
     *
     * @return int|null
     */
    public function getQuestionTitle() {

        if ($this->getExtraValue('question_title')) {
            return $this->getExtraValue('question_title');
        }
        return $this->getTitle();
    }

    /**
     * Добавляет вариант ответа в опросе топика
     *
     * @param string $data
     */
    public function addQuestionAnswer($data) {

        $this->extractExtra();
        $this->aExtra['answers'][] = array('text' => $data, 'count' => 0);
        $this->setExtra($this->aExtra);
    }

    /**
     * Очищает варианты ответа в опросе топика
     */
    public function clearQuestionAnswer() {

        $this->setExtraValue('answers', array());
    }

    /**
     * Возвращает варианты ответа в опросе топика
     *
     * @param bool $bSortVote
     *
     * @return array|null
     */
    public function getQuestionAnswers($bSortVote = false) {

        $aAnswers = $this->getExtraValue('answers');
        if ($aAnswers && $bSortVote) {
            uasort(
                $aAnswers, create_function(
                    '$a,$b',
                    "if (\$a['count'] == \$b['count']) { return 0; } return (\$a['count'] < \$b['count']) ? 1 : -1;"
                )
            );
        }
        return $aAnswers ? $aAnswers : array();
    }

    /**
     * Увеличивает количество ответов на данный вариант в опросе топика
     *
     * @param int $sIdAnswer  ID варианта ответа
     */
    public function increaseQuestionAnswerVote($sIdAnswer) {

        if ($aAnswers = $this->getQuestionAnswers()) {
            if (isset($aAnswers[$sIdAnswer])) {
                $aAnswers[$sIdAnswer]['count']++;
                $this->aExtra['answers'] = $aAnswers;
                $this->setExtra($this->aExtra);
            }
        }
    }

    /**
     * Возвращает максимально количество ответов на вариант в опросе топика
     *
     * @return int
     */
    public function getQuestionAnswerMax() {

        $aAnswers = $this->getQuestionAnswers();
        $iMax = 0;
        foreach ($aAnswers as $aAns) {
            if ($aAns['count'] > $iMax) {
                $iMax = $aAns['count'];
            }
        }
        return $iMax;
    }

    /**
     * Возвращает в процентах количество проголосовавших за конкретный вариант
     *
     * @param int $sIdAnswer ID варианта
     *
     * @return int|string
     */
    public function getQuestionAnswerPercent($sIdAnswer) {

        if ($aAnswers = $this->getQuestionAnswers()) {
            if (isset($aAnswers[$sIdAnswer])) {
                $iCountAll = $this->getQuestionCountVote() - $this->getQuestionCountVoteAbstain();
                if (!$iCountAll == 0) {
                    return number_format(round($aAnswers[$sIdAnswer]['count'] * 100 / $iCountAll, 1), 1, '.', '');
                }
            }
        }
        return 0;
    }

    /**
     * Возвращает общее число принявших участие в опросе в опросе топика
     *
     * @return int
     */
    public function getQuestionCountVote() {

        return (int)$this->getExtraValue('count_vote');
    }

    /**
     * Устанавливает общее число принявших участие в опросе в опросе топика
     *
     * @param int $data
     */
    public function setQuestionCountVote($data) {

        $this->setExtraValue('count_vote', $data);
    }

    /**
     * Возвращает число воздержавшихся от участия в опросе
     *
     * @return int
     */
    public function getQuestionCountVoteAbstain() {

        return (int)$this->getExtraValue('count_vote_abstain');
    }

    /**
     * Устанавливает число воздержавшихся от участия в опросе
     *
     * @param int $data
     *
     * @return mixed
     */
    public function setQuestionCountVoteAbstain($data) {

        $this->setExtraValue('count_vote_abstain', $data);
    }
/**
	 * Возвращает фотографии из топика-фотосета
	 *
	 * @param int|null $iFromId	ID с которого начинать  выборку
	 * @param int|null $iCount	Количество
	 * @return array
	 */
	public function getPhotosetPhotos($iFromId = null, $iCount = null) {
		return $this->Topic_getPhotosByTopicId($this->getId(), $iFromId, $iCount);
	}
	/**
	 * Возвращает количество фотографий в топике-фотосете
	 *
	 * @return int|null
	 */
	public function getPhotosetCount() {
		return $this->getExtraValue('count_photo');
	}
	/**
	 * Возвращает ID главной фото в топике-фотосете
	 *
	 * @return int|null
	 */
	public function getPhotosetMainPhotoId() {

        $oImage = $this->getPhotosetMainPhoto();
        if ($oImage) {
            return $oImage->getMresourceId();
        }

        return $this->getExtraValue('main_photo_id');
    }
	/**
	 * Устанавливает ID главной фото в топике-фотосете
	 *
	 * @param int $data
	 */
	public function setPhotosetMainPhotoId($iPhotoId) {

        $this->setExtraValue('main_photo_id', $iPhotoId);
        $this->setProp('_photoset_photos', null);
    }
	/**
	 * Устанавливает количество фотографий в топике-фотосете
	 *
	 * @param int $data
	 */
	public function setPhotosetCount($iCount) {

        $this->setExtraValue('count_photo', $iCount);
        $this->setProp('_photoset_photos', null);
    }

Не дадим 1.0.3 умереть!

ссылка на вставку видео tinyMCE

Доброго времени всем!

Долго шарился в просторах интернета, чтобы найти более менее удобный для ОБЫЧНЫХ пользователей редактор. Пытался интегрировать tinyMCE 4 и ckeditor старый. Первый полу рабочий оказался, а второй еще старее стандартного.
На ЛС сайте так и не нашел не одного решения на самые актуальные проблема с редактором. Как так?? 2017 год заканчивается как бы.
В общем интегрировать новый редактор желание пропало. Прошу помощи в следующем:
Как сменить тип ссылки с HTML на обычный URL(с адресной строки) при вставке видео в стандартном tinyMCE на LS 1.0.3?
Запустил тестом сайт, и 40% пользователей понятия не имеют что такое HTML ссылка с видео.

Заранее благодарю.

Код:

public function VideoParser($sText) {
		/**
		 * youtube.com
		 */
		$sText = preg_replace('/<video>http:\/\/(?:www\.|)youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)(&.+)?<\/video>/Ui', '<iframe width="560" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', $sText);

Фон сайта ссылкой.

Всем добра.В полку любителей Livestreet прибыло.И вот возник вопрос по поводу как сделать фон сайта ссылкой.

Фон поменял с помощью

{if $sAction=='blogs' }
style="
background: url(link) 50% 0 repeat;
" {/if}

Для того что бы сделать ссылкой использую js script из admixer.(Файл шаблона можно скачать admixer.net/ru/creatives/adformats/branding Файл шаблон-пример

Подробности

Ссылка на создание топика в определенном блоге

Добрый день. Необходимо на сайте повесить баннер с ссылкой на создание топика в конкретном блоге. Какой урл указать этому баннеру? Или тут всё сложнее чем просто урл? Если всё не так просто, может кто-то сможет помочь за вознаграждение, тогда пишите в личку сколько это будет стоить.

Просьба к разработчикам плагинов

Ребята, я понимаю что даже на разработку бесплатных плагинов вы тратите свое время и силы но давайте в следующей версии LS-2 предусмотрим отдельный раздел для ссылок на ваши сайты (копирайты), а то в данный момент получается полная каша из кучи ссылок в футере что смотрится крайне не презентабельно, стоит только установить на свой сайт 5-10 необходимых плагинов, а если больше? В общем этот момент тоже стоит проработать.
Либо давать единую одну ссылку на каталог расширений на сайте Livestreet.

Как сделать перенаправление с заголовка поста-ссылки?

Здравствуйте.
Используются шаблоны synio и mobile. Как сделать так, чтобы при нажатии на заголовок поста-ссылки происходило перенаправление на саму ссылку?
Т.е. юзер видит пост-ссылку, нажимает на заголовок — и перемещается по ссылке, а чтобы открыть комментарии, нажимает на дату и время поста.

В topic.entity.class.php вижу следующий код:
/**
	 * Возвращает URL для топика-ссылки
	 *
	 * @param bool $bShort	Укарачивать урл или нет
	 * @return null|string
	 */
public function getLinkUrl($bShort=false) {
		if ($this->getType()!='link') {
			return null;
		}

		if ($this->getExtraValue('url')) {
			if ($bShort) {
				$sUrl=htmlspecialchars($this->getExtraValue('url'));
				if (preg_match("/^https?:\/\/(.*)$/i",$sUrl,$aMatch)) {
					$sUrl=$aMatch[1];
				}
				$sUrlShort=substr($sUrl,0,30);
				if (strlen($sUrlShort)!=strlen($sUrl)) {
					return $sUrlShort.'...';
				}
				return $sUrl;
			}
			$sUrl=$this->getExtraValue('url');
			if (!preg_match("/^https?:\/\/(.*)$/i",$sUrl,$aMatch)) {
				$sUrl='http://'.$sUrl;
			}
			return $sUrl;
		}
		return null;
	}


Как бы его подставить в значение ссылки для заголовка топика?

Баг LS с ссылками в нумерации страниц во вкладке /tag/

Помогите вылечить баг с ссылками в тегах
например есть тег — "А#Б" через #, в ссылках тег будет выглядеть так — .../tag/A%23Б/…

но в нумерации начиная со второй страницы так — .../tag/А#Б/page2/… и естественно браузер # ни другие спецсимволы не воспринимает а ЛС поймет что это один тег — обрубленный «А», как излечить это зло?

Как превратить ссылку в .../tag/A%23Б/page2/…

Не работают ссылки в хуке

Добавляю хук (из ActionIndex) в плагине:
$this->AddHook("topics_list_show", "Prepend");

Добавляю метод:
function Prepend($aTopics) {
    $a = $aTopics["aTopics"];
    $a[] = array_shift(array_values($a)); // типа первый элемент добавляем в конец
    $aTopics["aTopics"] = $a;
}

Никаких изменений. Может так:
function Prepend(&$aTopics) {
    $a = $aTopics["aTopics"];
    $a[] = array_shift(array_values($a)); // типа первый элемент добавляем в конец
    $aTopics["aTopics"] = $a;
}

нет, тоже самое. И даже так:
function Prepend($aTopics) {
    $aTopics["aTopics"] = "";
}

ничего не меняется. Но если в ActionIndex.class.php изменить:
$this->Hook_Run('topics_list_show',array('aTopics'=>$aTopics));

на:
$this->Hook_Run('topics_list_show',array('aTopics'=>&$aTopics));

то все работает (копия первого топика добавляется в конец)!

В чем подвох?