vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   Validating Datamanager Values? (https://vborg.vbsupport.ru/showthread.php?t=278519)

Abhik 02-13-2012 04:10 PM

Validating Datamanager Values?
 
Hello,
I have added two simple html text fields in newthread template and now want to save them using datamanager and show them in the showthread template.

First, I have placed them in GPC Array (in newthread_post_start hook):
PHP Code:

$vbulletin->input->clean_array_gpc('p', array(
    
'domainforsalename' => TYPE_STR,
    
'domainforsalebnprice' => TYPE_STR,
));
$newpost['domainforsalename'] = $vbulletin->GPC['domainforsalename'];  
$newpost['domainforsalebnprice'] = $vbulletin->GPC['domainforsalebnprice']; 

Second, I added the values (in newpost_process hook):
PHP Code:

$domaindata =& datamanager_init('Thread'$vbulletinERRTYPE_ARRAY'threadpost');

$domaindata->setr('domainforsalename'$domainforsalename);
$domaindata->setr('domainforsalebnprice'$domainforsalebnprice);

    
$domaindata->setr('domainforsalename'$post['domainforsalename']);
    
$domaindata->setr('domainforsalebnprice'$post['domainforsalebnprice']);
    
$domaindata->pre_save();
if (
count($domaindata->errors) > 0)
{
    
// Errors occurred. Do not proceed with the save.
    // You may want to loop through $dataman->errors and 
    // display the results the user.
}
else
{
    
// No errors occurred.
    // Proceed with the save (see the next step).
}


$domainforsalename $domaindata->save();
$domainforsalebnprice $domaindata->save();

// updating an existing record
$domaindata->save(); 

And, finally validating the data (in threaddata_presave hook):
PHP Code:

$this->validfields['domainforsalename'] = array(TYPE_STRREQ_NO); 
$this->validfields['domainforsalebnprice'] = array(TYPE_STRREQ_NO); 

Still I am getting an error;
Fatal error: Field domainforsalename is not defined in $validfields in class vB_DataManager_Thread in [path]/includes/class_dm.php on line 515

What should I do?

kh99 02-13-2012 04:23 PM

(Oops, sorry - I see you already added those fields.)

But you might try doing it at the threaddata_start hook, because it could be the calls to setr() that are causing the error.

Abhik 02-13-2012 04:51 PM

Thanks,
Now it get saved without any error. How do I check if they got saved properly?

Also, how may I call them in my templates?
Code:

$post['domainforsalename']
and/or
Code:

{vb:raw post.domainforsalename}
?

kh99 02-13-2012 05:04 PM

Quote:

Originally Posted by Abhik (Post 2299314)
Thanks,
Now it get saved without any error. How do I check if they got saved properly?

You could look at the database. Do something like

SELECT domainforsalename, domainforsalebnprice FROM thread WHERE threadid = ID


Quote:

Also, how may I call them in my templates?
Code:

$post['domainforsalename']
and/or
Code:

{vb:raw post.domainforsalename}
?
The second one, but if you're only saving one per thread then you'd probably want {vb:raw thread.domainforsalename} (although it depends what template you're trying to display it in).

Abhik 02-13-2012 05:20 PM

I am getting two blank fields.. Is that normal?
Shouldn't it be filled from the values from the text fields?

http://i41.tinypic.com/1qg9r8.png

I am trying to display the info in showthread template.

Thanks

kh99 02-13-2012 05:34 PM

The fields shouldn't be blank. I think the problem is that at the newpost_process hook the new thread hasn't been created yet. When that hook code runs, there is an existing Thread_Firstpost data manager, so you probably want to use that instead of creating your own thread data manager. So when you add the valid fields, use hook threadfpdata_start instead of threaddata_start. Then at newpost_process, try just doing this:

Code:

if ($type == 'thread')
{
    $dataman->setr('domainforsalename', $post['domainforsalename']);
    $dataman->setr('domainforsalebnprice', $post['domainforsalebnprice']);
}


Abhik 02-13-2012 06:00 PM

Awesome!! :)
Now the columns are being populated.
One more problem,
I am using
Code:

<h2 class="blockhead">Domain Details</h2>
<div class="blockbody formcontrols">
<h3 class="blocksubhead">The Domain Details</h3>
Domain Name: $post['domainforsalename']
Domain Price: $post['domainforsalebnprice']
</div>

on SHOWTHREAD template to show the values. But its returning

Domain Name: $post['domainforsalename'] Domain Price: $post['domainforsalebnprice']

What I am doing wrong?

--------------- Added 14 Feb 2012 at 00:40 ---------------

Okay.. I got it working

Just needed to use {vb:raw threadinfo.domainforsalename} at SHOWTHREAD template.

Thanks Kevin for helping me out and all the hardwork you have done for me.

--------------- Added 14 Feb 2012 at 01:21 ---------------

Kevin, I am stuck again

I need to show the information on threads only in a single forum. I tried the conditions in SHOWTHREAD template.

Code:

<vb:if condition="$forum[forumid] == 61">
<h2 class="blockhead">Domain Details</h2>
<div class="blockbody formcontrols">
<h3 class="blocksubhead">The Domain Details</h3>
Domain Name: {vb:raw threadinfo.domainforsalename}
Domain Price: {vb:raw threadinfo.domainforsalebnprice}
</div>
</vb:if>

And also
Code:

<vb:if condition="in_array($forum['forumid'], array(61))">
<h2 class="blockhead">Domain Details</h2>
<div class="blockbody formcontrols">
<h3 class="blocksubhead">The Domain Details</h3>
Domain Name: {vb:raw threadinfo.domainforsalename}
Domain Price: {vb:raw threadinfo.domainforsalebnprice}
</div>
</vb:if>

But, none of them working. In fact, when I wrap my code in those conditionals, they are not showing at all.
If my codes are wrong, then atleast the blockhead, blockbody and blocksubhead should appear.


All times are GMT. The time now is 09:29 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.04359 seconds
  • Memory Usage 1,754KB
  • 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
  • (8)bbcode_code_printable
  • (3)bbcode_php_printable
  • (2)bbcode_quote_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