182 lines
8.9 KiB
PHP
182 lines
8.9 KiB
PHP
|
<?php
|
|||
|
|
|||
|
/*
|
|||
|
foreach($arr as $key => $value)
|
|||
|
{
|
|||
|
echo "$key = $value <br />";
|
|||
|
}
|
|||
|
|
|||
|
*/
|
|||
|
|
|||
|
switch( @$_POST['act'] ) {
|
|||
|
|
|||
|
/* 05.05.2021 Загрузка фотографий */
|
|||
|
case 'foto_upload':
|
|||
|
if ( $_FILES['file']['tmp_name'] ){
|
|||
|
if ( preg_match( '/[.](jpg)|(jpeg)|(JPG)|(JPEG)$/', $_FILES['file']['name'] ) ){
|
|||
|
/* 06.05.2021 вычисляем контрольную сумму чтобы дважды не загружать одно и то же */
|
|||
|
unset($id);
|
|||
|
$md5['md5'] = md5_file( $_FILES['file']['tmp_name'] );
|
|||
|
/* ищем в базе - есть ли оно */
|
|||
|
$db -> free_sql2( 'ALTER TABLE `foto_img` ADD `md5` varchar(100) NULL' );
|
|||
|
$id = $db -> get_val( 'foto_img', $md5, 'id' );
|
|||
|
if ( $id )die( 'Уже есть такое' );
|
|||
|
@mkdir( MYDIR . '/img/albums', 0700 );
|
|||
|
@mkdir( MYDIR . '/img/albums/' . $_SESSION['user_id'], 0700 );
|
|||
|
@mkdir( MYDIR . '/img/albums/' . $_SESSION['user_id'] . '/' . $_SESSION['album_id'], 0700 );
|
|||
|
@mkdir( MYDIR . '/img/albums/' . $_SESSION['user_id'] . '/' . $_SESSION['album_id'] . '/big', 0700 );
|
|||
|
@mkdir( MYDIR . '/img/albums/' . $_SESSION['user_id'] . '/' . $_SESSION['album_id'] . '/original', 0700 );
|
|||
|
require_once MYDIR . '/api/php/genpass.php';
|
|||
|
$img_name = generate_password( 15 );
|
|||
|
$source = $_FILES['file']['tmp_name'];
|
|||
|
$target_original = MYDIR . '/img/albums/' . $_SESSION['user_id'] . '/' . $_SESSION['album_id'] . '/original/' . $img_name . '.jpg';
|
|||
|
$target_big = MYDIR . '/img/albums/' . $_SESSION['user_id'] . '/' . $_SESSION['album_id'] . '/big/' . $img_name . '.jpg';
|
|||
|
$target_small = MYDIR . '/img/albums/' . $_SESSION['user_id'] . '/' . $_SESSION['album_id'] . '/' . $img_name . '.jpg';
|
|||
|
copy( $source, $target_original );
|
|||
|
require_once MYDIR . '/api/php/img2.php';
|
|||
|
rimg ( $target_original, 640, 480, $target_small, $zip=60, $c=0 );
|
|||
|
rimg ( $target_original, 1280, 720, $target_big, $zip=60, $c=0 );
|
|||
|
unset( $a );
|
|||
|
$db -> free_sql2( 'ALTER TABLE `foto_img` ADD `size` varchar(20) NULL' );
|
|||
|
$a['img'] = $img_name;
|
|||
|
$a['user_id'] = $_SESSION['user_id'];
|
|||
|
$a['album_id'] = $_SESSION['album_id'];
|
|||
|
$a['size'] = $_FILES['file']['size'];
|
|||
|
$a['md5'] = $md5['md5'];
|
|||
|
$a['t'] = time();
|
|||
|
echo $img_name;
|
|||
|
$db -> add( 'foto_img', $a );
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
/* 05.05.2021 Удаление фотографий */
|
|||
|
case 'del_foto':
|
|||
|
$dostup = 0; //запрещаем что то делать
|
|||
|
//проверяем авторство фотографии
|
|||
|
unset( $a );
|
|||
|
$a['id'] = $_POST['id'];
|
|||
|
$user_id = $db -> get_val( 'foto_img', $a, 'user_id' );
|
|||
|
if ( MYID == $user_id ) $dostup = 1;
|
|||
|
if ( $_SESSION['dostup'] == 'a' || $_SESSION['dostup'] == 'm' ) $dostup = 1;
|
|||
|
if ( $dostup == 0 ) die( "Кыш!" );
|
|||
|
$img = $db -> get_val( 'foto_img', $a, 'img' );
|
|||
|
unlink( MYDIR . '/img/albums/' . MYID . '/' . $_SESSION['album_id'] . '/original/' . $img . '.jpg' );
|
|||
|
unlink( MYDIR . '/img/albums/' . MYID . '/' . $_SESSION['album_id'] . '/big/' . $img . '.jpg' );
|
|||
|
unlink( MYDIR . '/img/albums/' . MYID . '/' . $_SESSION['album_id'] . '/' . $img . '.jpg' );
|
|||
|
$db -> del_id( 'foto_img', $a['id'] );
|
|||
|
break;
|
|||
|
/* 05.05.2021 обновление описания фото, аудит-контента
|
|||
|
06.05.2021 проверка авторства вынесена в ядро
|
|||
|
*/
|
|||
|
case 'update':
|
|||
|
if ( $db -> check_access ( 'foto_img', $_POST['id'] ) ==0 ) die( 'Нельзя!' );
|
|||
|
if ($_POST['t2']=='longtext')
|
|||
|
$db -> free_sql2( 'ALTER TABLE `foto_img` ADD `' . $_POST['t'] . '` longtext NULL' );
|
|||
|
else
|
|||
|
$db -> free_sql2( 'ALTER TABLE `foto_img` ADD `' . $_POST['t'] . '` varchar(250) NULL' );
|
|||
|
$db -> free_sql( "UPDATE `foto_img` SET `" . $_POST['t'] . "` = '" . $_POST['txt'] . "' WHERE `id` = " . $_POST['id'] . ";" );
|
|||
|
break;
|
|||
|
|
|||
|
|
|||
|
/* 15.05.2021 - покупка фотографии */
|
|||
|
case 'bay_foto':
|
|||
|
if ( !$_SESSION['user_id'] )die( '<div class="alert alert-danger" role="alert">Купить оригинал фотографии могут только <a href="/login/">зарегистрированные пользователи сайта</a></div>' );
|
|||
|
//создаем таблицу покупок
|
|||
|
$db -> free_sql("CREATE TABLE IF NOT EXISTS `foto_shop` (
|
|||
|
`id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|||
|
`user_id` int(10) NULL,
|
|||
|
`album_id` int(10) NULL,
|
|||
|
`foto_id` int(15) NULL,
|
|||
|
`summa` varchar(10) NULL,
|
|||
|
`avtor` int(10) NULL,
|
|||
|
`folder` varchar(10) NULL,
|
|||
|
`status` int(2) NULL,
|
|||
|
`t` varchar(30) NULL,
|
|||
|
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
|||
|
FOREIGN KEY (`avtor`) REFERENCES `users` (`id`),
|
|||
|
FOREIGN KEY (`foto_id`) REFERENCES `foto_img` (`id`),
|
|||
|
FOREIGN KEY (`album_id`) REFERENCES `foto_albums` (`id`)
|
|||
|
) ENGINE='InnoDB';");
|
|||
|
//узнаем цену за альбом, вычисляем цену за фотку, если разрешена розница
|
|||
|
unset( $a );
|
|||
|
$a['id'] = $_POST['id'];
|
|||
|
$foto = $db -> get_massiv( 'foto_img', $a, '', 1 );
|
|||
|
$a['id'] = $foto[0]['album_id'];
|
|||
|
$album = $db -> get_massiv( 'foto_albums', $a, '', 1 );
|
|||
|
if ( $album[0]['roznica'] !=1 ) die ( '<div class="alert alert-danger" role="alert">Не разрешена поштучная покупка фотографий</div>' );
|
|||
|
//узнаем количество фото в альбоме
|
|||
|
unset($b);
|
|||
|
$b['album_id']=$foto[0]['album_id'];
|
|||
|
$col_foto=$db->count_sql('foto_img', $b);
|
|||
|
//узнаем стоимость фотки в розничной цене
|
|||
|
$cena = round( $album[0]['cena'] / $col_foto, 2 );
|
|||
|
//проверяем баланс.... если баланс меньше стоимости фотки - то шлем нах
|
|||
|
$a['id'] = MYID;
|
|||
|
$balans = $db -> get_val( 'users', $a, 'balans' );
|
|||
|
//echo $balans . '<br>';
|
|||
|
//echo $cena;
|
|||
|
// пишем в нее что купили, когда купили, за сколько купили
|
|||
|
if ( $balans < $cena ) die( '<div class="alert alert-danger" role="alert">Не хватает денег на счету, пополните счет в личном кабинете и повторите покупку</a>' );
|
|||
|
|
|||
|
//обновляем свой баланс
|
|||
|
unset( $b );
|
|||
|
$b['balans'] = $balans - $cena;
|
|||
|
$db -> update( 'users', MYID, $b );
|
|||
|
//узнаем баланс автора
|
|||
|
$a['id'] = $foto[0]['avtor'];
|
|||
|
$balans_a = $db -> get_val( 'users', $a, 'balans' );
|
|||
|
|
|||
|
//переводим автору фотографии сумму
|
|||
|
$b['balans'] = $balans_a + $cena;
|
|||
|
$db -> update( 'users', $a['id'], $b );
|
|||
|
|
|||
|
//проверяем, есть ли у пользователя приватный альбом с именем "Мои покупки"
|
|||
|
unset( $a );
|
|||
|
$a = array(
|
|||
|
"user_id" => MYID,
|
|||
|
"naim" => 'Мои покупки',
|
|||
|
"private" => 1
|
|||
|
);
|
|||
|
$id = $db -> get_val ( 'foto_albums', $a, 'id' );
|
|||
|
if ( !$id ){ //создаем альбом
|
|||
|
|
|||
|
$a['t'] = time();
|
|||
|
$a['public'] = 0;
|
|||
|
$a['img'] = 'private';
|
|||
|
$id = $db -> add( 'foto_albums', $a );
|
|||
|
}
|
|||
|
//создаем папку, подпапку и тд....
|
|||
|
@mkdir( MYDIR . '/zip', 0700 );//сюда будем сжимать
|
|||
|
@mkdir( MYDIR . '/img/albums/' . MYID, 0700 );
|
|||
|
@mkdir( MYDIR . '/img/albums/' . MYID . '/' . $id, 0700 );
|
|||
|
@mkdir( MYDIR . '/img/albums/' . MYID . '/' . $id . '/original', 0700 );
|
|||
|
@mkdir( MYDIR . '/img/albums/' . MYID . '/' . $id . '/big', 0700 );
|
|||
|
//генерируем новое имя файлу
|
|||
|
require_once MYDIR . '/api/php/genpass.php';
|
|||
|
$img_name = generate_password( 15 );
|
|||
|
|
|||
|
//делаем символические ссылки на файлы:
|
|||
|
symlink ( MYDIR . '/img/albums/' . $foto[0]['user_id'] . '/' . $foto[0]['album_id'] . '/' . $foto[0]['img'] . '.jpg', MYDIR . '/img/albums/' . MYID . '/' . $id . '/' . $img_name . '.jpg' );
|
|||
|
symlink ( MYDIR . '/img/albums/' . $foto[0]['user_id'] . '/' . $foto[0]['album_id'] . '/original/' . $foto[0]['img'] . '.jpg', MYDIR . '/img/albums/' . MYID . '/' . $id . '/original/' . $img_name . '.jpg' );
|
|||
|
symlink ( MYDIR . '/img/albums/' . $foto[0]['user_id'] . '/' . $foto[0]['album_id'] . '/big/' . $foto[0]['img'] . '.jpg', MYDIR . '/img/albums/' . MYID . '/' . $id . '/big/' . $img_name . '.jpg' );
|
|||
|
//пишем в базу
|
|||
|
unset( $c );
|
|||
|
$c = array(
|
|||
|
"user_id" => MYID,
|
|||
|
"img" => $img_name,
|
|||
|
"album_id" => $id,
|
|||
|
"t" => time(),
|
|||
|
"private" => 1
|
|||
|
);
|
|||
|
$db -> add( 'foto_img', $c );
|
|||
|
chdir(MYDIR . '/img/albums/' . $foto[0]['user_id'] . '/' . $foto[0]['album_id'] . '/original');
|
|||
|
echo '<div class="alert alert-info" role="alert">
|
|||
|
<a href="/zip/' . $foto[0]['img'] . '.zip">Скачать оригинал фотографии</a><br>
|
|||
|
Мы добавили фотографию в ваш <a href="/foto_album/' . $id . '">альбом</a>
|
|||
|
</div>';
|
|||
|
chdir(MYDIR);
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
}
|