JohnCMS | Upload

6.71K
.
(\/)____o_O____(\/)

пойду поищу, ссылки тут ранее предлагали, и обсуждение было

.
# ValekS (22.08.2016 / 22:32)
Вот это крутая штука. Я знаком с этим классом, мне понравился. Все в одном файле и необходимый функционал есть(не знаю почему он избыточен).
че то посмотрел немножко, уже хочется к своему пару идей добавить заимствованных оттуда)
интересная штука
.

Koenig, валидаторы, request, а вот файлового хранилища и редактора картинок не делал. Но думаю вам мои решения не подойдут, ибо:
* Слишком ООП
* Есть более качественные аналоги

.

ramzes, учитывая направленность вашего движка, вполне можно обойтись каким нить FileStorage с функцией загрузки, обработки, отгрузки. Не совсем ООП, но понятно и удобно будет.

.

Delphinum, а я бы взглянул хотя бы на первичные наметки файлового хранилища
______________

мое фиговое ооп в комплекте выглядит примерно так (+/-)

if(app::user()->right('account.edit')) {

    switch(app::router()->query(2)){
        case 'avatar':

            if(app::router()->query(3)=='upload' AND $upload = app::file()->uploaded('newavatar')){

                $upload->extension(['image/jpeg', 'image/png', 'image/gif']);
                $upload->minSize = 1024;
                $upload->maxSize = 1024*1024;

                if($upload->validExtension()){
                    if($upload->saveFile()){

                        app::image($upload->tmpFile());

                        app::image()->minHeight(200);
                        app::image()->minWidth(200);
                        app::image()->maxHeight(2400);
                        app::image()->maxWidth(2400);
                        if(app::image()->valid()){
                            app::image()->replaceData(
                                [
                                    'x' => 200,
                                    'y' => 200,
                                    'type' => 'png',
                                    'save' => app::storage()->filterPath(app::storage()->avatar(app::user()->id())),
                                    'trim' => true
                                ]
                            );
                            app::image()->replace();

                            if(app::storage()->avatar(app::user()->id(), true)){

                                app::events()->registerEvent(
                                    [
                                        'type' => 3,
                                        'bind' => 'image.avatar.'.app::user()->id(),
                                        'event' => 'сменил аватар',
                                        'url' => '/user/'.app::user()->id().'/'
                                    ]
                                );

                                jsOnResponse('{"filename":"'.app::storage()->avatar(app::user()->id()).'", "error":""}');
                                
                            }else{
                                ... 
                            }
                        }else{
                            ...  
                        }

                        $upload->deleteTmpFile();

                    }else{
                        ...
                    }
                }else{
                    ...
                }
            }else{
....
            }
.
╭∩╮ (`-`) ╭∩╮
# Delphinum (22.08.2016 / 23:25)
Не совсем ООП, но понятно и удобно будет.
Тут абсолютно не важно, ООП это, или нет, так же не важна сложность самой библиотеки.
Юзерам в ней самой копаться не придется.

ВАЖНО, чтоб она была проста и легка в применении и была безопасна, чтоб начинающие быдлокодеры не натворили беды.
.

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

.
# AlkatraZ (22.08.2016 / 23:28)
Тут абсолютно не важно, ООП это, или нет, так же не важна сложность самой библиотеки.
Юзерам в ней самой копаться не придется.

ВАЖНО, чтоб она была проста и легка в применении и была безопасна, чт
Ну тем более если не важно ООП и сложность, делайте просто с помощью какого нить "Божественного класса", который будет за все это отвечать.
.
# Delphinum (22.08.2016 / 23:31)
ramzes, ну я хз, не знаком с теми задачами, которые вы ставите перед хранилищем. Это довольно прикладной класс и реализовать его можно как угодно.
ну я хотел сделать некий контролЁр доступа к хранилищу, выделить адрес\проверить адрес\одобрить адрес, по возможности не дать записать в хранилище минуя контролЁра, хотя с этим пока проблемы
вот и интересно, возможно и не мне одному, у тебя довольно оригинальные идеи реализации, из тех что я понял)))
.
╭∩╮ (`-`) ╭∩╮
# Delphinum (22.08.2016 / 23:32)
Ну тем более если не важно ООП и сложность, делайте просто с помощью какого нить "Божественного класса", который будет за все это отвечать.
Я уже ранее писал, что раз уж применяется Zend, у него на борту уже есть все необходимое для управления выгрузками, включая Upload Progress Bar.
Просто потом, когда руки дойдут до этого, надо будет написать класс-фасад, который будет иметь простой для понимания интерфейс.
Всего: 140