Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2016-10-01 15:07:00

sharklaser
Участник
Зарегистрирован: 2016-08-27
Сообщений: 14

[MOD] Like mod

Установил мод fluxbb.org/resources/mods/like-mod/
Подскажите, как ограничить возможность лайка по группам?

Offline

  • Нравится: 1

#2 2016-10-01 16:55:02

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: [MOD] Like mod

В файле like.php меняем

// Make sure form_user is correct
if ($pun_user['is_guest'])
	message($lang_common['No permission']);

на

// Make sure form_user is correct
if ($pun_user['is_guest'] || ! in_array($pun_user['g_id'], array(ТУТ ЧЕРЕЗ ЗАПЯТУЮ НОМЕРА ГРУПП, КОТОРЫМ РАЗРЕШЕНО ЛАЙКАТЬ)))
	message($lang_common['No permission']);

или

// Make sure form_user is correct
if ($pun_user['is_guest'] || in_array($pun_user['g_id'], array(ТУТ ЧЕРЕЗ ЗАПЯТУЮ НОМЕРА ГРУПП, КОТОРЫМ НЕ РАЗРЕШЕНО ЛАЙКАТЬ)))
	message($lang_common['No permission']);

Offline

#3 2016-10-02 16:23:44

sharklaser
Участник
Зарегистрирован: 2016-08-27
Сообщений: 14

Re: [MOD] Like mod

@Visman, благодарю, однако сама кнопка у не перечисленных групп осталась активной, но после перегрузки страницы лайк от них исчезает, можно ли деактивировать и саму кнопку?

Offline

#4 2016-10-02 17:26:03

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: [MOD] Like mod

Во viewtopic.php заменить

	if (!$pun_user['is_guest'] && $cur_post['poster_id'] != $pun_user['id']) // Like mod

на

	if (!$pun_user['is_guest'] && $cur_post['poster_id'] != $pun_user['id'] && in_array($pun_user['g_id'], array(ТУТ ЧЕРЕЗ ЗАПЯТУЮ НОМЕРА ГРУПП, КОТОРЫМ РАЗРЕШЕНО ЛАЙКАТЬ))) // Like mod

или на

	if (!$pun_user['is_guest'] && $cur_post['poster_id'] != $pun_user['id'] && ! in_array($pun_user['g_id'], array(ТУТ ЧЕРЕЗ ЗАПЯТУЮ НОМЕРА ГРУПП, КОТОРЫМ НЕ РАЗРЕШЕНО ЛАЙКАТЬ))) // Like mod

Offline

#5 2016-10-02 20:35:52

sharklaser
Участник
Зарегистрирован: 2016-08-27
Сообщений: 14

Re: [MOD] Like mod

@Visman, благодарю. А если я захочу удалить все лайки от группы с номером 7, какой командой это сделать в mysql?

Offline

#6 2016-10-03 05:42:55

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: [MOD] Like mod

@sharklaser, не получится это сделать через mysql из-за формата хранения лайков. Нужно писать скрипт на php.

Offline

#7 2017-03-19 02:17:09

Makssssssss
Новичок
Зарегистрирован: 2017-03-17
Сообщений: 8

Re: [MOD] Like mod

Ребят привет! установил данный мод на последнюю сборку от Visman и при нажатии на Unlike выдает ошибку:

Информация

Неверный csrf_hash. Вы перешли на эту страницу из неавторизованного источника.

неподскажите в чем я накосячил?

Offline

#8 2017-03-19 05:55:14

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: [MOD] Like mod

##
##
##        Mod title:  Like Mod
##
##      Mod version:  1.0.3
##  Works on FluxBB:  1.5.x, 1.4.x
##     Release date:  2015-07-03
##          Authors:  adaur ([email protected])
##                    soyuka
##
##      Description:  This mod adds a button to "Like" a post at the bottom
##                    of each one and displays the users who liked the post.
##                    AJAX powered, thanks to soyuka! Degrades gracefully
##                    if javascript is not enabled.
##
##   Affected files:  viewtopic.php
##                    header.php
##
##       Affects DB:  Yes
##
##       DISCLAIMER:  Please note that "mods" are not officially supported by
##                    FluxBB. Installation of this modification is done at 
##                    your own risk. Backup your forum database and any and
##                    all applicable files before proceeding.
##
##


#
#---------[ 1. UPLOAD ]-------------------------------------------------------
#

/upload folder to /


#
#---------[ 2. RUN ]----------------------------------------------------------
#

install_mod.php


#
#---------[ 3. DELETE ]-------------------------------------------------------
#

install_mod.php


#
#---------[ 4. OPEN ]---------------------------------------------------------
#

header.php


#
#---------[ 5. FIND (line: 87) ]---------------------------------------------
#

<link rel="stylesheet" type="text/css" href="style/<?php echo $pun_user['style'].'.css' ?>" />
<?php


#
#---------[ 6. AFTER, ADD ]---------------------------------------------------
#

if (basename($_SERVER['PHP_SELF']) == 'viewtopic.php')
{
	if (file_exists(PUN_ROOT.'lang/'.$pun_user['language'].'/like_mod.php'))
		require PUN_ROOT.'lang/'.$pun_user['language'].'/like_mod.php';
	else
		require PUN_ROOT.'lang/English/like_mod.php';
		
	echo '<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>'."\n"; // Delete this line if jQuery is already loaded
	echo '<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>'."\n"; // This as well
	echo '<script type="text/javascript" src="include/like_mod.js"></script>'."\n";
	echo '<script type="text/javascript">$(document).ready(function(){$(\'a.like\').wsLiker(\''.$pun_user['id'].'\', \''.pun_htmlspecialchars($pun_user['username']).'\', \''.$db->escape($lang_like_mod['Like']).'\', \''.$db->escape($lang_like_mod['Unlike']).'\', \''.$db->escape($lang_like_mod['Like this post']).'\');});</script>'."\n";
}


#
#---------[ 7. OPEN ]---------------------------------------------------------
#

viewtopic.php


#
#---------[ 8. FIND (line: 210) ]---------------------------------------------
#

p.edited_by, 


#
#---------[ 9. ADD AFTER ]----------------------------------------------------
#

p.likes, 


#
#---------[ 10. FIND (line: 299) ]--------------------------------------------
#

	// Generation post action array (quote, edit, delete etc.)


#
#---------[ 11. AFTER, ADD ]---------------------------------------------------
#

	if (!$pun_user['is_guest'] && $cur_post['poster_id'] != $pun_user['id']) // Like mod
	{
		if (empty($cur_post['likes']))
			$like_button = '<li class="postlike"><span><a href="like.php?tid='.$id.'&amp;pid='.$cur_post['id'].'&amp;csrf_hash='.csrf_hash().'" class="like">'.$lang_like_mod['Like'].'</a></span></li>';
		else
		{
			$likes = unserialize($cur_post['likes']);
			if (isset($likes[$pun_user['id']]))
				$like_button = '<li class="postunlike"><span><a href="like.php?tid='.$id.'&amp;pid='.$cur_post['id'].'&amp;unlike=1&amp;csrf_hash='.csrf_hash().'" class="like">'.$lang_like_mod['Unlike'].'</a></span></li>';
			else
				$like_button = '<li class="postlike"><span><a href="like.php?tid='.$id.'&amp;pid='.$cur_post['id'].'&amp;csrf_hash='.csrf_hash().'" class="like">'.$lang_like_mod['Like'].'</a></span></li>';
		}
	}
	else
		$like_button = '';
		
#
#---------[ 12. FIND (line: 315) ]--------------------------------------------
#

			if (($cur_topic['post_replies'] == '' && $pun_user['g_post_replies'] == '1') || $cur_topic['post_replies'] == '1')
				$post_actions[] = '<li class="postquote"><span><a href="post.php?tid='.$id.'&amp;qid='.$cur_post['id'].'">'.$lang_topic['Quote'].'</a></span></li>';
		}


#
#---------[ 13. AFTER, ADD ]---------------------------------------------------
#

		$post_actions[] = $like_button;
		
#
#---------[ 14. FIND (line: 315) ]--------------------------------------------
#

		if ($pun_user['g_id'] == PUN_ADMIN || !in_array($cur_post['poster_id'], $admin_ids))
		{
			$post_actions[] = '<li class="postdelete"><span><a href="delete.php?id='.$cur_post['id'].'">'.$lang_topic['Delete'].'</a></span></li>';
			$post_actions[] = '<li class="postedit"><span><a href="edit.php?id='.$cur_post['id'].'">'.$lang_topic['Edit'].'</a></span></li>';
		}
		$post_actions[] = '<li class="postquote"><span><a href="post.php?tid='.$id.'&amp;qid='.$cur_post['id'].'">'.$lang_topic['Quote'].'</a></span></li>';


#
#---------[ 15. AFTER, ADD ]---------------------------------------------------
#

		$post_actions[] = $like_button;
		
#
#---------[ 16. FIND (line: 378) ]--------------------------------------------
#

<?php

}

?>
<div class="postlinksb">


#
#---------[ 17. REPLACE WITH ]------------------------------------------------
#

<?php
if (!empty($cur_post['likes']))
{
	$likes = unserialize($cur_post['likes']);
	$comma = $output = '';
?>
<div class="blockpost <?php echo ($post_count % 2 == 0) ? ' roweven' : ' rowodd' ?> liker">
	<div class="box">
		<div class="inbox">
			<div class="postbody">
				<div class="postleft">
					<dl>
						<dd class="usertitle"><strong><?php echo (count($likes) == 1) ? $lang_like_mod['Like this post'] : $lang_like_mod['Like this post multiple']; ?></strong></dd>
					</dl>
				</div>
				<div class="postright">
					<div class="postmsg">
						<p>
						<?php
						foreach($likes as $ids => $like_username)
						{
							$like_username = pun_htmlspecialchars($like_username);
							
							if ($pun_user['g_view_users'] == '1')
								$like_info = '<a href="profile.php?id='.$ids.'">'.$like_username.'</a>';
							else
								$like_info = $like_username;
							
							if (empty($comma))
								$like_pseudo = '<span title="'.$like_username.'">'.$like_info.'</span>';
							else
								$like_pseudo .= '<span title="'.$like_username.'">, '.$like_info.'</span>';
								
							$comma = true;
						}
						echo $like_pseudo;
						?>
						</p>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>
<?php
}
}
?>
<div class="postlinksb">


#
#---------[ 18. SAVE/UPLOAD ]-------------------------------------------------
#

Изменения в 11 шаге.

Offline

  • Нравится: 1

#9 2017-08-10 23:33:32

mrBin
Новичок
Зарегистрирован: 2017-08-10
Сообщений: 2

Re: [MOD] Like mod

Makssssssss пишет:

Ребят привет! установил данный мод на последнюю сборку от Visman и при нажатии на Unlike выдает ошибку:

Информация

Неверный csrf_hash. Вы перешли на эту страницу из неавторизованного источника.

неподскажите в чем я накосячил?

Привет, такая же ошибка.
Не связана ли она с правкой автором сборки include/functions.php

Или сам мод как то конфликтует с новой версией?


#
#---------[ 10. FIND (line: 299) ]--------------------------------------------
#

	// Generation post action array (quote, edit, delete etc.)


#
#---------[ 11. AFTER, ADD ]---------------------------------------------------
#

	if (!$pun_user['is_guest'] && $cur_post['poster_id'] != $pun_user['id']) // Like mod
	{
		if (empty($cur_post['likes']))
			$like_button = '<li class="postlike"><span><a href="like.php?tid='.$id.'&amp;pid='.$cur_post['id'].'" class="like">'.$lang_like_mod['Like'].'</a></span></li>';
		else
		{
			$likes = unserialize($cur_post['likes']);
			if (isset($likes[$pun_user['id']]))
				$like_button = '<li class="postunlike"><span><a href="like.php?tid='.$id.'&amp;pid='.$cur_post['id'].'&amp;unlike=1" class="like">'.$lang_like_mod['Unlike'].'</a></span></li>';
			else
				$like_button = '<li class="postlike"><span><a href="like.php?tid='.$id.'&amp;pid='.$cur_post['id'].'" class="like">'.$lang_like_mod['Like'].'</a></span></li>';
		}
	}
	else
		$like_button = '';

Пока что вообще убрал кнопку с UnLike, не особо нужна, но разобраться бы хотелось

$likes = unserialize($cur_post['likes']);
			if (isset($likes[$pun_user['id']]))
				$like_button = '';
			else

Offline

#10 2017-08-11 05:09:29

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: [MOD] Like mod

@mrBin, вы изменения в 11 шаге установки сделали из предыдущего моего сообщения?

Offline

#11 2017-08-11 08:40:48

mrBin
Новичок
Зарегистрирован: 2017-08-10
Сообщений: 2

Re: [MOD] Like mod

@Visman, благодарю за ответ. Дело было вечером... Мне не пришло в голову что Вы в ридми поправили код.
Все работает!
Спасибо за поддержку!

Редактировался mrBin (2017-08-11 14:19:57)

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens