The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
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 . |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
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. |
#5
|
||||
|
||||
How about this way, https://vborg.vbsupport.ru/showthread.php?t=257121
|
Благодарность от: | ||
kh99 |
#6
|
|||
|
|||
Quote:
|
Благодарность от: | ||
ozzy47 |
#7
|
||||
|
||||
The url you're entering doesn't match the code. Use do=removepoll in you url.
|
#8
|
|||
|
|||
The first page with "enter the thread id" is do=killpoll. removepoll is a confirmation page.
|
#9
|
||||
|
||||
Quote:
Quote:
|
#10
|
|||
|
|||
Quote:
my problem solved :up: |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|