Автор: Zenden
icq: 590-700-200
Описание: Локальная галерея
Если вам понравился мод можете отблагодарить автора яндекс деньги 410011534461433

/////////////////////////////////////////////////
Открыть config.php
найти
// Group avatars
$bb_cfg['group_avatars'] = array(
	'allowed_ext' => array('gif','jpg','jpeg','png'), // разрешенные форматы файлов
	'max_size'    => 300*1024,                        // размер аватары в байтах
	'max_height'  => 300,                             // высота аватара в px
	'max_width'   => 300,                             // ширина аватара в px
	'no_avatar'   => 'gallery/noavatar.png',          // дефолтная аватара
	'upload_path' => BB_ROOT . 'data/avatars/',       // путь к директории с аватарами
	'up_allowed'  => true,                            // разрешить загрузку аватар
);

после вставить
// Gallery
$bb_cfg['imgs'] = array(
	'allowed_ext' 	=> array('gif','jpg','jpeg','png'),	// разрешенные форматы файлов
	'max_size'    	=> 5*1024*1024,						// размер изображения в байтах
	'max_height'  	=> 3000,							// высота изображения в px
	'max_width'   	=> 3000,							// ширина изображения в px
	'upload_path' 	=> 'data/pictures',					// путь к директории с изображениями
	'up_allowed'	=> true,							// разрешить загрузку изображений
	'thumb_height'	=> 200,								// высота для миниатюр
	'delete_img'	=> true,							// удалять картинку, при удалении топика или поста
);

/////////////////////////////////////////////////
Открыть main.php (языковые переменные)
В самом низу вставить
//Глерея, автор Zenden
$lang['GALLERY'] = 'Галерея';
$lang['ALLOWED_EXT'] = 'разрешенные форматы файлов';
$lang['MAX_SIZE'] = 'размер изображения в байтах';
$lang['MAX_HEIGHT'] = 'высота изображения в px';
$lang['MAX_WIDTH'] = 'ширина изображения в px';
$lang['SCREENSHOTS'] = 'Скриншоты';
$lang['DEL_IMGS'] = 'Изображение будет удалено вместе с миниатюрой';
$lang['CREATE_THUMBNAIL'] = 'Создать миниатюру';
$lang['UPLOAD_IMAGE'] = 'Загрузить';
$lang['SELECT_IMGS'] = 'Для загрузки нескольких изображений удерживайте кнопку Ctrl';
$lang['THUMB_HEIGHT'] = 'высота для миниатюр';

/////////////////////////////////////////////////
Открыть: ajax.php

найти
		'post_mod_comment'  => array('mod'),

поле вставить
		'del_imgs'			=> array('mod'),

найти
	function sitemap()
	{
		require(AJAX_DIR .'sitemap.php');
	}
	
поле вставить
    function del_imgs()
    {
		$img = (string) $this->request['imgs'];
		$img = explode(', ', $img);

		foreach ($img as $data)
		{
			unlink($data);
		}
    }

/////////////////////////////////////////////////
Открыть function.php
найти

function get_avatar_path ($id, $ext_id, $base_path = null, $first_div = 10000, $sec_div = 100)
{
	global $bb_cfg;
	$base_path = isset($base_path) ? $base_path : $bb_cfg['avatars']['upload_path'];
	return get_path_from_id($id, $ext_id, $base_path, $first_div, $sec_div);
}

после вставить
function get_imgfile_path ($id, $ext_id, $name, $thumb = false)
{
	global $bb_cfg;
	$base_path = $bb_cfg['imgs']['upload_path'];
	$thumb  = $thumb ? '_thumb' : '';
	$ext = isset($bb_cfg['file_id_ext'][$ext_id]) ? $bb_cfg['file_id_ext'][$ext_id] : '';
	return "$base_path/$id/" . md5($name) . $thumb . ($ext ? ".$ext" : '');
}

/////////////////////////////////////////////////
Открыть function_upload.php

найти

		else if ($mode == 'attach')
		{
			$file_path = get_attach_path($params['topic_id']);
			return $this->_move($file_path);
		}

после вставить
		else if ($mode == 'imgfile')
		{
			$file_path = get_imgfile_path($params['user_id'], $this->file_ext_id, $params['user_id'].$this->file['name'].$this->file['size']);
			return $this->_move($file_path);
		}

В самом низу перед последней фигурной скобкой вставить
	function thumb ($path)
	{
		global $bb_cfg, $userdata;

		if (($bb_cfg['file_id_ext'][$this->file_ext_id] == 'jpg') OR ($bb_cfg['file_id_ext'][$this->file_ext_id] == 'jpeg'))
		{
			$img = imagecreatefromjpeg($path);
		}
		elseif ($bb_cfg['file_id_ext'][$this->file_ext_id] == 'png')
		{
			$img = imagecreatefrompng($path);
		}
		elseif ($bb_cfg['file_id_ext'][$this->file_ext_id] == 'gif')
		{
			$img = imagecreatefromgif($path);
		}

		$resize		= imagesy($img)/imagesx($img);
		$new_width	= $this->cfg['thumb_height']/$resize;
		$out_img	= get_imgfile_path($userdata['user_id'], $this->file_ext_id, $userdata['user_id'].$this->file['name'].$this->file['size'], true);
		$img_create	= imagecreatetruecolor($new_width, $this->cfg['thumb_height']);

		imagecopyresampled($img_create, $img, 0, 0, 0, 0, $new_width, $this->cfg['thumb_height'], imagesx($img), imagesy($img));

		if (($bb_cfg['file_id_ext'][$this->file_ext_id] == 'jpg') OR ($bb_cfg['file_id_ext'][$this->file_ext_id] == 'jpeg'))
		{
			imagejpeg($img_create, $out_img, 75);
		}
		elseif ($bb_cfg['file_id_ext'][$this->file_ext_id] == 'png')
		{
			imagepng($img_create, $out_img);
		}
		elseif ($bb_cfg['file_id_ext'][$this->file_ext_id] == 'gif')
		{
			imagegif($img_create, $out_img);
		}

		imagedestroy($img);
		imagedestroy($img_create);
	}

	/////////////////////////////////////////////////
Открыть function_admin.php

найти
// Get topics count
	$row = DB()->fetch_row("SELECT COUNT(*) AS topics_count FROM $tmp_delete_topics");

	ниже вставить
	if ($bb_cfg['imgs']['delete_img']) 
	{
		$data = DB()->fetch_row("
			SELECT ph.post_html
			FROM $tmp_delete_topics tmp
			LEFT JOIN ". BB_POSTS ." p USING(topic_id)
			LEFT JOIN ". BB_POSTS_HTML ." ph ON(p.post_id = ph.post_id)
		");	

		preg_match_all('#<var.*?title="(.*?)"#', $data['post_html'], $links, PREG_SET_ORDER);

		foreach ($links as $k => $v)
		{
			if ($url = str_replace(FULL_URL, BB_ROOT, $v[1]))
			{	
				if (file_exists($url))
				{
					unlink($url);
				}
			}

			if ($url = str_replace('_thumb', '', $url))
			{
				if (file_exists($url))
				{
					unlink($url);
				}
			}

			$ext = substr(strrchr(basename($url), '.'), 1);
			$thumb = str_replace('.'.$ext, '_thumb.'.$ext, $url);

			if ($thumb)
			{
				if (file_exists($thumb))
				{
					unlink($thumb);
				}
			}
		}
	}

	найти
	// Deleted posts count
	$row = DB()->fetch_row("SELECT COUNT(*) AS posts_count FROM $tmp_delete_posts");

	ниже вставить

	if ($bb_cfg['imgs']['delete_img']) 
	{
		$data = DB()->fetch_row("
			SELECT ph.post_html
			FROM $tmp_delete_posts tmp
			LEFT JOIN ". BB_POSTS_HTML ." ph USING(post_id)
		");	
		preg_match_all('#<var.*?title="(.*?)"#', $data['post_html'], $links, PREG_SET_ORDER);

		foreach ($links as $k => $v)
		{
			if ($url = str_replace(FULL_URL, BB_ROOT, $v[1]))
			{	
				if (file_exists($url))
				{
					unlink($url);
				}
			}

			if ($url = str_replace('_thumb', '', $url))
			{
				if (file_exists($url))
				{
					unlink($url);
				}
			}

			$ext = substr(strrchr(basename($url), '.'), 1);
			$thumb = str_replace('.'.$ext, '_thumb.'.$ext, $url);

			if ($thumb)
			{
				if (file_exists($thumb))
				{
					unlink($thumb);
				}
			}
		}
	}