core/api/modules/foto_show/ajax.php

182 lines
8.9 KiB
PHP
Raw Permalink Normal View History

2022-12-11 13:55:49 +05:00
<?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:
}