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

Reply
 
Thread Tools Display Modes
  #1  
Old 02-13-2012, 04:10 PM
Abhik's Avatar
Abhik Abhik is offline
 
Join Date: Jun 2006
Location: Kolkata, India
Posts: 144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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?
Reply With Quote
  #2  
Old 02-13-2012, 04:23 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

(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.
Reply With Quote
  #3  
Old 02-13-2012, 04:51 PM
Abhik's Avatar
Abhik Abhik is offline
 
Join Date: Jun 2006
Location: Kolkata, India
Posts: 144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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}
?
Reply With Quote
  #4  
Old 02-13-2012, 05:04 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Abhik View Post
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).
Reply With Quote
  #5  
Old 02-13-2012, 05:20 PM
Abhik's Avatar
Abhik Abhik is offline
 
Join Date: Jun 2006
Location: Kolkata, India
Posts: 144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
Reply With Quote
  #6  
Old 02-13-2012, 05:34 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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']);
}
Reply With Quote
  #7  
Old 02-13-2012, 06:00 PM
Abhik's Avatar
Abhik Abhik is offline
 
Join Date: Jun 2006
Location: Kolkata, India
Posts: 144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
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 05:27 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.04332 seconds
  • Memory Usage 2,245KB
  • Queries Executed 11 (?)
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
  • (8)bbcode_code
  • (3)bbcode_php
  • (2)bbcode_quote
  • (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_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