Пример #1
0
 function OPCstoreAddress(&$cart, $data, $user_id = 0)
 {
     $x = JRequest::getVar('ship_to_info_id', '');
     if (!empty($x) && is_numeric($x)) {
         $data['shipto_virtuemart_userinfo_id'] = (int) $x;
     }
     $data['shipto_virtuemart_userinfo_id'] = (int) $data['shipto_virtuemart_userinfo_id'];
     //$user =JFactory::getUser();
     $this->addModelPath(JPATH_VM_ADMINISTRATOR . DS . 'models');
     require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
     $userModel = OPCmini::getModel('user');
     $user = JFactory::getUser();
     $userinfo = $userModel->getTable('userinfos');
     if ($data['address_type'] == 'BT') {
         $userfielddata = VirtueMartModelUser::_prepareUserFields($data, 'BT');
         if (!$userinfo->bindChecknStore($userfielddata)) {
             vmError('storeAddress ' . $userinfo->getError());
         }
     }
     // Check for fields with the the 'shipto_' prefix; that means a (new) shipto address.
     $shiptonew = JRequest::getVar('opc_st_changed_new', false);
     $shiptologged = JRequest::getVar('shipto_logged');
     // shipto_logged
     // special case when using sinel ST address:
     $skipc = false;
     $shipto_logged = JRequest::getVar('shipto_logged', null);
     $shipto_logged = (int) $shipto_logged;
     if (!empty($shipto_logged)) {
         $q = 'select address_type from #__virtuemart_userinfos where virtuemart_userinfo_id = ' . $data['shipto_virtuemart_userinfo_id'] . ' limit 0,1';
         $db = JFactory::getDBO();
         $db->setQuery($q);
         $res2 = $db->loadResult();
         if (!empty($res2) && $res2 != 'bt') {
             $data['shipto_virtuemart_userinfo_id'] = $shipto_logged;
             $skipc = true;
         }
     } else {
         if (!$skipc) {
             $q = 'select address_type from #__virtuemart_userinfos where virtuemart_userinfo_id = ' . $data['shipto_virtuemart_userinfo_id'] . ' limit 0,1';
             $db = JFactory::getDBO();
             $db->setQuery($q);
             $res = $db->loadResult();
             if (empty($res)) {
                 // non existent update to ST
                 unset($data['shipto_virtuemart_userinfo_id']);
                 $data['shipto_virtuemart_userinfo_id'] = 0;
             }
             if (strtolower($res) == 'bt') {
                 // trying to update ST with improper ID
                 $data['shipto_virtuemart_userinfo_id'] = 0;
             }
         }
     }
     if (isset($data['shipto_virtuemart_userinfo_id'])) {
         $dataST = array();
         $_pattern = '/^shipto_/';
         foreach ($data as $_k => $_v) {
             if (preg_match($_pattern, $_k)) {
                 $_new = preg_replace($_pattern, '', $_k);
                 $dataST[$_new] = $_v;
             }
         }
         $userinfo = $userModel->getTable('userinfos');
         if (isset($dataST['virtuemart_userinfo_id']) and $dataST['virtuemart_userinfo_id'] != 0) {
             require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
             if (!OPCmini::isSuperVendor()) {
                 $userinfo->load($dataST['virtuemart_userinfo_id']);
             }
         }
         if (empty($userinfo->virtuemart_user_id)) {
             require_once JPATH_ROOT . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'mini.php';
             if (!OPCmini::isSuperVendor()) {
                 $dataST['virtuemart_user_id'] = $user->id;
             } else {
                 if (isset($data['virtuemart_user_id'])) {
                     $dataST['virtuemart_user_id'] = (int) $data['virtuemart_user_id'];
                 } else {
                     //Disadvantage is that admins should not change the ST address in the FE (what should never happen anyway.)
                     $dataST['virtuemart_user_id'] = $user->id;
                 }
             }
         } else {
             if ($userinfo->virtuemart_user_id != $user->id) {
                 return;
             }
         }
         $dataST['address_type'] = 'ST';
         $userfielddata = VirtueMartModelUser::_prepareUserFields($dataST, 'ST');
         if (!$userinfo->bindChecknStore($userfielddata)) {
             vmError($userinfo->getError());
         }
         if (!empty($userinfo->virtuemart_userinfo_id)) {
             $shipto = JRequest::setVar('shipto', (int) $userinfo->virtuemart_userinfo_id);
             $cart->selected_shipto = $userinfo->virtuemart_userinfo_id;
             $cart->STsameAsBT = 0;
         }
     }
     return $userinfo->virtuemart_userinfo_id;
 }