vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Add methode to class in constructor? (https://vborg.vbsupport.ru/showthread.php?t=172386)

Whissi 03-07-2008 07:14 PM

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?

Antivirus 03-07-2008 09:54 PM

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.

Whissi 03-07-2008 11:15 PM

Your solution doesn't work for me.
To check the data, I need to access some DM ressources :(

Opserty 03-08-2008 08:21 AM

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)

Whissi 03-08-2008 11:51 AM

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.

Opserty 03-08-2008 12:59 PM

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?

Whissi 03-08-2008 03:43 PM

Thanks. Nice idea.

In the actual case, that will solve my problem.


All times are GMT. The time now is 03:50 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.01778 seconds
  • Memory Usage 1,733KB
  • 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
  • (4)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (7)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