Редактор темы

Вопрос? Помогите с php кодом

  • Автор темы Автор темы maxtv
  • Дата начала Дата начала

maxtv

Новичок
Регистрация
28 Мар 2018
Сообщения
27
Рейтинг реакций
2
Баллы
8
Возраст
34
1/3
Автор темы
Привет,есть модуль рецензии помогите поменять местами список и добавление рецензии
Нужно чтобы форма добавление была сверху


PHP:
<?
/*
=============================================================================
Модуль: Reviews - Отзывы и рецензии для DLE
=============================================================================
Автор модуля: iNol
=============================================================================
Файл: /modules/reviews.php
=============================================================================
Версия модуля: v0.9
=============================================================================
*/

if(!defined('DATALIFEENGINE')) die("Hacking attempt!");

include ENGINE_DIR . "/data/reviews_opt.php";
include "language/Russian/reviews.lng";

//Собираем переменные
$clear = is_numeric($reviews_opt['r_cache']) ? intval($reviews_opt['r_cache']) : false; if($clear === false) return;
$message = is_numeric($reviews_opt['r_message']) ? intval($reviews_opt['r_message']) : false; if($message === false) return;
$newsid = is_numeric($newsid) ? intval($newsid) : false; if($newsid === false) return;
$userid = $member_id['user_id'];
$username = $member_id['name'];
$usergroup = $member_id['user_group'];
$userphoto = $member_id['foto'];
$prefix = $reviews_opt['r_prefix'];

//Настройки кэша
$allow_cache = ($config['version_id'] >= '10.2') ? $config['allow_cache'] == '1' : $config['allow_cache'] == "yes";
$cache_change = false;
if(!$allow_cache)
{
    if ($config['version_id'] >= '10.2') $config['allow_cache'] = '1';
    else $config['allow_cache'] = "yes";
    $cache_change = true;
}
$config['clear_cache'] = (intval($config['clear_cache']) > 1) ? intval($config['clear_cache']) : 0; $clear_change = false;
if($config['clear_cache'] == 0)
{
    $config['clear_cache'] = is_numeric($clear) ? intval($clear) : 10080;
    $clear_change = true;
}
$reviews_cache = dle_cache($prefix . "_revcache_" . $newsid, $config['skin']);
if($reviews_cache !== false)
{
    echo $reviews_cache;
    goto form;
}

//Выводим список рецензий
$select = $db->query("SELECT * FROM ".PREFIX."_reviews WHERE newsid='$newsid' AND approve='1' ORDER BY RAND() LIMIT 5000");
if($db->num_rows($select)>0)
{
    while($row = $db->get_row($select))
    {   
        $revid = $row['id'];
        $rating = $row['rating'];
        $date = $row['date'];   
        if($rating >= 7) $color = $reviews_opt['r_good'];
        elseif($rating <= 3) $color = $reviews_opt['r_bad'];
        else $color = $reviews_opt['r_neutral'];
        $tpl->load_template('reviews_full.tpl');
        $tpl->set("{user}", $row['author']);
        $tpl->set("{date}", $date);
        $avatar = empty($row['avatar']) ? $config['http_home_url'] . 'templates/' . $config['skin'] . '/dleimages/noavatar.png' : $userphoto;
        $tpl->set("{avatar}", $avatar);
        $tpl->set("{title}", $row['title']);
        $tpl->set("{review}", str_replace(array("&lt;b&gt;","&lt;/b&gt;","&lt;i&gt;","&lt;/i&gt;","&lt;u&gt;","&lt;/u&gt;"),array("<b>","</b>","<i>","</i>","<u>","</u>"),$row['review']));
        $tpl->set("{rating}", $row['rating']);
        $tools = '<a target="_blank" href="'.$config['http_home_url'].$config['admin_path'].'?mod=reviews&action=edit&id='.$revid.'">Редактировать</a> | <a target="_blank" href="'.$config['http_home_url'].$config['admin_path'].'?mod=reviews&action=reject&id='.$revid.'&newsid='.$newsid.'">Снять с публикации</a> | <a target="_blank" href="'.$config['http_home_url'].$config['admin_path'].'?mod=reviews&action=archive&id='.$revid.'&newsid='.$newsid.'">В архив</a>';
        $tpl->set("{admin}", $tools);
        $tpl->set("{color}", $color);
        $tpl->compile('reviews');
        $output = $tpl->result['reviews'];
        $tpl->clear();
    }
    echo $output;
    //Создаем кэш
    create_cache($prefix . "_revcache_" . $newsid, $output, $config['skin'], false);
    if ($cache_change)    $config['allow_cache'] = false;
    if ($clear_change)    $config['clear_cache'] = 0;
}
$db->free($select);

form:
// Показываем форму добавления рецензии в соответствии с настройками групп пользователей
$groups = explode(",", $reviews_opt['r_groups']);
foreach($groups as $key => $value)
    {   
        if($usergroup === $value)
        {
            $is_allowed = true;
            break;
        }
        else $is_allowed = false;
    }

if($is_allowed === false)
{
    $tpl->load_template('info.tpl');
    $tpl->set("{title}", $reviews_lng['r_add_review']);
    $tpl->set("{error}", $reviews_lng['r_unreg']);
    $tpl->compile('info');
    $output = $tpl->result['info'];
    $tpl->clear();
    echo $output;
}
else
{
    $token = rand(10000,99999);
    $tpl->load_template('reviews_full_add.tpl');
    $tpl->set("{newsid}", $newsid);
    $tpl->set("{authorid}", $userid);
    $tpl->set("{authorname}", $username);
    $tpl->set("{avatar}", $userphoto);
    $tpl->set("{token}", $token);
    $tpl->compile('reviews_add');
    $output = $tpl->result['reviews_add'];
    echo $output;

    // Обрабатываем добавленную рецензию
    if(isset($_POST['addrev']) and isset($_POST['token']))
    {
        if($_POST['token'] == $_SESSION['lasttoken']) $do_nothing = true;
        else
        {
            $_SESSION['lasttoken'] = $_POST['token'];

            if(!empty($_POST['review']))
            {
                $title = preg_replace('/([^\s]{40})[^\s]+/', '',htmlspecialchars(str_replace("script","скрипт",$_POST['title']),ENT_QUOTES,$config['charset']));
                $review = nl2br(preg_replace('/([^\s]{50})[^\s]+/', '',htmlspecialchars(str_replace("script","скрипт",$_POST['review']),ENT_QUOTES,$config['charset'])));
                $rating = intval($_POST['rating']);
                $appgroups = explode(',', $reviews_opt['r_approved']);
                foreach($appgroups as $key => $value)
                {   
                    if($usergroup == $value)
                    {
                        $is_approved = true;
                        break;
                    }
                    else $is_approved = false;
                }
                if($is_approved == true) $revadd = $db->query("INSERT INTO ".PREFIX."_reviews (newsid, date, userid, author, avatar, title, review, rating, approve) VALUES ('$newsid', NOW(), '$userid', '$username', '$userphoto', '$title', '$review', '$rating', '1')");
                else $revadd = $db->query("INSERT INTO ".PREFIX."_reviews (newsid, date, userid, author, avatar, title, review, rating, approve) VALUES ('$newsid', NOW(), '$userid', '$username', '$userphoto', '$title', '$review', '$rating', '0')");
                if($revadd)
                {   
                    clear_cache($reviews_opt["r_prefix"] . "_revcache_" . $newsid, $config['skin']);
                    $tpl->load_template('info.tpl');
                    $tpl->set("{title}", $reviews_lng['r_added']);
                    if($is_approved == true) $tpl->set("{error}", $reviews_lng['r_nocheck']);
                    else $tpl->set("{error}", $reviews_lng['r_check']);
                    $tpl->compile('info');
                    $output = $tpl->result['info'];
                    $tpl->clear();
                    echo $output;

                    // Отправляем письмецо
                    if($message == 1)
                    {
                        $news_title = $db->query("SELECT title FROM ".PREFIX."_post WHERE id='$newsid'");
                        $data = $db->get_row($news_title);
                        $movie = $data['title'];
                        $now = time();
                        $subject = $reviews_lng['r_mail1'] . ' ' . $movie . ' ' . $reviews_lng['r_mail2'];
                        $subject = $db->safesql($subject);
                        $from = 'Reviews checker';
                        $from = $db->safesql($from);
                        $text = $reviews_lng['r_mail3'] . ' <b><a href="' . $config['http_home_url'] . 'user/' . $username . '/">' . $username . '</a></b> ' . $reviews_lng['r_mail4'] . ' <h3>"' . $movie . '"</h3><p><a href="' . $config['admin_path'] . '?mod=reviews" target="_blank">' . $reviews_lng['r_mail5'] . '</a><p>';
                        $text = $db->safesql($text);
                        $user_id = explode(",", $reviews_opt['r_users']);
                        foreach($user_id as $key => $value)
                        {
                            $value = intval($value);
                            $db->query("INSERT into " . PREFIX . "_pm (subj, text, user, user_from, date, pm_read, folder) VALUES ('$subject', '$text', '$value', '$from', '$now', '0', 'inbox')");
                            $db->query("UPDATE " . USERPREFIX . "_users set pm_unread = pm_unread + 1, pm_all = pm_all+1  where user_id = '$value'");
                        }       
                    }
                }
                else echo $reviews_lng["r_error_db"];
            }
            else
            {
                $tpl->load_template('info.tpl');
                $tpl->set("{title}", $reviews_lng['r_error']);
                $tpl->set("{error}", $reviews_lng['r_empty_review']);
                $tpl->compile('info');
                $output = $tpl->result['info'];
                $tpl->clear();
                echo $output;
            }
        }
    }
}
?>
 
Автор темы
Сделал так
PHP:
<?
/*
=============================================================================
Модуль: Reviews - Отзывы и рецензии для DLE
=============================================================================
Автор модуля: iNol
=============================================================================
Файл: /modules/reviews.php
=============================================================================
Версия модуля: v0.9
=============================================================================
*/

if(!defined('DATALIFEENGINE')) die("Hacking attempt!");

include ENGINE_DIR . "/data/reviews_opt.php";
include "language/Russian/reviews.lng";

//Собираем переменные
$clear = is_numeric($reviews_opt['r_cache']) ? intval($reviews_opt['r_cache']) : false; if($clear === false) return;
$message = is_numeric($reviews_opt['r_message']) ? intval($reviews_opt['r_message']) : false; if($message === false) return;
$newsid = is_numeric($newsid) ? intval($newsid) : false; if($newsid === false) return;
$userid = $member_id['user_id'];
$username = $member_id['name'];
$usergroup = $member_id['user_group'];
$userphoto = $member_id['foto'];
$prefix = $reviews_opt['r_prefix'];

//Настройки кэша
$allow_cache = ($config['version_id'] >= '10.2') ? $config['allow_cache'] == '1' : $config['allow_cache'] == "yes";
$cache_change = false;
if(!$allow_cache)
{
    if ($config['version_id'] >= '10.2') $config['allow_cache'] = '1';
    else $config['allow_cache'] = "yes";
    $cache_change = true;
}
$config['clear_cache'] = (intval($config['clear_cache']) > 1) ? intval($config['clear_cache']) : 0; $clear_change = false;
if($config['clear_cache'] == 0)
{
    $config['clear_cache'] = is_numeric($clear) ? intval($clear) : 10080;
    $clear_change = true;
}
$reviews_cache = dle_cache($prefix . "_revcache_" . $newsid, $config['skin']);
if($reviews_cache !== false)
{
    echo $reviews_cache;
    goto form;
}


form:
// Показываем форму добавления рецензии в соответствии с настройками групп пользователей
$groups = explode(",", $reviews_opt['r_groups']);
foreach($groups as $key => $value)
    {   
        if($usergroup === $value)
        {
            $is_allowed = true;
            break;
        }
        else $is_allowed = false;
    }

if($is_allowed === false)
{
    $tpl->load_template('info.tpl');
    $tpl->set("{title}", $reviews_lng['r_add_review']);
    $tpl->set("{error}", $reviews_lng['r_unreg']);
    $tpl->compile('info');
    $output = $tpl->result['info'];
    $tpl->clear();
    echo $output;
}
else
{
    $token = rand(10000,99999);
    $tpl->load_template('reviews_full_add.tpl');
    $tpl->set("{newsid}", $newsid);
    $tpl->set("{authorid}", $userid);
    $tpl->set("{authorname}", $username);
    $tpl->set("{avatar}", $userphoto);
    $tpl->set("{token}", $token);
    $tpl->compile('reviews_add');
    $output = $tpl->result['reviews_add'];
    echo $output;

    // Обрабатываем добавленную рецензию
    if(isset($_POST['addrev']) and isset($_POST['token']))
    {
        if($_POST['token'] == $_SESSION['lasttoken']) $do_nothing = true;
        else
        {
            $_SESSION['lasttoken'] = $_POST['token'];

            if(!empty($_POST['review']))
            {
                $title = preg_replace('/([^\s]{40})[^\s]+/', '',htmlspecialchars(str_replace("script","скрипт",$_POST['title']),ENT_QUOTES,$config['charset']));
                $review = nl2br(preg_replace('/([^\s]{50})[^\s]+/', '',htmlspecialchars(str_replace("script","скрипт",$_POST['review']),ENT_QUOTES,$config['charset'])));
                $rating = intval($_POST['rating']);
                $appgroups = explode(',', $reviews_opt['r_approved']);
                foreach($appgroups as $key => $value)
                {   
                    if($usergroup == $value)
                    {
                        $is_approved = true;
                        break;
                    }
                    else $is_approved = false;
                }
                if($is_approved == true) $revadd = $db->query("INSERT INTO ".PREFIX."_reviews (newsid, date, userid, author, avatar, title, review, rating, approve) VALUES ('$newsid', NOW(), '$userid', '$username', '$userphoto', '$title', '$review', '$rating', '1')");
                else $revadd = $db->query("INSERT INTO ".PREFIX."_reviews (newsid, date, userid, author, avatar, title, review, rating, approve) VALUES ('$newsid', NOW(), '$userid', '$username', '$userphoto', '$title', '$review', '$rating', '0')");
                if($revadd)
                {   
                    clear_cache($reviews_opt["r_prefix"] . "_revcache_" . $newsid, $config['skin']);
                    $tpl->load_template('info.tpl');
                    $tpl->set("{title}", $reviews_lng['r_added']);
                    if($is_approved == true) $tpl->set("{error}", $reviews_lng['r_nocheck']);
                    else $tpl->set("{error}", $reviews_lng['r_check']);
                    $tpl->compile('info');
                    $output = $tpl->result['info'];
                    $tpl->clear();
                    echo $output;

                    // Отправляем письмецо
                    if($message == 1)
                    {
                        $news_title = $db->query("SELECT title FROM ".PREFIX."_post WHERE id='$newsid'");
                        $data = $db->get_row($news_title);
                        $movie = $data['title'];
                        $now = time();
                        $subject = $reviews_lng['r_mail1'] . ' ' . $movie . ' ' . $reviews_lng['r_mail2'];
                        $subject = $db->safesql($subject);
                        $from = 'Reviews checker';
                        $from = $db->safesql($from);
                        $text = $reviews_lng['r_mail3'] . ' <b><a href="' . $config['http_home_url'] . 'user/' . $username . '/">' . $username . '</a></b> ' . $reviews_lng['r_mail4'] . ' <h3>"' . $movie . '"</h3><p><a href="' . $config['admin_path'] . '?mod=reviews" target="_blank">' . $reviews_lng['r_mail5'] . '</a><p>';
                        $text = $db->safesql($text);
                        $user_id = explode(",", $reviews_opt['r_users']);
                        foreach($user_id as $key => $value)
                        {
                            $value = intval($value);
                            $db->query("INSERT into " . PREFIX . "_pm (subj, text, user, user_from, date, pm_read, folder) VALUES ('$subject', '$text', '$value', '$from', '$now', '0', 'inbox')");
                            $db->query("UPDATE " . USERPREFIX . "_users set pm_unread = pm_unread + 1, pm_all = pm_all+1  where user_id = '$value'");
                        }       
                    }
                }
                else echo $reviews_lng["r_error_db"];
            }
            else
            {
                $tpl->load_template('info.tpl');
                $tpl->set("{title}", $reviews_lng['r_error']);
                $tpl->set("{error}", $reviews_lng['r_empty_review']);
                $tpl->compile('info');
                $output = $tpl->result['info'];
                $tpl->clear();
                echo $output;
            }
        }
    }
}




//Выводим список рецензий
$select = $db->query("SELECT * FROM ".PREFIX."_reviews WHERE newsid='$newsid' AND approve='1' ORDER BY RAND() LIMIT 5000");
if($db->num_rows($select)>0)
{
    while($row = $db->get_row($select))
    {   
        $revid = $row['id'];
        $rating = $row['rating'];
        $date = $row['date'];   
        if($rating >= 7) $color = $reviews_opt['r_good'];
        elseif($rating <= 3) $color = $reviews_opt['r_bad'];
        else $color = $reviews_opt['r_neutral'];
        $tpl->load_template('reviews_full.tpl');
        $tpl->set("{user}", $row['author']);
        $tpl->set("{date}", $date);
        $avatar = empty($row['avatar']) ? $config['http_home_url'] . 'templates/' . $config['skin'] . '/dleimages/noavatar.png' : $userphoto;
        $tpl->set("{avatar}", $avatar);
        $tpl->set("{title}", $row['title']);
        $tpl->set("{review}", str_replace(array("&lt;b&gt;","&lt;/b&gt;","&lt;i&gt;","&lt;/i&gt;","&lt;u&gt;","&lt;/u&gt;"),array("<b>","</b>","<i>","</i>","<u>","</u>"),$row['review']));
        $tpl->set("{rating}", $row['rating']);
        $tools = '<a target="_blank" href="'.$config['http_home_url'].$config['admin_path'].'?mod=reviews&action=edit&id='.$revid.'">Редактировать</a> | <a target="_blank" href="'.$config['http_home_url'].$config['admin_path'].'?mod=reviews&action=reject&id='.$revid.'&newsid='.$newsid.'">Снять с публикации</a> | <a target="_blank" href="'.$config['http_home_url'].$config['admin_path'].'?mod=reviews&action=archive&id='.$revid.'&newsid='.$newsid.'">В архив</a>';
        $tpl->set("{admin}", $tools);
        $tpl->set("{color}", $color);
        $tpl->compile('reviews');
        $output = $tpl->result['reviews'];
        $tpl->clear();
    }
    echo $output;
    //Создаем кэш
    create_cache($prefix . "_revcache_" . $newsid, $output, $config['skin'], false);
    if ($cache_change)    $config['allow_cache'] = false;
    if ($clear_change)    $config['clear_cache'] = 0;
}
$db->free($select);

?>
Вроде всё нормально,но когда добавляешь отзыв,то они поевляються сверху.а когда кэш почистишь и всё нормально
 

Похожие темы Последние темы Популярные темы

Назад
Сверху