• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

Статус
В этой теме нельзя размещать новые ответы.

staker

Мастер
Регистрация
24 Ноя 2006
Сообщения
227
Реакции
33
Открываем следующий файлик:
Код
/engine/inc/files.php

Ищем там строчку:
Код
PHP:
if($_REQUEST['subaction'] == "upload") {
ПЕРЕД ней вставляем следующий код:
Код
PHP:
 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');
}
}
Далее ищем такой кусок кода:
Код
PHP:
 echo <<<HTML
<div class="hr_line"></div>
<div style="padding:4px;">{$img_result}{$img_result_th}</div>
</form>
HTML;
ПОСЛЕ него вставляем:
Код
PHP:
 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-архива закончена, теперь добавим кнопку "Вставить все сразу", это делается в этом же файле.

Ищем кусок кода:
Код
PHP:
  $listimages = explode("|||", $row['images']);
 $i = 0;
 $this_size_2 = 0;
 $total_size = 0;
ПОСЛЕ него добавляем:
Код
PHP:
  $insert_all = "";
Далее ищем такой кусок:
Код
PHP:
                       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>";

                }
ЗАМЕНЯЕМ его (целиком) на следующий:
Код
i
PHP:
f (!$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."');";

                }
И предпредпоследний штрих, ищем строчку:
Код
PHP:
 <td colspan=4 align=\"right\"><input class=edit type=submit value=' $lang[images_del] '>
ЗАМЕНЯЕМ ее на эту:
Код
PHP:
 <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-архивами Для просмотра ссылки Войди или Зарегистрируйся
и распаковать ее в папку:
PHP:
/engine/inc/
И последнее: создаем в корне двига (там где лежат index.php и admin.php) папку "zip", а в ней подпапку "unziped", и ставим на обе папки права доступа "777".

Мод не мой, я просто разместил объяву.
 
для какой версии ? DLE
 
мне кажется он подойдёт для всех версий DLE:)
 
Работает, но не грузит ничего...

Добавлено через 11 минут
То есть раскрывает в папку unziped, но в новость не добавляет...
 
Хотя нет...грузит-то оно вроде правильно. Но в новость вставлять не хочет...пишет, что
The requested URL /java script:insertthumb('http://site.ru/uploads/posts/2007-12/1198442391_01_workplace.jpg', 'http://site.ru/uploads/posts/2007-12/thumbs/1198442391_01_workplace.jpg') was not found on this server.

Что делать? И еще нет нововведенной кнопки 6.5. - вставить оригинал...
 
ciot ne produmanyi mod, nafig pri dobavleniji delat 100 zaprosov k db (kogda v zipe 100 foto) =) kogda mozno oboitis vsego lish 1 dumpom =)
 
для 6.2 версии)
 
И все ж таки хорошо бы довести до ума этот модуль. В версии 6.5. есть кнопка "оригинал". Вот она должна тоже быть после добавления модуля, а ее чегой-то нет. Ну и корректное добавление. Очень хотелось бы получить рабочим этот модуль...
 
Нужна рабочая версия для дле 6.5
 
  • Заблокирован
  • #10
А безопасность скрипта не ухудшится от этого скрипта, а то зальют в этой пачке какой-нибудь шел?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху