Вернуться   ИнформПланета > Всевозможное и разнообразное > Вебмастеринг > CMS и форумы > Vbulletin > Модификация модулей и хаков > Модификация Photopost Vbgallery 8.04

Важная информация


Ответить в теме

Загрузка файла в Photopost - черт ногу сломит

 
Опции Статьи Опции просмотра

Загрузка файла в Photopost - черт ногу сломит

Опубликовал(а) Gostemilov
28.01.2017
По умолчанию Загрузка файла в Photopost - черт ногу сломит

Итак, в общем и целом загрузка начинается с uploadphoto.php

Вхождения process_image - всего 7 вхождений, из них 1 - сама функция

Цитата:
bulkuploads - 4 вхождения
editphoto - 1 вхождение
uploadphoto - 1 вхождение
Расклад такой

Цитата:
А1.В случае, если загружается 1 файл и это изображение и пользователя просто не о чем больше спрашивать, кроме как о том, что есть в форме загрузки - это uploadphoto.php, начало в строке 635, вызов в 784
Цитата:
А2.Если это вообще не изображение, а мультимедиа - bulkuploads, строка 240
А3.В противном случае, если это изображение - там же, строка 246
Цитата:
А4.Если какой-то там $addkey == 1 и это не изображение, а мультимедиа - там же, строка 368
А5.В противном случае, если это изображение - там же , строка 374
Цитата:
А6.Если это изображение и оно в данный момент редактируется - вот тогда editphoto, строка 492
Вообще, кроме того, на кой-то хер (хотя уже понял зачем, в админке есть возможность перестроить превью) создание превью никаким боком не относится к process_image и является совершенно отдельной функцией. Типа мухи отдельно - котлеты отдельно.

Смотрим...Етить-колотить... 10 вхождений, из них 1 - сама функция

Цитата:
B1.Перестроение всех превью - adm-misc.php, строка 1599
Цитата:
B2.Что-то мутное, связанное с manipulate и rebuildthumb, вероятно, перестроение превью при повороте и прочем извращении (не факт) - adm-photo.php, строка 139
Цитата:
B3. Если это изображение - создаем преью при пакетной загрузке, bulkupload, строка 245, см.A3
Цитата:
B4.Неожиданный поворот. Если это мультимедиа - то создаем превью, bulkuploads, строка 364, см. А4.
Цитата:
B5. А если изображение - тогда просто создаем превью. bulkupload, строка 373, См. А5.
Цитата:
B6.Совсем в дебри. Если изображение - bulkupload, строка 769, там-то что оно делает?
Редактирование фото. Опять нежданчик.

Цитата:
B7.Если это мультимедиа - создаем превью, editphoto, строка 477, см(возможно). A6
Цитата:
B8.Если это изображение - создаем превью, editphoto, строка 491, см. A6
И - вишенка на торте -

Цитата:
B9.uploadphoto.ph, строка 783, см.A1
По понятным причинам
  • оригинальное имя файла (значащее) должно быть загнано в переменную ДО ТОГО, как вся эта, гм, хрень начнет работать
  • новое имя файла должно быть присвоено опять же ДО ТОГО
  • файл должен быть скопирован в каталог категории с новым именем ДО ТОГО, а уж потом свистопляски с превью, средними изображениями и прочая и прочая.
на данном этапе вызывает сомнения один момент - при загрузке одного файла и пакетной загрузке идут две совершенно разных ветки, хотя на кой это надо - пока не понял (решено, см. след. пост)

Ваша рекомендация

Опции Статьи

Рекомендуем Статьи

  #1  
от Gostemilov on 28.01.2017, 19:55
По умолчанию

Аххренеть. Мамма миа (далее нецензурно)

Насколько все через нее, родимую. Итак, если файл грузится с помощью формы загрузки, но не с использованием flash-загрузчика (около 590)

Код:
        //$realname = fixfilenames( $testname );
        ########################################################
        ## Получаем новое имя файла для файловой системы
        ## Работает при загрузке ОДНОГО файла через форму загрузки на сайте
        ########################################################
        $realname=create_new_filename($testname);
        ########################################################
        ## Получили новое имя файла для файловой системы
        ########################################################

                    
        ########################################################
        ## Получаем новый титул
        ########################################################
        if(empty($deftitle))
            {
                $deftitle=get_filename($testname);
            }
        else
            {
                $deftitle=$deftitle.". ".get_filename($testname);
            }
        ########################################################
        ## Получаем новый титул
        ########################################################

        if(empty($defdesc))
            {
                $defdesc="uploadphoto.php строка 618 \rКрасивая фоторамка.";
            }
        else
            {
                $defdesc="uploadphoto.php строка 623 \r Красивая фоторамка.".$defdesc;
            }            
            $defkeywords = "фоторамка,photoframe, ".$defkeywords;
и в форме утверждения мы имеем уже заполненные поля, что позитивно
Ответить с цитированием

  #2  
от Gostemilov on 28.01.2017, 19:58
По умолчанию

Загрузка файлов НЕ ЧЕРЕЗ ФОРМУ -

bulkuploads, около 640

После

Код:
            foreach ( $dirnames AS $realname )
            {
                if (( $realname != ".") && ( $realname != ".." ) )
                {
                    $filepath = "$inpath/$realname";
                    if ( !is_image($realname) && !is_multimedia($realname) )
                    {
                        @unlink( $filepath);
                        continue;
                    }
ставим

Код:
                    ########################################################
                    ## Получаем новое имя файла для файловой системы
                    ## Работает при загрузке файла через форму загрузки на сайте
                    ## Работает при загрузке из FTP каталога, при условии снятого чекбокса "Загрузить без проверки"
                    ##
                    ## НЕ РАБОТАЕТ при установленном чекбоксе "Загрузить без проверки"
                    ########################################################
                    
                    $original_name=get_filename($realname);
                    $realname=create_new_filename($realname);
                    $newfile=$realname;
                    $newfilepath = "{$inpath}/$newfile";
                    @rename($filepath, $newfilepath);
                    $realname = $newfile;
                    $filepath = $newfilepath;

                    ########################################################
                    ## Получаем новое имя файла для файловой системы
                    ########################################################
                    
                    ########################################################
                    ## Проверка на дубликат
                    ########################################################

                
                    ########################################################
                    ## Окончание Проверка на дубликат
                    ########################################################
и все работает, НО!!!!

там же, в конце - получаем уже заполненную форму!!!

Код:
    // Cleanup for bulkupload form
    $title = un_htmlspecialchars(stripslashes($deftitle))." ".$original_name;
    $desc = un_htmlspecialchars(stripslashes($defdesc))."Строка 808 \r\r Красивая фоторамка \r из файла ".$original_name;
    $keywords = htmlspecialchars(stripslashes($defkeywords))."фоторамка,photoframe,";

    // Force refresh of cache
    ppmysql_query("UPDATE {$Globals['pp_db_prefix']}cache SET timestamp=0 WHERE id=1", $link);

    printheader( 0, $Globals['pp_lang']['bulkuploads'] );
    include( "$Globals[tmpldir]/menubar.tmpl" );
    include( "$Globals[tmpldir]/bulkupload.tmpl" );
    printfooter();
}

?>
Ответить с цитированием
  #3  
от Gostemilov on 28.01.2017, 20:02
По умолчанию

При загрузке вслепую, то есть с помощью SKIPUPLOAD,
в начале, после (167)

Код:
        foreach ( $dirnames AS $realname )
        {
            $filein = "{$inpath}/$realname";

            if ( $realname != "." && $realname != ".." && is_file($filein) )
кидаем слегка подправленную форму получения нового файла

Код:
                ########################################################
                ## Получаем новое имя файла для файловой системы
                ## НЕ РАБОТАЕТ при загрузке файла через форму загрузки на сайте
                ## НЕ РАБОТАЕТ при загрузке из FTP каталога, при условии снятого чекбокса "Загрузить без проверки"
                ##
                ## Работает при установленном чекбоксе "Загрузить без проверки"
                ########################################################
                $original_name=get_filename($realname);
                $chkrealname=create_new_filename($realname);
                $newfile = "{$inpath}/$chkrealname";
                @rename($filein, $newfile);
                $realname = $chkrealname;
                $filein = $newfile;
                
                $title = un_htmlspecialchars($deftitle)."\r".$original_name;
                $desc = un_htmlspecialchars($defdesc)."Строка 188, Красивая фоторамка из файла \r".$original_name;
                $keywords = $defkeywords."фоторамка, photoframe";

                $theext = get_ext($realname);


                ########################################################
                ## Окончание - Получаем новое имя файла для файловой системы
                ########################################################
                    

                ########################################################
                ## Проверка на дубликат
                ########################################################

                
                ########################################################
                ## Окончание Проверка на дубликат
                ########################################################
и получаем заполненные поля
Ответить с цитированием
  #4  
от Gostemilov on 28.01.2017, 20:04
По умолчанию

В качестве загрузки поперед всего нас интересует process_image. И даже не столько он, сколько ГДЕ перехватить оригинальное имя файла и ГДЕ воткнуть новое? Кстати, сдается мне, что bulkuploads можно тоже серьезно сократить, ежели разобраться, что такое $addkey == 1

Я столько не выпью (пока)
Ответить с цитированием
  #5  
от Gostemilov on 28.01.2017, 20:24
По умолчанию

Опять ветвление, и опять на грани шизофрении. Если processall - то добавляем все без вопросов, а ежели нет - те же яйца, вид сбоку, но с вопросами. В другом месте нельзя ветвление поставить????

Код:
if ( $ppaction == "addphotos" && $processall == "processall" )
- строка 164

и

Код:
if ( $ppaction == "addphotos" )
- строка 296 - по сути своей одно и то же.. Зачем? Как???
Ответить с цитированием
  #6  
от Gostemilov on 29.01.2017, 07:50
По умолчанию ПЕРЕИМЕНОВАНИЕ

Итак, правилась ТОЛЬКО загрузка файла и подстановка базовых данных из имени файла

Смотрим

Загрузка через форму 1 файла - в принципе ОК, но на части кириллицы надо использовать mb_функции, а то кракозябры кое-где

Загрузка из формы одного файла по FLASH - в принципе ОК, но на части кириллицы надо использовать mb_функции, а то кракозябры кое-где

Загрузка из формы 2 файлов - красота, но почему-то везде проблемы с кодировкой. Поправим....

Загрузка из формы 2 файлов по FLASH - красота, но почему-то дублируются desc и keywords, причем в названии все ОК, а вот ниже проблемы с кодировкой. Поправим....



Загрузка без формы одного файла из uploads без SKIPUPLOAD - вообще все ОК

Загрузка без формы одного файла из uploads включен SKIPUPLOAD - вообще все ОК
Ответить с цитированием
  #7  
от Gostemilov on 29.01.2017, 07:57
По умолчанию

Тут поправлена ТОЛЬКО и ТОЛЬКО загрузка файлов с подстановкой из имени, причем глюк с кодировкой подстановки и двукратная подстановка кое-где не поправлены. Но работает
Вложения
Тип файла: zip 30.01 - новый Netbean.zip (2.59 Мб, 48 просмотров)
Ответить с цитированием
  #8  
от Gostemilov on 29.01.2017, 08:04
По умолчанию

Как сказано выше, process_image вызывается из bulkupoads 4 раза и, естественно, ни разу при вызове не передается оригинальное имя файла. А зря. Оно нам нужное, причем сильно.

Для начала правим собственно функцию в image-inc.php, а именно

Было

Код:
function process_image( $realname, $filepath, $thecat, $thevideo=0, $replace=0 )
Стало

Код:
function process_image( $original_name, $realname, $filepath, $thecat, $thevideo=0, $replace=0 )
И, как легко догадаться, в bulkuploads первым параметром теперь отправляем $original_name
Ответить с цитированием
  #9  
от Gostemilov on 29.01.2017, 08:39
По умолчанию

При загрузке фото через форму имя файла резалось. Оно нам не надо

Код:
    for ($i = 0; $i < $Globals['maxfiles']; $i++)
    {
        $wasuploaded = FALSE;
        $testname = $_FILES['theimage']['name'][$i];
        $realsize = $_FILES['theimage']['size'][$i];
        if (empty($testname) || $realsize < 1)
        {
            break;
        }

        // В $testname находится значимое имя файла

        // $realname = fixfilenames($testname);
        $realname = $testname;
        //Теперь и в $realname находится значимое имя и оно идет дальше
Ответить с цитированием
Ответить в теме

Метки
addphoto , bulkupload , cache , chkrealname , defkeyword , deftitle , empty , filein , filepath , flash , function , get_filename , globals , inpath , mb_функция , newfile , newfilepath , original_name , photopost , ppaction , processall , process_image , realname , realsize , skipupload , stripslash , testname , thecat , theimage , thevideo , tmpldir , un_htmlspecialchar , uploadphoto , _file , ветвление , вопрос , вхождение , дубликат , загрузить , загрузка , использовать , кириллица , кодировка , кракозябрый , красота , новый , нога , окончание , переименование , подстановка , превие , принцип , проблема , проверка , раз , система , строка , титул , того , файл , форма , фоторамка , функция , частить , чекбокс , черта

Опции Статьи
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Статья Опубликовал(а) Раздел Числу комментариев Последнее сообщение
Перевод Photopost Gostemilov Модификация Photopost Vbgallery 8.04 1 28.01.2017 07:58
Загрузка файла с проектом - видеоурок из цикла Cubase® SX 2.2 Gostemilov Cubase® SX 2.2 0 08.12.2016 07:00
Загрузка файла, окно выбора файла - видеоурок из цикла Wavelab® 5.0 Gostemilov Wavelab® 5.0 0 08.12.2016 07:00
История в картинках Анна Каренина и ее гардероб: в ногу со временем Gostemilov Тематические подборки фотоснимков 0 17.06.2013 08:48
История в картинках Вот, черт!.. Gostemilov Тематические подборки фотоснимков 0 22.05.2013 13:10


Текущее время: 17:47. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc. Перевод: zCarot
Home Contact Forum Music Video New Posts Calendar RSS RSS2