Вход Регистрация
Файл: 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 >= '' " 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($fpLOCK_EX);
            
fwrite($fp"${text}rn");
            
fflush($fp);
            
flock($fpLOCK_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($fpLOCK_EX);
            
fwrite($fp"${text}rn");
            
fflush($fp);
            
flock($fpLOCK_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,
    ]
);
Онлайн: 1
Реклама