View file page/mail/read.php

File size: 13Kb
<?php
$title = 'Переписка';
include_once($_SERVER["DOCUMENT_ROOT"]."/inc/head.php");
if (isset($active) == true) {
    $in_mail = $connect->prepare("insert into `mail` set `time` = ?, `user` = ?, `who` = ?, `text` = ?, `file` = ?");
    if (user($id) && !in_blacklist($user['id'], $id) && !in_blacklist($id, $user['id'])) {
        $user_mail = ulogin($id);

        $m_row = user($id);

        if ($user['login'] == $m_row['login']) {
            header('location: /mail');
        } else {
            $stmt_new_count = $connect->prepare("select count(*) from `mail` where `who` = ? and `user` = ? and `read` = '0'");
            $stmt_new_count->execute(array($user['login'], $m_row['login']));
            $mail_new_count = $stmt_new_count->fetchColumn();
            if ($mail_new_count > 0) {
                $stmt = $connect->prepare("update `mail` set `read` = '1' where `who` = ? and `user` = ?");
                $stmt->execute(array($user['login'], $m_row['login']));
                header('location: /mail/read/'.$id);
             }
    echo '<div class="title">Переписка с '.$m_row['login'].'</div>';

    if (!online($id)) {
        echo '<div class="menu">Последний визит: '.daytime($m_row['lasttime']).'</div>';
    }

    if (p_mail_user($m_row['login'], $user['login'])) {
        include_once($_SERVER["DOCUMENT_ROOT"]."/inc/smiles_bb.php");
        $strow = $connect->prepare("select * from `mail` where `id` = ?");
        $stmt_num = $connect->prepare("select count(*) from `mail` where `who` = ? and `user` = ? and `id` = ?");
        if (isset($_GET['edit'])) {
            $stmt_num_edit = $connect->prepare("select count(*) from `mail` where `read` = '0' and `time` > ? and `user` = ? and `who` = ? and `id` = ?");
            $stmt_num_edit->execute(array(time() - 300, $user['login'], $m_row['login'], $_GET['edit']));
            $num = $stmt_num_edit->fetchColumn();
            if ($num > 0) {
                $strow->execute(array($_GET['edit']));
                $row = $strow->fetch(PDO::FETCH_LAZY);
                if (isset($_POST['yes'])) {
                    $error = '';
                    if (empty($_POST['text'])) {
                        $error.= 'Введите сообщение!<br/>';
                    }
                    elseif (mb_strlen($_POST['text']) < 2) {
                        $error.= 'Текст должен содержать не менее 2 символов!<br/>';
                    }
                    elseif (mb_strlen($_POST['text']) > 2500) {
                        $error.= 'Текст должен содержать не более 2500 символов!<br/>';
                    }
                    if (!empty($error)) {
                        echo '<div class="menu">'.$error.'</div>';
                    } else {
                        $stmt = $connect->prepare("update `mail` set `text` = ? where `id` = ? limit 1");
                        if ($stmt->execute(array($_POST['text'], $_GET['edit']))) {
                            header('location: /mail/read/'.$id);
                        } else {
                            echo '<div class="menu">Произошла ошибка!</div>';
                        }
                    }
                }
                elseif (isset($_POST['no'])) {
                    header('location: /mail/read/'.$id);
                }
            echo '<div class="menu">
            <form action="" method="post">
            Сообщение:<br/><textarea name="text" rows="3" cols="20">'.$row['text'].'</textarea><br/>
            <input type="submit" name="yes" value="Сохранить ('.val($_GET['edit'], 1).')"/>
            <input type="submit" name="no" value="Отмена"/>
            </form></div>';
            } else {
                header('location: /mail/read/'.$id);
            }
        } elseif (isset($_GET['cit'])) {
            $stmt_num->execute(array($user['login'], $m_row['login'], $_GET['cit']));
            $num = $stmt_num->fetchColumn();
            if ($num > 0) {
                $strow->execute(array($_GET['cit']));
                $row = $strow->fetch(PDO::FETCH_LAZY);
                if ($row['user'] != $user['login']) {
                    if (isset($_POST['yes'])) {
                        $error = '';
                        if (empty($_POST['text'])) {
                            $error.= 'Введите сообщение!<br/>';
                        }
                        elseif (mb_strlen($_POST['text']) < 2) {
                            $error.= 'Текст должен содержать не менее 2 символов!<br/>';
                        }
                        elseif (mb_strlen($_POST['text']) > 2500) {
                            $error.= 'Текст должен содержать не более 2500 символов!<br/>';
                        }
                        elseif (isset($_SESSION['guest_add']) && $_SESSION['guest_add'] > time() - $antiflud) {
                            $error.= 'Антиспам! Лимит - '.$antiflud.' секунд!<br/>';
                        }
                        if (file_exists($_FILES['filename']['tmp_name'])) {
                            $token = random_int(11111, 99999);
                            $files = $token."_".$_FILES['filename']['name'];
                            if (!is_safeFile(['jpg', 'jpeg', 'png', 'gif', 'zip', 'rar', '7z'], $_FILES['filename']['name'])) {
                                $error.= 'Неверный тип файла!<br/>';
                            }
                            if ($_FILES['filename']['size'] > 1048576 * 5) {
                                $error.= 'Максимальный размер файла - 5 Mb!<br/>';
                            }
                        }
                        if (!empty($error)) {
                            echo '<div class="menu">'.$error.'</div>';
                        } else {
                            if ($in_mail->execute(array(time(), $user['login'], $m_row['login'], $_POST['text'], $files ?? false))) {
                                // Добавляем в контакты
                                contact_add($user['login'], $user_mail);
                                if (file_exists($_FILES['filename']['tmp_name'])) {
                                    move_uploaded_file($_FILES['filename']['tmp_name'], $_SERVER["DOCUMENT_ROOT"]."/files/".$files);
                                }
                                $_SESSION['guest_add'] = time();
                                header('location: /mail/read/'.$id);
                            } else {
                                echo '<div class="menu">Произошла ошибка!</div>';
                            }
                        }
                    }
                    elseif (isset($_POST['no'])) {
                        header('location: /mail/read/'.$id);
                    }
                $cit = "[u]".$row['user']."[/u] (".daytime($row['time']).")[br]".$row['text'];
                $tag = array('[cit]', '[/cit]');
                $str = str_replace($tag, null, $cit);
                echo '<div class="menu">
                <form action="" method="post" enctype="multipart/form-data">
                Сообщение:<br/><textarea name="text" rows="5" cols="30">[cit]'.$str.'[/cit][br]</textarea><br/>
                Прикрепить файл:<br/><input type="file" name="filename"><br />
                <input type="submit" name="yes" value="Цитировать ('.val($_GET['cit'], 1).')"/>
                <input type="submit" name="no" value="Отмена"/>
                </form></div>';
                } else {
                    header('location: /mail/read/'.$id);
                }
            } else {
                header('location: /mail/read/'.$id);
            }
        } else {
        if (isset($_POST['refresh'])) {
            header('location: /mail/read/'.$id);
        }
        elseif (isset($_POST['text'])) {
            $error = '';
            if (empty($_POST['text'])) {
                $error.= 'Введите сообщение!<br/>';
            }
            elseif (mb_strlen($_POST['text']) < 2) {
                $error.= 'Текст должен содержать не менее 2 символов!<br/>';
            }
            elseif (mb_strlen($_POST['text']) > 2500) {
                $error.= 'Текст должен содержать не более 2500 символов!<br/>';
            }
            elseif (isset($_SESSION['guest_add']) && $_SESSION['guest_add'] > time() - $antiflud) {
                $error.= 'Антиспам! Лимит - '.$antiflud.' секунд!<br/>';
            }
            if (file_exists($_FILES['filename']['tmp_name'])) {
                $token = random_int(11111, 99999);
                $files = $token."_".$_FILES['filename']['name'];
                if (!is_safeFile(['jpg', 'jpeg', 'png', 'gif', 'zip', 'rar', '7z'], $_FILES['filename']['name'])) {
                    $error.= 'Неверный тип файла!<br/>';
                }
                if ($_FILES['filename']['size'] > 1048576 * 5) {
                    $error.= 'Максимальный размер файла - 5 Mb!<br/>';
                }
            }
            if (!empty($error)) {
                echo '<div class="menu">'.$error.'</div>';
            } else {
                if ($in_mail->execute(array(time(), $user['login'], $m_row['login'], $_POST['text'], $files ?? false))) {
                    // Добавляем в контакты
                    contact_add($user['login'], $m_row['login']);
                    $_SESSION['guest_add'] = time();
                    if (file_exists($_FILES['filename']['tmp_name'])) {
                        move_uploaded_file($_FILES['filename']['tmp_name'], $_SERVER["DOCUMENT_ROOT"]."/files/".$files);
                    }
                    header('location: /mail/read/'.$id);
                } else {
                    echo '<div class="menu">Ошибка при добавлении сообщения!</div>';
                }
            }
        }
            echo '<div class="menu">
            <form name="form" action="" method="post" enctype="multipart/form-data">
            Сообщение:<br/><textarea name="text" rows="3" cols="20"></textarea><br/>
            Прикрепить файл:<br/><input type="file" name="filename"><br />
            <input type="submit" value="Написать"/>
            <input type="submit" name="refresh" value="Обновить">
            </form></div>';
        }
    } else {
        echo '<div class="menu">Данному пользователю могут отправлять сообщения только друзья!</div>';
    }

    $stmt_count = $connect->prepare("select count(*) from `mail` where (`who` = :who and `user` = :user) or (`who` = :user and `user` = :who)");
    $stmt_count->bindValue(':who', $user['login']);
    $stmt_count->bindValue(':user', $m_row['login']);
    $stmt_count->execute();
    $count = $stmt_count->fetchColumn();

    $k_post = $count;
    $k_page = k_page($k_post, 10);
    $page = page($k_page);
    $start = 10 * $page - 10;

    $data = $connect->prepare("select * from `mail` where `who` = :who and `user` = :user or `who` = :user and `user` = :who order by `id` desc limit :start, 10");
    $data->bindValue(':who', $user['login']);
    $data->bindValue(':user', $m_row['login']);
    $data->bindValue(':start', $start, PDO::PARAM_INT);
    $data->execute();
    $sql = $data->fetchAll();

    if ($count == 0) {
        echo '<div class="menu">Сообщений нет!</div>';
    } else {
        foreach ($sql as $row) {
            echo '<div class="menu"><img src="/img/us.png"> <a href="/user/'.uid($row['user'], 1).'" class="mlink">'.$row['user'].'</a> ('.daytime($row['time']).') '.($row['read'] == 0 ? '<small>Не прочитано</small> ' : '') . ($row['time'] > time() - 300 && $row['read'] == 0 && $row['user'] == $user['login'] ? '(<a href="?edit='.$row['id'].'">Редактировать</a>)' : '') . ($row['user'] != $user['login'] ? '(<a href="?cit='.$row['id'].'">Цит.</a>)' : '').'<span class="online">'.online($row['user'], 1).'</span><hr />'.nl2br(smiles(bb(bblinks($row['text'])))) . (file_exists($_SERVER["DOCUMENT_ROOT"]."/files/".$row['file']) && $row['file'] ? '<hr/>Файл: <a href="/files/'.$row['file'].'">'.$row['file'].'</a> ('.get_filesize($_SERVER["DOCUMENT_ROOT"]."/files/".$row['file']).')' : '').'</div>';
        }
        if ($k_page > 1) navigation($k_page, $page);
    }
    if ($version == 'mobile') echo '<div class="forlink"><a href="/mail" class="links"><img src="/img/mail.png" alt=""> Сообщения</a></div>';
        }
    } else {
        header('location: /mail');
    }
} else {
    header('Location: /');
}

include_once($_SERVER["DOCUMENT_ROOT"]."/inc/foot.php");
?>