vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=251)
-   -   Giving permission to another usergroup for removing Polls (https://vborg.vbsupport.ru/showthread.php?t=315118)

manutdir 10-29-2014 08:43 AM

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 .

kh99 10-29-2014 03:55 PM

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.

manutdir 11-02-2014 06:25 AM

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

kh99 11-02-2014 10:58 AM

1 Attachment(s)
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.

ozzy47 11-02-2014 11:19 AM

How about this way, https://vborg.vbsupport.ru/showthread.php?t=257121

kh99 11-02-2014 12:00 PM

Quote:

Originally Posted by ozzy47 (Post 2520988)

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.

squidsk 11-02-2014 12:02 PM

The url you're entering doesn't match the code. Use do=removepoll in you url.

kh99 11-02-2014 12:06 PM

Quote:

Originally Posted by squidsk (Post 2520990)
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.

squidsk 11-02-2014 05:45 PM

Quote:

Originally Posted by kh99 (Post 2520992)
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 (Post 2520977)
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.

manutdir 11-05-2014 07:29 AM

Quote:

Originally Posted by ozzy47 (Post 2520988)

thank you and kh99

my problem solved

:up:


All times are GMT. The time now is 06:49 PM.

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.01184 seconds
  • Memory Usage 1,787KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (5)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete