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

Reply
 
Thread Tools Display Modes
  #1  
Old 01-19-2007, 06:12 PM
iComotionLtd iComotionLtd is offline
 
Join Date: Jan 2007
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default [error] Field postuserid is not defined in $validfields

Hi,

I'm making a MOD and running into an annoying issue.

I've made a cron, ran by the Scheduled Task Manager that imports posts and sticks them in the database.

This is part of the code (which works fine if...)

(I first include all the necessary files and note I post them as Guests with a username.)

PHP Code:
$threaddm =& datamanager_init('Thread_FirstPost'$vbulletinERRTYPE_ARRAY'threadpost');
$forumid intval($topic['forum_id']);
$postusername $topic['user_name'];
$postuserid 0;
$userid 0;
$pagetext $topic['content'];
$title $topic['topic_title'];
$allowsmilie '1';
$visible '1';
$open 0;
$foruminfo fetch_foruminfo($forumid);
$threadinfo = array(); 
                        
$foruminfo verify_id('forum'$forumid01);
$threaddm->set('forumid'$forumid);
$threaddm->set('postuserid'$postuserid);
$threaddm->set('username'$postusername);
$threaddm->set('postusername'$postusername);
$threaddm->set('pagetext'$pagetext);
$threaddm->set('title'$title);
$threaddm->set('allowsmilie'$allowsmilie);
$threaddm->set('visible'$visible);
$threaddm->set_info('forum'$foruminfo);
$threaddm->set_info('thread'$threadinfo);
$threaddm->pre_save();
//print_r($threaddm->errors);
$topic_id $threaddm->save();
                                                        
build_forum_counters($forumid); 
This indeed works fine but only if I go to Plugin System > Add New Plugin and do:
Hook Location: threadfpdata_start
Plugin PHP Code:
PHP Code:
$this->validfields['postusername'] = array(TYPE_STRREQ_YES);
$this->validfields['postuserid'] = array(TYPE_INTREQ_YES); 
Then I can run the cron just fine.

But on the live website I then get this if I create a thread:

Quote:
Originally Posted by error
Fatal error: Unable to proceed with save while $errors array is not empty in class vb_datamanager_thread_firstpost in /var/www/mydomain.com/public/forums/includes/class_dm.php on line 758
Comment out or disable the Plugin and I can post on the front-end but then my cron says:

Quote:
Originally Posted by error
Fatal error: Field postuserid is not defined in $validfields in class vb_datamanager_thread_firstpost in /var/www/mydomain.com/public/forums/includes/class_dm.php on line 485
Can any of you guru's shed some light on this please?

BTW I run 3.5.7 due to lack of MySQL 4.

Thanks!

Joe
Reply With Quote
  #2  
Old 01-21-2007, 02:15 PM
iComotionLtd iComotionLtd is offline
 
Join Date: Jan 2007
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Let me rephrase this with a working bit of code:

PHP Code:
<?php

// add_thread.php
// This is a concept file in /includes/cron/

// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
if (!
is_object($vbulletin->db))
{
    exit;
}

// ########################################################################
// ######################### START MAIN SCRIPT ############################
// ########################################################################

$db $vbulletin->db// global.php expects $db as oppose to $vbulletin->db [work-around]
require_once('././global.php');
require_once(
'././includes/class_dm.php');
require_once(
'././includes/class_dm_threadpost.php');
require_once(
'././includes/functions_databuild.php'); 

$threaddm =& datamanager_init('Thread_FirstPost'$vbulletinERRTYPE_ARRAY'threadpost');
$forumid 2// Main Forum as per VB default
$postusername 'John Smith';
$postuserid 0// Enter as Guest
$userid 0// Enter as Guest
$pagetext 'My name is John Smith and this is a test thread!';
$title 'Test Thread by John Smith';
$allowsmilie '1';
$visible '1';
$open 0;
$foruminfo fetch_foruminfo($forumid);
$threadinfo = array(); 
                            
$foruminfo verify_id('forum'$forumid01);
$threaddm->set('forumid'$forumid);
$threaddm->set('postuserid'$postuserid);
$threaddm->set('username'$postusername);
$threaddm->set('postusername'$postusername);
$threaddm->set('pagetext'$pagetext);
$threaddm->set('title'$title);
$threaddm->set('allowsmilie'$allowsmilie);
$threaddm->set('visible'$visible);
$threaddm->set_info('forum'$foruminfo);
$threaddm->set_info('thread'$threadinfo);
$threaddm->pre_save();
//print_r($threaddm->errors);
$topic_id $threaddm->save();
                            
build_forum_counters($forumid);

// Now go to Scheduled Tasks -> Add this file and run it.

// This results in:

/*
Fatal error: Field postuserid is not defined in $validfields in class vb_datamanager_thread_firstpost in /var/www/mydomain.com/public/forums/includes/class_dm.php on line 485
*/

// Now go to Plugin System -> Add New Plugin
// Hook Location threadfpdata_start
// Plugin PHP Code:
// $this->validfields['postuserid'] = array(TYPE_INT, REQ_YES);

// Run Scheduled Task again, this results in:

/*
Fatal error: Field postusername is not defined in $validfields in class vb_datamanager_thread_firstpost in /var/www/mydomain.com/public/forums/includes/class_dm.php on line 485
*/

// Now go to Plugin System -> Edit the Plugin we just create above
// Hook Location threadfpdata_start
// Add Plugin PHP Code:
// $this->validfields['postusername'] = array(TYPE_STR, REQ_YES);
// So the entire Plugin now looks like 
// $this->validfields['postuserid'] = array(TYPE_INT, REQ_YES);
// $this->validfields['postusername'] = array(TYPE_STR, REQ_YES);

// Run Scheduled Task again, this results successfully adding the thread.

// BUT... Now go the the forum front-end and try and post a new thread...

// This reults in error:

/*
Fatal error: Unable to proceed with save while $errors array is not empty in class vb_datamanager_thread_firstpost in /var/www/mydomain.com/public/forums/includes/class_dm.php on line 758
*/

// Comment out or de-activate the Plugin above and the front-end works again but the Scheduled Task chokes again.
        
?>
FYI (if any) I fixed it.

Rather than building using a hook, which obivously clashes with standard code, I built the validfield definitions straigt into the code, just prior to executing $threaddm->save():

$threaddm->validfields['postusername'] = array(TYPE_STR, REQ_YES);
$threaddm->validfields['postuserid'] = array(TYPE_INT, REQ_YES);

[case closed]
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:12 AM.


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.03626 seconds
  • Memory Usage 2,214KB
  • 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
  • (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
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)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