Thread: Show Thread Enhancements - Mark Threads Unread (vB4)
View Single Post
  #23  
Old 10-07-2013, 12:31 PM
djbaxter djbaxter is offline
 
Join Date: Aug 2006
Location: Ottawa, Canada
Posts: 2,601
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by nerbert View Post
I fixed the problem with cookie based thread marking and now the link shows only for threads younger than the marking cut off limit.


Here's a quick paste in update.

For the "Build Form and Link" Plugin:

Code:
if($vbulletin->options['enable_mark_unread'])
{
	$template_hook['showthread_after_activeusers'] .= '
		<form name="unmark">
			<input type="hidden" name="do" value="unmark" />
			<input type="hidden" name="threadid" value="' . $threadinfo['threadid'] . '" />
			<input type="hidden" name="forumid" value="' . $foruminfo['forumid'] . '" />
			<input type="hidden" name="userid" value="' . $vbulletin->userinfo['userid'] . '" />
			<input type="hidden" name="s" value="' . $session['sessionhash'] . '" />
			<input type="hidden" name="securitytoken" value="' . $vbulletin->userinfo['securitytoken'] . '" />
		</form>
		<script>
			function vB_AJAX_Mark_Unread(form) {
				this.form = form;
				this.lastPost = ' . $threadinfo['lastpost'] . ';
				this.cutOff   = ' . TIMENOW - ($vbulletin->options['markinglimit'] * 86400) . ';
			}
			vB_AJAX_Mark_Unread.prototype.addLink = function() {
				if(this.lastPost > this.cutOff) {
					var unmark = document.createElement("li");
					unmark.innerHTML = \'<a id="mark_unread"  href="javascript:markUnread.unmark();">' . $vbphrase['mark_unread'] . '</a>\';
					fetch_object("threadtools").getElementsByTagName("ul")[0].appendChild(unmark);
				}
			}
			vB_AJAX_Mark_Unread.prototype.unmark = function() {
				YAHOO.util.Connect.setForm(this.form);
				YAHOO.util.Connect.asyncRequest("POST","showthread.php?do=unmark",{success:this.confirm,failure:this.confirm,timeout:vB_Default_Timeout,scope:this});
			}
			vB_AJAX_Mark_Unread.prototype.confirm = function(doc) {
				fetch_object("mark_unread").parentNode.innerHTML = \'<a style="background:rgb(200,50,20);color:white;">' . $vbphrase['marked_unread'] .'</a>\';
			}
			markUnread = new vB_AJAX_Mark_Unread(document.forms.unmark);
			window.onload = function() {
				markUnread.addLink();
			}
		</script>
	';
}
For the "Delete Query" plugin:

Code:
if($vbulletin->options['enable_mark_unread'])
{
	if($_REQUEST['do'] == 'unmark')
	{

		$vbulletin->input->clean_array_gpc('r', array(
			'threadid' 	=> TYPE_STR,
			'forumid' 	=> TYPE_STR,
			'userid' 	=> TYPE_STR
		));
		
		$threadid = intval($vbulletin->GPC['threadid']);
		$forumid  = intval($vbulletin->GPC['forumid']);
		$userid   = intval($vbulletin->GPC['userid']);
		
		if ($vbulletin->options['threadmarking'])
		{
			
			$vbulletin->db->query_write("
				DELETE FROM " . TABLE_PREFIX . "threadread
				WHERE threadid = $threadid 
				AND   userid   = $userid;
			");
			
			$vbulletin->db->query_write("
				DELETE FROM " . TABLE_PREFIX . "forumread
				WHERE forumid  = $forumid 
				AND   userid   = $userid;	
			");
		
			die('done');
		}
		else
		{
			set_bbarray_cookie('thread_lastview', $threadid, 0);
		}
	}
}
Not working correctly. It now fails to show the Mark Unread option in threads that are well within the timeframe (using database marking).

Fortunately, I didn't overwrite my saved copy of the previous version which was better, IMO.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01268 seconds
  • Memory Usage 1,786KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete