PageRenderTime 53ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/administrator/components/com_virtuemart/classes/ps_user.php

https://bitbucket.org/dgough/annamaria-daneswood-25102012
PHP | 713 lines | 471 code | 97 blank | 145 comment | 92 complexity | 6f173fb04cc517c4e1f128388f19b19d MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
  1. <?php
  2. if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
  3. /**
  4. *
  5. * @version $Id: ps_user.php 1455 2008-07-08 23:47:44Z gregdev $
  6. * @package VirtueMart
  7. * @subpackage classes
  8. * @copyright Copyright (C) 2004-2008 soeren - All rights reserved.
  9. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
  10. * VirtueMart is free software. This version may have been modified pursuant
  11. * to the GNU General Public License, and as distributed it includes or
  12. * is derivative of works licensed under the GNU General Public License or
  13. * other free or open source software licenses.
  14. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
  15. *
  16. * http://virtuemart.net
  17. */
  18. class ps_user {
  19. /**
  20. * Validates the input parameters onBeforeUserAdd
  21. *
  22. * @param array $d
  23. * @return boolean
  24. */
  25. function validate_add(&$d) {
  26. global $my, $perm, $vmLogger, $VM_LANG;
  27. $db = new ps_DB;
  28. $valid = true;
  29. $missing = "";
  30. require_once( CLASSPATH . 'ps_userfield.php' );
  31. $requiredFields = ps_userfield::getUserFields( 'registration', true );
  32. $skipFields = array( 'username', 'password', 'password2', 'email', 'agreed');
  33. foreach( $requiredFields as $field ) {
  34. if( in_array( $field->name, $skipFields )) {
  35. continue;
  36. }
  37. switch( $field->type ) {
  38. case 'age_verification':
  39. // The Age Verification here is just a simple check if the selected date
  40. // is a birthday older than the minimum age (default: 18)
  41. $d[$field->name] = vmRequest::getInt('birthday_selector_year')
  42. .'-'.vmRequest::getInt('birthday_selector_month')
  43. .'-'.vmRequest::getInt('birthday_selector_day');
  44. break;
  45. default:
  46. if( empty( $d[$field->name]) && $field->sys == 1 ) {
  47. $valid = false;
  48. $fieldtitle = $field->title;
  49. if( $VM_LANG->exists($fieldtitle) ) {
  50. $fieldtitle = $VM_LANG->_($fieldtitle);
  51. }
  52. $vmLogger->err( sprintf($VM_LANG->_('VM_USER_ERR_MISSINGVALUE'), $fieldtitle) );
  53. }
  54. break;
  55. }
  56. }
  57. $d['user_email'] = @$d['email'];
  58. if (!$d['perms']) {
  59. $vmLogger->warning( $VM_LANG->_('VM_USER_ERR_GROUP') );
  60. $valid = false;
  61. }
  62. else {
  63. if( !$perm->hasHigherPerms( $d['perms'] )) {
  64. $vmLogger->err( sprintf($VM_LANG->_('VM_USER_ADD_ERR_NOPERMS'),$d['perms']) );
  65. $valid = false;
  66. }
  67. }
  68. return $valid;
  69. }
  70. /**
  71. * Validates the Input Parameters onBeforeUserUpdate
  72. *
  73. * @param array $d
  74. * @return boolean
  75. */
  76. function validate_update(&$d) {
  77. return $this->validate_add( $d );
  78. }
  79. /**
  80. * Validates the Input Parameters onBeforeUserDelete
  81. *
  82. * @param int $id
  83. * @return boolean
  84. */
  85. function validate_delete( $id ) {
  86. global $my, $vmLogger, $perm, $VM_LANG;
  87. $auth = $_SESSION['auth'];
  88. $valid = true;
  89. if( empty( $id ) ) {
  90. $vmLogger->err( $VM_LANG->_('VM_USER_DELETE_SELECT') );
  91. return false;
  92. }
  93. $db = new ps_DB();
  94. $q = 'SELECT user_id, perms FROM #__{vm}_user_info WHERE user_id='.(int)$id;
  95. $db->query( $q );
  96. // Only check VirtueMart users - the user may be only a CMS user
  97. if( $db->num_rows() > 0 ) {
  98. $perms = $db->f('perms');
  99. if( !$perm->hasHigherPerms( $perms ) ) {
  100. $vmLogger->err( sprintf($VM_LANG->_('VM_USER_DELETE_ERR_NOPERMS'),$perms) );
  101. $valid = false;
  102. }
  103. if( $id == $my->id) {
  104. $vmLogger->err( $VM_LANG->_('VM_USER_DELETE_ERR_YOURSELF') );
  105. $valid = false;
  106. }
  107. }
  108. return $valid;
  109. }
  110. /**
  111. * Adds a new User to the CMS and VirtueMart
  112. *
  113. * @param array $d
  114. * @return boolean
  115. */
  116. function add(&$d) {
  117. global $my, $VM_LANG, $perm, $vmLogger;
  118. $ps_vendor_id = $_SESSION["ps_vendor_id"];
  119. $hash_secret = "VirtueMartIsCool";
  120. $db = new ps_DB;
  121. $timestamp = time();
  122. if (!$this->validate_add($d)) {
  123. return False;
  124. }
  125. // Joomla User Information stuff
  126. if( vmIsJoomla( '1.5' ) ) {
  127. $uid = $this->save();
  128. } else {
  129. $uid = $this->saveUser( $d );
  130. }
  131. if( empty( $uid ) && empty( $d['id'] ) ) {
  132. $vmLogger->err( $VM_LANG->_('VM_USER_ADD_FAILED') );
  133. return false;
  134. }
  135. elseif( !empty( $d['id'])) {
  136. $uid = $d['id'];
  137. }
  138. // Get all fields which where shown to the user
  139. $userFields = ps_userfield::getUserFields('account', false, '', true);
  140. $skipFields = ps_userfield::getSkipFields();
  141. // Insert billto;
  142. $fields = array();
  143. $fields['user_info_id'] = md5(uniqid( $hash_secret));
  144. $fields['user_id'] = $uid;
  145. $fields['address_type'] = 'BT';
  146. $fields['address_type_name'] = '-default-';
  147. $fields['cdate'] = $timestamp;
  148. $fields['mdate'] = $timestamp;
  149. $fields['perms'] = $d['perms'];
  150. $values = array();
  151. foreach( $userFields as $userField ) {
  152. if( !in_array($userField->name, $skipFields )) {
  153. $fields[$userField->name] = ps_userfield::prepareFieldDataSave( $userField->type, $userField->name, @$d[$userField->name]);
  154. }
  155. }
  156. $fields['user_email'] = $fields['email'];
  157. unset($fields['email']);
  158. $db->buildQuery( 'INSERT', '#__{vm}_user_info', $fields );
  159. $db->query();
  160. if( $perm->check("admin")) {
  161. $vendor_id = $d['vendor_id'];
  162. }
  163. else {
  164. $vendor_id = $ps_vendor_id;
  165. }
  166. // Insert vendor relationship
  167. $q = "INSERT INTO #__{vm}_auth_user_vendor (user_id,vendor_id)";
  168. $q .= " VALUES ";
  169. $q .= "('" . $uid . "','$vendor_id') ";
  170. $db->query($q);
  171. // Insert Shopper -ShopperGroup - Relationship
  172. $q = "INSERT INTO #__{vm}_shopper_vendor_xref ";
  173. $q .= "(user_id,vendor_id,shopper_group_id,customer_number) ";
  174. $q .= "VALUES ('$uid', '$vendor_id','".$d['shopper_group_id']."', '".$d['customer_number']."')";
  175. $db->query($q);
  176. $_REQUEST['id'] = $_REQUEST['user_id'] = $uid;
  177. $vmLogger->info( $VM_LANG->_('VM_USER_ADDED') );
  178. return True;
  179. }
  180. /**
  181. * Updates a User Record
  182. *
  183. * @param array $d
  184. * @return boolean
  185. */
  186. function update(&$d) {
  187. global $my, $VM_LANG, $perm, $vmLogger;
  188. $ps_vendor_id = $_SESSION["ps_vendor_id"];
  189. $db = new ps_DB;
  190. $timestamp = time();
  191. if (!$this->validate_update($d)) {
  192. return False;
  193. }
  194. // Joomla User Information stuff
  195. if( vmIsJoomla( '1.5', '>=' ) ) {
  196. $this->save();
  197. } else {
  198. $this->saveUser( $d );
  199. }
  200. // Update Bill To
  201. // Get all fields which where shown to the user
  202. $userFields = ps_userfield::getUserFields('account', false, '', true);
  203. $user_id = intval( $d['id'] );
  204. // Building the query: PART ONE
  205. // The first 7 fields are FIX and not built dynamically
  206. $db->query( "SELECT COUNT(user_info_id) AS num_rows
  207. FROM #__{vm}_user_info WHERE user_id='" . $user_id . "'" );
  208. if( $db->f('num_rows') < 1 ) {
  209. // The user is registered in Joomla, but not in VirtueMart; so, insert the bill to information
  210. return $this->add($d);
  211. }
  212. else {
  213. $q = "UPDATE #__{vm}_user_info SET
  214. `mdate` = '".time()."',
  215. `perms` = '".$d['perms']."', ";
  216. $fields = array();
  217. $skip_fields = ps_userfield::getSkipFields();
  218. foreach( $userFields as $userField ) {
  219. if( !in_array($userField->name,$skip_fields)) {
  220. $d[$userField->name] = ps_userfield::prepareFieldDataSave( $userField->type, $userField->name, @$d[$userField->name]);
  221. $fields[] = "`".$userField->name."`='".$d[$userField->name]."'";
  222. }
  223. }
  224. $q .= str_replace( '`email`', '`user_email`', implode( ",\n", $fields ));
  225. $q .= " WHERE user_id=".$user_id." AND address_type='BT'";
  226. // Run the query now!
  227. $db->query($q);
  228. }
  229. if( $perm->check("admin")) {
  230. $vendor_id = $d['vendor_id'];
  231. }
  232. else {
  233. $vendor_id = $ps_vendor_id;
  234. }
  235. $db->query( "SELECT COUNT(user_id) as num_rows FROM #__{vm}_auth_user_vendor WHERE vendor_id='".$vendor_id."' AND user_id='" . $d["user_id"] . "'" );
  236. if( $db->f('num_rows') < 1 ) {
  237. // Insert vendor relationship
  238. $q = "INSERT INTO #__{vm}_auth_user_vendor (user_id,vendor_id)";
  239. $q .= " VALUES ";
  240. $q .= "('" . $d['user_id'] . "','$vendor_id') ";
  241. $db->query($q);
  242. }
  243. else {
  244. // Update the User- Vendor relationship
  245. $q = "UPDATE #__{vm}_auth_user_vendor set ";
  246. $q .= "vendor_id='".$d['vendor_id']."' ";
  247. $q .= "WHERE user_id='" . $d["user_id"] . "'";
  248. $db->query($q);
  249. }
  250. $db->query( "SELECT COUNT(user_id) as num_rows FROM #__{vm}_shopper_vendor_xref WHERE vendor_id='".$vendor_id."' AND user_id='" . $d["user_id"] . "'" );
  251. if( $db->f('num_rows') < 1 ) {
  252. // Insert Shopper -ShopperGroup - Relationship
  253. $q = "INSERT INTO #__{vm}_shopper_vendor_xref ";
  254. $q .= "(user_id,vendor_id,shopper_group_id,customer_number) ";
  255. $q .= "VALUES ('".$d['user_id']."', '$vendor_id','".$d['shopper_group_id']."', '".$d['customer_number']."')";
  256. }
  257. else {
  258. // Update the Shopper Group Entry for this user
  259. $q = "UPDATE #__{vm}_shopper_vendor_xref SET ";
  260. $q .= "shopper_group_id='".$d['shopper_group_id']."' ";
  261. $q.= ",vendor_id ='".$vendor_id."' ";
  262. $q .= "WHERE user_id='" . $d["user_id"] . "' ";
  263. }
  264. $db->query($q);
  265. $vmLogger->info( $VM_LANG->_('VM_USER_UPDATED') );
  266. return True;
  267. }
  268. /**************************************************************************
  269. * name: delete()
  270. * created by:
  271. * description:
  272. * parameters:
  273. * returns:
  274. **************************************************************************/
  275. function delete(&$d) {
  276. $db = new ps_DB;
  277. $ps_vendor_id = (int) $_SESSION['ps_vendor_id'];
  278. if( !is_array( $d['user_id'] )) {
  279. $d['user_id'] = array( $d['user_id'] );
  280. }
  281. foreach( $d['user_id'] as $user ) {
  282. if( !$this->validate_delete( $user ) ) {
  283. return false;
  284. }
  285. $user = (int) $user;
  286. // remove the CMS user
  287. if( !$this->removeUsers( $user ) ) {
  288. return false;
  289. }
  290. // Delete ALL user_info entries (billing and shipping addresses)
  291. $q = "DELETE FROM #__{vm}_user_info WHERE user_id=" . $user;
  292. $db->query($q);
  293. $q = "DELETE FROM #__{vm}_auth_user_vendor where user_id=$user AND vendor_id=$ps_vendor_id";
  294. $db->query($q);
  295. $q = "DELETE FROM #__{vm}_shopper_vendor_xref where user_id=$user AND vendor_id=$ps_vendor_id";
  296. $db->query($q);
  297. }
  298. return True;
  299. }
  300. /**
  301. * Function to save User Information
  302. * into Joomla
  303. */
  304. function saveUser( &$d ) {
  305. global $database, $my, $_VERSION, $VM_LANG;
  306. global $mosConfig_live_site, $mosConfig_mailfrom, $mosConfig_fromname, $mosConfig_sitename;
  307. $aro_id = 'aro_id';
  308. $group_id = 'group_id';
  309. // Column names have changed since J! 1.5
  310. if( vmIsJoomla('1.5', '>=')) {
  311. $aro_id = 'id';
  312. $group_id = 'id';
  313. }
  314. $row = new mosUser( $database );
  315. if (!$row->bind( $_POST )) {
  316. echo "<script type=\"text/javascript\">alert('".vmHtmlEntityDecode($row->getError())."');</script>\n";
  317. }
  318. $isNew = !$row->id;
  319. $pwd = '';
  320. // MD5 hash convert passwords
  321. if ($isNew) {
  322. // new user stuff
  323. if ($row->password == '') {
  324. $pwd = vmGenRandomPassword();
  325. $row->password = md5( $pwd );
  326. } else {
  327. $pwd = $row->password;
  328. $row->password = md5( $row->password );
  329. }
  330. $row->registerDate = date( 'Y-m-d H:i:s' );
  331. } else {
  332. // existing user stuff
  333. if ($row->password == '') {
  334. // password set to null if empty
  335. $row->password = null;
  336. } else {
  337. if( !empty( $_POST['password'] )) {
  338. if( $row->password != @$_POST['password2'] ) {
  339. $d['error'] = vmHtmlEntityDecode($VM_LANG->_('REGWARN_VPASS2',false));
  340. return false;
  341. }
  342. }
  343. $row->password = md5( $row->password );
  344. }
  345. }
  346. // save usertype to usetype column
  347. $query = "SELECT name"
  348. . "\n FROM #__core_acl_aro_groups"
  349. . "\n WHERE `$group_id` = $row->gid"
  350. ;
  351. $database->setQuery( $query );
  352. $usertype = $database->loadResult();
  353. $row->usertype = $usertype;
  354. // save params
  355. $params = vmGet( $_POST, 'params', '' );
  356. if (is_array( $params )) {
  357. $txt = array();
  358. foreach ( $params as $k=>$v) {
  359. $txt[] = "$k=$v";
  360. }
  361. $row->params = implode( "\n", $txt );
  362. }
  363. if (!$row->check()) {
  364. echo "<script type=\"text/javascript\"> alert('".vmHtmlEntityDecode($row->getError())."');</script>\n";
  365. return false;
  366. }
  367. if (!$row->store()) {
  368. echo "<script type=\"text/javascript\"> alert('".vmHtmlEntityDecode($row->getError())."');</script>\n";
  369. return false;
  370. }
  371. if ( $isNew ) {
  372. $newUserId = $row->id;
  373. }
  374. else
  375. $newUserId = false;
  376. $row->checkin();
  377. $_SESSION['session_user_params']= $row->params;
  378. // update the ACL
  379. if ( !$isNew ) {
  380. $query = "SELECT `$aro_id`"
  381. . "\n FROM #__core_acl_aro"
  382. . "\n WHERE value = '$row->id'"
  383. ;
  384. $database->setQuery( $query );
  385. $aro_id = $database->loadResult();
  386. $query = "UPDATE #__core_acl_groups_aro_map"
  387. . "\n SET group_id = $row->gid"
  388. . "\n WHERE aro_id = $aro_id"
  389. ;
  390. $database->setQuery( $query );
  391. $database->query() or die( $database->stderr() );
  392. }
  393. // for new users, email username and password
  394. if ($isNew) {
  395. // Send the notification emails
  396. $name = $row->name;
  397. $email = $row->email;
  398. $username = $row->username;
  399. $password = $pwd;
  400. $this->_sendMail( $name, $email, $username, $password );
  401. }
  402. return $newUserId;
  403. }
  404. /**
  405. * Saves a user into Joomla! 1.5
  406. *
  407. * @return int An integer user_id if the user was saved successfully, false if not
  408. */
  409. function save()
  410. {
  411. global $mainframe, $vmLogger, $VM_LANG;
  412. $option = JRequest::getCmd( 'option');
  413. // Initialize some variables
  414. $db = & JFactory::getDBO();
  415. $me = & JFactory::getUser();
  416. $MailFrom = $mainframe->getCfg('mailfrom');
  417. $FromName = $mainframe->getCfg('fromname');
  418. $SiteName = $mainframe->getCfg('sitename');
  419. // Create a new JUser object
  420. $user = new JUser(JRequest::getVar( 'id', 0, 'post', 'int'));
  421. $original_gid = $user->get('gid');
  422. $post = JRequest::get('post');
  423. $post['username'] = JRequest::getVar('username', '', 'post', 'username');
  424. $post['password'] = JRequest::getVar('password', '', 'post', 'string', JREQUEST_ALLOWRAW);
  425. $post['password2'] = JRequest::getVar('password2', '', 'post', 'string', JREQUEST_ALLOWRAW);
  426. if (!$user->bind($post))
  427. {
  428. echo "<script type=\"text/javascript\"> alert('".vmHtmlEntityDecode( $user->getError() )."');</script>\n";
  429. return false;
  430. }
  431. // Are we dealing with a new user which we need to create?
  432. $isNew = ($user->get('id') < 1);
  433. if (!$isNew)
  434. {
  435. // if group has been changed and where original group was a Super Admin
  436. if ( $user->get('gid') != $original_gid && $original_gid == 25 )
  437. {
  438. // count number of active super admins
  439. $query = 'SELECT COUNT( id )'
  440. . ' FROM #__users'
  441. . ' WHERE gid = 25'
  442. . ' AND block = 0'
  443. ;
  444. $db->setQuery( $query );
  445. $count = $db->loadResult();
  446. if ( $count <= 1 )
  447. {
  448. // disallow change if only one Super Admin exists
  449. $vmLogger->err( $VM_LANG->_('VM_USER_ERR_ONLYSUPERADMIN') );
  450. return false;
  451. }
  452. }
  453. }
  454. /*
  455. * Lets save the JUser object
  456. */
  457. if (!$user->save())
  458. {
  459. echo "<script type=\"text/javascript\"> alert('".vmHtmlEntityDecode( $user->getError() )."');</script>\n";
  460. return false;
  461. }
  462. // For new users, email username and password
  463. if ($isNew)
  464. {
  465. $name = $user->get( 'name' );
  466. $email = $user->get( 'email' );
  467. $username = $user->get( 'username' );
  468. $password = $user->password_clear;
  469. $this->_sendMail( $name, $email, $username, $password );
  470. }
  471. // Capture the new user id
  472. if( $isNew ) {
  473. $newUserId = $user->get('id');
  474. } else {
  475. $newUserId = false;
  476. }
  477. return $newUserId;
  478. }
  479. /**
  480. * Sends new/updated user notification emails
  481. *
  482. * @param string $name - The name of the newly created/updated user
  483. * @param string $email - The email address of the newly created/updated user
  484. * @param string $username - The username of the newly created/updated user
  485. * @param string $password - The plain text password of the newly created/updated user
  486. */
  487. function _sendMail( $name, $email, $username, $password ) {
  488. global $database, $VM_LANG;
  489. global $my, $mosConfig_mailfrom, $mosConfig_fromname, $mosConfig_sitename, $mosConfig_live_site;
  490. $query = "SELECT email"
  491. . "\n FROM #__users"
  492. . "\n WHERE id = $my->id"
  493. ;
  494. $database->setQuery( $query );
  495. $adminEmail = $database->loadResult();
  496. $subject = $VM_LANG->_('NEW_USER_MESSAGE_SUBJECT',false);
  497. $message = sprintf ( $VM_LANG->_('NEW_USER_MESSAGE',false), $name, $mosConfig_sitename, $mosConfig_live_site, $username, $password );
  498. if ($mosConfig_mailfrom != "" && $mosConfig_fromname != "") {
  499. $adminName = $mosConfig_fromname;
  500. $adminEmail = $mosConfig_mailfrom;
  501. } else {
  502. $query = "SELECT name, email"
  503. . "\n FROM #__users"
  504. // administrator
  505. . "\n WHERE gid = 25"
  506. ;
  507. $database->setQuery( $query );
  508. $admins = $database->loadObjectList();
  509. $admin = $admins[0];
  510. $adminName = $admin->name;
  511. $adminEmail = $admin->email;
  512. }
  513. vmMail( $adminEmail, $adminName, $email, $subject, $message );
  514. }
  515. /**
  516. * Function to remove a user from Joomla
  517. */
  518. function removeUsers( $cid ) {
  519. global $database, $acl, $my, $vmLogger, $VM_LANG, $vmuser;
  520. if (!is_array( $cid ) ) {
  521. $cid = array( $cid );
  522. }
  523. if ( count( $cid ) ) {
  524. $obj = new mosUser( $database );
  525. foreach ($cid as $id) {
  526. // check for a super admin ... can't delete them
  527. //TODO: Find out the group name of the User to be deleted
  528. // $groups = $acl->get_object_groups( 'users', $id, 'ARO' );
  529. // $this_group = strtolower( $acl->get_group_name( $groups[0], 'ARO' ) );
  530. $obj->load( $id );
  531. $this_group = strtolower( $obj->get('usertype') );
  532. if ( $this_group == 'super administrator' ) {
  533. $vmLogger->err( $VM_LANG->_('VM_USER_DELETE_ERR_SUPERADMIN') );
  534. return false;
  535. } else if ( $id == $my->id ){
  536. $vmLogger->err( $VM_LANG->_('VM_USER_DELETE_ERR_YOURSELF') );
  537. return false;
  538. } else if ( ( $this_group == 'administrator' ) && ( $vmuser->gid == 24 ) ){
  539. $vmLogger->err( $VM_LANG->_('VM_USER_DELETE_ERR_ADMIN') );
  540. return false;
  541. } else {
  542. $obj->delete( $id );
  543. $err = $obj->getError();
  544. if( $err ) {
  545. $vmLogger->err( $err );
  546. return false;
  547. }
  548. return true;
  549. }
  550. }
  551. }
  552. }
  553. /**
  554. * Returns the information from the user_info table for a specific user
  555. *
  556. * @param int $user_id
  557. * @param array $fields
  558. * @return ps_DB
  559. */
  560. function getUserInfo( $user_id, $fields=array() ) {
  561. $user_id = intval( $user_id );
  562. if( empty( $fields )) {
  563. $selector = '*';
  564. }
  565. else {
  566. $selector = '`'. implode( '`,`', $fields ) . '`';
  567. }
  568. $db = new ps_DB();
  569. $q = 'SELECT '.$selector.' FROM `#__{vm}_user_info` WHERE `user_id`='.$user_id;
  570. $db->query( $q );
  571. $db->next_record();
  572. return $db;
  573. }
  574. /**
  575. * Inserts or Updates the user information
  576. *
  577. * @param array $user_info
  578. * @param int $user_id
  579. */
  580. function setUserInfo( $user_info, $user_id=0 ) {
  581. $db = new ps_DB;
  582. if( empty( $user_id ) ) { // INSERT NEW USER
  583. $db->buildQuery( 'INSERT', '#__{vm}_user_info', $user_info );
  584. // Run the query now!
  585. $db->query();
  586. }
  587. else { // UPDATE EXISTING USER
  588. $db->buildQuery( 'UPDATE', '#__{vm}_user_info', $user_info, 'WHERE `user_id`='.$user_id );
  589. // Run the query now!
  590. $db->query();
  591. }
  592. }
  593. /**
  594. * Logs in a customer
  595. *
  596. * @param unknown_type $username
  597. * @param unknown_type $password
  598. */
  599. function login($username, $password) {
  600. //not used
  601. }
  602. /**
  603. * Logs out a customer from the store
  604. *
  605. */
  606. function logout($complete_logout=true) {
  607. global $auth, $sess, $mainframe, $page;
  608. $auth = array();
  609. $_SESSION['auth'] = array();
  610. if( $complete_logout ) {
  611. $mainframe->logout();
  612. }
  613. vmRedirect($sess->url('index.php?page='.HOMEPAGE, true, false));
  614. }
  615. }
  616. ?>