vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Create new threads from running SQL query (https://vborg.vbsupport.ru/showthread.php?t=214939)

powerful_rogue 05-30-2009 09:10 PM

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

Dismounted 05-31-2009 03:56 AM

There is a function called build_new_post(), which you can use to "automate" the thread creation action.

powerful_rogue 05-31-2009 05:26 AM

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.

Dismounted 05-31-2009 06:16 AM

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).

powerful_rogue 06-01-2009 12:07 PM

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.

koon85 08-23-2009 09:27 PM

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?


All times are GMT. The time now is 03:29 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.01288 seconds
  • Memory Usage 1,757KB
  • 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
  • (2)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (6)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