vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=187)
-   -   Add new Users (automatically) (https://vborg.vbsupport.ru/showthread.php?t=82836)

amatulic 10-15-2007 02:20 AM

Quote:

Originally Posted by Lordy (Post 1359988)
When using your code (amatulic), I get "Fatal error: Call to a member function query_first() on a non-object in /home/lordy/domains/animefill.com/public_html/project/forum/includes/class_dm_user.php on line 380"

Odd. It's working for me. Try this hard-coded example, in the same directory where you have class.forumops.php. You can run it from the commandline:
PHP Code:

<?php
require_once('class.forumops.php');

$userdata = array(
   
'userid' => 'test_user',
   
'password' => 'my_password',
   
'email' => 'test_user@example.com' );

$forum = new ForumOps();
$errmsg $forum->register_newuser($userdata);
if (
$errmsg) echo $errmsg;
else echo 
"User test_user created successfully.<br>\n";
?>

You can go to the admin control panel "Prune / Move Users" and verify the user account 'test_user' got created. I just did a diff of what I posted vs what I have, and the only difference I see is that I am now passing the username by reference to delete_user(). That shouldn't make any difference. I'll update my source in my previous message anyway.
-Alex

Lordy 10-17-2007 08:16 PM

Yup, seems that that does work. Can't seem to figure out how to do.

I tried putting
PHP Code:

require_once('class.forumops.php');
$forum=new ForumOps(); 

in my config file, and just including it. I think i'll probably have to code around that as it seems its setting some issues

I'll have to debug this on my end it seems.

I think I may have figured it out.

thanks =) I'll post back when I have a definite answer.

Lordy 10-19-2007 12:26 AM

Recoded my reg form and it works fine now. Can't seem to work out the login form, so I looked at your login script.

PHP Code:

 // ======== USER LOGIN / LOGOUT ========

   
function login($vbuser)
   {
      global 
$vbulletin;
      
$vbulletin->userinfo fetch_userinfo_from_username($vbuser['username']);
      
// set cookies
      
vbsetcookie('userid'$vbulletin->userinfo['userid'],
         
PERMANENT_COOKIEtruetrue);
      
vbsetcookie('password',
         
md5($vbulletin->userinfo['password'].COOKIE_SALT),
         
PERMANENT_COOKIEtruetrue);
      
// create session stuff
      
process_new_login(''1'');
   } 

which i'm assuming is that? if so, passing as $forum->login($userdata) is not working for me, but looking through your code, I also don't know if that does work.

A58676333470 10-20-2007 12:06 AM

Weee! EXACTLY what im looking for @amatulic ! Works Perfect! Thx!

SolidSlug 11-24-2007 05:32 AM

amatulic,

Your code works great from a PHP page that has no other includes, but as soon as I plugged it into my own CMS, I got the dreaded:

PHP Fatal error: Call to a member function query_first_slave() on a non-object in /var/www/html/papatangopapa.com/forums/includes/functions.php on line 1194

My CMS has its own session management stuff and also uses a custom __autoload function, I wonder if that breaks things in some weird way.

--------------- Added [DATE]1195925781[/DATE] at [TIME]1195925781[/TIME] ---------------

I think it's due to vBulletin's insane reliance on global variables.

When you have:

A.php including init.php and functions.php directly,

there is no problem.

When you have:

a function in B.php including including C.PHP, which includes init.php and functions.php,

you get:

PHP Fatal error: Call to a member function query_first_slave() on a non-object in /var/www/html/papatangopapa.com/forums/includes/functions.php on line 1194

--------------- Added [DATE]1195926210[/DATE] at [TIME]1195926210[/TIME] ---------------

That's also how and why you might end up using cURL in order to keep your application and the namespace polluting vBulletin back-end completely separate.

stoppy 11-25-2007 09:24 PM

Hi!
I'm using 3.6.8 version, I'm trying to add user to vb using my own registration system.

The constructor of the class I have take 2 parameters in input

function vB_DataManager_User(&$registry, $errtype = ERRTYPE_STANDARD)

How I have to use it?

May I include directly this class in my code... it look like not... How can I do?

I proposed another way to solve this problem here: https://vborg.vbsupport.ru/showthrea...27#post1389327

Thanks

Moooooon 12-01-2007 08:55 PM

Would this approach still work in 3.6.8?

Quote:

Originally Posted by GrowersPro (Post 864803)
following code place earlier plus example of code for the curl call in php


STEP I

this file need to to be placed in the forum directory of vbulletin
(make sure it is in this directory to initialise vbulletin stuff ......)


no change done from previous poster


you can include the code below in one php page. call it whatever you want

i call it great_stuff_dude.php

thus i need to MAKE sure that the name of the page is correctly entered
in the define below

define('THIS_SCRIPT', 'GREAT_STUFF_DUDE.php');

do the same in the code below
----------------------------------------------------------------------
<?php
# Add a user to vBulletin (offline)

function qpc_post($varname)
{
return trim(stripslashes((get_magic_quotes_gpc()) ? $_POST[$varname] : addslashes($_POST[$varname])));
}

define('THIS_SCRIPT', 'GREAT_STUFF_DUDE.php');

require_once('./global.php');
require_once('./includes/class_dm.php');
require_once('./includes/class_dm_user.php');

$userdm = new vB_DataManager_User($vbulletin, ERRTYPE_ARRAY);

$userdm->set('username', qpc_post('username'));
$userdm->set('email', qpc_post('email'));
$userdm->set('password', qpc_post('password'));
$userdm->set('usergroupid',qpc_post('usergroupid'));
$userdm->set('ipaddress', qpc_post('ipaddress'));
$userdm->set('referrerid', qpc_post('referrername'));
$userdm->set('timezoneoffset', qpc_post('timezoneoffset'));
$userdm->set_bitfield('options', 'adminemail', intval(qpc_post('adminemail')));
$userdm->set_bitfield('options', 'showemail', intval(qpc_post('showemail')));

$dst_setting = intval(qpc_post('dst'));
switch ($dst_setting)
{
case 0:
case 1:
$userdm->set_bitfield('options', 'dstonoff', $dst_setting);
break;
case 2:
$userdm->set_bitfield('options', 'dstauto', 1);
break;
}

#If there are errors (eMail not set, eMail banned, Username taken, etc.) you can check for errors using
if (count($userdm->errors)) {
for($i=0; $i<count($userdm->errors); $i++) {
print "ERROR{$i}:{$userdm->errors[$i]}\n";
}
} else {
# If everything is OK
$newuserid = $userdm->save();
print "vbuserid:$newuserid\n";
}
?>
-------------------------------------------------------------------


STEP II



You can have the following code on server running PHP WHEREVER YOU WANT. it does not need to be on the same domain as long as you have the curl compiled


in that script (again call it whatever you want it does not matter)

you call the url of your web server and path to go to the page GREAT_STUFF_DUDE.php

you can of course include it in the login code of your CMS to create profiles in both systems in one step.


-------------------------------------------------------------------

<?php

$url="http://www.mysite.com/vbulletin3000/GREAT_STUFF_DUDE.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username=keith_mayass&email=keith_mayass@no_worry s.com&password=up_yours&usergroupid=2&");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
$content = curl_exec ($ch); # This returns HTML
curl_close ($ch);

?>
---------------------------------------------------------

you can of course pass as may variables as you want if you have them available in your CMS to complete the profile.

like

parentemail
showbirthday
homepage
icq
aim
yahoo
msn
skype
usertitle
customtitle
birthday



__-----__________------___
Ni vu ni connu, jt' embrouille


makouvlei 12-06-2007 07:59 PM

Quote:

Originally Posted by Altec (Post 975567)
I've managed to automatically add users to vBulletin via our website which is done in ASP. The only issue I'm having is that a user cannot 'SAVE' their signature (strange). Everything else works great...

Anyone have any ideas why?

Thanks.

I am looking to implement a similar system managing vBulletin users from an asp site. I'm very comfortable with asp, but not at all with php -- any pointers as to how to (and how not to) approach this would be much appreciated.

jazeera 12-10-2007 11:39 AM

Quote:

Originally Posted by GrowersPro (Post 864803)
following code place earlier plus example of code for the curl call in php


STEP I

this file need to to be placed in the forum directory of vbulletin
(make sure it is in this directory to initialise vbulletin stuff ......)


no change done from previous poster


you can include the code below in one php page. call it whatever you want

i call it great_stuff_dude.php

thus i need to MAKE sure that the name of the page is correctly entered
in the define below

define('THIS_SCRIPT', 'GREAT_STUFF_DUDE.php');

do the same in the code below
----------------------------------------------------------------------
<?php
# Add a user to vBulletin (offline)

function qpc_post($varname)
{
return trim(stripslashes((get_magic_quotes_gpc()) ? $_POST[$varname] : addslashes($_POST[$varname])));
}

define('THIS_SCRIPT', 'GREAT_STUFF_DUDE.php');

require_once('./global.php');
require_once('./includes/class_dm.php');
require_once('./includes/class_dm_user.php');

$userdm = new vB_DataManager_User($vbulletin, ERRTYPE_ARRAY);

$userdm->set('username', qpc_post('username'));
$userdm->set('email', qpc_post('email'));
$userdm->set('password', qpc_post('password'));
$userdm->set('usergroupid',qpc_post('usergroupid'));
$userdm->set('ipaddress', qpc_post('ipaddress'));
$userdm->set('referrerid', qpc_post('referrername'));
$userdm->set('timezoneoffset', qpc_post('timezoneoffset'));
$userdm->set_bitfield('options', 'adminemail', intval(qpc_post('adminemail')));
$userdm->set_bitfield('options', 'showemail', intval(qpc_post('showemail')));

$dst_setting = intval(qpc_post('dst'));
switch ($dst_setting)
{
case 0:
case 1:
$userdm->set_bitfield('options', 'dstonoff', $dst_setting);
break;
case 2:
$userdm->set_bitfield('options', 'dstauto', 1);
break;
}

#If there are errors (eMail not set, eMail banned, Username taken, etc.) you can check for errors using
if (count($userdm->errors)) {
for($i=0; $i<count($userdm->errors); $i++) {
print "ERROR{$i}:{$userdm->errors[$i]}\n";
}
} else {
# If everything is OK
$newuserid = $userdm->save();
print "vbuserid:$newuserid\n";
}
?>
-------------------------------------------------------------------


STEP II



You can have the following code on server running PHP WHEREVER YOU WANT. it does not need to be on the same domain as long as you have the curl compiled


in that script (again call it whatever you want it does not matter)

you call the url of your web server and path to go to the page GREAT_STUFF_DUDE.php

you can of course include it in the login code of your CMS to create profiles in both systems in one step.


-------------------------------------------------------------------

<?php

$url="http://www.mysite.com/vbulletin3000/GREAT_STUFF_DUDE.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username=keith_mayass&email=keith_mayass@no_worry s.com&password=up_yours&usergroupid=2&");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
$content = curl_exec ($ch); # This returns HTML
curl_close ($ch);

?>
---------------------------------------------------------

you can of course pass as may variables as you want if you have them available in your CMS to complete the profile.

like

parentemail
showbirthday
homepage
icq
aim
yahoo
msn
skype
usertitle
customtitle
birthday



__-----__________------___
Ni vu ni connu, jt' embrouille

This code is work properly
then i need to activate this user when his account on my site activated

--------------- Added [DATE]1197356952[/DATE] at [TIME]1197356952[/TIME] ---------------

Quote:

Originally Posted by Moooooon (Post 1393155)
Would this approach still work in 3.6.8?

it works properly i'm using 3.6.8

TheNewWebGuy 12-18-2007 12:53 PM

Quote:

Originally Posted by amatulic (Post 1358740)
I hope this helps some people.
-Alex

I've been trying to get your code working, but I keep getting the error

Code:

Fatal error: Registry object is not an object in /includes/class_dm.php on line 177
And that's from just having
Code:

require_once ($_SERVER['DOCUMENT_ROOT'] . "/include/class.forumops.php");

$forum = new ForumOps();

I can't see anything that would be amiss so any help would be welcomed

Thanks

--------------- Added [DATE]1197991803[/DATE] at [TIME]1197991803[/TIME] ---------------

Quote:

Originally Posted by TheNewWebGuy (Post 1403576)
Code:

Fatal error: Registry object is not an object in /includes/class_dm.php on line 177

I was able to fix this by doing te following
Code:

require_once ($_SERVER['DOCUMENT_ROOT'] . "/include/class.forumops.php");

$forum = new ForumOps( $vbulletin );

Code:

function __construct( &$vbulletin ) // constructor
  {
      $this->vbulletin =& $vbulletin;
      $this->userdm =& datamanager_init('user', $vbulletin, ERRTYPE_ARRAY);
  }

Stiil though, I'm not sure why I can see $vbulliten outside of the class yet not inside it


All times are GMT. The time now is 01:03 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.01605 seconds
  • Memory Usage 1,806KB
  • 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
  • (5)bbcode_code_printable
  • (3)bbcode_php_printable
  • (7)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)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
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete