เป็น Mod ที่เพิ่มปุ่ม Like บนหน้ากระทู้และกล่องแสดงความคิดเห็น แสดงจำนวนคนที่กด Like และยังแจ้งเตือนเมื่อมีคนมากด Like บนความคิดเห็นหรือกระทู้เรา
พัฒนาโดย : emosbat
Version : 1.0.0
phpBB Version(s) : 3.0.x
ดาวน์โหลดได้ที่ : http://emosbat.github.com/phpBB-Ajax-Like/
วิธีการติดตั้ง
Open: memberlist.php
ค้นหา
โค้ด: เลือกทั้งหมด
$member['posts_in_queue'] = 0;
}
โค้ด: เลือกทั้งหมด
// ajaxlike
require_once($phpbb_root_path . 'includes/functions_ajaxlike.' . $phpEx);
$ajaxlike_enable = ((($user->data['user_id'] == ANONYMOUS ? ($config['ajaxlike_enable'] && $config['ajaxlike_guest_can_view']) : $config['ajaxlike_enable'])) && $config['ajaxlike_list_in_profile'] && $user->data['show_likes']);
if($ajaxlike_enable)
{
$likes_limit = ($config['ajaxlike_profile_num'] == 0 ? 15 : $config['ajaxlike_profile_num']);
$likes_array = fetch_user_likes($member['user_id'], $likes_limit);
if(is_array($likes_array[0]))
{
foreach($likes_array[0] as $like)
{
$template->assign_block_vars('last_likes', array(
'TITLE' => $like['topic_title'],
'POSTER' => $like['poster'],
'DETAIL' => $like['post_detail'],
'DATE' => $like['date'],
'LINK' => $like['post_url'],
));
}
}
$template->assign_vars(array(
'LIKE_STATUS' => $ajaxlike_enable,
'LIKES' => get_user_likes($member['user_id']),
'LIKED' => get_user_liked($member['user_id'])
));
}
// ajaxlike
โค้ด: เลือกทั้งหมด
'L_POSTS_IN_QUEUE' => $user->lang('NUM_POSTS_IN_QUEUE', $member['posts_in_queue']),
โค้ด: เลือกทั้งหมด
// ajaxlike
'SHOW_LIKES' => $ajaxlike_enable,
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
$voted_id = (sizeof($voted_id) > 1) ? array_unique($voted_id) : $voted_id;
โค้ด: เลือกทั้งหมด
// ajaxlike
require_once($phpbb_root_path . 'includes/functions_ajaxlike.' . $phpEx);
$ajaxlike_enable = ($user->data['user_id'] == ANONYMOUS ? ($config['ajaxlike_enable'] && $config['ajaxlike_guest_can_view']) : $config['ajaxlike_enable']);
if($ajaxlike_enable)
{
$ajaxlike_like_from = request_var('like_from', 0);
$ajaxlike_action = request_var('ajaxlike_action', '');
$ajaxlike_data = request_var('ajaxlike_data', '');
if($ajaxlike_action != '')
{
if($ajaxlike_action!='notifications' && $ajaxlike_action!='liked_list')
{
// do not trust input!
$sql = 'SELECT forum_id
FROM ' . TOPICS_TABLE . "
WHERE topic_id = $topic_id";
$result = $db->sql_query($sql);
$forum_id = (int) $db->sql_fetchfield('forum_id');
$db->sql_freeresult($result);
if (!$forum_id)
{
ajaxlike_die('',1);
}
}
switch($ajaxlike_action)
{
case 'fulllist':
ajaxlike_die(get_fulllist($post_id));
break;
case 'notifications':
ajaxlike_die(get_notifications());
break;
case 'liked_list':
ajaxlike_die(get_liked_list());
break;
default:
if (($auth->acl_get('u_ajaxlike_mod')) && ($auth->acl_get('f_ajaxlike_mod', $forum_id)) && ($user->data['user_id'] != ANONYMOUS) && ($user->data['user_id']==$ajaxlike_like_from))
{
if($ajaxlike_action == 'like')
{
ajaxlike_die(ajaxlike_like_post($post_id));
}
if(($ajaxlike_action == 'unlike') && $config['ajaxlike_allow_unlike'])
{
ajaxlike_die(ajaxlike_unlike_post($post_id));
}
} else {
ajaxlike_die('',2);
}
}
}
}
// ajaxlike
โค้ด: เลือกทั้งหมด
'S_NUM_POSTS' => sizeof($post_list))
);
โค้ด: เลือกทั้งหมด
// ajaxlike
if($ajaxlike_enable)
{
$likes_data = fetch_topic_likes();
$template->assign_vars(array(
'LIKE_ACCESS' => (($auth->acl_get('u_ajaxlike_mod')) && ($auth->acl_get('f_ajaxlike_mod', $forum_id) && $topic_data['topic_type'] != POST_GLOBAL) && ($user->data['user_id'] != ANONYMOUS) ? 1 : 0),
'ALLOW_UNLIKE' => $config['ajaxlike_allow_unlike'],
'LIKE_FROM' => $user->data['user_id'],
'LIKE_CALLBACK' => append_sid("{$phpbb_root_path}viewtopic.$phpEx")
)
);
}
// ajaxlike
โค้ด: เลือกทั้งหมด
$postrow = array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'TOTAL_LIKES' => ($ajaxlike_enable ? (isset($likes_data[0][$row['post_id']]) ? $likes_data[0][$row['post_id']] : 0) : 0),
'POST_LIKES' => ($ajaxlike_enable ? (isset($likes_data[0][$row['post_id']]) ? $likes_data[0][$row['post_id']] - (in_array($row['post_id'], $likes_data[1]) ? 1 : 0) : 0) : 0),
'YOU_LIKED' => ($ajaxlike_enable ? (in_array($row['post_id'], $likes_data[1]) ? true : false) : 0),
'LIKE_LIST' => ($ajaxlike_enable ? build_like_list(isset($likes_data[2][$row['post_id']]) ? $likes_data[2][$row['post_id']] : false) : ''),
'NO_OWN_POST' => ($poster_id != $user->data['user_id']),
'LIKES' => ($ajaxlike_enable ? get_user_likes($row['user_id']) : 0),
'LIKED' => ($ajaxlike_enable ? get_user_liked($row['user_id']) : 0),
'LAST_LIKE_URL' => (($ajaxlike_enable ? (isset($likes_data[0][$row['post_id']]) ? $likes_data[0][$row['post_id']] : 0) : 0) > 1 ? "#" : append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&un=" . urlencode(build_like_list(isset($likes_data[2][$row['post_id']]) ? $likes_data[2][$row['post_id']] : false)))),
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
// Table names
โค้ด: เลือกทั้งหมด
// ajaxlike
define('LIKES_TABLE', $table_prefix . 'likes');
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
$s_search_hidden_fields[$url_param[0]] = $url_param[1];
}
}
โค้ด: เลือกทั้งหมด
// ajaxlike
$ajaxlike_enable = ($user->data['user_id'] == ANONYMOUS ? false : @$config['ajaxlike_enable']);
$ajaxlike_notify = (($user->data['user_id'] == ANONYMOUS ? false : $ajaxlike_enable) && @$config['ajaxlike_notify']);
$ajaxlike_notify_interval = @$config['ajaxlike_notify_interval'];
if($ajaxlike_notify_interval<5) $ajaxlike_notify_interval = 5;
$ajaxlike_notify_interval = $ajaxlike_notify_interval * 1000;
$like_count=0;
if($ajaxlike_enable)
{
$uid=$user->data['user_id'];
// Ajax like notification
$sql = 'SELECT COUNT(like_id) as like_count
FROM ' . LIKES_TABLE . '
WHERE poster_id = '.$uid.' AND like_read = 1';
$result = $db->sql_query($sql);
$like_count = (int) $db->sql_fetchfield('like_count');
$db->sql_freeresult($result);
// Ajax like notification
}
// ajaxlike
โค้ด: เลือกทั้งหมด
$template->assign_vars(array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'AL_NEW_LIKE' => $like_count,
'AJAXLIKE_ENABLE' => $ajaxlike_enable,
'AJAXLIKE_NOTIFY_ENABLE' => $ajaxlike_notify,
'AJAXLIKE_NOTIFY_INTERVAL' => $ajaxlike_notify_interval,
'AJAXLIKE_NOTIFY_CALLBACK' => append_sid("{$phpbb_root_path}viewtopic.$phpEx"),
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
$data = array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'show_likes' => request_var('show_likes', $user->data['show_likes'], true),
// ajaxlike
โค้ด: เลือกทั้งหมด
$sql_ary = array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'show_likes' => $data['show_likes'],
// ajaxlike
โค้ด: เลือกทั้งหมด
'S_DST' => $data['dst'],
โค้ด: เลือกทั้งหมด
// ajaxlike
'S_SHOW_LIKES' => $data['show_likes'],
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
$lang = array_merge($lang, array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'AL_LIKE_NEW' => ' new like received',
'AL_LIKE_NEW_TITLE' => 'New likes received list',
'AL_LIKE_INFO' => 'Likes your ',
'AL_LIKE_SELF' => 'View your post',
'AL_NO_LIKE_RECEIVED' => 'No like received yet.',
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
$lang = array_merge($lang, array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'AL_TITLE' => 'Last Likes',
'AL_NO_LIKE' => 'No post liked yet.',
'AL_BY' => 'posted by',
'AL_AT' => 'Liked at',
'AL_VIEW' => '[View Post]',
'AL_LIKE_COUNT_TEXT' => 'Likes',
'AL_LIKED_COUNT_TEXT' => 'Liked in',
'AL_POSTS_TEXT' => 'posts',
'AL_POST_TEXT' => 'post',
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
// Common language entries
$lang = array_merge($lang, array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'AJ_SHOW_LIKES' => 'Display last likes in profile',
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
$lang = array_merge($lang, array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'AL_YOU_TEXT' => 'You',
'AL_AND_TEXT' => 'and',
'AL_OTHER_TEXT' => 'other',
'AL_OTHERS_TEXT' => 'others',
'AL_PEOPLE_TEXT' => 'people',
'AL_PEOPLE_LIKE_THIS_TEXT' => 'People like this post',
'AL_LIKE_POST_TEXT' => 'like this post.',
'AL_ONE_LIKE_POST_TEXT' => 'like this post.',
'AL_LIKE_POST_WITH_YOU_TEXT' => 'like this post.',
'AL_YOU_LIKE_TEXT' => 'like this post.',
'AL_LIKE_TEXT' => 'Like',
'AL_UNLIKE_TEXT' => 'Unlike',
'AL_LIKE_COUNT_TEXT' => 'Likes',
'AL_LIKED_COUNT_TEXT' => 'Liked in',
'AL_POSTS_TEXT' => 'posts',
'AL_POST_TEXT' => 'post',
'AL_LIKE_AT_TEXT' => 'Liked at',
'AL_ERROR_INVALID_REQUEST' => 'Invalid request!',
'AL_ERROR_ACCESS_DENIED' => 'Access Denied!',
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
'acl_u_viewprofile' => array('lang' => 'Can view profiles, memberlist and online list', 'cat' => 'profile'),
โค้ด: เลือกทั้งหมด
// ajaxlike
'acl_u_ajaxlike_mod'=> array('lang' => 'Can like posts', 'cat' => 'misc'),
// ajaxlike
โค้ด: เลือกทั้งหมด
$lang = array_merge($lang, array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'acl_f_ajaxlike_mod'=> array('lang' => 'Can like posts in forum', 'cat' => 'misc'),
// ajaxlike
โค้ด: เลือกทั้งหมด
// Admin Permissions
$lang = array_merge($lang, array(
โค้ด: เลือกทั้งหมด
// ajaxlike
'acl_a_ajaxlike_mod'=> array('lang' => 'Can manage likes', 'cat' => 'misc'),
// ajaxlike
ค้นหา
โค้ด: เลือกทั้งหมด
<!-- IF POSTS_IN_QUEUE and U_MCP_QUEUE --><br />(<a href="{U_MCP_QUEUE}">{L_POSTS_IN_QUEUE}</a>)<!-- ELSEIF POSTS_IN_QUEUE --><br />({L_POSTS_IN_QUEUE})<!-- ENDIF -->
</dd>
โค้ด: เลือกทั้งหมด
<!-- ajaxlike -->
<!-- IF LIKE_STATUS -->
<dt>{L_AL_LIKE_COUNT_TEXT}:</dt>
<dd><strong>{LIKES}</strong> <!-- IF LIKES > 1 -->{L_AL_POSTS_TEXT}<!-- ELSE -->{L_AL_POST_TEXT}<!-- ENDIF --></dd>
<dt>{L_AL_LIKED_COUNT_TEXT}:</dt>
<dd><strong>{LIKED}</strong> <!-- IF LIKED > 1 -->{L_AL_POSTS_TEXT}<!-- ELSE -->{L_AL_POST_TEXT}<!-- ENDIF --></dd>
<!-- ENDIF -->
<!-- ajaxlike -->
โค้ด: เลือกทั้งหมด
</div>
<!-- ENDIF -->
โค้ด: เลือกทั้งหมด
<!-- ajaxlike -->
<!-- IF SHOW_LIKES -->
<div class="panel bg2">
<div class="inner"><span class="corners-top"><span></span></span>
<h3>{L_AL_TITLE}</h3>
<!-- IF .last_likes -->
<!-- BEGIN last_likes -->
<div class="ajaxlike_listing_item">
<a href="{last_likes.LINK}" class="ajaxlike_profile_listing_title">{last_likes.TITLE}</a>
<div class="ajaxlike_profile_listing_by">{L_AL_BY} {last_likes.POSTER} . {L_AL_AT} {last_likes.DATE}</div>
<div class="ajaxlike_profile_listing_item">{last_likes.DETAIL}</span> <b><a href="{last_likes.LINK}">{L_AL_VIEW}</a></b></div>
</div>
<!-- END last_likes -->
<!-- ELSE -->
<div class="ajaxlike_listing_item">{L_AL_NO_LIKE}</div>
<!-- ENDIF -->
<span class="corners-bottom"><span></span></span></div>
</div>
<!-- ENDIF -->
<!-- ajaxlike -->
ค้นหา
โค้ด: เลือกทั้งหมด
<!-- IF not S_IS_BOT -->{RUN_CRON_TASK}<!-- ENDIF -->
โค้ด: เลือกทั้งหมด
<!-- ajaxlike -->
<!-- IF AJAXLIKE_ENABLE -->
<div id="ajaxlike_not-dialog">
</div>
<div id="ajaxlike-not-dialog" title="{L_AL_LIKE_NEW_TITLE}">
</div>
<!-- IF AJAXLIKE_NOTIFY_ENABLE -->
<script type="text/javascript">
ajaxlike_init_notify({AJAXLIKE_NOTIFY_INTERVAL},'{AJAXLIKE_NOTIFY_CALLBACK}');
</script>
<!-- ENDIF -->
<!-- ENDIF -->
<!-- ajaxlike -->
คำค้น
โค้ด: เลือกทั้งหมด
<link href="{T_THEME_PATH}/large.css" rel="alternate stylesheet" type="text/css" title="A++" />
โค้ด: เลือกทั้งหมด
<!-- ajaxlike -->
<link href="{T_SUPER_TEMPLATE_PATH}/ajaxlike/css/cupertino/jquery-ui.css" rel="stylesheet" type="text/css" />
<link href="{T_SUPER_TEMPLATE_PATH}/ajaxlike/css/tipsy.css" rel="stylesheet" type="text/css" />
<!-- ajaxlike -->
โค้ด: เลือกทั้งหมด
</head>
โค้ด: เลือกทั้งหมด
<!-- ajaxlike -->
<script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/ajaxlike/js/common.js"></script>
<script type="text/javascript">
JQuery_loader("{T_SUPER_TEMPLATE_PATH}/ajaxlike/js/jquery.js");
</script>
<script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/ajaxlike/js/jquery-ui.js"></script>
<script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/ajaxlike/js/jquery.tipsy.js"></script>
<!-- ajaxlike -->
โค้ด: เลือกทั้งหมด
<a href="{U_RESTORE_PERMISSIONS}">{L_RESTORE_PERMISSIONS}</a>
<!-- ENDIF -->
โค้ด: เลือกทั้งหมด
<!-- Ajax like notification -->
<!-- IF AJAXLIKE_ENABLE -->
•
(<a href="#" onclick="ajaxlike_liked_listbox('{AJAXLIKE_NOTIFY_CALLBACK}'); return false;"><span id="ajaxlike_not_new"><strong>{AL_NEW_LIKE}</strong>{L_AL_LIKE_NEW}</span></a>)
<!-- ENDIF -->
<!-- Ajax like notification -->
ค้นหา
โค้ด: เลือกทั้งหมด
<dd id="custom_date" style="display:none;"><input type="text" name="dateformat" id="dateformat" value="{DATE_FORMAT}" maxlength="30" class="inputbox narrow" style="margin-top: 3px;" /></dd>
</dl>
โค้ด: เลือกทั้งหมด
<!-- ajaxlike -->
<dl>
<dt><label for="show_likes1">{L_AJ_SHOW_LIKES}:</label></dt>
<dd>
<label for="show_likes1"><input type="radio" name="show_likes" id="show_likes1" value="1"<!-- IF S_SHOW_LIKES --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label for="show_likes0"><input type="radio" name="show_likes" id="show_likes0" value="0"<!-- IF not S_SHOW_LIKES --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
</dd>
</dl>
<!-- ajaxlike -->
โค้ด: เลือกทั้งหมด
<!-- IF postrow.SIGNATURE --><div id="sig{postrow.POST_ID}" class="signature">{postrow.SIGNATURE}</div><!-- ENDIF -->
<!-- ENDIF -->
โค้ด: เลือกทั้งหมด
<!-- ajaxlike -->
<!-- IF postrow.TOTAL_LIKES > 0 -->
<hr />
<div class="ajaxlike_container" id="ajaxlike_content{postrow.POST_ID}">
<!-- IF postrow.YOU_LIKED and not S_IS_BOT and S_USER_LOGGED_IN -->
<!-- IF postrow.NO_OWN_POST and LIKE_ACCESS and ALLOW_UNLIKE --><a href="#" onclick="ajaxlike_unlike({postrow.POST_ID},{TOPIC_ID},{FORUM_ID},{LIKE_FROM},'{LIKE_CALLBACK}'); return false;" class="ajaxlike_link ajaxlike_unlike_button">{L_AL_UNLIKE_TEXT}</a> · <!-- ENDIF -->{L_AL_YOU_TEXT} <!-- IF postrow.POST_LIKES > 0 -->{L_AL_AND_TEXT} <a href="{postrow.LAST_LIKE_URL}" <!-- IF postrow.TOTAL_LIKES > 1 -->onclick="ajaxlike_fulllistbox({postrow.POST_ID},{TOPIC_ID},{FORUM_ID},'{LIKE_CALLBACK}','{L_AL_LIKE_AT_TEXT}'); return false;"<!-- ENDIF --> class="ajaxlike_link ajaxlike_tooltip" <!-- IF postrow.LIKE_LIST -->title="{postrow.LIKE_LIST}"<!-- ENDIF -->>{postrow.POST_LIKES} <!-- IF postrow.POST_LIKES > 1 -->{L_AL_OTHERS_TEXT}<!-- ELSE -->{L_AL_OTHER_TEXT}<!-- ENDIF --></a> <!-- ENDIF --><!-- IF postrow.TOTAL_LIKES == 1 -->{L_AL_YOU_LIKE_TEXT}<!-- ELSE -->{L_AL_LIKE_POST_WITH_YOU_TEXT}<!-- ENDIF -->
<!-- ELSE -->
<!-- IF not S_IS_BOT and S_USER_LOGGED_IN and postrow.NO_OWN_POST and LIKE_ACCESS --><a href="#" onclick="ajaxlike_like({postrow.POST_ID},{TOPIC_ID},{FORUM_ID},{LIKE_FROM},'{LIKE_CALLBACK}'); return false;" class="ajaxlike_link ajaxlike_like_button">{L_AL_LIKE_TEXT}</a> · <!-- ENDIF --><a href="{postrow.LAST_LIKE_URL}" <!-- IF postrow.TOTAL_LIKES > 1 -->onclick="ajaxlike_fulllistbox({postrow.POST_ID},{TOPIC_ID},{FORUM_ID},'{LIKE_CALLBACK}','{L_AL_LIKE_AT_TEXT}'); return false;"<!-- ENDIF --> class="ajaxlike_link ajaxlike_tooltip" <!-- IF postrow.LIKE_LIST -->title="{postrow.LIKE_LIST}"<!-- ENDIF -->><!-- IF postrow.TOTAL_LIKES == 1 -->{postrow.LIKE_LIST}<!-- ELSE -->{postrow.TOTAL_LIKES} {L_AL_PEOPLE_TEXT}<!-- ENDIF --></a> <!-- IF postrow.TOTAL_LIKES == 1 -->{L_AL_ONE_LIKE_POST_TEXT}<!-- ELSE -->{L_AL_LIKE_POST_TEXT}<!-- ENDIF -->
<!-- ENDIF -->
</div>
<!-- ELSE -->
<!-- IF not S_IS_BOT and S_USER_LOGGED_IN and postrow.NO_OWN_POST and LIKE_ACCESS -->
<hr />
<div class="ajaxlike_container" id="ajaxlike_content{postrow.POST_ID}">
<a href="#" onclick="ajaxlike_like({postrow.POST_ID},{TOPIC_ID},{FORUM_ID},{LIKE_FROM},'{LIKE_CALLBACK}'); return false;" class="ajaxlike_link ajaxlike_like_button">{L_AL_LIKE_TEXT}</a>
</div>
<!-- ENDIF -->
<!-- ENDIF -->
<!-- ajaxlike -->
โค้ด: เลือกทั้งหมด
<!-- IF postrow.POSTER_POSTS != '' --><dd><strong>{L_POSTS}:</strong> {postrow.POSTER_POSTS}</dd><!-- ENDIF -->
โค้ด: เลือกทั้งหมด
<!-- ajaxlike -->
<dd><strong>{L_AL_LIKE_COUNT_TEXT}:</strong> {postrow.LIKES} <!-- IF postrow.LIKES > 1 -->{L_AL_POSTS_TEXT}<!-- ELSE -->{L_AL_POST_TEXT}<!-- ENDIF --></dd>
<dd><strong>{L_AL_LIKED_COUNT_TEXT}:</strong> {postrow.LIKED} <!-- IF postrow.LIKED > 1 -->{L_AL_POSTS_TEXT}<!-- ELSE -->{L_AL_POST_TEXT}<!-- ENDIF --></dd>
<!-- ajaxlike -->
โค้ด: เลือกทั้งหมด
<p>{LOGGED_IN_USER_LIST}</p>
<!-- ENDIF -->
โค้ด: เลือกทั้งหมด
<!-- ajaxlike -->
<script type="text/javascript">
$(function() {
load_tips('.ajaxlike_tooltip');
});
</script>
<div id="ajaxlike-dialog" title="{L_AL_PEOPLE_LIKE_THIS_TEXT}">
</div>
<!-- ajaxlike -->
ค้นหา
โค้ด: เลือกทั้งหมด
@import url("common.css");
โค้ด: เลือกทั้งหมด
@import url("ajaxlike.css"); /* ajaxlike */