Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 03-07-2008, 07:14 PM
Whissi Whissi is offline
 
Join Date: Jun 2005
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Add methode to class in constructor?

Hello,

I'd like to extend the forum dm.
It's easy to add new fields within the "forumdata_start" hook, but I also want to include a verify method.

When I add "function verify_fieldname" and "$this->validfields['fieldname'] = array(TYPE_STR, REQ_NO, VF_METHOD);" to "forumdata_start", I get an error, that "verify_fieldname" wasn't found...

Any hint?
Reply With Quote
  #2  
Old 03-07-2008, 09:54 PM
Antivirus's Avatar
Antivirus Antivirus is offline
 
Join Date: Sep 2004
Location: Black Lagoon
Posts: 1,090
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I don't think you can use vfmethod for custom fields added to datamanagers unless a function already exists. I get around this problem by checking validation using php like follows:

PHP Code:
'daysprune'         => array(TYPE_INT,        REQ_AUTO'if ($data == 0) { $data = -1; } return true;'), 
There's some good details on datamanagers here, but I assume you've already read that.
Reply With Quote
  #3  
Old 03-07-2008, 11:15 PM
Whissi Whissi is offline
 
Join Date: Jun 2005
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Your solution doesn't work for me.
To check the data, I need to access some DM ressources
Reply With Quote
  #4  
Old 03-08-2008, 08:21 AM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Are you sure? Make sure you changed it appropriately. If you want to do a more complicated check you could define a function outside the class using another Plugin then use that function in the custom check field.

PHP Code:
function mycustom_check($data)
{
    
// Some long code here
    // ....
    // ....
    // ....
    // return true/false
}

// Try this first:
$this->validfields['fieldname'] = array(TYPE_STRREQ_NO'return mycustom_check($data)');

// If the above doesn't work try this:
// $this->validfields['fieldname'] = array(TYPE_STR, REQ_NO, 'if(mycustom_check($data)) {return true;} else { return false; }');

// This is just a guess I haven't tried/tested it out. 
What exactly are you trying to check for? (Give examples of valid/invalid data)
Reply With Quote
  #5  
Old 03-08-2008, 11:51 AM
Whissi Whissi is offline
 
Join Date: Jun 2005
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

That's working - that's what Antivirus said and what I also tried.
But the problem is, that "mycustom_check" can't access class ressources.

If the check will fail, I cannot use "$this->error()" for example.
Reply With Quote
  #6  
Old 03-08-2008, 12:59 PM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well then but the contents of mycustom_check directly inside the string instead, does that not work?
like:
PHP Code:
$string 
' /* Do some long check */
 if($data != "something")
 {
     /*$this->error("You cant do this or something()*/
 }
 else
 {
     return true;
 }

'
;
$this->validfields['fieldname'] = array(TYPE_STRREQ_NO$string); 
Does that not work? Does it generate errors or something? Have you test your validation code independently to ensure that it works in the first place?

Or:
PHP Code:
function mycustom_check($data)
{
    
// Some long code here
    // ....
    // ....
    // ....
    // return true/false
}

$this->validfields['fieldname'] = array(TYPE_STRREQ_NO'if(!mycustom_check($data)) { $this->error("Some error message!");} '); 
How about that? (If you only need to use the error method).

What are you checking for/validating for? Is there not already a validation method in the Base Datamanager?
Reply With Quote
  #7  
Old 03-08-2008, 03:43 PM
Whissi Whissi is offline
 
Join Date: Jun 2005
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks. Nice idea.

In the actual case, that will solve my problem.
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 02:51 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03978 seconds
  • Memory Usage 2,225KB
  • Queries Executed 13 (?)
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
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)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_postinfo_query
  • fetch_postinfo
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete