Hi Zanes, thanks for using BWP RC!
About your suggestions:
1. That’s great! Are you a coder? Do you have an account on Github? If so you can create a pull request and add your codes. I will review them shortly and merge them later.
2. I believe that the new comments created by AJAX call are not processed by Hovercard plugin because they are, obviously, added after Hovercard’s Javascript registers hover event. Anyway, I will take a look and see if there’s a work around.
Thanks :).
Thread Starter
Zanes
(@zanes)
Hello, sorry for the late reply.
I don’t have an account on Github (got my own SVN), so i’ll paste what you need to get here. It’s quick and dirty, so it’ll probably need some optimization. Here’s the code (I believe you’ll know where this is located) :
/**
* Format comment contents
*/
function format_comment($commentdata)
{
$comment = array();
$comment['comment_number'] = isset($commentdata['comment_number']) ? $commentdata['comment_number'] : '';
$comment['pid'] = $commentdata['comment_post_ID'];
$comment['home'] = get_option('home');
$comment['user_id'] = $commentdata['user_id'];
$date_format = (!empty($this->options['input_date'])) ? $this->options['input_date'] : $this->options_default['input_date'];
//$comment['time'] = date_i18n($date_format, strtotime($commentdata['comment_date']));
$difference = time() - strtotime(get_gmt_from_date($commentdata['comment_date']));
$weeks = round($difference / 604800);
$difference = $difference % 604800;
$days = round($difference / 86400);
$difference = $difference % 86400;
$hours = round($difference / 3600);
$difference = $difference % 3600;
$minutes = round($difference / 60);
$difference = $difference % 60;
$seconds = $difference;
if ($weeks > 0) {
if ($weeks == 1) {
$comment['time'] = $weeks . ' ' . __('week', $this->_folder); }
else { $comment['time'] = $weeks . ' ' . __('weeks', $this->_folder); }
} else if ($days > 0) {
if ($days == 1) {
$comment['time'] = $days . ' ' . __('day', $this->_folder); }
else { $comment['time'] = $days . ' ' . __('days', $this->_folder); }
} else if ($hours > 0) {
if ($hours == 1) {
$comment['time'] = $hours . ' ' . __('hour', $this->_folder); }
else { $comment['time'] = $hours . ' ' . __('hours', $this->_folder); }
} else if ($minutes > 0) {
if ($minutes == 1) {
$comment['time'] = $minutes . ' ' . __('minute', $this->_folder); }
else { $comment['time'] = $minutes . ' ' . __('minutes', $this->_folder); }
} else if ($seconds >= 0) {
if ($seconds <= 1) {
$comment['time'] = $seconds . ' ' . __('second', $this->_folder); }
else { $comment['time'] = $seconds . ' ' . __('seconds', $this->_folder); }
}
//$comment['time'] = get_time_diff($commentdata['comment_date']);
//$comment['time'] = apply_filters('bwp_rc_date_format', $comment['time'], $commentdata['comment_date']);
// for dynamic comment_type loading
$comment['comment_type'] = $commentdata['comment_type'];
$comment['type'] = $commentdata['comment_type'];
// Format post_title, also trim it if necessary - @since 1.1.0
I’ve commented the parts in your code that aren’t used anymore.
For this to work neatly, the cache needs to be disabled. Adding an option to turn off the cache would be nice (it’d need to be activated by default if this procedure is used though) 😉
Do you have any way to quickly turn off the cache in your code? I’d love to do a quick fix in the code for my website.
Regards,
Zanes
Hi Zanes, thanks for your reply!
Turning off the cache is highly NOT recommended, but for this kind of time format it is necessary. Are you using widget to show the comment list, or template function? At the very first codeblock in class-bwp-recent-comments.php you will be able to find what you’re looking for, i.e. disable cache :).
Hope that helps.
Thread Starter
Zanes
(@zanes)
Hi again,
Thanks for your reply.
Tried turning on the need_refresh, but the problem is that it disables the ability to get “older comments” (ie : the pagination links do not show) in the widget (I use the widget). I’ve had this problem when I first tried to tweak the code some time ago, and I haven’t fixed it (yet 😉 ).
When you say “not” recommended, do you mean it’s because the server will have to make a request to the database each time somebody loads a page with the widget? I know this is kind of inevitable, but can’t help it :/
Also, I believe you only do a “get older comments” request when the pagination link is clicked, and not at the start, right? (not really sure about that one)
Regards,
Zanes
Hi Zanes,
Tried turning on the need_refresh, but the problem is that it disables the ability to get “older comments” (ie : the pagination links do not show) in the widget (I use the widget). I’ve had this problem when I first tried to tweak the code some time ago, and I haven’t fixed it (yet 😉 ).
I will take a look at that.
When you say “not” recommended, do you mean it’s because the server will have to make a request to the database each time somebody loads a page with the widget? I know this is kind of inevitable, but can’t help it :/
I think there’s a way to work around this, turning off the cache is something I really don’t want to do. Anyway, if you want to discuss possible solutions, please go here: http://betterwp.net/community/forum/4/bwp-recent-comments/.
Also, I believe you only do a “get older comments” request when the pagination link is clicked, and not at the start, right? (not really sure about that one)
Of course :).
At the very first codeblock in class-bwp-recent-comments.php you will be able to find what you’re looking for, i.e. disable cache 🙂
I’ve tried to change:
function bwp_get_recent_comments($args = array(), $echo = true, $need_refresh = false)
to
function bwp_get_recent_comments($args = array(), $echo = true, $need_refresh = true)
But nothing changed 🙁 New comments don’t appear.
Hello!
about my previous posts. Please ignore it. It seems the problem is with SQL-sorting not cache.
On the author’s website i see:
“Hook References”
bwp_rc_date_format – Used to apply advanced date formatting, such as x days ago, etc. (filter)
Is it possible actualy use it , and how ?
bwp_rc_date_format is a hook that provides you with 2 variables: comment_time and comment_date.
Follow what is written here: http://www.php.net/manual/en/function.time.php#108581 (along with using the variables the plugin provides) if you would like to achieve that advanced date time.