Ticketa
Registered
Привет,
имам един код , който не ми харесва как съм го структурирал и търся някакъв вид "оптимизация".
Също така към момента когато папката със снимки надвиши 500бр. снимки се създава нова images1, images2, images3 , искам това images вече да бъде: година/месец/
Като самия месец ако е с повече от 500 снимки , да създава втора папка година/месец-1 , година/месец-2
(обмислям да го направя по следния начин)
2019/31/
2019/31-1/
2020/01/
2020/01-1/
2020/01-2/
2020/01-3/
Тъй като се прави бекъп на цялото нещо и е по-лесно за поддръжка и като MB архива.
имам един код , който не ми харесва как съм го структурирал и търся някакъв вид "оптимизация".
Също така към момента когато папката със снимки надвиши 500бр. снимки се създава нова images1, images2, images3 , искам това images вече да бъде: година/месец/
Като самия месец ако е с повече от 500 снимки , да създава втора папка година/месец-1 , година/месец-2
(обмислям да го направя по следния начин)
Код:
$year_folder = $path . date("Y");
$month_folder = $year_folder . '/' . date("m");
!file_exists($year_folder) && mkdir($year_folder , 0777);
!file_exists($month_folder) && mkdir($month_folder, 0777);
2019/31/
2019/31-1/
2020/01/
2020/01-1/
2020/01-2/
2020/01-3/
Тъй като се прави бекъп на цялото нещо и е по-лесно за поддръжка и като MB архива.
Код:
if (empty($title) AND empty($description)) {
Session::add('feedback_negative', 'Не сте попълнили задължителните полета.');
} else {
$prebroi = '';
$sqlX = ".................";
$InsertQueryListing = $database->prepare($sqlX);
$InsertQueryListing->execute(array('............'));
$LAST_ID = $database->lastInsertId();
// if ($InsertQueryListing->rowCount() == 1) {
//създаваме функция, за преброяване на снимките, след което задаваме максимален,
//брой на снимките (500), ако снимките надвишават 500 създаваме нова папка images1 и т.н.
//$path = //главна директория на снимките
$exclude = array('.', '..', '.htaccess', 'def_big.jpg');
$max_files = 500;
$uploaded_dir = 'images0/'; //под директория на снимката
chdir(Config::get('PATH_LISTING'));
$dirs = glob("images*", GLOB_ONLYDIR);
$dirs = array_diff($dirs, $exclude);
$count_dirs = count($dirs);
for($i = 1; $i <= $count_dirs; $i++) {
$current_folder = scandir($dirs[$i-1]);
$current_folder = array_diff($current_folder, $exclude);
$count_files = count($current_folder);
if($count_files >= $max_files and $count_dirs <= $i) {
mkdir("images{$i}", 0777, true);
$uploaded_dir = 'images'.$i.'/';
} else if($count_files < $max_files) {
$uploaded_dir = 'images'.--$i.'/';
break;
} else {
$ii = $i-1;
$uploaded_dir = 'images'.$ii.'/';
}
}
//край на функцията
if (!is_dir("$uploaded_dir") AND !is_writable("$uploaded_dir")) {
Session::add('feedback_negative', 'В момента папката за качване на снимки не е с нужните правомощия и не можете да качвате снимки.');
} else {
for ($i = 0; $i <= 5; $i++){
if (!is_uploaded_file($_FILES['pic']['tmp_name'][''.$i.''])) {
//echo "Файла {$i} не е избран.<br />";
} else {
$name_pic = $_FILES['pic']['name'][''.$i.''];
$ext = strtolower(substr(strrchr($name_pic, "."), 1));
$allow = array("jpg", "jpeg", "JPG", "JPEG", "png"); //разрешени формати
$mimetypes = mime_content_type($_FILES['pic']['tmp_name'][''.$i.'']); //взимаме mime типа на снимката
$type = $_FILES['pic']['type'][''.$i.'']; //взимаме типа на снимката
$razmer_max_fail = Config::get('LISTING_IMAGE_SIZE')*1024; //максималния размер на файла /максималният размер на файл (в KB)/
if (in_array($ext, $allow)){ //проверка на разширението
if (($mimetypes =='image/jpeg' || $mimetypes =='image/x-png' || $mimetypes =='image/pjpeg' || $mimetypes =='image/jpg' || $mimetypes =='image/png')) {//проверка ,чрез mime тип-а
if (($type == "image/jpeg") || ($type == "image/pjpeg") || ($type == "image/jpg") || ($type == "image/png") || ($type == "image/x-png")) {
if ($_FILES['pic']['error'][''.$i.''] > 0){
Session::add('feedback_negative', 'ГРЕШКА: Възникна грешка при обработката на файла(снимката). Снимката не беше качена!');
} else {
if ($_FILES['pic']['size'][''.$i.''] <= $razmer_max_fail) {
//генерираме уникално име на снимката
$datename = date("YmdHis");
$rand = rand(0,1000);
$md5 = md5("$i$datename$rand");
$new_file_name = $i."_pic_$md5.$ext";
$new_file_name222 = $i."_pic_$md5";
//край на генерирането
//@${prebroi.$i} = "{$uploaded_dir}{$new_file_name}";
@${prebroi.$i} = "{$new_file_name222}";
list($width, $height) = getimagesize($_FILES['pic']['tmp_name'][''.$i.'']);
//NEW QUERY IS HEAR
$ImgQuery = $database->prepare("INSERT INTO `table_imgs` (art_id, relativepath, name, original_name, created_at, extension) VALUES (:art_id, :relativepath, :name, :original_name, :created_at, :extension)");
$ImgQuery->execute(array(
':art_id' => $LAST_ID,
':relativepath' => $uploaded_dir,
':name' => $new_file_name222,
':original_name' => $name_pic,
':created_at' => $now,
':extension' => $ext
));
if(($width < Config::get('LISTING_WIDTH_SIZE')) AND ($height < Config::get('LISTING_HEIGHT_SIZE'))) {
move_uploaded_file($_FILES['pic']['tmp_name'][''.$i.''], $uploaded_dir.$new_file_name);
} else if($width >= Config::get('LISTING_WIDTH_SIZE')){
$new_width = Config::get('LISTING_WIDTH_SIZE');
$new_height = (int)($height*$new_width)/$width;
if($type == "image/pjpeg" OR $type == "image/jpeg"){
$imagecreatefrom = "imagecreatefromjpeg";
} elseif($type == "image/x-png" OR $type == "image/png"){
$imagecreatefrom = "imagecreatefrompng";
}
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = $imagecreatefrom($_FILES['pic']['tmp_name'][''.$i.'']);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, $uploaded_dir.$new_file_name, 100);
} else if($height >= Config::get('LISTING_HEIGHT_SIZE')) {
$new_height= Config::get('LISTING_HEIGHT_SIZE');
$new_width= (int) ($width*$new_height)/$height;
if($type == "image/pjpeg" OR $type == "image/jpeg"){
$imagecreatefrom = "imagecreatefromjpeg";
} else if($type == "image/x-png" OR $type == "image/png"){
$imagecreatefrom = "imagecreatefrompng";
}
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = $imagecreatefrom($_FILES['pic']['tmp_name'][''.$i.'']);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, $uploaded_dir.$new_file_name, 100);
}
} else {
Session::add('feedback_negative', "ГРЕШКА: Файл <b>{$i}</b> не беше качен. Размера е по-голям от допустимият!");
}
}
} else {
Session::add('feedback_negative', "ГРЕШКА: Файлът {$i} не е валиден формат, разрешени: jpeg, jpg, png");
}
} else {
Session::add('feedback_negative', "ГРЕШКА: Файлът {$i} не е валиден формат, разрешени: jpeg, jpg, png");
}
} else {
Session::add('feedback_negative', "ГРЕШКА: Файлът {$i} не е валиден формат, разрешени: jpeg, jpg, png");
}
}
}
if(@$prebroi0 == "") { $prebroi0 = ""; }
if(@$prebroi1 == "") { $prebroi1 = ""; }
if(@$prebroi2 == "") { $prebroi2 = ""; }
if(@$prebroi3 == "") { $prebroi3 = ""; }
if(@$prebroi4 == "") { $prebroi4 = ""; }
if(@$prebroi5 == "") { $prebroi5 = ""; }
$req = $database->prepare( "UPDATE `table_article` SET img1=:img1, img2=:img2, img3=:img3, img4=:img4, img5=:img5, img6=:img6 WHERE `id`= :last_id" );
$req->execute(array(':img1' => $prebroi0,':img2' => $prebroi1,':img3' => $prebroi2,
':img4' => $prebroi3, ':img5' => $prebroi4,':img6' => $prebroi5,':last_id' => $LAST_ID));
//$req->debugDumpParams();
Redirect::back()
}
// }
}
}