PageRenderTime 38ms CodeModel.GetById 9ms RepoModel.GetById 1ms app.codeStats 0ms

/administrator/components/com_virtuemart/classes/export/ps_olsi.php

https://bitbucket.org/dgough/annamaria-daneswood-25102012
PHP | 413 lines | 380 code | 7 blank | 26 comment | 11 complexity | fc63a466c9466e571e84e03cca94f4e8 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_olsi.php 1095 2007-12-19 20:19:16Z soeren_nb $
  6. * @package VirtueMart
  7. * @subpackage export
  8. * @copyright Copyright (C) 2004-2007 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. *
  20. * The ps_xmlexport class, containing the default export processing code
  21. * for export methods that have no own class
  22. *
  23. */
  24. require_once( $mosConfig_absolute_path. '/includes/domit/xml_domit_include.php' );
  25. require_once( $mosConfig_absolute_path. '/includes/domit/xml_domit_utilities.php');
  26. class ps_olsi {
  27. var $classname = 'ps_olsi';
  28. var $xmldoc = null;
  29. /**
  30. * Show all configuration parameters for this export method
  31. * @returns boolean False when the export method has no configration
  32. */
  33. function show_configuration() {
  34. global $VM_LANG;
  35. $db = new ps_DB();
  36. /** Read current Configuration ***/
  37. include_once(CLASSPATH ."export/".$this->classname.".cfg.php");
  38. ?>
  39. <table class="adminform">
  40. <!--tr class="row0">
  41. <td><strong><?php echo $VM_LANG->_('PHPSHOP_ADMIN_CFG_ENABLE_AUTORIZENET_TESTMODE') ?></strong></td>
  42. <td>
  43. <select name="PAYPAL_DEBUG" class="inputbox" >
  44. <option <?php if (@PAYPAL_DEBUG == '1') echo "selected=\"selected\""; ?> value="1"><?php echo $VM_LANG->_('PHPSHOP_ADMIN_CFG_YES') ?></option>
  45. <option <?php if (@PAYPAL_DEBUG != '1') echo "selected=\"selected\""; ?> value="0"><?php echo $VM_LANG->_('PHPSHOP_ADMIN_CFG_NO') ?></option>
  46. </select>
  47. </td>
  48. <td>
  49. <?php
  50. printf( $VM_LANG->_('VM_ADMIN_CFG_PAYPAL_NOTIFYSCRIPT_TIP'), '<pre>'. COMPONENTURL."notify.php</pre>" );
  51. ?>
  52. </td>
  53. </tr-->
  54. <tr class="row1">
  55. <td><strong>Shipping module mapping</strong></td>
  56. <td>
  57. <input type="text" name="SHIPPINGMODULEMAP" class="inputbox" value="<? echo SHIPPINGMODULEMAP ?>" />
  58. </td>
  59. <td>
  60. </td>
  61. </tr>
  62. <tr class="row0">
  63. <td><strong><?php echo $VM_LANG->_('PHPSHOP_ADMIN_CFG_PAYPAL_STATUS_SUCCESS') ?></strong></td>
  64. <td>
  65. <select name="PAYPAL_VERIFIED_STATUS" class="inputbox" >
  66. <?php
  67. $q = "SELECT order_status_name,order_status_code FROM #__{vm}_order_status ORDER BY list_order";
  68. $db->query($q);
  69. $order_status_code = Array();
  70. $order_status_name = Array();
  71. while ($db->next_record()) {
  72. $order_status_code[] = $db->f("order_status_code");
  73. $order_status_name[] = $db->f("order_status_name");
  74. }
  75. for ($i = 0; $i < sizeof($order_status_code); $i++) {
  76. echo "<option value=\"" . $order_status_code[$i];
  77. if (PAYPAL_VERIFIED_STATUS == $order_status_code[$i])
  78. echo "\" selected=\"selected\">";
  79. else
  80. echo "\">";
  81. echo $order_status_name[$i] . "</option>\n";
  82. }?>
  83. </select>
  84. </td>
  85. <td><?php echo $VM_LANG->_('PHPSHOP_ADMIN_CFG_PAYPAL_STATUS_SUCCESS_EXPLAIN') ?>
  86. </td>
  87. </tr>
  88. <tr class="row1">
  89. <td><strong><?php echo $VM_LANG->_('VM_ADMIN_CFG_PAYPAL_STATUS_PENDING') ?></strong></td>
  90. <td>
  91. <select name="PAYPAL_PENDING_STATUS" class="inputbox" >
  92. <?php
  93. for ($i = 0; $i < sizeof($order_status_code); $i++) {
  94. echo "<option value=\"" . $order_status_code[$i];
  95. if (PAYPAL_PENDING_STATUS == $order_status_code[$i])
  96. echo "\" selected=\"selected\">";
  97. else
  98. echo "\">";
  99. echo $order_status_name[$i] . "</option>\n";
  100. } ?>
  101. </select>
  102. </td>
  103. <td><?php echo $VM_LANG->_('VM_ADMIN_CFG_PAYPAL_STATUS_PENDING_EXPLAIN') ?></td>
  104. </tr>
  105. <tr class="row0">
  106. <td><strong><?php echo $VM_LANG->_('PHPSHOP_ADMIN_CFG_PAYPAL_STATUS_FAILED') ?></strong></td>
  107. <td>
  108. <select name="PAYPAL_INVALID_STATUS" class="inputbox" >
  109. <?php
  110. for ($i = 0; $i < sizeof($order_status_code); $i++) {
  111. echo "<option value=\"" . $order_status_code[$i];
  112. if (PAYPAL_INVALID_STATUS == $order_status_code[$i])
  113. echo "\" selected=\"selected\">";
  114. else
  115. echo "\">";
  116. echo $order_status_name[$i] . "</option>\n";
  117. } ?>
  118. </select>
  119. </td>
  120. <td><?php echo $VM_LANG->_('PHPSHOP_ADMIN_CFG_PAYPAL_STATUS_FAILED_EXPLAIN') ?>
  121. </td>
  122. </tr>
  123. </table>
  124. <?php
  125. }
  126. function has_configuration() {
  127. // return false if there's no configuration
  128. return true;
  129. }
  130. /**
  131. * Returns the "is_writeable" status of the configuration file
  132. * @param void
  133. * @returns boolean True when the configuration file is writeable, false when not
  134. */
  135. function configfile_writeable() {
  136. return is_writeable( CLASSPATH."export/".$this->classname.".cfg.php" );
  137. }
  138. /**
  139. * Returns the "is_readable" status of the configuration file
  140. * @param void
  141. * @returns boolean True when the configuration file is writeable, false when not
  142. */
  143. function configfile_readable() {
  144. return is_readable( CLASSPATH."export/".$this->classname.".cfg.php" );
  145. }
  146. /**
  147. * Writes the configuration file for this payment method
  148. * @param array An array of objects
  149. * @return boolean True when writing was successful
  150. */
  151. function write_configuration( &$d ) {
  152. /* ... */
  153. return true;
  154. }
  155. /**
  156. * Load default configuration for module into form-fields
  157. *
  158. *
  159. * @param array $d
  160. * @return array
  161. */
  162. function process_installation ($d = array()) {
  163. echo 'yes!';
  164. if (!$d['export_name']) {
  165. $d['export_name'] = "SAGE Office Line Connector";
  166. }
  167. if (!$d['export_desc']) {
  168. $d['export_desc'] = 'Export Module for Sage Office Line, requires Office Line Shop Interface from <a href="http://www.1st-vision.de">1st Vision</a>.';
  169. }
  170. return $d;
  171. }
  172. /**
  173. * Process authentication method
  174. *
  175. * @return boolean Authentication success or error
  176. */
  177. function process_authentication () {
  178. global $database, $acl;
  179. $usrname = $database->getEscaped( vmGet( $_REQUEST, 'user', '' ) );
  180. $pass = $database->getEscaped( vmGet( $_REQUEST, 'password', '' ) );
  181. if (!$usrname) {
  182. echo 'Please enter a username';
  183. return false;
  184. }
  185. if (!$pass) {
  186. echo 'Please enter a password';
  187. return false;
  188. } else {
  189. $pass = md5( $pass );
  190. }
  191. $query = "SELECT COUNT(*)"
  192. . "\n FROM #__users"
  193. . "\n WHERE ("
  194. // Administrators
  195. . "\n gid = 24"
  196. // Super Administrators
  197. . "\n OR gid = 25"
  198. . "\n )"
  199. ;
  200. $database->setQuery( $query );
  201. $count = intval( $database->loadResult() );
  202. if ($count < 1) {
  203. echo _LOGIN_NOADMINS;
  204. return false;
  205. }
  206. $my = null;
  207. $query = "SELECT *"
  208. . "\n FROM #__users"
  209. . "\n WHERE username = '$usrname'"
  210. . "\n AND block = 0"
  211. ;
  212. $database->setQuery( $query );
  213. $database->loadObject( $my );
  214. /** find the user group (or groups in the future) */
  215. if (@$my->id) {
  216. $grp = $acl->getAroGroup( $my->id );
  217. $my->gid = $grp->group_id;
  218. $my->usertype = $grp->name;
  219. if ( strcmp( $my->password, $pass ) || !$acl->acl_check( 'administration', 'login', 'users', $my->usertype ) ) {
  220. echo "Incorrect Username, Password, or Access Level.";
  221. return false;
  222. }
  223. } else {
  224. echo "Incorrect Username, Password. Please try again";
  225. return false;
  226. }
  227. return true;
  228. }
  229. /**
  230. * process export
  231. * @name process_export
  232. * @param Filterstatement to select orders
  233. * @param db-object
  234. * @return bool true/false
  235. */
  236. function process_export(&$db) {
  237. global $mosConfig_absolute_path, $database;
  238. $xmldoc = new DOMIT_Document();
  239. $xmldoc->appendEntityTranslationTable(get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES)); //damit sollte htmlspecialchars nicht mehr notwendig sein
  240. $xmldoc->expandEmptyElementTags(false);
  241. $xmldoc->appendChild($xmldoc->createProcessingInstruction("xml", "version=\"1.0\" encoding=\"IS0-8859-1\""));
  242. $xmldoc->setDocumentElement($xmldoc->createElement('OLOrders'));
  243. $xmldoc->documentElement->appendChild($xmldoc->createElement('Version1.1'));
  244. $order_status = vmGet( $_REQUEST, 'status', '' );
  245. $order_from = vmGet( $_REQUEST, 'from', '' );
  246. $order_since = vmGet( $_REQUEST, 'since', '' );
  247. $order_since = vmGet( $_REQUEST, 'since', '' );
  248. $order_to = vmGet( $_REQUEST, 'to', '' );
  249. $order_id = vmGet( $_REQUEST, 'order_id', '' );
  250. $where = array();
  251. if (!$order_status && !$order_from && !$order_since && !$order_to && !$order_id){
  252. $order_status = 'P';
  253. }
  254. if ($order_status) {
  255. $where[] = "order_status = '" . $db->getEscaped( $order_status ) . "'";
  256. }
  257. if($order_from) {
  258. $where[] = "order_id >= '" . $db->getEscaped($order_from) . "'";
  259. } elseif ($order_since) {
  260. $where[] = "order_id > '" . $db->getEscaped($order_since) . "'";
  261. } elseif ($order_id) {
  262. $where[] = "order_id = '" . $db->getEscaped($order_id) . "'";
  263. }
  264. if($order_to && !$order_id) {
  265. $where[] = "order_id <= '" . $db->getEscaped($order_to) . "'";
  266. }
  267. //select the orders to export
  268. $q = 'SELECT * FROM #__{vm}_orders WHERE vendor_id=\'' . $db->f('vendor_id') . '\' AND ';
  269. $q .= implode($where);
  270. $db->setQuery($q);
  271. $orders = $db->loadAssocList();
  272. for($i=0; $i < count($orders); $i++ ) {
  273. //get billing and shipping address
  274. $q = "SELECT * FROM #__{vm}_order_user_info WHERE order_id='". $orders[$i]['order_id'] ."'";
  275. $db->setQuery($q);
  276. $orders[$i]['user_info'] = $db->loadAssocList();
  277. //get shipping address
  278. $q = "SELECT * FROM #__{vm}_order_item WHERE order_id='". $orders[$i]['order_id'] ."'";
  279. $db->setQuery($q);
  280. $orders[$i]['item'] = $db->loadAssocList();
  281. //get payment info
  282. $q = "SELECT * FROM #__{vm}_order_payment WHERE order_id='". $orders[$i]['order_id'] ."'";
  283. $db->setQuery($q);
  284. $orders[$i]['payment'] = $db->loadAssocList();
  285. }
  286. foreach($orders as $order) {
  287. //print_r($order);
  288. $OLWebOrder['OLWebOrder']['TransactionHeader']['TransactionID'] = $order['order_id'];
  289. $OLWebOrder['OLWebOrder']['OrderHeader']['ProcessingOptions']['OrderDate'] = date('d.m.Y H:i:s', $order['cdate']);
  290. $OLWebOrder['OLWebOrder']['OrderHeader']['HeaderText'] = $order['customer_note'];
  291. $OLWebOrder['OLWebOrder']['OrderHeader']['ProcessingOptions']['RefNo'] = str_pad($order['order_id'], 8, 0,STR_PAD_LEFT);
  292. for($i = 0; $i < count($order['user_info']) ; $i++) {
  293. switch ($order['user_info'][$i]['address_type']) {
  294. case 'BT':
  295. default:
  296. if($order['company']) {
  297. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['Name1'] = $order['user_info'][$i]['company'];
  298. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['Name2'] = $order['user_info'][$i]['first_name'] . (($order['user_info'][$i]['middle_name']) ? ' ' . $order['user_info'][$i]['middle_name'] . ' ' : ' ') . $order['user_info'][$i]['last_name'];
  299. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['Matchcode'] = $order['user_info'][$i]['company'] . ', ' .$order['user_info'][$i]['customers_city'] ;
  300. } else {
  301. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['Name1'] = $order['user_info'][$i]['last_name'];
  302. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['Name2'] = $order['user_info'][$i]['first_name'] . (($order['user_info'][$i]['middle_name']) ? ' ' . $order['user_info'][$i]['middle_name'] : '');
  303. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['Matchcode'] = $order['user_info'][$i]['last_name'] . ', ' .$order['user_info'][$i]['city'] ;
  304. }
  305. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['Title'] = $order['user_info'][$i]['title'];
  306. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['Street'] = $order['user_info'][$i]['address_1'] . (($order['user_info'][$i]['address_2']) ? ', ' . $order['user_info'][$i]['address_2'] : '');
  307. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['ZIPCode'] = $order['user_info'][$i]['zip'];
  308. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['City'] = $order['user_info'][$i]['city'];
  309. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['State'] = $order['user_info'][$i]['state'];
  310. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['Country'] = $this->getISOCode2($order['user_info'][$i]['country']);
  311. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['EMail'] = $order['user_info'][$i]['user_email'];
  312. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['AddrTelefon'] = $order['user_info'][$i]['phone_1'];
  313. $OLWebOrder['OLWebOrder']['OrderHeader']['Address']['AddrFax'] = $order['user_info'][$i]['fax'];
  314. break;
  315. case 'ST':
  316. if($order['company']) {
  317. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DAName1'] = $order['user_info'][$i]['company'];
  318. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DAName2'] = $order['user_info'][$i]['first_name'] . (($order['user_info'][$i]['middle_name']) ? ' ' . $order['user_info'][$i]['middle_name'] . ' ' : ' ') . $order['user_info'][$i]['last_name'];
  319. } else {
  320. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DAName1'] = $order['user_info'][$i]['last_name'];
  321. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DAName2'] = $order['user_info'][$i]['first_name'] . (($order['user_info'][$i]['middle_name']) ? ' ' . $order['user_info'][$i]['middle_name'] : '');
  322. }
  323. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DATitle'] = $order['user_info'][$i]['title'];
  324. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DAStreet'] = $order['user_info'][$i]['address_1'] . (($order['user_info'][$i]['address_2']) ? ', ' . $order['user_info'][$i]['address_2'] : '');
  325. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DAZIPCode'] = $order['user_info'][$i]['zip'];
  326. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DACity'] = $order['user_info'][$i]['city'];
  327. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DAState'] = $order['user_info'][$i]['state'];
  328. $OLWebOrder['OLWebOrder']['OrderHeader']['DeliveryAddress']['DACountry'] = $this->getISOCode2($order['user_info'][$i]['country']);
  329. break;
  330. }
  331. }
  332. $OLWebOrder['OLWebOrder']['OrderHeader']['ProcessingOptions']['CarrierCode'] = $this->getCarrierCode($order[$i]['ship_method_id']);
  333. $OLWebOrder['OLWebOrder']['OrderHeader']['ProcessingOptions']['DeliveryPriceGross'] = 0;
  334. $OLWebOrder['OLWebOrder']['OrderHeader']['Payment']['Currency'] = $order['order_currency'];
  335. $OLWebOrder['OLWebOrder']['OrderHeader']['Payment']['BelOLPayCond'] = $this->getPaymentCode($order['payment'][0]['payment_method_id']);
  336. $this->OLWebOrder[] = $OLWebOrder;
  337. $OLWebOrder = array();
  338. }
  339. $this->xmldoc = &$xmldoc;
  340. return true;
  341. }
  342. /**
  343. * output of export
  344. * @return bool true/false
  345. */
  346. function output_export() {
  347. header ("Last-Modified: ". gmdate ("D, d M Y H:i:s"). " GMT"); // immer ge�ndert
  348. header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  349. header ("Pragma: no-cache"); // HTTP/1.0
  350. header ("Content-type: text/xml");
  351. DOMIT_Utilities::fromArray($this->xmldoc, $this->OLWebOrder);
  352. echo $this->xmldoc->toString(false, true);
  353. /*echo '<pre>';
  354. print_r($orders);
  355. echo '</pre>';*/
  356. return true;
  357. }
  358. function getISOCode2($isocode3) {
  359. return $isocode3;
  360. }
  361. function getCarrierCode($ship_method_id) {
  362. return $ship_method_id;
  363. }
  364. function getPaymentCode($payment_method_id) {
  365. return $payment_method_id;
  366. }
  367. }