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

Тема в разделе "DLE", создана пользователем staker, 23 дек 2007.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. staker

    staker

    Регистр.:
    24 ноя 2006
    Сообщения:
    226
    Симпатии:
    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_PATHROOT_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_PREFIX0777);
         @
    chmod(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX0777);
         @
    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($imageurlROOT_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_name0666);

                  
    $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_name0666);

           }

           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:
    (!$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".

    Мод не мой, я просто разместил объяву.
     
    topme, Walkman и Jigsaff нравится это.
  2. Egor109

    Egor109 Постоялец

    Регистр.:
    27 сен 2006
    Сообщения:
    140
    Симпатии:
    11
    для какой версии ? DLE
     
  3. Walkman

    Walkman

    Регистр.:
    17 авг 2007
    Сообщения:
    334
    Симпатии:
    217
    мне кажется он подойдёт для всех версий DLE:)
     
  4. Jigsaff

    Jigsaff Постоялец

    Регистр.:
    17 июн 2006
    Сообщения:
    103
    Симпатии:
    11
    Работает, но не грузит ничего...

    Добавлено через 11 минут
    То есть раскрывает в папку unziped, но в новость не добавляет...
     
  5. Jigsaff

    Jigsaff Постоялец

    Регистр.:
    17 июн 2006
    Сообщения:
    103
    Симпатии:
    11
    Хотя нет...грузит-то оно вроде правильно. Но в новость вставлять не хочет...пишет, что
    Что делать? И еще нет нововведенной кнопки 6.5. - вставить оригинал...
     
  6. PoMaH

    PoMaH

    Регистр.:
    8 июн 2006
    Сообщения:
    753
    Симпатии:
    142
    ciot ne produmanyi mod, nafig pri dobavleniji delat 100 zaprosov k db (kogda v zipe 100 foto) =) kogda mozno oboitis vsego lish 1 dumpom =)
     
  7. elnick

    elnick Постоялец

    Регистр.:
    5 апр 2006
    Сообщения:
    113
    Симпатии:
    5
    для 6.2 версии)
     
  8. Jigsaff

    Jigsaff Постоялец

    Регистр.:
    17 июн 2006
    Сообщения:
    103
    Симпатии:
    11
    И все ж таки хорошо бы довести до ума этот модуль. В версии 6.5. есть кнопка "оригинал". Вот она должна тоже быть после добавления модуля, а ее чегой-то нет. Ну и корректное добавление. Очень хотелось бы получить рабочим этот модуль...
     
  9. Denkin

    Denkin Постоялец

    Регистр.:
    14 апр 2007
    Сообщения:
    95
    Симпатии:
    16
    Нужна рабочая версия для дле 6.5
     
  10. krast

    krast Читатель

    Заблокирован
    Регистр.:
    9 янв 2008
    Сообщения:
    78
    Симпатии:
    1
    А безопасность скрипта не ухудшится от этого скрипта, а то зальют в этой пачке какой-нибудь шел?
     
Статус темы:
Закрыта.