Вход Регистрация
Файл: modules/forum/includes/tema.php
Строк: 92
<?php

/**
 * This file is part of JohnCMS Content Management System.
 *
 * @copyright JohnCMS Community
 * @license   https://opensource.org/licenses/GPL-3.0 GPL-3.0
 * @link      https://johncms.com JohnCMS Project
 */

declare(strict_types=1);

defined('_IN_JOHNCMS') || die('Error: restricted access');

/**
 * @var array $config
 * @var PDO $db
 * @var JohncmsSystemLegacyTools $tools
 * @var JohncmsSystemUsersUser $user
 */

$delf = opendir(UPLOAD_PATH . 'forum/topics');
$tm = [];

while (
$tt = readdir($delf)) {
    if (
$tt != '.' && $tt != '..' && $tt != 'index.php') {
        
$tm[] = $tt;
    }
}

closedir($delf);
$totalt = count($tm);

for (
$it = 0; $it < $totalt; $it++) {
    
$filtime[$it] = filemtime(UPLOAD_PATH . 'forum/topics/' . $tm[$it]);
    
$tim = time();
    
$ftime1 = $tim - 300;
    if (
$filtime[$it] < $ftime1) {
        
unlink(UPLOAD_PATH . 'forum/topics/' . $tm[$it]);
    }
}

if (! 
$id) {
    
http_response_code(404);
    echo 
$view->render(
        
'system::pages/result',
        [
            
'title'         => __('Download topic'),
            
'type'          => 'alert-danger',
            
'message'       => __('Wrong data'),
            
'back_url'      => '/forum/',
            
'back_url_name' => __('Forum'),
        ]
    );
    exit;
}

$req = $db->query("SELECT * FROM `forum_topic` WHERE `id` = '${id}' AND (`deleted` != '1' OR `deleted` IS NULL)");

if (! 
$req->rowCount()) {
    
http_response_code(404);
    echo 
$view->render(
        
'system::pages/result',
        [
            
'title'         => __('Download topic'),
            
'type'          => 'alert-danger',
            
'message'       => __('Wrong data'),
            
'back_url'      => '/forum/',
            
'back_url_name' => __('Forum'),
        ]
    );
    exit;
}

if (isset(
$_POST['submit'])) {
    
$type1 = $req->fetch();
    
$tema = $db->query("SELECT * FROM `forum_messages` WHERE `topic_id` = '${id}'" . ($user->rights >= 7 ? '' : " AND (`deleted` != '1' OR `deleted` IS NULL)") . ' ORDER BY `id` ASC');
    
$mod = (int) ($_POST['mod']);

    switch (
$mod) {
        case 
1:
            
// Сохраняем тему в текстовом формате
            
$text = $type1['name'] . "rnrn";

            while (
$arr = $tema->fetch()) {
                
$txt_tmp = str_replace('[c]', __('Quote') . ':{', $arr['text']);
                
$txt_tmp = str_replace('[/c]', '}-' . __('Answer') . ':', $txt_tmp);
                
$txt_tmp = str_replace('&quot;', '"', $txt_tmp);
                
$txt_tmp = str_replace('[l]', '', $txt_tmp);
                
$txt_tmp = str_replace('[l/]', '-', $txt_tmp);
                
$txt_tmp = str_replace('[/l]', '', $txt_tmp);
                
$stroka = $arr['user_name'] . '(' . date('d.m.Y/H:i', $arr['date']) . ")rn" . $txt_tmp . "rnrn";
                
$text .= $stroka;
            }

            
$num = time() . $id;
            
$fp = fopen(UPLOAD_PATH . 'forum/topics/' . $num . '.txt', 'a+');
            
flock($fp, LOCK_EX);
            
fwrite($fp, "${text}rn");
            
fflush($fp);
            
flock($fp, LOCK_UN);
            
fclose($fp);
            @
chmod("${fp}", 0777);
            @
chmod(UPLOAD_PATH . 'forum/topics/' . $num . '.txt', 0777);
            
$link_to_download = '/forum/?act=loadtem&amp;n=' . $num;
            break;

        case 
2:
            
// Сохраняем тему в формате HTML
            
$text = "<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'><html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>" 
. __('Forum') . "</title>
<style type='text/css'>
body { color: #000000; background-color: #FFFFFF }
div { margin: 1px 0px 1px 0px; padding: 5px 5px 5px 5px;}
.b {background-color: #FFFFFF; }
.c {background-color: #EEEEEE; }
.quote{font-size: x-small; padding: 2px 0px 2px 4px; color: #878787; border-left: 3px solid #c0c0c0;
}
</style></head>
<body><p><b><u>
{$type1['name']}</u></b></p>";
            
$i = 1;

            while (
$arr = $tema->fetch()) {
                
$d = $i / 2;
                
$d1 = ceil($d);
                
$d2 = $d1 - $d;
                
$d3 = ceil($d2);

                if (
$d3 == 0) {
                    
$div = "<div class='b'>";
                } else {
                    
$div = "<div class='c'>";
                }

                
$txt_tmp = htmlentities($arr['text'], ENT_QUOTES, 'UTF-8');
                
$txt_tmp = di(JohncmsSystemLegacyBbcode::class)->tags($txt_tmp);
                
$txt_tmp = preg_replace('#[c](.*?)[/c]#si', '<div class="quote">1</div>', $txt_tmp);
                
$txt_tmp = str_replace("rn", '<br>', $txt_tmp);
                
$stroka = "${div} <b>" . $arr['user_name'] . '</b>(' . date(
                    
'd.m.Y/H:i',
                    
$arr['date']
                ) . 
")<br>${txt_tmp}</div>";
                
$text = "${text} ${stroka}";
                ++
$i;
            }
            
$text = $text . '<p>' . __('This theme was downloaded from the forum site') . ': <b>' . $config['copyright'] . '</b></p></body></html>';
            
$num = time() . $id;
            
$fp = fopen(UPLOAD_PATH . 'forum/topics/' . $num . '.htm', 'a+');
            
flock($fp, LOCK_EX);
            
fwrite($fp, "${text}rn");
            
fflush($fp);
            
flock($fp, LOCK_UN);
            
fclose($fp);
            @
chmod("${fp}", 0777);
            @
chmod(UPLOAD_PATH . 'forum/topics/' . $num . '.htm', 0777);
            
$link_to_download = '/forum/?act=loadtem&amp;n=' . $num;
            break;
    }
}

echo 
$view->render(
    
'forum::download_topic',
    [
        
'title'            => __('Download topic'),
        
'page_title'       => __('Download topic'),
        
'id'               => $id,
        
'back_url'         => '/forum/?type=topic&id=' . $id,
        
'link_to_download' => $link_to_download ?? null,
    ]
);
Онлайн: 2
Реклама