Как ограничить кол-во фото?

Вопросы и ответы по изменению функционала, смене дизайна, переносу сайта и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

Как ограничить кол-во фото?

Сообщение qwen1 » 26 мар 2014, 21:31

Подскажите как ограничить количество фото загружаемых пользователем при самостоятельной подаче объявления? А то так можно и 2,3,4 гигабайта фоток нагрузить и сервер сдохнет... Не всегда получается вовремя проследить за этим. *SCRATCH*
http://sochiltd.ru - Отдых в Сочи
Аватара пользователя
qwen1
Незнакомец
 
Сообщения: 24
Зарегистрирован: 22 мар 2014, 12:36
Откуда: Россия, Татарстан
Очки репутации: 0

Re: Как ограничить кол-во фото?

Сообщение Xpycm » 27 мар 2014, 08:30

protected\modules\images\controllers\MainController.php, метод actionUpload
после:
Код: Выделить всё
$model = $this->checkOwner($id); 

вставить:
Код: Выделить всё
$maxCountImages = 5; # максимальное количество загружаемых фотографий для объявления
        
$sql 
= 'SELECT COUNT(id) FROM {{images}} WHERE id_object = '.$model->id;
$currImgCount = Yii::app()->db->createCommand($sql)->queryScalar();

if ($currImgCount > $maxCountImages) {
    $result['error'] = Yii::t("module_places", "no_more_{num}_pictures", array("{num}" => $maxImgs));
    $result = htmlspecialchars(json_encode($result), ENT_NOQUOTES);
    echo $result;
    Yii::app()->end();
}
 


В панели администратора, секции "Переводы" добавить перевод для : "no_more_{num}_pictures" (Вы не можете загружать более {num} фотографий). Отсортируете по "не переведено" и увидите такую константу.

Не тестировал, но должно работать.
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Как ограничить кол-во фото?

Сообщение qwen1 » 27 мар 2014, 10:21

Xpycm писал(а):protected\modules\images\controllers\MainController.php, метод actionUpload
после:
Код: Выделить всё
$model = $this->checkOwner($id); 

вставить:
Код: Выделить всё
$maxCountImages = 5; # максимальное количество загружаемых фотографий для объявления
        
$sql 
= 'SELECT COUNT(id) FROM {{images}} WHERE id_object = '.$model->id;
$currImgCount = Yii::app()->db->createCommand($sql)->queryScalar();

if ($currImgCount > $maxCountImages) {
    $result['error'] = Yii::t("module_places", "no_more_{num}_pictures", array("{num}" => $maxImgs));
    $result = htmlspecialchars(json_encode($result), ENT_NOQUOTES);
    echo $result;
    Yii::app()->end();
}
 
Спасибо конечно огромное, только я с переводами не понял, если можно подробнее чайнику объясните)

В панели администратора, секции "Переводы" добавить перевод для : "no_more_{num}_pictures" (Вы не можете загружать более {num} фотографий). Отсортируете по "не переведено" и увидите такую константу.

Не тестировал, но должно работать.
http://sochiltd.ru - Отдых в Сочи
Аватара пользователя
qwen1
Незнакомец
 
Сообщения: 24
Зарегистрирован: 22 мар 2014, 12:36
Откуда: Россия, Татарстан
Очки репутации: 0

Re: Как ограничить кол-во фото?

Сообщение Xpycm » 27 мар 2014, 10:42

Непереведёная строка "no_more_{num}_pictures" будет здесь - http://сайт/translateMessage/backend/main/admin

Код: Выделить всё
Yii::t("module_places""no_more_{num}_pictures", array("{num}" => $maxImgs)); 

Подробнее про Yii:t - http://www.yiiframework.com/doc/guide/1 ... opics.i18n

Не хотите заморочиться и сделать "как нужно", то вместо:
Код: Выделить всё
$result['error'] = Yii::t("module_places""no_more_{num}_pictures", array("{num}" => $maxImgs)); 

пропишите сразу:
Код: Выделить всё
$result['error'] = 'Вы не можете загружать более '.$maxImgs.' фотографий'
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Как ограничить кол-во фото?

Сообщение qwen1 » 27 мар 2014, 10:58

Xpycm писал(а):Непереведёная строка "no_more_{num}_pictures" будет здесь - http://сайт/translateMessage/backend/main/admin

Код: Выделить всё
Yii::t("module_places", "no_more_{num}_pictures", array("{num}" => $maxImgs)); 

Подробнее про Yii:t - http://www.yiiframework.com/doc/guide/1 ... opics.i18n

Не хотите заморочиться и сделать "как нужно", то вместо:
Код: Выделить всё
$result['error'] = Yii::t("module_places", "no_more_{num}_pictures", array("{num}" => $maxImgs)); 

пропишите сразу:
Код: Выделить всё
$result['error'] = 'Вы не можете загружать более '.$maxImgs.' фотографий'; 

код я прописал, но в переводах не появилась не переведенная строка
http://sochiltd.ru - Отдых в Сочи
Аватара пользователя
qwen1
Незнакомец
 
Сообщения: 24
Зарегистрирован: 22 мар 2014, 12:36
Откуда: Россия, Татарстан
Очки репутации: 0

Re: Как ограничить кол-во фото?

Сообщение Xpycm » 27 мар 2014, 11:32

Она появится после того, как будет достигнут лимит на количество фотографий.
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Как ограничить кол-во фото?

Сообщение maxeg » 10 июн 2014, 22:30

тогда нужно прописать так

Код: Выделить всё
$maxCountImages = 5; # максимальное количество загружаемых фотографий для объявления
        
        $sql 
= 'SELECT COUNT(id) FROM {{images}} WHERE id_object = '.$model->id;
        $currImgCount = Yii::app()->db->createCommand($sql)->queryScalar();

        if ($currImgCount >= $maxCountImages) {
            $result['error'] = 'Вы не можете загружать более '.$maxCountImages.' фото'; 
            $result 
= htmlspecialchars(json_encode($result), ENT_NOQUOTES);
            echo $result;
            Yii::app()->end();
        } 


и в файле \protected\modules\images\views\widgetAdminImages.php
вместо
Код: Выделить всё
'multiple' => true, 

прописать
Код: Выделить всё
'multiple' => false, 

Иначе можно будет выбрать сразу более 5 файлов при мультизагрузке

Чтобы ограничить мультизагрузку можно покопать http://yiiframework.ru/forum/viewtopic.php?f=3&t=14236
maxeg
Незнакомец
 
Сообщения: 1
Зарегистрирован: 10 июн 2014, 22:24
Очки репутации: 0


Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

cron