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>'; } }
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); // А зная о комментарии, он сможет сотворить некоторые бонусы. }
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); //А зная о комментарии, он сможет сотворить некоторые бонусы. }