/**
 * Создаёт уменьшенную копию изображения.
 * @param        $SrcFileName Исходный файл.
 * @param string $DstFileName Имя файла для сохранения уменьшенной копии.
 * @param int    $MaxWidth    Максимальная ширина уменьшенной копии.
 * @param int    $MaxHeight   Максимальная высота уменьшенной копии.
 * @param bool   $Stretch     Растягивать ли картинку если заданные размеры больше исходных.
 * @param null   $SaveFormat  Формат сохранения миниатюры (jpeg, png, gif, wbmp).
 * @return \TPicture
 */
function CreateThumb($SrcFileName, $DstFileName = '', $MaxWidth = 0, $MaxHeight = 0, $Stretch = false, $SaveFormat = null)
{
    $thumb = new TPicture($SrcFileName);
    if ($DstFileName == '') {
        return $thumb;
    } elseif (is_file($DstFileName)) {
        unlink($DstFileName);
    }
    if ($Stretch || ($MaxWidth > 0 || $MaxHeight > 0) && ($thumb->Width > $MaxWidth || $thumb->Height > $MaxHeight)) {
        $thumb->SetImageSize($MaxWidth, $MaxHeight);
    }
    $thumb->SaveToFile($DstFileName, $SaveFormat);
    return $thumb;
}
function AdminGalleryImageRotate()
{
    global $GalleryDir, $ThumbsDir;
    $turn = $_GET['turn'];
    $id = SafeEnv($_GET['id'], 11, int);
    $angle = 0;
    if ($turn == 'left') {
        $angle = 90;
    } else {
        $angle = 270;
    }
    System::database()->Select('gallery', "`id`='{$id}'");
    $img = System::database()->FetchRow();
    $file_name = $img['file'];
    $file = $GalleryDir . $file_name;
    $thumb = $ThumbsDir . $file_name;
    // Поворачиваем изображение
    $pic = new TPicture($file);
    $pic->Rotate($angle);
    $pic->SaveToFile($file);
    // Обновляем эскиз
    if (is_file($thumb)) {
        unlink($thumb);
    }
    CreateThumb($file, $thumb, System::config('gallery/thumb_max_width'), System::config('gallery/thumb_max_height'));
    Audit('Фотогалерея: Поворот изображения ' . ($turn == 'left' ? 'влево' : 'вправо') . ' "' . $img['title'] . '" (id: ' . $img['id'] . ')');
    $back = new Url(GetRefererUrl($_REQUEST['back']));
    $back['update'] = SafeDB($_GET['id'], 11, int);
    // Добавляем / изменяем параметр update
    GO($back);
}
function AdminUserSaveAvatar()
{
    $alloy_mime = array('image/gif' => '.gif', 'image/jpeg' => '.jpg', 'image/pjpeg' => '.jpg', 'image/png' => '.png', 'image/x-png' => '.png');
    include_once System::config('inc_dir') . 'picture.class.php';
    $asize = getimagesize($_FILES['avatar']['tmp_name']);
    $alloy_mime = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png');
    $alloy_exts = array('.gif', '.jpg', '.jpeg', '.png');
    if (in_array($_FILES['avatar']['type'], $alloy_mime) && in_array(strtolower(GetFileExt($_FILES['avatar']['name'])), $alloy_exts)) {
        $NewName = $_FILES['avatar']['name'];
        if ($asize[0] > System::config('user/max_avatar_width') || $asize[1] > System::config('user/max_avatar_height')) {
            $thumb = new TPicture($_FILES['avatar']['tmp_name']);
            $thumb->SetImageSize(System::config('user/max_avatar_width'), System::config('user/max_avatar_height'));
            $thumb->SaveToFile(System::config('general/avatars_dir') . $NewName);
        } else {
            copy($_FILES['avatar']['tmp_name'], System::config('general/avatars_dir') . $NewName);
        }
        Audit('Пользователи: Добавление аватара в галерею аватар "' . $NewName . '"');
    } else {
        System::admin()->AddCenterBox('Загрузка аватара');
        System::admin()->HighlightError('Неправильный формат аватара. Ваш аватар должен быть формата GIF, JPEG или PNG.<br /><a href="javascript:history.go(-1)">Назад в галерею</a>');
    }
    GO(ADMIN_FILE . '?exe=user&a=avatars');
}