Skip to content

Commit

Permalink
Fix alerts for comments
Browse files Browse the repository at this point in the history
  • Loading branch information
dragomano committed Jun 11, 2020
1 parent 631ca7f commit 49193cd
Show file tree
Hide file tree
Showing 11 changed files with 109 additions and 85 deletions.
81 changes: 41 additions & 40 deletions Sources/LightPortal/Comment.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,31 +102,33 @@ private function add()
global $smcFunc, $user_info, $context, $modSettings, $txt;

$args = array(
'parent_id' => FILTER_VALIDATE_INT,
'counter' => FILTER_VALIDATE_INT,
'level' => FILTER_VALIDATE_INT,
'page_id' => FILTER_VALIDATE_INT,
'page_title' => FILTER_SANITIZE_STRING,
'page_alias' => FILTER_SANITIZE_STRING,
'page_url' => FILTER_SANITIZE_STRING,
'message' => FILTER_SANITIZE_STRING,
'start' => FILTER_VALIDATE_INT
'parent_id' => FILTER_VALIDATE_INT,
'counter' => FILTER_VALIDATE_INT,
'level' => FILTER_VALIDATE_INT,
'page_id' => FILTER_VALIDATE_INT,
'page_title' => FILTER_SANITIZE_STRING,
'page_alias' => FILTER_SANITIZE_STRING,
'page_url' => FILTER_SANITIZE_STRING,
'message' => FILTER_SANITIZE_STRING,
'start' => FILTER_VALIDATE_INT,
'commentator' => FILTER_VALIDATE_INT
);

$data = filter_input_array(INPUT_POST, $args);

if (empty($data))
return;

$parent = $data['parent_id'];
$counter = $data['counter'];
$level = $data['level'];
$page_id = $data['page_id'];
$page_title = $data['page_title'];
$page_alias = $data['page_alias'];
$page_url = $data['page_url'];
$message = $data['message'];
$start = $data['start'];
$parent = $data['parent_id'];
$counter = $data['counter'];
$level = $data['level'];
$page_id = $data['page_id'];
$page_title = $data['page_title'];
$page_alias = $data['page_alias'];
$page_url = $data['page_url'];
$message = $data['message'];
$start = $data['start'];
$commentator = $data['commentator'];

if (empty($page_id) || empty($message))
return;
Expand Down Expand Up @@ -187,14 +189,15 @@ private function add()
$comment = ob_get_clean();

$result = array(
'item' => $item,
'parent' => $parent,
'comment' => $comment,
'created' => $time,
'title' => $txt['response_prefix'] . $page_title,
'alias' => $page_alias,
'page_url' => $page_url,
'start' => $start
'item' => $item,
'parent' => $parent,
'comment' => $comment,
'created' => $time,
'title' => $txt['response_prefix'] . $page_title,
'alias' => $page_alias,
'page_url' => $page_url,
'start' => $start,
'commentator' => $commentator
);

if (empty($parent))
Expand Down Expand Up @@ -261,31 +264,29 @@ private function makeNotify(string $type, string $action, array $options = [])
$smcFunc['db_insert']('',
'{db_prefix}background_tasks',
array(
'task_file' => 'string',
'task_class' => 'string',
'task_data' => 'string',
'claimed_time' => 'int'
'task_file' => 'string',
'task_class' => 'string',
'task_data' => 'string'
),
array(
'$sourcedir/LightPortal/Notify.php',
'\Bugo\LightPortal\Notify',
$smcFunc['json_encode'](
array(
'time' => $options['created'],
'member_id' => $user_info['id'],
'member_name' => $user_info['name'],
'sender_id' => $user_info['id'],
'sender_name' => $user_info['name'],
'author_id' => $context['lp_page']['author_id'],
'commentator_id' => $options['commentator'],
'content_type' => $type,
'content_id' => $options['item'],
'content_action' => $action,
'extra' => json_encode(
array(
'content_subject' => $options['title'],
'content_link' => $options['page_url'] . "start=" . $options['start'] . '#comment' . $options['item']
)
)
'extra' => $smcFunc['json_encode']([
'content_subject' => $options['title'],
'content_link' => $options['page_url'] . 'start=' . $options['start'] . '#comment' . $options['item']
])
)
),
0
)
),
array('id_task')
);
Expand Down
50 changes: 23 additions & 27 deletions Sources/LightPortal/Integration.php
Original file line number Diff line number Diff line change
Expand Up @@ -396,39 +396,31 @@ public static function alertTypes(array &$alert_types)
* Добавляем оповещение о новых комментариях
*
* @param array $alerts
* @param array $formats
* @return void
*/
public static function fetchAlerts(array &$alerts)
public static function fetchAlerts(array &$alerts, array &$formats)
{
global $user_info, $memberContext, $txt, $scripturl;
global $user_info, $txt;

if (empty($alerts))
return;

foreach ($alerts as $id => $alert) {
if ($alert['content_action'] == 'page_comment' || $alert['content_action'] == 'page_comment_reply') {
if ($alert['sender_id'] != $user_info['id']) {
if (!empty($memberContext[$alert['sender_id']]))
$alerts[$id]['sender'] = &$memberContext[$alert['sender_id']];

$string = 'alert_' . $alert['content_type'] . '_' . $alert['content_action'];

if (isset($txt[$string])) {
$extra = $alerts[$id]['extra'];
$search = array('{member_link}', '{comment_link}', '{comment_title}');
$replace = array(
!empty($alert['sender_id']) ? ('<a href="' . $scripturl . '?action=profile;u=' . $alert['sender_id'] . '">' . $alert['sender_name'] . '</a>') : $alert['sender_name'],
$alert['extra']['content_link'],
$alert['extra']['content_subject']
);

foreach ($extra as $k => $v) {
$search[] = '{' . $k . '}';
$replace[] = $v;
}

$alerts[$id]['text'] = str_replace($search, $replace, $txt[$string]);
}
$alerts[$id]['icon'] = '<span class="alert_icon main_icons ' . ($alert['content_action'] == 'page_comment' ? 'im_off' : 'im_on') . '"></span>';

$formats['page_comment_new_comment'] = array(
'required' => array('content_subject', 'content_link'),
'link' => '<a href="%2$s">%1$s</a>',
'text' => '<strong>%1$s</strong>'
);
$formats['page_comment_reply_new_reply'] = array(
'required' => array('content_subject', 'content_link'),
'link' => '<a href="%2$s">%1s</a>',
'text' => '<strong>%1$s</strong>'
);
} else {
unset($alerts[$id]);
}
Expand All @@ -446,12 +438,16 @@ public static function fetchAlerts(array &$alerts)
*/
public static function whosOnline(array $actions)
{
global $txt, $scripturl, $context;
global $txt, $scripturl, $modSettings, $context;

$result = '';
if (empty($actions['action']))
if (empty($actions['action'])) {
$result = sprintf($txt['lp_who_viewing_frontpage'], $scripturl);

if (!empty($modSettings['lp_standalone_mode']) && !empty($modSettings['lp_standalone_url']))
$result = sprintf($txt['lp_who_viewing_index'], $modSettings['lp_standalone_url'], $scripturl);
}

if (!empty($actions['action']) && $actions['action'] == 'portal') {
if ($context['current_subaction'] == 'tags') {
if (!empty($_REQUEST['key']))
Expand All @@ -476,7 +472,7 @@ public static function whosOnline(array $actions)
$result = sprintf($txt['lp_who_viewing_editing_block'], $actions['id']);

if (!empty($actions['sa']) && $actions['sa'] == 'add')
$result = sprintf($txt['lp_who_viewing_adding_block']);
$result = $txt['lp_who_viewing_adding_block'];
}
}

Expand All @@ -488,7 +484,7 @@ public static function whosOnline(array $actions)
$result = sprintf($txt['lp_who_viewing_editing_page'], $actions['id']);

if (!empty($actions['sa']) && $actions['sa'] == 'add')
$result = sprintf($txt['lp_who_viewing_adding_page']);
$result = $txt['lp_who_viewing_adding_page'];
}
}

Expand Down
26 changes: 22 additions & 4 deletions Sources/LightPortal/Notify.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,37 @@ class Notify extends \SMF_BackgroundTask
*/
public function execute()
{
global $sourcedir, $smcFunc, $context;
global $sourcedir, $user_profile, $smcFunc, $context;

require_once($sourcedir . '/Subs-Members.php');
$members = membersAllowedTo('light_portal_view');

if ($this->_details['content_type'] == 'new_comment') {
$members = array_intersect($members, [$this->_details['author_id']]);
} else {
$members = array_intersect($members, [$this->_details['commentator_id']]);
}

// Don't alert the comment author | Не будем уведомлять сами себя, ок?
if (!empty($this->_details['sender_id']))
$members = array_diff($members, array($this->_details['sender_id']));

require_once($sourcedir . '/Subs-Notify.php');
$prefs = getNotifyPrefs($members, $this->_details['content_type'] == 'new_comment' ? 'page_comment' : 'page_comment_reply', true);

if (!empty($this->_details['sender_id']) && empty($this->_details['sender_name'])) {
loadMemberData($this->_details['sender_id'], false, 'minimal');
if (!empty($user_profile[$this->_details['sender_id']]))
$this->_details['sender_name'] = $user_profile[$this->_details['sender_id']]['real_name'];
else
$this->_details['sender_id'] = 0;
}

$alert_bits = array(
'alert' => self::RECEIVE_NOTIFY_ALERT
);
$notifies = [];

$notifies = [];
foreach ($prefs as $member => $pref_option) {
foreach ($alert_bits as $type => $bitvalue) {
if ($this->_details['content_type'] == 'new_comment') {
Expand All @@ -54,8 +72,8 @@ public function execute()
$insert_rows[] = array(
'alert_time' => $this->_details['time'],
'id_member' => $member,
'id_member_started' => $this->_details['member_id'],
'member_name' => $this->_details['member_name'],
'id_member_started' => $this->_details['sender_id'],
'member_name' => $this->_details['sender_name'],
'content_type' => $this->_details['content_type'],
'content_id' => $this->_details['content_id'],
'content_action' => $this->_details['content_action'],
Expand Down
3 changes: 2 additions & 1 deletion Themes/default/LightPortal/ViewPage.template.php
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ function show_comment_block()
<input type="hidden" name="page_alias" value="', $context['lp_page']['alias'], '">
<input type="hidden" name="page_url" value="', $context['lp_current_page_url'], '">
<input type="hidden" name="start" value="', $context['page_info']['start'], '">
<input type="hidden" name="commentator" value="0">
<button type="submit" class="button" name="comment" disabled>', $txt['post'], '</button>
</form>';

Expand Down Expand Up @@ -204,7 +205,7 @@ function show_single_comment($comment, $i = 0, $level = 1)
global $context, $txt;

echo '
<li id="comment', $comment['id'], '" class="col-xs-12 generic_list_wrapper bg ', $i % 2 == 0 ? 'even' : 'odd', '" data-id="', $comment['id'], '" data-counter="', $i, '" data-level="', $level, '" data-start="', (int) $_REQUEST['start'], '" itemprop="comment" itemscope="itemscope" itemtype="http://schema.org/Comment" style="list-style: none">
<li id="comment', $comment['id'], '" class="col-xs-12 generic_list_wrapper bg ', $i % 2 == 0 ? 'even' : 'odd', '" data-id="', $comment['id'], '" data-counter="', $i, '" data-level="', $level, '" data-start="', (int) $_REQUEST['start'], '" data-commentator="', $comment['author_id'], '" itemprop="comment" itemscope="itemscope" itemtype="http://schema.org/Comment" style="list-style: none">
<div class="comment_avatar">
', $comment['avatar'];

Expand Down
6 changes: 4 additions & 2 deletions Themes/default/languages/LightPortal/.english.php
Original file line number Diff line number Diff line change
Expand Up @@ -226,11 +226,12 @@
$txt['lp_comments'] = 'Comments';
$txt['lp_comment_placeholder'] = 'Leave a comment...';

// Comment alerts
$txt['alert_group_light_portal'] = LP_NAME;
$txt['alert_page_comment'] = 'When my page gets a comment';
$txt['alert_new_comment_page_comment'] = '{member_link} left a comment <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_comment_page_comment'] = '{member_link} left a comment {page_comment_new_comment}';
$txt['alert_page_comment_reply'] = 'When my comment gets a reply';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} left a reply on your comment <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} left a reply on your comment {page_comment_reply_new_reply}';

// Errors
$txt['lp_page_not_found'] = 'Page not found!';
Expand All @@ -249,6 +250,7 @@

// Who
$txt['lp_who_viewing_frontpage'] = 'Viewing <a href="%1$s">the portal frontpage</a>.';
$txt['lp_who_viewing_index'] = 'Viewing <a href="%1$s">the portal frontpage</a> or <a href="%2$s">the forum index</a>.';
$txt['lp_who_viewing_page'] = 'Viewing <a href="%1$s">the portal page</a>.';
$txt['lp_who_viewing_tags'] = 'Viewing <a href="%1$s">the portal page tags</a>.';
$txt['lp_who_viewing_the_tag'] = 'Viewing the page list with <a href="%1$s" class="bbc_link">%2$s</a> tag.';
Expand Down
4 changes: 2 additions & 2 deletions Themes/default/languages/LightPortal/.polish.php
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,9 @@

$txt['alert_group_light_portal'] = LP_NAME;
$txt['alert_page_comment'] = 'Po otrzymaniu komentarza na stronie';
$txt['alert_new_comment_page_comment'] = '{member_link} napisał komentarz <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_comment_page_comment'] = '{member_link} napisał komentarz {page_comment_new_comment}';
$txt['alert_page_comment_reply'] = 'Po otrzymaniu odpowiedzi na mój komentarz';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} napisał odpowiedź pod Twoim komentarzem <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} napisał odpowiedź pod Twoim komentarzem {page_comment_reply_new_reply}';

// Errors
$txt['lp_page_not_found'] = 'Nie znaleziono strony!';
Expand Down
6 changes: 4 additions & 2 deletions Themes/default/languages/LightPortal/.russian.php
Original file line number Diff line number Diff line change
Expand Up @@ -226,11 +226,12 @@
$txt['lp_comments'] = 'Комментарии';
$txt['lp_comment_placeholder'] = 'Введите текст комментария...';

// Comment alerts
$txt['alert_group_light_portal'] = LP_NAME;
$txt['alert_page_comment'] = 'При размещении нового комментария к моей странице';
$txt['alert_new_comment_page_comment'] = '{member_link} оставил(а) комментарий <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_comment_page_comment'] = '{member_link} оставил(а) комментарий {page_comment_new_comment}';
$txt['alert_page_comment_reply'] = 'При получении ответа на мой комментарий';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} ответил(а) на ваш комментарий <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} ответил(а) на ваш комментарий {page_comment_reply_new_reply}';

// Errors
$txt['lp_page_not_found'] = 'Страница не найдена!';
Expand All @@ -249,6 +250,7 @@

// Who
$txt['lp_who_viewing_frontpage'] = 'Просматривает <a href="%1$s">главную страницу портала</a>.';
$txt['lp_who_viewing_index'] = 'Просматривает главную страницу <a href="%1$s">портала</a> или <a href="%2$s">форума</a>.';
$txt['lp_who_viewing_page'] = 'Просматривает <a href="%1$s">страницу портала</a>.';
$txt['lp_who_viewing_tags'] = 'Просматривает <a href="%1$s">теги страниц портала</a>.';
$txt['lp_who_viewing_the_tag'] = 'Просматривает список страниц с тегом <a href="%1$s" class="bbc_link">%2$s</a>.';
Expand Down
4 changes: 2 additions & 2 deletions Themes/default/languages/LightPortal/.spanish_es.php
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,9 @@

$txt['alert_group_light_portal'] = LP_NAME;
$txt['alert_page_comment'] = 'Cuando mi página recibe un comentario';
$txt['alert_new_comment_page_comment'] = '{member_link} dejó un comentario <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_comment_page_comment'] = '{member_link} dejó un comentario {page_comment_new_comment}';
$txt['alert_page_comment_reply'] = 'Cuando mi comentario recibe una respuesta';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} dejó una respuesta en tu comentario <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} dejó una respuesta en tu comentario {page_comment_reply_new_reply}';

// Errors
$txt['lp_page_not_found'] = '¡Página no encontrada!';
Expand Down
4 changes: 2 additions & 2 deletions Themes/default/languages/LightPortal/.spanish_latin.php
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,9 @@

$txt['alert_group_light_portal'] = LP_NAME;
$txt['alert_page_comment'] = 'Cuando mi página recibe un comentario';
$txt['alert_new_comment_page_comment'] = '{member_link} dejó un comentario <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_comment_page_comment'] = '{member_link} dejó un comentario {page_comment_new_comment}';
$txt['alert_page_comment_reply'] = 'Cuando mi comentario recibe una respuesta';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} dejó una respuesta en tu comentario <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} dejó una respuesta en tu comentario {page_comment_reply_new_reply}';

// Errors
$txt['lp_page_not_found'] = '¡Página no encontrada!';
Expand Down
6 changes: 4 additions & 2 deletions Themes/default/languages/LightPortal/.ukrainian.php
Original file line number Diff line number Diff line change
Expand Up @@ -226,11 +226,12 @@
$txt['lp_comments'] = 'Коментарi';
$txt['lp_comment_placeholder'] = 'Введіть текст коментаря...';

// Comment alerts
$txt['alert_group_light_portal'] = LP_NAME;
$txt['alert_page_comment'] = 'При розміщенні нового коментаря до моєї сторінки';
$txt['alert_new_comment_page_comment'] = '{member_link} залишив(а) коментар <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_comment_page_comment'] = '{member_link} залишив(а) коментар {page_comment_new_comment}';
$txt['alert_page_comment_reply'] = 'При отриманні відповіді на мій коментар';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} відповів (а) на ваш коментар <a href="{comment_link}">{comment_title}</a>';
$txt['alert_new_reply_page_comment_reply'] = '{member_link} відповів (а) на ваш коментар {page_comment_reply_new_reply}';

// Errors
$txt['lp_page_not_found'] = 'Сторінку не знайдено!';
Expand All @@ -249,6 +250,7 @@

// Who
$txt['lp_who_viewing_frontpage'] = 'Переглядає <a href="%1$s">головну сторінку порталу</a>.';
$txt['lp_who_viewing_index'] = 'Переглядає головну сторінку <a href="%1$s">порталу</a> або <a href="%2$s">форуму</a>.';
$txt['lp_who_viewing_page'] = 'Переглядає <a href="%1$s">сторінку порталу</a>.';
$txt['lp_who_viewing_tags'] = 'Переглядає <a href="%1$s">теги сторінок порталу</a>.';
$txt['lp_who_viewing_the_tag'] = 'Переглядає список сторінок з тегом <a href="%1$s" class="bbc_link">%2$s</a>.';
Expand Down
4 changes: 3 additions & 1 deletion Themes/default/scripts/light_portal/page_comments.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ jQuery(document).ready(function($) {
let parent_id = $(this).parents("li").attr("data-id"),
counter = $(this).parents("li").attr("data-counter"),
level = $(this).parents("li").attr("data-level"),
start = $(this).parents("li").attr("data-start");
start = $(this).parents("li").attr("data-start"),
commentator = $(this).parents("li").attr("data-commentator");
$("#comment_form").children("input[name=parent_id]").val(parent_id);
$("#comment_form").children("input[name=counter]").val(counter);
$("#comment_form").children("input[name=level]").val(level);
$("#comment_form").children("input[name=start]").val(start);
$("#comment_form").children("input[name=commentator]").val(commentator);
$("#message").focus();
});
$("#page_comments").on("click", "span.remove_button", function() {
Expand Down

0 comments on commit 49193cd

Please sign in to comment.