Beispiel #1
0
         echo '<div class="error">' . t('Ошибка обновления') . '</div>';
     }
     $CI->db->cache_delete_all();
     // синхронизация количества комментариев у комюзеров
     mso_comuser_update_count_comment();
     if ($post['f_comments_email_subscribe']) {
         require_once getinfo('common_dir') . 'comments.php';
         // получим по номеру коммента номер страницы и её титул - нужно для отправки
         $CI->db->select('comments_page_id, page_title');
         $CI->db->from('comments, page');
         $CI->db->where('comments_page_id = page_id');
         $CI->db->where('comments_id', $id);
         $query = $CI->db->get();
         if ($query->num_rows() > 0) {
             $row = $query->row_array();
             mso_email_message_new_comment_subscribe(array('id' => $id, 'comments_approved' => (int) $post['f_comments_approved'], 'comments_content' => $post['f_comments_content'], 'comments_page_id' => $row['comments_page_id'], 'page_title' => $row['page_title']));
         }
     }
 } elseif ($post = mso_check_post(array('f_session_id', 'f_submit_delete'))) {
     // удалить комментарий
     mso_checkreferer();
     $CI->db->where_in('comments_id', $id);
     if ($CI->db->delete('comments')) {
         mso_flush_cache();
         // синхронизация количества комментариев у комюзеров
         mso_comuser_update_count_comment();
         mso_redirect('admin/comments');
     } else {
         echo '<div class="error">' . t('Ошибка удаления') . '</div>';
     }
 }
Beispiel #2
0
function mso_email_message_new_comment($id = 0, $data = array(), $page_title = '')
{
    $data['page_title'] = $page_title;
    // заголовок страницы
    $data['id'] = $id;
    // номер комментария
    $data['comments_content'] = mso_xss_clean($data['comments_content']);
    # хук на который можно повесить подписку на новые комментарии
    mso_hook('mso_email_message_new_comment', $data);
    # рассылаем комментарий всем, кто на него подписан
    mso_email_message_new_comment_subscribe($data);
    # После рассылки смотрим, какие уведомления мы хотим получать.
    $level = mso_get_option('email_comments_level', 'general', 1);
    $return = false;
    //А это потому, что пых не понимает return false; внутри кейсов.
    switch ($level) {
        case 6:
            $return = true;
            break;
            // Ни от кого.
        // Ни от кого.
        case 5:
            if ($data['comments_approved']) {
                $return = true;
            }
            break;
            // Требующий модерации
        // Требующий модерации
        case 4:
            if (array_key_exists('comments_users_id', $data) or array_key_exists('comments_comusers_id', $data)) {
                $return = true;
            }
            break;
        case 3:
            if (!array_key_exists('comments_comusers_id', $data)) {
                $return = true;
            }
            break;
            // От комментаторов
        // От комментаторов
        case 2:
            if (array_key_exists('comments_users_id', $data)) {
                $return = true;
            }
            break;
            // От всех кроме юзеров
        // От всех кроме юзеров
        case 1:
            break;
            // От всех
    }
    if ($return) {
        return false;
    }
    $email = mso_get_option('comments_email', 'general', false);
    // email куда приходят уведомления
    if (!$email) {
        $email = mso_get_option('admin_email', 'general', false);
    }
    // если не задан, отдельный email, то берём email администратора.
    if (!$email) {
        return false;
    }
    $CI =& get_instance();
    if (!$data['comments_approved']) {
        // нужно промодерировать
        $subject = '[' . getinfo('name_site') . '] ' . '(-) ' . tf('Новый комментарий') . ' (' . $id . ') "' . $page_title . '"';
    } else {
        $subject = '[' . getinfo('name_site') . '] ' . tf('Новый комментарий') . ' (' . $id . ') "' . $page_title . '"';
    }
    if (!mso_get_option('subscribe_message_my_comment', 'general', true) && isset($data['comments_users_id']) && $data['comments_users_id'] == getinfo('users_id')) {
        return false;
    }
    // не посылаем уведомление о своём комментарии если нет специальной опции
    // шаблон уведомления
    $def_option = 'Новый комментарий на "{{ $page_title }}"
{{ $comment_url }} 
 
{% if (!$comments_approved) : %}
Комментарий требует модерации: {{ $edit_link }} 
 
{% endif %}
Автор IP: {{ $comment_ip }} 
Referer: {{ $comment_referer }} 
Дата: {{ $comment_date }} 
 
{% if ($user) : %}
Пользователь: {{ $user_id }} 
{% endif %}
{% if ($comuser) : %}
Комюзер: id={{ $comuser_id }}, ник: {{ $comuser_nik }}, email: {{ $comuser_email }} 
Профиль: {{ $comuser_url }} 
{% endif %}
{% if ($anonim) : %}
Аноним: {{ $anonim }} 
{% endif %}
 
Текст:
{{ $comment_content }} 
 
Администрировать комментарий вы можете по ссылке:
{{ $edit_link }}
';
    $template = mso_get_option('template_email_message_new_comment', 'general', $def_option);
    $comment_url = mso_get_permalink_page($data['comments_page_id']) . '#comment-' . $id;
    $comments_approved = $data['comments_approved'];
    $comment_ip = $data['comments_author_ip'];
    $comment_referer = $_SERVER['HTTP_REFERER'];
    $comment_date = $data['comments_date'];
    $user = $comuser = $anonim = false;
    if (isset($data['comments_users_id'])) {
        $user = true;
        $user_id = $data['comments_users_id'];
    }
    if (isset($data['comments_comusers_id'])) {
        $comuser = true;
        $comuser_id = $data['comments_comusers_id'];
        $CI->db->select('comusers_nik, comusers_email');
        $CI->db->from('comusers');
        $CI->db->where('comusers_id', $data['comments_comusers_id']);
        $query = $CI->db->get();
        if ($query->num_rows() > 0) {
            $comusers = $query->row();
            $comuser_nik = $comusers->comusers_nik;
            $comuser_email = $comusers->comusers_email;
            $comuser_url = getinfo('siteurl') . 'users/' . $data['comments_comusers_id'];
        }
    }
    if (isset($data['comments_author_name'])) {
        $anonim = $data['comments_author_name'];
    }
    $comment_content = $data['comments_content'];
    $edit_link = getinfo('site_admin_url') . 'comments/edit/' . $id;
    $template = mso_tmpl_prepare($template, false);
    ob_start();
    eval($template);
    $text = ob_get_contents();
    ob_end_clean();
    $data = array_merge($data, array('comment' => true));
    // Чтобы плагин smtp_mail точно знал, что ему подсунули коммент, а не вычислял это по subject
    return mso_mail($email, $subject, $text, $false, $data);
    // А зная о комментарии, он сможет сотворить некоторые бонусы.
}
Beispiel #3
0
function mso_email_message_new_comment($id = 0, $data = array(), $page_title = '')
{
    $data['page_title'] = $page_title;
    // заголовок страницы
    $data['id'] = $id;
    // номер комментария
    $data['comments_content'] = mso_xss_clean($data['comments_content']);
    # хук на который можно повестить подписку на новые комментарии
    mso_hook('mso_email_message_new_comment', $data);
    # рассылаем комментарий всем, кто на него подписан
    mso_email_message_new_comment_subscribe($data);
    # После рассылки смотрим, какие уведомления мы хотим получать.
    $level = mso_get_option('email_comments_level', 'general', 1);
    $return = false;
    //А это потому, что пых не понимает return false; внутри кейсов.
    switch ($level) {
        case 6:
            $return = true;
            break;
            // Ни от кого.
        // Ни от кого.
        case 5:
            if ($data['comments_approved']) {
                $return = true;
            }
            break;
            // Требующий модераци
        // Требующий модераци
        case 4:
            if (array_key_exists('comments_users_id', $data) or array_key_exists('comments_comusers_id', $data)) {
                $return = true;
            }
            break;
        case 3:
            if (!array_key_exists('comments_comusers_id', $data)) {
                $return = true;
            }
            break;
            // От комментаторов
        // От комментаторов
        case 2:
            if (array_key_exists('comments_users_id', $data)) {
                $return = true;
            }
            break;
            // От всех кроме юзеров
        // От всех кроме юзеров
        case 1:
            break;
            // От всех
    }
    if ($return) {
        return false;
    }
    $email = mso_get_option('comments_email', 'general', false);
    // email куда приходят уведомления
    if (!$email) {
        $email = mso_get_option('admin_email', 'general', false);
    }
    // если не задан, отдельный email, то берём email администратора.
    if (!$email) {
        return false;
    }
    $CI =& get_instance();
    if ($data['comments_approved'] == 0) {
        // нужно промодерировать
        $subject = '[' . getinfo('name_site') . '] ' . '(-) ' . tf('Новый комментарий') . ' (' . $id . ') "' . $page_title . '"';
    } else {
        $subject = '[' . getinfo('name_site') . '] ' . tf('Новый комментарий') . ' (' . $id . ') "' . $page_title . '"';
    }
    $text = tf('Новый комментарий на') . ' "' . $page_title . '"' . NR;
    $text .= mso_get_permalink_page($data['comments_page_id']) . '#comment-' . $id . NR . NR;
    if ($data['comments_approved'] == 0) {
        $text .= tf('Комментарий требует модерации') . ': ' . NR . getinfo('site_admin_url') . 'comments/edit/' . $id . NR . NR;
    }
    $text .= 'Автор IP: ' . $data['comments_author_ip'] . NR;
    $text .= 'Referer: ' . $_SERVER['HTTP_REFERER'] . NR;
    $text .= 'Дата: ' . $data['comments_date'] . NR;
    if (isset($data['comments_users_id'])) {
        $text .= tf('Пользователь') . ': ' . $data['comments_users_id'] . NR;
    } elseif (isset($data['comments_comusers_id'])) {
        $text .= tf('Комюзер') . ': id=' . $data['comments_comusers_id'];
        $CI->db->select('comusers_nik, comusers_email');
        $CI->db->from('comusers');
        $CI->db->where('comusers_id', $data['comments_comusers_id']);
        $query = $CI->db->get();
        if ($query->num_rows() > 0) {
            $comusers = $query->row();
            $text .= ', ник: ' . $comusers->comusers_nik . ', email: ' . $comusers->comusers_email . NR;
            $text .= 'Профиль: ' . getinfo('siteurl') . 'users/' . $data['comments_comusers_id'] . NR;
        }
    } elseif (isset($data['comments_author_name'])) {
        $text .= tf('Аноним') . ': ' . $data['comments_author_name'] . NR;
    }
    $text .= NR . 'Текст: ' . NR . $data['comments_content'] . NR;
    $text .= NR . tf('Администрировать комментарий вы можете по ссылке') . ': ' . NR . getinfo('site_admin_url') . 'comments/edit/' . $id . NR;
    $data = array_merge($data, array('comment' => true));
    //Чтобы плагин smtp_mail точно знал, что ему подсунули коммент, а не вычислял это по subject
    return mso_mail($email, $subject, $text, $false, $data);
    //А зная о комментарии, он сможет сотворить некоторые бонусы.
}