Перейти к публикации

Загрузка картинок пачками (Batch) при добавлении новости.


Рекомендованные сообщения

За такой модуль немалое!

Есть люди которые не зарабатывают денег на сайте, и посему 25 бачей за мод это немало, особенно если принять во внимание то что цена самого двига ненамного больше

Ссылка на сообщение
Поделиться на других сайтах

lifestar,

Ну, если у Вас уже есть не только рецепт , как приготовить чудо снадобье, а и сама панацея - может , паделитесь с софорумцами ? Тем более , что ,

вы блин сами можете такой же за пару часов написать.
Ссылка на сообщение
Поделиться на других сайтах

Вото вот

Просто тут к сожалению не все владеют PHP и то что для вас пустяк для некоторых непосильный труд!

я например специализируюсь в раскрутке

Ссылка на сообщение
Поделиться на других сайтах

Так оно и понятно . Истинные гуру ПХП не пользуютця чудесным ДЛЕ, но всё ищщут и ищщут. Недостатки, методы оптимизации, новые решения .. и всё время забывают найденное реализовать.

А знающие общие принцыпы, м в совершенистке владеющие Ctrl C + Сtrl V обмениваются мыслями об улучшкении, пожеланиями и иногда чегото сами там незначительно улучшают .

Кажнаму сваё

Ссылка на сообщение
Поделиться на других сайтах

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

/*****************************/

/* загружаем архив с фотками */

/*****************************/

// С локального компьютера

if (!$imageurl)

{

		   $images = $_FILES['file']['tmp_name'];

		   $images_name = $_FILES['file']['name'];

		   $images_size = $_FILES['file']['size'];

		   $img_name_arr = explode(".",$images_name);

		   $type		 = strtolower(end($img_name_arr));

		   if ($type!='zip') msg("error","Ошибка !!!","Файл должен быть архивом ZIP!", "java script:history.go(-1)");

		   if($image_size > (5000*1024)) msg("error","Ошибка !!!","Файл слишком большой! Максимальный размер: 50Мб", "java script:history.go(-1)");


		   if($images_name != "") $images_name  = totranslit(stripslashes($img_name_arr[0])).".".$type;


// Создаём папку с альбомом, для этого делаем запрос, чтобы получить последнее ID

	$row = $db->super_query("SELECT id FROM " . PREFIX . "_photo ORDER BY 'id' DESC LIMIT 0,1");

	$last_id = $row['id'];

	$new_id = $last_id+1;

	if (!is_dir(ROOT_DIR."/img/photo/".$new_id))

		@mkdir (ROOT_DIR."/img/photo/".$new_id, 0755);

	else

		msg("error","Ошибка !!!","Директория для этого фотоальбома под номером $new_id уже существует.", "java script:history.go(-1)");

	$current_photo_dir = ROOT_DIR.'/img/photo/'.$new_id;


			@move_uploaded_file($images, $current_photo_dir.'/'.$images_name);

			if(@file_exists($current_photo_dir.'/'.$images_name))

			@chmod ($current_photo_dir.'/'.$images_name, 0666);

} else {

// С удалённого URL

// Создаём папку с альбомом, для этого делаем запрос, чтобы получить последнее ID

	$row = $db->super_query("SELECT id FROM " . PREFIX . "_photo ORDER BY 'id' DESC LIMIT 0,1");

	$last_id = $row['id'];

	$new_id = $last_id+1;

	if (!is_dir(ROOT_DIR."/img/photo/".$new_id))

		@mkdir (ROOT_DIR."/img/photo/".$new_id, 0755);

	else

		msg("error","Ошибка !!!","Директория для этого фотоальбома под номером $new_id уже существует.", "java script:history.go(-1)");

	$current_photo_dir = ROOT_DIR.'/img/photo/'.$new_id;


		   $imageurl  = str_replace("\\", "/", $imageurl);//"

		   $images_name = end (explode ("/",$imageurl));

		   $img_name_arr = explode(".",$images_name);

		   $type		 = end($img_name_arr);

		   $image_size  = @filesize_url($imageurl);

		   if ($type!='zip') msg("error","Ошибка !!!","Файл должен быть архивом ZIP!", "java script:history.go(-1)");

		   if($images_name != "") $images_name  = totranslit(stripslashes($img_name_arr[0])).".".totranslit($type);

		   @copy($imageurl, $current_photo_dir.'/'.$images_name);

}

//**********************************************//

//   Разархивируем Фотки						//

//**********************************************//

// Подключаем библиотеку PCL Zip

require_once(ENGINE_DIR.'/inc/lib/pclzip.lib.php');

// Создаем объект $zip. Передаем имя архива.

if(@file_exists($current_photo_dir.'/'.$images_name))

$zip = new PclZip($current_photo_dir.'/'.$images_name);

else die('Файл не загружен');

$content = $zip->extract(PCLZIP_OPT_PATH, $current_photo_dir);

// Удаляем архив

@unlink ($current_photo_dir.'/'.$images_name);

///////// Создаём превьюшки ////////////////

include_once ENGINE_DIR.'/inc/makethumb.php';

@mkdir ($current_photo_dir."/thumbs", 0755);

if ($handle = opendir($current_photo_dir))

{

	$i=1;

	while (false !== ($file = readdir($handle))) {

		if ($file!='.' && $file!='..' && $file!='thumbs')

		{

			// Список разрешённых файлов

			$allowed_extensions = array("gif","jpg","png");

			$file_arr	= explode(".",$file);

			$file_type   = strtolower(end($file_arr));

			if (in_array($file_type, $allowed_extensions))

			{

				// *******

				// Переименовываем файлы

				// Новое имя файла

				$new_name='/'.$file;

							 $thumb=new thumbnail($current_photo_dir.$new_name);

								// создаём превьюшку

								if ($thumb->size_auto(140)) {

								   $thumb->jpeg_quality(80);

								   $thumb->save($current_photo_dir."/thumbs".$new_name);

								}

								if (@file_exists($current_photo_dir."/thumbs".$new_name))

								@chmod ($current_photo_dir."/thumbs".$new_name, 0666);

					// накладываем на большое фото лого

					$thumb=new thumbnail($current_photo_dir.'/'.$new_name);

					$thumb->insert_watermark(300);

					$thumb->save($current_photo_dir.'/'.$new_name);

				$i++;

				// Удаляем все не графические файлы

			} else @unlink ($current_photo_dir.'/'.$file);

		}

	}

  closedir($handle);

}

Тут несколько строчек лишних (раньше я переименовывал файлы, ну да разберётесь)

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах
  • 5 месяцев спустя...

Открываем следующий файлик:

/engine/inc/files.php
Ищем там строчку:
if($_REQUEST['subaction'] == "upload") {
ПЕРЕД ней вставляем следующий код:
function ClearDir($fdir) {

$dir = opendir($fdir);

while ($file = readdir($dir)) {

 if ($file != '.' and $file != '..' and $file != '.htaccess' and $file != 'system'){

  @unlink($fdir . '/' . $file);

 }

}

}


if($_REQUEST['subaction'] == "uploadzip") {

$current_image = "fromzip";

$image = $_FILES[$current_image]['tmp_name'];

$image_name = $_FILES[$current_image]['name'];

$image_size = $_FILES[$current_image]['size'];

$img_name_arr = explode(".",$image_name);

$type		 = end($img_name_arr);

if ($type != "zip") {

 $img_result = "<div><font color=red>Разрешена загрузка только архивов zip.</font></div>";

} else {

 $result_img = ROOT_DIR. "/zip/" . $image_name;


 @move_uploaded_file($image, $result_img) or $img_result = "<div><font color=red>$lang[images_uperr_3]</font></div>";

}


if ($img_result == '') {


 include_once ENGINE_DIR.'/inc/pclzip.lib.php';


 $arc = new PclZip( $result_img );


 if ($arc->extract(PCLZIP_OPT_PATH, ROOT_DIR . '/zip/unziped' ) == 0) {

  ClearDir(ROOT_DIR . '/zip');

  ClearDir(ROOT_DIR . '/zip/unziped');

  die("Error : " . $arc->errorInfo(true));

 }


 $file_prefix = time()."_";

 $fdir = ROOT_DIR . '/zip/unziped';


 $dir = opendir($fdir);

 while ($file = readdir($dir)) {

  if ($file != '.' and $file != '..' and $file != '.htaccess' and is_file($fdir. '/' . $file)){

   $img_name_arr = explode(".",$file);

   $type		 = end($img_name_arr);


   if (!in_array($type, $allowed_extensions)) continue;


   $imageurl = $fdir. '/' . $file;

   $image_name = $file;


   if (!is_dir(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX)) {


	 @mkdir(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX, 0777);

	 @chmod(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX, 0777);

	 @mkdir(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/thumbs", 0777);

		   @chmod(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/thumbs", 0777);

	  }


	  if (!is_dir(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX)) {


	 echo "Directory Error /uploads/posts/".FOLDER_PREFIX."/ cannot created."; die();

	  }


	   @copy($imageurl, ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/".$file_prefix.$image_name) or $img_result = "<div><font color=red>$lang[images_uperr_3]</font></div>";



		   if (file_exists(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/".$file_prefix.$image_name)) {


			  @chmod (ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/".$file_prefix.$image_name, 0666);


			  $img_result .= "<div><font color=green>$current_image -> $lang[images_upok]</font></div>";



			  $row = $db->super_query ("SELECT COUNT(*) as count FROM " . PREFIX . "_images where author = '$author' AND news_id = '$add_id'");


				if (!$row['count']) {


				   $added_time = time()+ ($config['date_adjust']*60);

				   $inserts = FOLDER_PREFIX."/".$file_prefix.$image_name;


				   $db->query ("INSERT INTO " . PREFIX . "_images (images, author, news_id, date) values ('$inserts', '$author', '$add_id', '$added_time')");


				} else {


				   $row = $db->super_query ("SELECT images  FROM " . PREFIX . "_images where author = '$author' AND news_id = '$add_id'");


	if ($row['images'] == "") $listimages = array();

	else $listimages = explode("|||", $row['images']);


				   $error_image = "";


				   foreach ($listimages as $dataimages) {


				   if ($dataimages == FOLDER_PREFIX."/".$file_prefix.$image_name) $error_image = "stop";


				   }


				   if ($error_image != "stop") {


				   $listimages[] = FOLDER_PREFIX."/".$file_prefix.$image_name;

				   $row['images'] = implode("|||", $listimages);


				   $db->query ("UPDATE " . PREFIX . "_images set images='$row[images]' where author = '$author' AND news_id = '$add_id'");


				}

	   }



	   include_once ENGINE_DIR.'/inc/makethumb.php';


	   $thumb=new thumbnail(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/".$file_prefix.$image_name);


	   if ($thumb->size_auto($config['max_image'])) {


		  $thumb->jpeg_quality($config['jpeg_quality']);


			 if ($config['allow_watermark'] == "yes") $thumb->insert_watermark($config['max_watermark']);


		  $thumb->save(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/thumbs/".$file_prefix.$image_name);

		  @chmod (ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/thumbs/".$file_prefix.$image_name, 0666);


	   }


	   if (file_exists(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/thumbs/".$file_prefix.$image_name))

		  $img_result_th .="<div><font color=blue>$current_image -> $lang[images_thok]</font></div>";


	$config['max_up_side'] = intval($config['max_up_side']);


	   if ($config['allow_watermark'] == "yes" OR $config['max_up_side']) {


		$thumb=new thumbnail(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/".$file_prefix.$image_name);

  $thumb->jpeg_quality($config['jpeg_quality']);


  if ($config['max_up_side'])

			   $thumb->size_auto($config['max_up_side']);


  if ($config['allow_watermark'] == "yes")

   $thumb->insert_watermark($config['max_watermark']);


  $thumb->save(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/".$file_prefix.$image_name);


	   }


   }//if file is uploaded succesfully



  }

 }


 ClearDir(ROOT_DIR . '/zip');

 ClearDir(ROOT_DIR . '/zip/unziped');

}

}
Далее ищем такой кусок кода:
echo <<<HTML

<div class="hr_line"></div>

<div style="padding:4px;">{$img_result}{$img_result_th}</div>

</form>

HTML;
ПОСЛЕ него вставляем:
echo <<<HTML

<form action='' method='post' enctype="multipart/form-data">

<input type="hidden" name="subaction" value="uploadzip">

<input type="hidden" name="area" value="{$area}">

<input type="hidden" name="images_number" id="images_number" value="1">


<div class="unterline"></div>

<table id="tblSample" class="upload">

<tr id="row">

 <td>

  Zip-архив с фото: <br /><input type="file" size="70" name="fromzip">

  <input type="submit" class="buttons" value=" {$lang['db_load_a']} ">

 </td>

</tr>

</table>

<div class="hr_line"></div>

</form>

HTML;
На этом подготовка для загрузки zip-архива закончена, теперь добавим кнопку "Вставить все сразу", это делается в этом же файле. Ищем кусок кода:
 $listimages = explode("|||", $row['images']);

 $i = 0;

 $this_size_2 = 0;

 $total_size = 0;
ПОСЛЕ него добавляем:
 $insert_all = "";
Далее ищем такой кусок:
					  if (!$wysiwyg)

						 $thumb_link="<a class=maintitle href=\"java script:insertthumb('".$config['http_home_url']."uploads/posts/".$folder_prefix.$dataimages."','')\">$dataimages</a>";

					  else

						 $thumb_link="<a class=maintitle href=\"java script:insertthumb('".$config['http_home_url']."uploads/posts/".$folder_prefix.$dataimages."', '".$config['http_home_url']."uploads/posts/".$folder_prefix."thumbs/".$dataimages."')\">$dataimages</a>";


				} else {


				   $thumb_link="<a class=maintitle href=\"java script:insertimage('".$config['http_home_url']."uploads/posts/".$folder_prefix.$dataimages."')\">$dataimages</a>";


				}
ЗАМЕНЯЕМ его (целиком) на следующий:
					  if (!$wysiwyg) {

						 $thumb_link="<a class=maintitle href=\"java script:insertthumb('".$config['http_home_url']."uploads/posts/".$folder_prefix.$dataimages."','')\">$dataimages</a>";

						 $insert_all .= "insertthumb('".$config['http_home_url']."uploads/posts/".$folder_prefix.$dataimages."','');";

					  } else {

						 $thumb_link="<a class=maintitle href=\"java script:insertthumb('".$config['http_home_url']."uploads/posts/".$folder_prefix.$dataimages."', '".$config['http_home_url']."uploads/posts/".$folder_prefix."thumbs/".$dataimages."')\">$dataimages</a>";

						 $insert_all .= "insertthumb('".$config['http_home_url']."uploads/posts/".$folder_prefix.$dataimages."', '".$config['http_home_url']."uploads/posts/".$folder_prefix."thumbs/".$dataimages."');";

					  }

				} else {


				   $thumb_link="<a class=maintitle href=\"java script:insertimage('".$config['http_home_url']."uploads/posts/".$folder_prefix.$dataimages."')\">$dataimages</a>";

				   $insert_all .= "insertimage('".$config['http_home_url']."uploads/posts/".$folder_prefix.$dataimages."');";


				}
И предпредпоследний штрих, ищем строчку:
<td colspan=4 align=\"right\"><input class=edit type=submit value=' $lang[images_del] '>
ЗАМЕНЯЕМ ее на эту:
<td colspan=4 align=\"right\"><input class=edit type=button value=' Вставить все сразу ' onclick=eval(\"$insert_all\");> <input class=edit type=submit value=' $lang[images_del] '>
Вот собсно и все. Файлик можно закрывать. Предпоследнее что осталось - скачать библиотеку для работы с zip-архивами >>> и распаковать ее в папку:
/engine/inc/

И последнее: создаем в корне двига (там где лежат index.php и admin.php) папку "zip", а в ней подпапку "unziped", и ставим на обе папки права доступа "777".

Мод не мой, я просто разместил объяву.

(с)

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...