Go Back   vb.org Archive > Community Discussions > Modification Requests/Questions (Unpaid)

Reply
 
Thread Tools Display Modes
  #11  
Old 03-09-2012, 09:05 AM
0lly 0lly is offline
 
Join Date: Apr 2007
Location: UK
Posts: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for the replies guys, I actually managed to do it a week or so ago (forgot to update here since I've been busy and working on a games wiki section which will also end up using this, so I kinda forgot about this thread )

Basically, what I did, was duplicate editpost.php, and called it wikiedit.php. Then, from the wikiedit.php file I removed all of this;

PHP Code:
// ############################### start permissions checking ###############################
if ($_REQUEST['do'] == 'deletepost')
{
    
// is post being deleted? if so check delete specific permissions
    
if (!can_moderate($threadinfo['forumid'], 'candeleteposts'))
    {
        if (!
$threadinfo['open'])
        {
            
$vbulletin->url 'showthread.php?' $vbulletin->session->vars['sessionurl'] . "t=$postinfo[threadid]";
            eval(
print_standard_redirect('redirect_threadclosed'));
        }
        if (!(
$forumperms $vbulletin->bf_ugp_forumpermissions['candeletepost']))
        {
            
print_no_permission();
        }
        else
        {
            if (
$vbulletin->userinfo['userid'] != $postinfo['userid'])
            {
                
// check user owns this post since they failed the Mod Delete permission check for this forum
                
print_no_permission();
            }
        }
    }
}
else
{
    
// otherwise, post is being edited
    
if (!can_moderate($threadinfo['forumid'], 'caneditposts'))
    { 
// check for moderator
        
if (!$threadinfo['open'])
        {
            
$vbulletin->url 'showthread.php?' $vbulletin->session->vars['sessionurl'] . "t=$threadinfo[threadid]";
            eval(
standard_error(fetch_error('threadclosed')));
        }
        if (!(
$forumperms $vbulletin->bf_ugp_forumpermissions['caneditpost']))
        {
            
print_no_permission();
        }
        else
        {
            if (
$vbulletin->userinfo['userid'] != $postinfo['userid'])
            {
                
// check user owns this post
                
print_no_permission();
            }
            else
            {
                
// check for time limits
                
if ($postinfo['dateline'] < (TIMENOW - ($vbulletin->options['edittimelimit'] * 60)) AND $vbulletin->options['edittimelimit'] != 0)
                {
                    eval(
standard_error(fetch_error('edittimelimit'$vbulletin->options['edittimelimit'], $vbulletin->options['contactuslink'])));
                }
            }
        }
    }

and then from lines 91-97, I replaced this;
PHP Code:
// get permissions info
$_permsgetter_ 'edit post';
$forumperms fetch_permissions($threadinfo['forumid']);
if (!(
$forumperms $vbulletin->bf_ugp_forumpermissions['canview']) OR !($forumperms $vbulletin->bf_ugp_forumpermissions['canviewthreads']) OR (!($forumperms $vbulletin->bf_ugp_forumpermissions['canviewothers']) AND ($threadinfo['postuserid'] != $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['userid'] == 0)))
{
    
print_no_permission();


with this;
PHP Code:
// get permissions info
if ($threadinfo['prefixid'] != wiki OR is_member_of($vbulletin->userinfo41382) OR ($threadinfo['firstpostid'] != $postinfo['postid']))
{
    
print_no_permission();


I did have it do that any member could edit the first post, but decided to only allow it to people with over 15 posts (which is obviously what the is_member_of($vbulletin->userinfo, 4, 1, 3, 8, 2) bit is for)

I'm sure there's a better way of doing it, but I'm just happy I managed to get it working

You can see the thread at the bottom of this page comes up as a "WikiEdit" post - http://www.nintendolounge.com/forum/...er=desc&page=3
Reply With Quote
  #12  
Old 03-09-2012, 10:14 AM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

very cool. Great idea to put a notice with new edit link in it... Solves the issue I was having with quick edit permissions and looks great on your forum. :up:
Reply With Quote
  #13  
Old 03-09-2012, 12:48 PM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Removing the delete permission checks is very unwise.
Reply With Quote
  #14  
Old 03-09-2012, 01:18 PM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If the entire if ($_REQUEST['do'] == 'deletepost') is removed how could anyone delete a post even if they tried?
Reply With Quote
  #15  
Old 03-09-2012, 01:25 PM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It isnt removed, thats just the permission check. The delete code is way further down.
Reply With Quote
  #16  
Old 03-09-2012, 07:53 PM
0lly 0lly is offline
 
Join Date: Apr 2007
Location: UK
Posts: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by BirdOPrey5 View Post
very cool. Great idea to put a notice with new edit link in it... Solves the issue I was having with quick edit permissions and looks great on your forum. :up:
Thanks!

Quote:
Originally Posted by Paul M View Post
It isnt removed, thats just the permission check. The delete code is way further down.
Ah, I thought I had disabled the ability to delete it, but I hadn't seen the code at the bottom. I see it now;
PHP Code:
// ############################### start delete post ###############################
if ($_POST['do'] == 'deletepost')
{

    
$vbulletin->input->clean_array_gpc('p', array(
        
'deletepost'      => TYPE_STR,
        
'reason'          => TYPE_STR,
        
'keepattachments' => TYPE_BOOL,
    ));

    (
$hook vBulletinHook::fetch_hook('editpost_delete_start')) ? eval($hook) : false;

    if (!
can_moderate($threadinfo['forumid'], 'candeleteposts'))
    {    
// Keep attachments for non moderator deletes (post owner)
        
$vbulletin->GPC['keepattachments'] = true;
    }

    if (
$vbulletin->GPC['deletepost'] != '')
    {
        
//get first post in thread
        
$getfirst $db->query_first_slave("
            SELECT postid, dateline
            FROM " 
TABLE_PREFIX "post
            WHERE threadid = 
$postinfo[threadid]
            ORDER BY dateline
            LIMIT 1
        "
);
        if (
$getfirst['postid'] == $postinfo['postid'])
        {
            
// delete thread
            
if ($forumperms $vbulletin->bf_ugp_forumpermissions['candeletethread'] OR can_moderate($threadinfo['forumid'], 'canmanagethreads'))
            {
                if (
$vbulletin->GPC['deletepost'] == 'remove' AND can_moderate($threadinfo['forumid'], 'canremoveposts'))
                {
                    
$removaltype true;
                }
                else
                {
                    
$removaltype false;
                }

                
$threadman =& datamanager_init('Thread'$vbulletinERRTYPE_STANDARD'threadpost');
                
$threadman->set_existing($threadinfo);
                
$threadman->delete($foruminfo['countposts'], $removaltype, array('userid' => $vbulletin->userinfo['userid'], 'username' => $vbulletin->userinfo['username'], 'reason' => $vbulletin->GPC['reason'], 'keepattachments' => $vbulletin->GPC['keepattachments']));
                unset(
$threadman);

                if (
$foruminfo['lastthreadid'] != $threadinfo['threadid'])
                {
                    
// just decrement the reply and thread counter for the forum
                    
$forumdm =& datamanager_init('Forum'$vbulletinERRTYPE_SILENT);
                    
$forumdm->set_existing($foruminfo);
                    
$forumdm->set('threadcount''threadcount - 1'false);
                    
$forumdm->set('replycount''replycount - 1'false);
                    
$forumdm->save();
                    unset(
$forumdm);
                }
                else
                {
                    
// this thread is the one being displayed as the thread with the last post...
                    // so get a new thread to display.
                    
build_forum_counters($threadinfo['forumid']);
                }

                (
$hook vBulletinHook::fetch_hook('editpost_delete_complete')) ? eval($hook) : false;

                
$vbulletin->url 'forumdisplay.php?' $vbulletin->session->vars['sessionurl'] . "f=$threadinfo[forumid]";
                eval(
print_standard_redirect('redirect_deletethread'));
            }
            else
            {
                
print_no_permission();
            }
        }
        else
        {
            
//delete just this post
            
if ($vbulletin->GPC['deletepost'] == 'remove' AND can_moderate($threadinfo['forumid'], 'canremoveposts'))
            {
                
$removaltype true;
            }
            else
            {
                
$removaltype false;
            }

            
$postman =& datamanager_init('Post'$vbulletinERRTYPE_SILENT'threadpost');
            
$postman->set_existing($postinfo);
            
$postman->delete($foruminfo['countposts'], $threadinfo['threadid'], $removaltype, array('userid' => $vbulletin->userinfo['userid'], 'username' => $vbulletin->userinfo['username'], 'reason' => $vbulletin->GPC['reason'], 'keepattachments' => $vbulletin->GPC['keepattachments']));
            unset(
$postman);

            
build_thread_counters($threadinfo['threadid']);

            if (
$foruminfo['lastthreadid'] != $threadinfo['threadid'])
            {
                
// just decrement the reply counter
                
$forumdm =& datamanager_init('Forum'$vbulletinERRTYPE_SILENT);
                
$forumdm->set_existing($foruminfo);
                
$forumdm->set('replycount''replycount - 1'false);
                
$forumdm->save();
                unset(
$forumdm);
            }
            else
            {
                
// this thread is the one being displayed as the thread with the last post...
                // need to get the lastpost datestamp and lastposter name from the thread.
                
build_forum_counters($threadinfo['forumid']);
            }

            (
$hook vBulletinHook::fetch_hook('editpost_delete_complete')) ? eval($hook) : false;

            
$url unhtmlspecialchars($vbulletin->url);
            if (
preg_match('/\?([^#]*)(#.*)?$/s'$url$match))
            {
                
parse_str($match[1], $parts);

                if (
$parts['postid'] == $postinfo['postid'] OR $parts['p'] == $postinfo['postid'])
                {
                    
// we've deleted the post that we came into this thread from
                    // blank the redirect as it will be set below
                    
$vbulletin->url '';
                }
            }
            else if (
$removaltype OR !can_moderate($threadinfo['forumid'], 'candeleteposts'))
            {
                
// hard deleted or not moderating -> redirect back to the thread
                
$vbulletin->url '';
            }

            if (!
stristr($vbulletin->url'showthread.php')) // no referring url?
            
{
                
$vbulletin->url 'showthread.php?' $vbulletin->session->vars['sessionurl'] . 't=' $threadinfo['threadid'];
            }

            eval(
print_standard_redirect('redirect_deletepost'));
        }
    }
    else
    {
        (
$hook vBulletinHook::fetch_hook('editpost_delete_complete')) ? eval($hook) : false;

        
$vbulletin->url 'showthread.php?' $vbulletin->session->vars['sessionurl'] . "p=$postinfo[postid]#post$postinfo[postid]";
        eval(
print_standard_redirect('redirect_nodelete'));
    }


Is it ok to just delete that then?
Reply With Quote
  #17  
Old 03-09-2012, 08:43 PM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I would think it is safer to delete it than leave it.
Reply With Quote
  #18  
Old 03-09-2012, 10:09 PM
0lly 0lly is offline
 
Join Date: Apr 2007
Location: UK
Posts: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hehe yeah Well I've deleted it now. Just thought there might be a safer way to disable it in the code or something, feels a bit weird deleting so much
Reply With Quote
  #19  
Old 03-14-2012, 07:16 PM
Niak_Judge Niak_Judge is offline
 
Join Date: Nov 2008
Posts: 24
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello,
is this possible in vb 4 ?
Would be great !
Reply With Quote
  #20  
Old 03-15-2012, 03:33 AM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It is possible using the same basic procedures... a lot of file edits... I am working on trying to make this into a mod for VB4... no promises...
Reply With Quote
Reply

Thread Tools
Display Modes

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 10:23 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.04283 seconds
  • Memory Usage 2,385KB
  • 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
  • (4)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (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
  • 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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete