PageRenderTime 44ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/administrator/components/com_virtuemart/classes/ps_user_address.php

https://bitbucket.org/dgough/annamaria-daneswood-25102012
PHP | 221 lines | 126 code | 35 blank | 60 comment | 20 complexity | bc760fdc67391a5799cd94b21c1760da 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_address.php 1474 2008-07-15 14:23:19Z 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. /**
  19. * This class is used for managing Shipping Addresses
  20. *
  21. * @author Edikon Corp., pablo
  22. */
  23. class ps_user_address {
  24. /**
  25. * Validates all input parameters onBeforeAdd
  26. *
  27. * @param array $d
  28. * @return boolean
  29. */
  30. function validate_add(&$d) {
  31. global $auth, $VM_LANG, $vmLogger, $vmInputFilter;
  32. $valid = true;
  33. $d['missing'] = "";
  34. if (empty($auth['user_id'])) {
  35. $vmLogger->err( $VM_LANG->_('MUST_NOT_USE') );
  36. $valid = false;
  37. return $valid;
  38. }
  39. require_once( CLASSPATH . 'ps_userfield.php' );
  40. $shippingFields = ps_userfield::getUserFields( 'shipping', false, '', true );
  41. $skipFields = ps_userfield::getSkipFields();
  42. foreach( $shippingFields as $field ) {
  43. if( $field->required == 0 ) continue;
  44. if( in_array( $field->name, $skipFields )) {
  45. continue;
  46. }
  47. if ( empty( $d[$field->name])) {
  48. $valid = false;
  49. $vmLogger->err($VM_LANG->_('VM_ENTER_VALUE_FIELD').' "'.($VM_LANG->_($field->title) != '' ? $VM_LANG->_($field->title) : $field->title ).'"');
  50. }
  51. }
  52. if(empty($d['user_info_id'])) {
  53. $db = new ps_DB;
  54. $q = "SELECT user_id from #__{vm}_user_info ";
  55. $q .= "WHERE address_type_name='" . $db->getEscaped($d["address_type_name"]) . "' ";
  56. $q .= "AND address_type='" . $db->getEscaped($d["address_type"]) . "' ";
  57. $q .= "AND user_id = " .(int)$d["user_id"];
  58. $db->query($q);
  59. if ($db->next_record()) {
  60. $d['missing'] .= "address_type_name";
  61. $vmLogger->warning( $VM_LANG->_('VM_USERADDRESS_ERR_LABEL_EXISTS') );
  62. $valid = false;
  63. }
  64. }
  65. return $valid;
  66. }
  67. /**
  68. * Validates all input parameters onBeforeUpdate
  69. *
  70. * @param array $d
  71. * @return boolean
  72. */
  73. function validate_update(&$d) {
  74. return $this->validate_add( $d );
  75. }
  76. /**
  77. * Validates all input parameters onBeforeDelete
  78. *
  79. * @param array $d
  80. * @return boolean
  81. */
  82. function validate_delete(&$d) {
  83. global $vmLogger, $VM_LANG;
  84. if (empty($d["user_info_id"])) {
  85. $vmLogger->err( $VM_LANG->_('VM_USERADDRESS_DELETE_SELECT') );
  86. return false;
  87. }
  88. else {
  89. return true;
  90. }
  91. }
  92. /**
  93. * Adds a new Shipping Adress for the specified user
  94. *
  95. * @param array $d
  96. * @return boolean
  97. */
  98. function add(&$d) {
  99. global $perm, $page, $VM_LANG;
  100. $hash_secret = "VirtueMartIsCool";
  101. $db = new ps_DB;
  102. $timestamp = time();
  103. if (!$this->validate_add($d)) {
  104. return false;
  105. }
  106. // Get all fields which where shown to the user
  107. $shippingFields = ps_userfield::getUserFields( 'shipping', false, '', true );
  108. $skip_fields = ps_userfield::getSkipFields();
  109. foreach( $shippingFields as $userField ) {
  110. if( !in_array($userField->name, $skip_fields )) {
  111. $fields[$userField->name] = ps_userfield::prepareFieldDataSave( $userField->type, $userField->name, vmGet( $d, $userField->name, strtoupper($userField->name) ));
  112. }
  113. }
  114. // These are pre-defined fields.
  115. $fields['user_id'] = !$perm->check("admin,storeadmin") ? $_SESSION['auth']['user_id'] : (int)$d["user_id"];
  116. $fields['user_info_id'] = md5( uniqid( $hash_secret ));
  117. $fields['address_type'] = 'ST';
  118. $fields['cdate'] = $timestamp;
  119. $fields['mdate'] = $timestamp;
  120. $db->buildQuery('INSERT', '#__{vm}_user_info', $fields );
  121. if( $db->query() === false ) {
  122. $GLOBALS['vmLogger']->err($VM_LANG->_('VM_USERADDRESS_ADD_FAILED'));
  123. return false;
  124. }
  125. $GLOBALS['vmLogger']->info($VM_LANG->_('VM_USERADDRESS_ADDED'));
  126. vmRequest::setVar( 'ship_to_info_id', $fields['user_info_id'] );
  127. return true;
  128. }
  129. /**
  130. * Updates a Shipping Adress for the specified user info ID
  131. *
  132. * @param array $d
  133. * @return boolean
  134. */
  135. function update(&$d) {
  136. global $perm, $VM_LANG;
  137. require_once( CLASSPATH.'ps_userfield.php');
  138. $db = new ps_DB;
  139. $timestamp = time();
  140. if (!$this->validate_update($d)) {
  141. return false;
  142. }
  143. // Get all fields which where shown to the user
  144. $shippingFields = ps_userfield::getUserFields( 'shipping', false, '', true );
  145. $skip_fields = ps_userfield::getSkipFields();
  146. foreach( $shippingFields as $userField ) {
  147. if( !in_array($userField->name, $skip_fields )) {
  148. $fields[$userField->name] = ps_userfield::prepareFieldDataSave( $userField->type, $userField->name, vmGet($d, $userField->name, strtoupper($userField->name) ));
  149. }
  150. }
  151. // These are pre-defined fields.
  152. $fields['user_id'] = !$perm->check("admin,storeadmin") ? $_SESSION['auth']['user_id'] : (int)$d["user_id"];
  153. $fields['address_type'] = 'ST';
  154. $fields['mdate'] = time();
  155. $db->buildQuery('UPDATE', '#__{vm}_user_info', $fields, "WHERE user_info_id='" . $db->getEscaped($d["user_info_id"]) . "'".(!$perm->check("admin,storeadmin") ? " AND user_id=".$_SESSION['auth']['user_id'] : '') );
  156. if( $db->query() === false ) {
  157. $GLOBALS['vmLogger']->err($VM_LANG->_('VM_USERADDRESS_UPDATED_FAILED'));
  158. return false;
  159. }
  160. $GLOBALS['vmLogger']->info($VM_LANG->_('VM_USERADDRESS_UPDATED'));
  161. vmRequest::setVar( 'ship_to_info_id', $d['user_info_id'] );
  162. return true;
  163. }
  164. /**
  165. * Deletes the Shipping Adress of the specified user info ID
  166. *
  167. * @param array $d
  168. * @return boolean
  169. */
  170. function delete(&$d) {
  171. global $perm;
  172. $db = new ps_DB;
  173. if (!$this->validate_delete($d)) {
  174. return false;
  175. }
  176. $q = "DELETE FROM #__{vm}_user_info ";
  177. $q .= "WHERE user_info_id='" . $d["user_info_id"] . "'";
  178. if (!$perm->check("admin,storeadmin")) {
  179. $q .= " AND user_id=".$_SESSION['auth']['user_id'];
  180. }
  181. $q .= ' LIMIT 1';
  182. $db->query($q);
  183. return true;
  184. }
  185. }
  186. ?>