vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   How can I check a custom option before saving? (https://vborg.vbsupport.ru/showthread.php?t=268571)

EquinoxWorld 08-16-2011 02:53 AM

Quote:

Originally Posted by kh99 (Post 2233963)
What you have is probably the best way to keep invalid values from being saved. The PHP Validation code will allow you to check a value and print a message under it if it's invalid, but it will still be saved (maybe you knew that already and that's why you created the thread).

What you might be able to do in your plugin is print an error message then redirect back to the option page like:

PHP Code:

define('CP_REDIRECT''options.php?do=options&dogroup=' $vbulletin->GPC['grouptitle']);
print_stop_message('error_phrase'$vbulletin->GPC['title']); 


(You'd want to use a real error phrase name, but I'm not sure of the other parameters you'd want). I don't think there's any easy way to get the error message to display under the value unless you let it save the invalid values (that is a reasonable option - you could check the values the mod code and use defaults if they're invalid, put in PHP validation code for your fields, and then whenever someone goes to the adminCP they'll see the error message).

Thank you so much for your reply! I did just what you suggested and it all works PERFECT. If the user set the first option to "yes" then the following three are required to be entered if the user does not enter them (before saving) the missing field error appears automatically (because of the validation code), if the user still tries to save (after a missing fields warning popup) the error message from the plugin appears and nothing saves and the user is redirected back to the option group! Truly idiot proof. :D This is what I used for future references (replace params with your own if using this code):

Plugin:

Hook: admin_options_processing

PHP Code:

if ($settings['cotw_sotw_pay_credits']  == 1)  {


if (empty(
$settings['cotw_sotw_first_place_prize'])) {
         
define('CP_REDIRECT''options.php?do=options&dogroup=cotw_sotw_options' $vbulletin->GPC['grouptitle']); 
         
print_stop_message('cotw_missing_param'$vbulletin->GPC['title']);
if (empty(
$settings['cotw_sotw_second_place_prize'])) {
            
define('CP_REDIRECT''options.php?do=options&dogroup=cotw_sotw_options' $vbulletin->GPC['grouptitle']); 
            
print_stop_message('cotw_missing_param'$vbulletin->GPC['title']);
if (empty(
$settings['cotw_sotw_third_place_prize'])) {
            
define('CP_REDIRECT''options.php?do=options&dogroup=cotw_sotw_options' $vbulletin->GPC['grouptitle']); 
            
print_stop_message('cotw_missing_param'$vbulletin->GPC['title']); 
            }
        }
    }
    


Validation code for each option:

PHP Code:

global $vbulletin;

if (
$vbulletin->options['cotw_sotw_pay_credits'] == 1)  {
         
       if (empty(
$data))  {
           
          
               
                           
$error 'invalid_value';
                        return 
false;
    
    }
    else {
        
        return 
true;
    }
}
else {
return 
true;


Thank you so much for your help kh99 and nhawk. Couldn't have asked for more. :up:

kh99 08-16-2011 03:12 AM

Quote:

Originally Posted by EquinoxWorld (Post 2234006)
Thank you so much for your reply! I did just what you suggested and it all works PERFECT.

lol...I'm glad you got it working because I'm not even sure what I suggested :) I think you really have nhawk to thank.

EquinoxWorld 08-16-2011 03:15 AM

Quote:

Originally Posted by kh99 (Post 2234013)
lol...I'm glad you got it working because I'm not even sure what I suggested :) I think you really have nhawk to thank.

We all put in to get this one resolved I think. nhawk has been also helping me out for some time now, he knows my gratitude is immense. Hope it helps someone else at some point, really glad to be a part of this community, collective thinking is the way to go my friends.

nhawk 08-16-2011 11:12 AM

Glad it worked out. I thought it would :D

FYI.. that same hook can be used to process custom checkboxes, or any other data that is customized and can't automatically be processed in a settings group.

EquinoxWorld 08-16-2011 11:23 AM

Quote:

Originally Posted by nhawk (Post 2234132)
Glad it worked out. I thought it would :D

FYI.. that same hook can be used to process custom checkboxes, or any other data that is customized and can't automatically be processed in a settings group.

Thanks nhawk. I'll keep that in mind. I will actually implement that next when I try add some options for moderators outside of the admin panel. Should be interesting ;)


All times are GMT. The time now is 11:05 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.01074 seconds
  • Memory Usage 1,745KB
  • 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
  • (3)bbcode_php_printable
  • (4)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (5)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
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete