PageRenderTime 44ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/modules/shopimporter/ajax.php

https://bitbucket.org/enurkov/prestashop
PHP | 214 lines | 191 code | 22 blank | 1 comment | 41 complexity | a750d3ed756968e59c832e6108b3a454 MD5 | raw file
  1. <?php
  2. include_once('../../config/config.inc.php');
  3. include_once('../../init.php');
  4. include_once('../../modules/shopimporter/shopimporter.php');
  5. $moduleName = Tools::getValue('moduleName');
  6. if (!Tools::getValue('ajax') || Tools::getValue('token') != sha1(_COOKIE_KEY_.'ajaxShopImporter') || (!empty($moduleName) && !ctype_alnum($moduleName)))
  7. die;
  8. $className = Tools::getValue('className');
  9. $getMethod = Tools::getValue('getMethod');
  10. $limit = Tools::getValue('limit');
  11. $nbr_import = Tools::getValue('nbr_import');
  12. $server = Tools::getValue('server');
  13. $user = Tools::getValue('user');
  14. $password = Tools::getValue('password');
  15. $database = Tools::getValue('database');
  16. $prefix = Tools::getValue('prefix');
  17. $save = Tools::getValue('save');
  18. $url = Tools::getValue('url');
  19. $loginws = Tools::getValue('loginws');
  20. $apikey = Tools::getValue('apikey');
  21. if (Tools::isSubmit('checkAndSaveConfig'))
  22. {
  23. //cleans the database if an import has already been done
  24. $shop_importer = new shopImporter();
  25. foreach($shop_importer->supportedImports as $key => $import)
  26. if (array_key_exists('alterTable', $import))
  27. $columns = Db::getInstance()->executeS('SHOW COLUMNS FROM `'._DB_PREFIX_.bqSQL($import['table']).'`');
  28. foreach ($columns as $column)
  29. if ($column['Field'] == $import['identifier'].'_'.$moduleName)
  30. Db::getInstance()->execute('ALTER IGNORE TABLE `'._DB_PREFIX_.bqSQL($import['table']).'` DROP `'.bqSQL($import['identifier'].'_'.$moduleName).'`');
  31. if ($link = @mysql_connect(Tools::getValue('server'), Tools::getValue('user'), Tools::getValue('password')))
  32. {
  33. if (!@mysql_select_db(Tools::getValue('database'), $link))
  34. die('{"hasError" : true, "error" : ["'.$shop_importer->l('The database selection cannot be made.', 'ajax').'"]}');
  35. else
  36. {
  37. @mysql_close($link);
  38. die('{"hasError" : false, "error" : []}');
  39. }
  40. }
  41. else
  42. die('{"hasError" : true, "error" : ["'.$shop_importer->l('Link to database cannot be established.', 'ajax').'"]}');
  43. }
  44. if (Tools::isSubmit('getData') || Tools::isSubmit('syncLang') || Tools::isSubmit('syncCurrency'))
  45. {
  46. if (Tools::isSubmit('syncLang'))
  47. $save = true;
  48. if (file_exists('../../modules/'.$moduleName.'/'.$moduleName.'.php'))
  49. {
  50. require_once('../../modules/'.$moduleName.'/'.$moduleName.'.php');
  51. $importModule = new $moduleName();
  52. $importModule->server = $server;
  53. $importModule->user = $user;
  54. $importModule->passwd = $password;
  55. $importModule->database = $database;
  56. $importModule->prefix = $prefix;
  57. if (!method_exists($importModule, $getMethod))
  58. die('{"hasError" : true, "error" : ["not_exist"], "datas" : []}');
  59. else
  60. {
  61. $return = call_user_func_array(array($importModule, $getMethod), array($limit, $nbr_import));
  62. $shop_importer = new shopImporter();
  63. $shop_importer->genericImport($className, $return, (bool)$save);
  64. }
  65. }
  66. }
  67. if (Tools::isSubmit('getDataWS') || Tools::isSubmit('syncLangWS') || Tools::isSubmit('syncCurrencyWS'))
  68. {
  69. if (Tools::isSubmit('syncLangWS'))
  70. $save = true;
  71. if (file_exists('../../modules/'.$moduleName.'/'.$moduleName.'.php'))
  72. {
  73. require_once('../../modules/'.$moduleName.'/'.$moduleName.'.php');
  74. try
  75. {
  76. $importModule = new $moduleName();
  77. $importModule->connect($url,$loginws,$apikey);
  78. if (!method_exists($importModule, $getMethod))
  79. die('{"hasError" : true, "error" : ["not_exist"], "datas" : []}');
  80. else
  81. {
  82. $return = call_user_func_array(array($importModule, $getMethod), array($limit, $nbr_import));
  83. $shop_importer = new shopImporter();
  84. $shop_importer->genericImport($className, $return, (bool)$save);
  85. }
  86. die('{"hasError" : false, "error" : []}');
  87. } catch (Exception $e)
  88. {
  89. die('{"hasError" : true, "error" : ['.json_encode($e->getMessage()).'], "datas" : []}');
  90. }
  91. }
  92. }
  93. if (Tools::isSubmit('truncatTable'))
  94. {
  95. $shop_importer = new shopImporter();
  96. if ($shop_importer->truncateTable($className))
  97. die('{"hasError" : false, "error" : []}');
  98. else
  99. die('{"hasError" : true, "error" : ["'.$className.'"]}');
  100. }
  101. if (Tools::isSubmit('alterTable'))
  102. {
  103. $shop_importer = new shopImporter();
  104. if ($shop_importer->alterTable($className))
  105. die('{"hasError" : false, "error" : []}');
  106. else
  107. die('{"hasError" : true, "error" : ["'.$className.'"]}');
  108. }
  109. if (Tools::isSubmit('displaySpecificOptions'))
  110. {
  111. if (file_exists('../../modules/'.$moduleName.'/'.$moduleName.'.php'))
  112. {
  113. $shop_importer = new shopImporter();
  114. require_once('../../modules/'.$moduleName.'/'.$moduleName.'.php');
  115. $importModule = new $moduleName();
  116. $importModule->server = $server;
  117. $importModule->user = $user;
  118. $importModule->passwd = $password;
  119. $importModule->database = $database;
  120. $importModule->prefix = $prefix;
  121. if ($link = @mysql_connect(Tools::getValue('server'), Tools::getValue('user'), Tools::getValue('password')))
  122. {
  123. if(!@mysql_select_db(Tools::getValue('database'), $link))
  124. die($shop_importer->l('The database selection cannot be made.', 'ajax'));
  125. elseif (method_exists($importModule, 'displaySpecificOptions'))
  126. die($importModule->displaySpecificOptions());
  127. else
  128. die('not_exist');
  129. }
  130. else
  131. die($shop_importer->l('Link to database cannot be established.', 'ajax'));
  132. }
  133. }
  134. elseif (Tools::isSubmit('displaySpecificOptionsWsdl'))
  135. {
  136. if (file_exists('../../modules/'.$moduleName.'/'.$moduleName.'.php'))
  137. {
  138. require_once('../../modules/'.$moduleName.'/'.$moduleName.'.php');
  139. $importModule = new $moduleName();
  140. try
  141. {
  142. if (method_exists($importModule, 'displaySpecificOptions'))
  143. die($importModule->displaySpecificOptions());
  144. else
  145. die('not_exist');
  146. } catch (Exception $e)
  147. {
  148. die('{"hasError" : true, "error" : ['.json_encode($e->getMessage()).'], "datas" : []}');
  149. }
  150. }
  151. }
  152. if (Tools::isSubmit('connexionWs'))
  153. {
  154. if (file_exists('../../modules/'.$moduleName.'/'.$moduleName.'.php'))
  155. {
  156. require_once('../../modules/'.$moduleName.'/'.$moduleName.'.php');
  157. try
  158. {
  159. $importModule = new $moduleName();
  160. $importModule->connect($url,$loginws,$apikey);
  161. die('{"hasError" : false, "error" : []}');
  162. } catch (Exception $e)
  163. {
  164. die('{"hasError" : true, "error" : ['.json_encode($e->getMessage()).'], "datas" : []}');
  165. }
  166. }
  167. }
  168. if (Tools::isSubmit('validateSpecificOptions'))
  169. {
  170. if (file_exists('../../modules/'.$moduleName.'/'.$moduleName.'.php'))
  171. {
  172. require_once('../../modules/'.$moduleName.'/'.$moduleName.'.php');
  173. $importModule = new $moduleName();
  174. if (!method_exists($importModule, 'validateSpecificOptions'))
  175. die('{"hasError" : true, "error" : ["not_exist"]}');
  176. else
  177. die($importModule->validateSpecificOptions());
  178. }
  179. }
  180. if (Tools::isSubmit('displayConfigConnector'))
  181. {
  182. if (file_exists('../../modules/'.$moduleName.'/'.$moduleName.'.php'))
  183. {
  184. require_once('../../modules/'.$moduleName.'/'.$moduleName.'.php');
  185. $importModule = new $moduleName();
  186. if (!method_exists($importModule, 'displayConfigConnector'))
  187. die('{"hasError" : true, "error" : ["not_exist"]}');
  188. else
  189. die($importModule->displayConfigConnector());
  190. }
  191. }
  192. ?>