Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Ламерские вопросы » кто поможет поправить код уведомления Автора о новых комментариях

кто поможет поправить код уведомления Автора о новых комментариях


     28.10.2013    уведомление, комментарии    Все вопросы » Ламерские вопросы    2917

вопрос
кто поможет поправить код уведомления Автора новости о новых комментариях.

предисловие:
- создал колонку email в таблице Post, сюда записываются e-mail авторов новости;
- создал колонку com_subs в таблице Post, в принципе имеет два значения 0 и 1, по умолчанию стоит 1 (тоесть подписан на нов комменты), т.к. пока не знаю как привязать в чекбоксу в addnews.html
Код ниже нашел в инете, хотел поправить под себя, чего-то не фурычит...

$msg_title = "Новый комментарий на сайте";
        $msg_text = "Поступил новый комментарий http://" . $_SERVER ['HTTP_HOST'] . "/index.php?newsid=$post_id\n
Автор: $name\n
Комментарий:\n $comments\n\n
Для отмены всех уведомлений о новых комментариях:\n
http://" . $_SERVER ['HTTP_HOST'] . "/unsubscribe_com.php?user_id=$member_id[user_id]";
        $msg_text = str_replace ( "<br />", "\n", $msg_text );
        $msg_text = strip_tags ( $msg_text );
        
        $row = $db->super_query ( "SELECT com_subs FROM " . PREFIX . "_post WHERE autor='$member_id[autor_id]' LIMIT 0,1" );
        $com_subs = $row ['com_subs'];
        if ($com_subs == 1) {
            $sql_result = $db->query ( "SELECT  autor, email FROM " . PREFIX . "_post WHERE post_id = '$post_id'" );
            while ( $row = $db->get_row ( $sql_result ) ) {
                $autor = $row ['autor'];
                $email = $row ['email'];
                $mail->send ( $email, $msg_title, $msg_text );

            }
        }
        if ($db->safesql ( $_REQUEST ['p_com_subs'] ) == 1 && $com_subs!=1) {
            $db->query ( "UPDATE " . PREFIX . "_post set com_subs='1' where user_id='$member_id[autor_id]'" );
        }

Ответил: vitnet


кто поможет поправить код уведомления Автора о новых комментариях

Подписки авторов статей на комментарии при добавлении новостей (пока только с сайта*)

Установка:

Найти
        if( $user_group[$member_id['user_group']]['allow_fixed'] ) $news_fixed = intval( $_POST['news_fixed'] );
        else $news_fixed = 0;

ниже добавить
        if( $user_group[$member_id['user_group']]['allow_subscribe'] ) $allow_subscribe = intval( $_POST['allow_subscribe'] );
        else $allow_subscribe = 0;

найти
                if( !$approve and $config['mail_news'] ) {
                    
                    include_once ENGINE_DIR . '/classes/mail.class.php';
                    $mail = new dle_mail( $config );

выше добавить
                if ($allow_subscribe == "1" AND $user_group[$member_id['user_group']]['allow_subscribe']) {

                    if(function_exists('openssl_random_pseudo_bytes')) {
                        $stronghash = md5(openssl_random_pseudo_bytes(15));
                    } else $stronghash = md5(uniqid( mt_rand(), TRUE ));

                    $salt = str_shuffle($stronghash);
                    $s_hash = "";
                
                    for($i = 0; $i < 10; $i ++) {
                        $s_hash .= $salt{mt_rand( 0, 31 )};
                    }

                    $s_hash = md5($s_hash);

                    $db->query( "INSERT INTO " . PREFIX . "_subscribe (user_id, name, email, news_id, hash) values ('{$member_id['user_id']}', '{$member_id['name']}', '{$member_id['email']}', '{$row['id']}', '{$s_hash}')" );

                }

найти
            if( $user_group[$member_id['user_group']]['allow_fixed'] ) $admintag .= "<br /><input type=\"checkbox\" name=\"news_fixed\" id=\"news_fixed\" value=\"1\" /><label for=\"news_fixed\"> {$lang['add_al_fix']}</label>";
            $tpl->set( '{admintag}', $admintag );
        } else
            $tpl->set( '{admintag}', "" );

заменить на
            if( $user_group[$member_id['user_group']]['allow_subscribe'] ) $admintag .= "<br /><input type=\"checkbox\" name=\"allow_subscribe\" id=\"allow_subscribe\" value=\"1\" /><label for=\"allow_subscribe\"> Подписаться на комментарии</label>";
            $tpl->set( '{admintag}', $admintag );
        } else
            if( $user_group[$member_id['user_group']]['allow_subscribe'] ) $admintag .= "<br /><input type=\"checkbox\" name=\"allow_subscribe\" id=\"allow_subscribe\" value=\"1\" /><label for=\"allow_subscribe\"> Подписаться на комментарии</label>";
            
            $tpl->set( '{admintag}', $admintag );

Готово!

6 комментариев

vitnet
PHP-developer

vitnet - 28 октября 2013 22:55 -

Я думаю можно все на много проще сделать.

Чек бокс в addnews.tpl, обработка в addnews.php и стандартное уведомление из addcomments

Yurets
Юзер

Yurets - 28 октября 2013 23:15 -

подобным образом не хватает ума прикрутить ))

vitnet
PHP-developer

vitnet - 28 октября 2013 23:21 -

Завтра попробую собрать

Yurets
Юзер

Yurets - 28 октября 2013 23:28 -

я так понимаю мне нужен этот кусок кода:


        if ( $config['mail_comments'] OR $config['allow_subscribe'] ) {

            include_once ENGINE_DIR . '/classes/mail.class.php';
            $mail = new dle_mail( $config );
            
            $row = $db->super_query( "SELECT template FROM " . PREFIX . "_email WHERE name='comments' LIMIT 0,1" );

            $row['template'] = stripslashes( $row['template'] );
            $row['template'] = str_replace( "{Гость}", $name, $row['template'] );
            $row['template'] = str_replace( "{%date%}", langdate( "j F Y H:i", $_TIME ), $row['template'] );
            $row['template'] = str_replace( "{%link%}", $config['http_home_url'] . "index.php?newsid=" . $post_id, $row['template'] );

            $body = str_replace( '\n', "", $comments );
            $body = str_replace( '\r', "", $body );
            
            $body = stripslashes( stripslashes( $body ) );
            $body = str_replace( "<br />", "\n", $body );
            $body = strip_tags( $body );
            
            $row['template'] = str_replace( "{%text%}", $body, $row['template'] );

        }

        if ( $config['allow_subscribe'] ) {

            $row['template'] = str_replace( "{%ip%}", "--", $row['template'] );
            $found_subscribe = false;

            $db->query( "SELECT user_id, name, email, hash FROM " . PREFIX . "_subscribe WHERE news_id='{$post_id}'" );

            while($rec = $db->get_row())
            {
                if ($rec['user_id'] != $member_id['user_id'] ) {

                    $body = str_replace( "{%username_to%}", $rec['name'], $row['template'] );
                    $body = str_replace( "{%unsubscribe%}", $config['http_home_url'] . "index.php?do=unsubscribe&post_id=" . $post_id . "&user_id=" . $rec['user_id'] . "&hash=" . $rec['hash'], $body );
                    $mail->send( $rec['email'], $lang['mail_comments'], $body );

                } else {

                    $found_subscribe = true;

                }

            }

            $db->free();

            if ($_POST['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe'] AND !$found_subscribe) {

                if(function_exists('openssl_random_pseudo_bytes')) {
                    
                    $stronghash = md5(openssl_random_pseudo_bytes(15));
                    
                } else $stronghash = md5(uniqid( mt_rand(), TRUE ));

                $salt = str_shuffle($stronghash);
                $s_hash = "";
                
                for($i = 0; $i < 10; $i ++) {
                    $s_hash .= $salt{mt_rand( 0, 31 )};
                }

                $s_hash = md5($s_hash);

                $db->query( "INSERT INTO " . PREFIX . "_subscribe (user_id, name, email, news_id, hash) values ('{$member_id['user_id']}', '{$member_id['name']}', '{$member_id['email']}', '{$post_id}', '{$s_hash}')" );

            }

        }


спасибо, буду рад любой помощт

Yurets
Юзер

Yurets - 29 октября 2013 18:51 -

ну что, никак? (

vitnet
PHP-developer

vitnet - 29 октября 2013 22:57 -

Вот, правда без всяких до.полей в БД, все оказалось намного проще.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх