Tickets - лимит загружаемых файлов
        Видимо, в большинстве случаев не возникает такая надобность, так как компоненту много лет, но функции ограничения загружаемых в один тикет файлов так и не появлось. Однако мне не первый раз попадается такая хотелка от клиента.
Вопрос этот уже поднимался дважды разными людьми, в первый раз его все пропустили, во второй произошла небольшая дискуссия, в рамках которой «накостылили» решение на джаваскрипте. Что меня не устроило по двум причинам:
1. библиотека plupload, используемая в скриптах тикетов, априори не имеет функции лимитирования загрузок.
2. всё, что делается на стороне клиента, можно обойти.
Поэтому создал системную настройку с циферкой-лимитом, а потом влез в тикетовый процессор web/upload/file и в методе process() дописал после проверки на дубли:
Хочется попросить Василия что-то подобное таки включить в будущем в релиз, полезная штука. А то так и останется на уровне костыля :)
    
    
                                                                                
            Вопрос этот уже поднимался дважды разными людьми, в первый раз его все пропустили, во второй произошла небольшая дискуссия, в рамках которой «накостылили» решение на джаваскрипте. Что меня не устроило по двум причинам:
1. библиотека plupload, используемая в скриптах тикетов, априори не имеет функции лимитирования загрузок.
2. всё, что делается на стороне клиента, можно обойти.
Поэтому создал системную настройку с циферкой-лимитом, а потом влез в тикетовый процессор web/upload/file и в методе process() дописал после проверки на дубли:
// Check for files limit
        if ($filesLimit = $this->modx->getOption('tickets.max_files_upload')) {
        	$where = $this->modx->newQuery($this->classKey, array('class' => $this->class));
	        if (!empty($this->ticket->id)) {
	            $where->andCondition(array('parent:IN' => array(0, $this->ticket->id)));
	        } else {
	            $where->andCondition(array('parent' => 0));
	        }
        	$where->andCondition(array('createdby' => $this->modx->user->id));
        	if ($this->modx->getCount($this->classKey, $where) >= $filesLimit) {
        		@unlink($data['tmp_name']);
            	return $this->failure('Вы не можете загрузить больше '.$filesLimit.' файлов');
        	}
        }и джаваскрипт можно не трогать, и надежнее. И изящнее, на мой взгляд. Теперь что мультизагрузка, что одиночный файл — если грузишь лишнего, появляется стандартно выглядящее сообщение в jGrowl.Хочется попросить Василия что-то подобное таки включить в будущем в релиз, полезная штука. А то так и останется на уровне костыля :)
Комментарии: 3
                Может сделаешь форк на гитхаб Василия? 
Думаю так он быстрее рассмотрит включение этого кода в компонент.
Очень нужная вещь!
                    Думаю так он быстрее рассмотрит включение этого кода в компонент.
Очень нужная вещь!
                Спасибо! Как раз недавно искал решение такой задачи, нарыл только js вариант =)            
                    
                Файл находится /core/components/tickets/processors/web/file/upload.class.php            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.