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

Reply
 
Thread Tools Display Modes
  #1  
Old 05-30-2009, 09:10 PM
powerful_rogue powerful_rogue is offline
 
Join Date: Jan 2007
Location: Kent
Posts: 603
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Create new threads from running SQL query

Hi,
I couldn't really think of a title that made sense without making it super long! Im just getting my head around php, however now I need to use a bit of SQL and was hoping for a bit of advice!

I created a mod that creates a thread when someone makes a paid subscription. Someone has asked if there is a way to have it make threads for people that made a paid subscription prior to the mod being installed.

Ive had a look through the database and I believe it has something to do with the following as this seems to list the userids of those that have made a payment.

Quote:
SELECT `userid`
FROM `paymentinfo`
Im thinking i'll need to add a button in the ACP, that when an admin clicks it, it will run a script creating threads for older paid subscriptions, however this is where im a bit stuck!

Im guessing the SQL code will have to go above this php that creates the thread -

PHP Code:
$threaddm =& datamanager_init('Thread_FirstPost'$vbulletinERRTYPE_ARRAY'threadpost');
$foruminfo fetch_foruminfo($foruminfo['forumid']);
$threadinfo = array();
$username $vbulletin->userinfo['username']; 
$forumid $vbulletin->options['subthread_fid'];
eval(
'$title = "' addslashes($vbulletin->options['subthread_title']) . '";');   
$userid $vbulletin->options['subthread_toid'];
eval(
'$pagetext = "' addslashes($vbulletin->options['subthread_content']) . '";'); 
$posticon $vbulletin->options['subthread_posticon'];
$allowsmilie '1';
$visible '1';

$threaddm->set_info('forum'$foruminfo);
$threaddm->set_info('thread'$threadinfo);
$threaddm->setr('forumid'$forumid);
$threaddm->setr('userid'$userid);
$threaddm->setr('pagetext'$pagetext);
$threaddm->setr('title'$title);
$threaddm->set('iconid'$posticon);
$threaddm->set('allowsmilie'$allowsmilie);
$threaddm->set('visible'$visible);

$threaddm->pre_save();
if(
count($threaddm->errors) < 1)
{
    
$threadid $threaddm->save();
    unset(
$threaddm);
    
build_thread_counters($threaddm);
}
 
build_forum_counters($forumid); 
Im presuming it would have to be a seperate script, as you wouldnt be able to define a hook location, as it would be a manual action when the admin clicks the button.

I know ive posted a few threads recently, however I am trying to work things out before I ask. Any help/advice is greatly appreciated.

Thanks
Dave
Reply With Quote
  #2  
Old 05-31-2009, 03:56 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

There is a function called build_new_post(), which you can use to "automate" the thread creation action.
Reply With Quote
  #3  
Old 05-31-2009, 05:26 AM
powerful_rogue powerful_rogue is offline
 
Join Date: Jan 2007
Location: Kent
Posts: 603
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks dismounted.

Would that be to use instead of the current datamanager or for use with the sql query to create the new thread? (Am i right in thinking it would be something like build_new_post <if> this sql query is met or vice versa?)

Found this on vbwiki about it. Although they dont really give real life examples, im sure ill be able to have a play and get it working somehow.

Any idea about the sort of SQL query im going to need? Im picking up the php, but not too sure about sql at the mo/

Once again, thanks for the help, its really appreciated. Apologies if I dont reply to any replies today, off to work shortly and not back until tomorrow afternoon.
Reply With Quote
  #4  
Old 05-31-2009, 06:16 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you use build_new_post(), there is nothing else you need to do. See what information you need to pass to it (look at newreply.php).
Reply With Quote
  #5  
Old 06-01-2009, 12:07 PM
powerful_rogue powerful_rogue is offline
 
Join Date: Jan 2007
Location: Kent
Posts: 603
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi dismounted and thanks for your reply., however I think we might be talking about different things (maybe!)

If someone installed the mod today, however had members that had made paid subscriptions prior to the mod being installed, surly I would need some kind of SQL query to make threads that are backdated?

Mod installed today. Any member that makes a paid subscription from today onwards gets a new thread created.

10 members made a paid registration 4 days ago - I want to be able to run some kind of query that will see who made a payment prior to today and get it to create a thread with their username in the title/content.
Reply With Quote
  #6  
Old 08-23-2009, 09:27 PM
koon85 koon85 is offline
 
Join Date: Sep 2008
Posts: 6
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I try to use build_new_post function but nothing has happen with this code below. The main code I get from Staff Application System. Can anyone help me to know why it doesn't work?
Thanks a lot!


PHP Code:
<?php

// ####################### SET PHP ENVIRONMENT ########################### 
error_reporting(E_ALL & ~E_NOTICE); 
// ######################### REQUIRE BACK-END ############################ 
require_once('./global.php');

// Build Messages
        
$message2 "This is a test only.";

// Make a new thread
        
require_once(DIR '/includes/functions_newpost.php');

        
$forumid 1;
        
$user_id 56;
        
$username 'TOEFL';
        
$target_foruminfo fetch_foruminfo($forumid);
        
$newpost = array(
            
'userid' => $user_id,
            
'username' => $username,
            
'message' =>  $message2,
            
'title' => 'This is a test only',
            
'poststarttime' => time(),
            
'emailupdate' => 0
        
);

        
build_new_post('thread'$target_foruminfo, array(), array(), $newpost$errors);

// Fix forums counters
        
require_once('./includes/functions_databuild.php'); 
        
build_forum_counters($forumid);
?>
--------------- Added [DATE]1251067771[/DATE] at [TIME]1251067771[/TIME] ---------------

When I run it again, VBB display a duplicate post and maybe the post has been create, but why it doesn't display?
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 11:31 AM.


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