core/api/modules/foto_show/ajax.php

182 lines
8.9 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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:
}