Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 08-20-2007, 10:27 AM
FatalBreeze FatalBreeze is offline
 
Join Date: Apr 2004
Location: Haifa - Israel
Posts: 163
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Thread Field Editing (editpost.php)

Hello!
I created a new field to the thread table which is called thread_challenge.
I've added a radio button select on newthread, and the poster of the thread can select either the thread is considered a challenge or not (i've accomplished this using the article given in the articles section).

My problem is with editpost: when someone edits the thread, even if he changes the selection of the radio button, the value doesn't change in the DB.

Important to mention: the value is stored in the DB as 1=true (thread is a challenge), 0 = false (thread in not a challenge)

I'll show you my plugins:
editpost_start
PHP Code:
$show['challenge'] = false;
if (
in_array($vbulletin->userinfo['usergroupid'],array(6,68,20,5,14)) AND ($threadinfo['firstpostid'] == $postinfo['postid']))
{
 
$show['challenge'] = true;

editpost_update_start
PHP Code:
$vbulletin->input->clean_array_gpc('p', array('thread_challenge' => TYPE_UINT));
$edit['thread_challenge'] =& $vbulletin->GPC['thread_challenge']; 
editpost_update_thread
PHP Code:
if ($threadinfo['firstpostid'] == $postinfo['postid'])
{
    
$threadman->set('thread_challenge',$edit['thread_challenge']);

And i also get this lovely error on editing:
Quote:
Fatal error: Field thread_challenge is not defined in $validfields in class vb_datamanager_thread in /includes/class_dm.php on line 485
Edit:
Cool! I fixed the entire problem with adding in the vB_DataManager_Thread class the following function:
PHP Code:
 function verify_thread_challenge(&$thread_challenge) {
  if(
$thread_challenge !=)
  {
   
$thread_challenge 0;
  }
  return 
true;
 } 
And I added in vB_DataManager_Thread_FirstPost class to the var $validfields:
PHP Code:
  'thread_challenge'        => array(TYPE_UINTREQ_NO,    VF_METHOD), 
But i rather use hooks than just edit the code, is there a more elegant way to do it?
Reply With Quote
  #2  
Old 08-20-2007, 11:57 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You can't just set any fields through the datamanager, you need to add them to the validfields array, like the error says.
Reply With Quote
  #3  
Old 08-20-2007, 10:38 PM
FatalBreeze FatalBreeze is offline
 
Join Date: Apr 2004
Location: Haifa - Israel
Posts: 163
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dismounted View Post
You can't just set any fields through the datamanager, you need to add them to the validfields array, like the error says.
Quote:
Originally Posted by FatalBreeze View Post
And I added in vB_DataManager_Thread_FirstPost class to the var $validfields:
PHP Code:
  'thread_challenge'        => array(TYPE_UINTREQ_NO,    VF_METHOD), 
That's what i did... i added the thread_challenge to the validfields array. but i wanted to know is there another way of doing this without editing class_dm_threadpost.php itself? can i use hooks instead??
Reply With Quote
  #4  
Old 08-21-2007, 12:53 PM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Just add it into the array when you create the datamanager object.
Reply With Quote
  #5  
Old 08-21-2007, 07:29 PM
FatalBreeze FatalBreeze is offline
 
Join Date: Apr 2004
Location: Haifa - Israel
Posts: 163
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Can you please explain to me how to do that?
because i thought i did it when i added
PHP Code:
'thread_challenge'        => array(TYPE_UINTREQ_NO,    VF_METHOD), 
to the $validfields array, but if you see i did wrong, then can you suggest a better way?
Reply With Quote
  #6  
Old 08-22-2007, 06:42 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Append the data to the array....
PHP Code:
$threadman->validfields['thread_challenge'] = array(TYPE_UINTREQ_NOVF_METHOD); 
Reply With Quote
  #7  
Old 08-22-2007, 01:31 PM
FatalBreeze FatalBreeze is offline
 
Join Date: Apr 2004
Location: Haifa - Israel
Posts: 163
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

cool thanks! i didn't know i can do that.
what else? can you give me a better way to create the function verify_thread_challenge() instead of editing the code itself?
Reply With Quote
  #8  
Old 08-27-2007, 06:32 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Put the function into a hook. I'm not sure which hook exactly, but you will need to use one before that function is needed.
Reply With Quote
  #9  
Old 08-27-2007, 10:08 AM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

<a href="https://vborg.vbsupport.ru/showthread.php?p=1323442#post1323442" target="_blank">https://vborg.vbsupport.ru/showt...42#post1323442</a>
Reply With Quote
Reply

Thread Tools
Display Modes

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 08:08 PM.


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.03605 seconds
  • Memory Usage 2,256KB
  • 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
  • (8)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (9)post_thanks_box
  • (9)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (9)post_thanks_postbit_info
  • (9)postbit
  • (9)postbit_onlinestatus
  • (9)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