Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 10-29-2014, 08:43 AM
manutdir manutdir is offline
 
Join Date: Nov 2008
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Giving permission to another usergroup for removing Polls

Dear all friends

i want to know how can i give permission to my moderators to give them ability for removing polls from threads ?

i am administrator and just i can do this .
Reply With Quote
  #2  
Old 10-29-2014, 03:55 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm afraid I have to ask, how do you remove a poll from a thread? I went to look at the code to see if there is any way to do what you want, but I couldn't figure out how to remove a poll.

Edit: OK, I see now that it can only be done from the admincp. So that means that it can only be done by admins with the "can admin threads" permission, unless someone writes a plugin to do it, or somehow modifies code. I haven't looked into it in detail, but if I were going to do it I'd probably look at copying the relevant code from admincp/thread.php to modcp/thread.php.
Reply With Quote
  #3  
Old 11-02-2014, 06:25 AM
manutdir manutdir is offline
 
Join Date: Nov 2008
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

thanks for your reply

i copied this part from admincp/thread.php

Code:
// **********************************************************************
// *** POLL STRIPPING SYSTEM - removes a poll from a thread *************
// **********************************************************************

// ###################### Start confirm kill poll #######################
if ($_POST['do'] == 'removepoll')
{

	$vbulletin->input->clean_array_gpc('p', array(
		'threadid' => TYPE_UINT,
	));

	if (empty($vbulletin->GPC['threadid']))
	{
		print_stop_message('invalid_x_specified', 'threadid');
	}
	else
	{
		$thread = $db->query_first("
			SELECT thread.threadid, thread.title, thread.postusername, thread.pollid, poll.question
			FROM " . TABLE_PREFIX . "thread AS thread
			LEFT JOIN " . TABLE_PREFIX . "poll AS poll USING (pollid)
			WHERE threadid = " . $vbulletin->GPC['threadid'] . "
				AND open <> 10
		");
		if (!$thread['threadid'])
		{
			print_stop_message('invalid_x_specified', 'threadid');
		}
		else if (!$thread['pollid'])
		{
			print_stop_message('invalid_x_specified', 'pollid');
		}
		else
		{
			print_form_header('thread', 'doremovepoll');
			construct_hidden_code('threadid', $thread['threadid']);
			construct_hidden_code('pollid', $thread['pollid']);
			print_table_header($vbphrase['delete_poll']);
			print_label_row($vbphrase['posted_by'], "<i>$thread[postusername]</i>");
			print_label_row($vbphrase['title'], "<i>$thread[title]</i>");
			print_label_row($vbphrase['question'], "<i>$thread[question]</i>");
			print_submit_row($vbphrase['delete'], 0);
		}
	}
}

// ###################### Start do kill poll #######################
if ($_POST['do'] == 'doremovepoll')
{
	$vbulletin->input->clean_array_gpc('r', array(
		'threadid' => TYPE_UINT,
		'pollid'   => TYPE_UINT
	));

	// check valid thread + poll
	$thread = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "thread WHERE threadid = " . $vbulletin->GPC['threadid'] . " AND pollid = " . $vbulletin->GPC['pollid']);
	if ($thread)
	{
		$pollman =& datamanager_init('Poll', $vbulletin, ERRTYPE_CP);
		$pollman->set_existing($thread);
		$pollman->delete();

		$threadman =& datamanager_init('Thread', $vbulletin, ERRTYPE_CP, 'threadpost');
		$threadman->set_existing($thread);
		$threadman->set('pollid', 0);
		$threadman->save();

		require_once(DIR . '/includes/functions_databuild.php');
		build_thread_counters($thread['threadid']);
		build_forum_counters($thread['forumid']);

		define('CP_REDIRECT', 'thread.php?do=killpoll');
		print_stop_message('deleted_poll_successfully');
	}
	else
	{
		print_stop_message('invalid_poll_specified');
	}

}

// ###################### Start kill poll #######################
if ($_REQUEST['do'] == 'killpoll')
{

	print_form_header('thread', 'removepoll');
	print_table_header($vbphrase['delete_poll']);
	print_input_row($vbphrase['enter_the_threadid_of_the_thread'], 'threadid', '', 0, 10);
	print_submit_row($vbphrase['continue'], 0);

	echo "\n\n<!-- the pun is intended ;o) -->\n\n";
}

in to modcp/thread.php

but nothing happens

and also this address wont work : /modcp/thread.php?do=killpoll
Reply With Quote
  #4  
Old 11-02-2014, 10:58 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well, I found that it basically works. I copied the section you posted above and pasted it in modcp/thread.php just above the print_cp_footer() line at the end. But one issue with doing that that I hadn't considered is that all the other functions in modcp/thread.php require the "can mass move" or "can mass prune" permission, so if the moderator doesn't have that permission they won't be able to remove polls either, unless you change the permission checking at the top of the file.

But what might be easier would be to just create another file for it, like killpoll.php. I've done that, and I'm attaching it here. The issue with that one is that any moderator will be able to delete polls. I'm not sure if it's possible or practical to add a moderator permission, so I'm not sure what you want to do. You could edit the code to check for certain userids, for example.

The other thing is that no option shows up on the index page. You can edit the code in modcp/index.php to add it, but it looks like it's also possible to use a plugin at hook mod_index_navigation to add it.

Sorry, I guess this is turning out to be a bit more difficult than I thought.
Attached Files
File Type: php killpoll.php (4.1 KB, 1 views)
Reply With Quote
  #5  
Old 11-02-2014, 11:19 AM
ozzy47's Avatar
ozzy47 ozzy47 is offline
 
Join Date: Jul 2009
Location: USA
Posts: 10,929
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

How about this way, https://vborg.vbsupport.ru/showthread.php?t=257121
Reply With Quote
Благодарность от:
kh99
  #6  
Old 11-02-2014, 12:00 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by ozzy47 View Post
Oh, yeah, I suppose I could have searched before figuring it out myself, but that's exactly what we were talking about, and the same piece of code that manutdir posted above. And the file I posted is just that piece of code in it's own file with the relevant stuff at the top copied from thread.php, which would avoid modifying an existing script. The only thing is that I still believe it would only work for moderators with "can mass prune" or "can mass move" permission, because that's checked at the top of thread.php. But maybe that's not a problem if it's normal for moderators to have one of those permissions by default.
Reply With Quote
Благодарность от:
ozzy47
  #7  
Old 11-02-2014, 12:02 PM
squidsk's Avatar
squidsk squidsk is offline
 
Join Date: Nov 2010
Posts: 969
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The url you're entering doesn't match the code. Use do=removepoll in you url.
Reply With Quote
  #8  
Old 11-02-2014, 12:06 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by squidsk View Post
The url you're entering doesn't match the code. Use do=removepoll in you url.
The first page with "enter the thread id" is do=killpoll. removepoll is a confirmation page.
Reply With Quote
  #9  
Old 11-02-2014, 05:45 PM
squidsk's Avatar
squidsk squidsk is offline
 
Join Date: Nov 2010
Posts: 969
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kh99 View Post
The first page with "enter the thread id" is do=killpoll. removepoll is a confirmation page.
You're correct, I'm not sure how I missed that.

Quote:
Originally Posted by manutdir View Post
thanks for your reply

i copied this part from admincp/thread.php

Code:
// **********************************************************************
// *** POLL STRIPPING SYSTEM - removes a poll from a thread *************
// **********************************************************************

// ###################### Start confirm kill poll #######################
if ($_POST['do'] == 'removepoll')
{

	$vbulletin->input->clean_array_gpc('p', array(
		'threadid' => TYPE_UINT,
	));

	if (empty($vbulletin->GPC['threadid']))
	{
		print_stop_message('invalid_x_specified', 'threadid');
	}
	else
	{
		$thread = $db->query_first("
			SELECT thread.threadid, thread.title, thread.postusername, thread.pollid, poll.question
			FROM " . TABLE_PREFIX . "thread AS thread
			LEFT JOIN " . TABLE_PREFIX . "poll AS poll USING (pollid)
			WHERE threadid = " . $vbulletin->GPC['threadid'] . "
				AND open <> 10
		");
		if (!$thread['threadid'])
		{
			print_stop_message('invalid_x_specified', 'threadid');
		}
		else if (!$thread['pollid'])
		{
			print_stop_message('invalid_x_specified', 'pollid');
		}
		else
		{
			print_form_header('thread', 'doremovepoll');
			construct_hidden_code('threadid', $thread['threadid']);
			construct_hidden_code('pollid', $thread['pollid']);
			print_table_header($vbphrase['delete_poll']);
			print_label_row($vbphrase['posted_by'], "<i>$thread[postusername]</i>");
			print_label_row($vbphrase['title'], "<i>$thread[title]</i>");
			print_label_row($vbphrase['question'], "<i>$thread[question]</i>");
			print_submit_row($vbphrase['delete'], 0);
		}
	}
}

// ###################### Start do kill poll #######################
if ($_POST['do'] == 'doremovepoll')
{
	$vbulletin->input->clean_array_gpc('r', array(
		'threadid' => TYPE_UINT,
		'pollid'   => TYPE_UINT
	));

	// check valid thread + poll
	$thread = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "thread WHERE threadid = " . $vbulletin->GPC['threadid'] . " AND pollid = " . $vbulletin->GPC['pollid']);
	if ($thread)
	{
		$pollman =& datamanager_init('Poll', $vbulletin, ERRTYPE_CP);
		$pollman->set_existing($thread);
		$pollman->delete();

		$threadman =& datamanager_init('Thread', $vbulletin, ERRTYPE_CP, 'threadpost');
		$threadman->set_existing($thread);
		$threadman->set('pollid', 0);
		$threadman->save();

		require_once(DIR . '/includes/functions_databuild.php');
		build_thread_counters($thread['threadid']);
		build_forum_counters($thread['forumid']);

		define('CP_REDIRECT', 'thread.php?do=killpoll');
		print_stop_message('deleted_poll_successfully');
	}
	else
	{
		print_stop_message('invalid_poll_specified');
	}

}

// ###################### Start kill poll #######################
if ($_REQUEST['do'] == 'killpoll')
{

	print_form_header('thread', 'removepoll');
	print_table_header($vbphrase['delete_poll']);
	print_input_row($vbphrase['enter_the_threadid_of_the_thread'], 'threadid', '', 0, 10);
	print_submit_row($vbphrase['continue'], 0);

	echo "\n\n<!-- the pun is intended ;o) -->\n\n";
}

in to modcp/thread.php

but nothing happens

and also this address wont work : /modcp/thread.php?do=killpoll
Is that the only part you copied because if so you're missing a lot of key items to make the script work. Can you post the entire contents of your modcp/thread.php? If you're just getting a white screen you have errors in your script.
Reply With Quote
  #10  
Old 11-05-2014, 07:29 AM
manutdir manutdir is offline
 
Join Date: Nov 2008
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by ozzy47 View Post
thank you and kh99

my problem solved

:up:
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:59 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04022 seconds
  • Memory Usage 2,291KB
  • Queries Executed 12 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_code
  • (5)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (10)post_thanks_box
  • (2)post_thanks_box_bit
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (1)postbit_attachment
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • postbit_attachment
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete