PageRenderTime 118ms CodeModel.GetById 34ms RepoModel.GetById 1ms app.codeStats 1ms

/core/components/minishop/import_example.php

https://github.com/molotsnk/miniShop
PHP | 208 lines | 136 code | 35 blank | 37 comment | 15 complexity | 87d832ed879f52f2b22188aa7e6043cd MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. // Таблица для транслита имени в alias
  3. $translit_arr = array ('&'=>'and','%'=>'','\''=>'','À'=>'A','À'=>'A','Á'=>'A','Á'=>'A','Â'=>'A','Â'=>'A','Ã'=>'A','Ã'=>'A','Ä'=>'e','Ä'=>'A','Å'=>'A','Å'=>'A','Æ'=>'e','Æ'=>'E','Ā'=>'A','Ą'=>'A','Ă'=>'A','Ç'=>'C','Ç'=>'C','Ć'=>'C','Č'=>'C','Ĉ'=>'C','Ċ'=>'C','Ď'=>'D','Đ'=>'D','È'=>'E','È'=>'E','É'=>'E','É'=>'E','Ê'=>'E','Ê'=>'E','Ë'=>'E','Ë'=>'E','Ē'=>'E','Ę'=>'E','Ě'=>'E','Ĕ'=>'E','Ė'=>'E','Ĝ'=>'G','Ğ'=>'G','Ġ'=>'G','Ģ'=>'G','Ĥ'=>'H','Ħ'=>'H','Ì'=>'I','Ì'=>'I','Í'=>'I','Í'=>'I','Î'=>'I','Î'=>'I','Ï'=>'I','Ï'=>'I','Ī'=>'I','Ĩ'=>'I','Ĭ'=>'I','Į'=>'I','İ'=>'I','IJ'=>'J','Ĵ'=>'J','Ķ'=>'K','Ľ'=>'K','Ĺ'=>'K','Ļ'=>'K','Ŀ'=>'K','Ñ'=>'N','Ñ'=>'N','Ń'=>'N','Ň'=>'N','Ņ'=>'N','Ŋ'=>'N','Ò'=>'O','Ò'=>'O','Ó'=>'O','Ó'=>'O','Ô'=>'O','Ô'=>'O','Õ'=>'O','Õ'=>'O','Ö'=>'e','Ö'=>'e','Ø'=>'O','Ø'=>'O','Ō'=>'O','Ő'=>'O','Ŏ'=>'O','Œ'=>'E','Ŕ'=>'R','Ř'=>'R','Ŗ'=>'R','Ś'=>'S','Ş'=>'S','Ŝ'=>'S','Ș'=>'S','Ť'=>'T','Ţ'=>'T','Ŧ'=>'T','Ț'=>'T','Ù'=>'U','Ù'=>'U','Ú'=>'U','Ú'=>'U','Û'=>'U','Û'=>'U','Ü'=>'e','Ū'=>'U','Ü'=>'e','Ů'=>'U','Ű'=>'U','Ŭ'=>'U','Ũ'=>'U','Ų'=>'U','Ŵ'=>'W','Ŷ'=>'Y','Ÿ'=>'Y','Ź'=>'Z','Ż'=>'Z','à'=>'a','á'=>'a','â'=>'a','ã'=>'a','ä'=>'e','ä'=>'e','å'=>'a','ā'=>'a','ą'=>'a','ă'=>'a','å'=>'a','æ'=>'e','ç'=>'c','ć'=>'c','č'=>'c','ĉ'=>'c','ċ'=>'c','ď'=>'d','đ'=>'d','è'=>'e','é'=>'e','ê'=>'e','ë'=>'e','ē'=>'e','ę'=>'e','ě'=>'e','ĕ'=>'e','ė'=>'e','ƒ'=>'f','ĝ'=>'g','ğ'=>'g','ġ'=>'g','ģ'=>'g','ĥ'=>'h','ħ'=>'h','ì'=>'i','í'=>'i','î'=>'i','ï'=>'i','ī'=>'i','ĩ'=>'i','ĭ'=>'i','į'=>'i','ı'=>'i','ij'=>'j','ĵ'=>'j','ķ'=>'k','ĸ'=>'k','ł'=>'l','ľ'=>'l','ĺ'=>'l','ļ'=>'l','ŀ'=>'l','ñ'=>'n','ń'=>'n','ň'=>'n','ņ'=>'n','ʼn'=>'n','ŋ'=>'n','ò'=>'o','ó'=>'o','ô'=>'o','õ'=>'o','ö'=>'e','ö'=>'e','ø'=>'o','ō'=>'o','ő'=>'o','ŏ'=>'o','œ'=>'e','ŕ'=>'r','ř'=>'r','ŗ'=>'r','ù'=>'u','ú'=>'u','û'=>'u','ü'=>'e','ū'=>'u','ü'=>'e','ů'=>'u','ű'=>'u','ŭ'=>'u','ũ'=>'u','ų'=>'u','ŵ'=>'w','ÿ'=>'y','ŷ'=>'y','ż'=>'z','ź'=>'z','ß'=>'s','ſ'=>'s','Α'=>'A','Ά'=>'A','Β'=>'B','Γ'=>'G','Δ'=>'D','Ε'=>'E','Έ'=>'E','Ζ'=>'Z','Η'=>'I','Ή'=>'I','Θ'=>'TH','Ι'=>'I','Ί'=>'I','Ϊ'=>'I','Κ'=>'K','Λ'=>'L','Μ'=>'M','Ν'=>'N','Ξ'=>'KS','Ο'=>'O','Ό'=>'O','Π'=>'P','Ρ'=>'R','Σ'=>'S','Τ'=>'T','Υ'=>'Y','Ύ'=>'Y','Ϋ'=>'Y','Φ'=>'F','Χ'=>'X','Ψ'=>'PS','Ω'=>'O','Ώ'=>'O','α'=>'a','ά'=>'a','β'=>'b','γ'=>'g','δ'=>'d','ε'=>'e','έ'=>'e','ζ'=>'z','η'=>'i','ή'=>'i','θ'=>'th','ι'=>'i','ί'=>'i','ϊ'=>'i','ΐ'=>'i','κ'=>'k','λ'=>'l','μ'=>'m','ν'=>'n','ξ'=>'ks','ο'=>'o','ό'=>'o','π'=>'p','ρ'=>'r','σ'=>'s','τ'=>'t','υ'=>'y','ύ'=>'y','ϋ'=>'y','ΰ'=>'y','φ'=>'f','χ'=>'x','ψ'=>'ps','ω'=>'o','ώ'=>'o','А'=>'a','Б'=>'b','В'=>'v','Г'=>'g','Д'=>'d','Е'=>'e','Ё'=>'yo','Ж'=>'zh','З'=>'z','И'=>'i','Й'=>'j','К'=>'k','Л'=>'l','М'=>'m','Н'=>'n','О'=>'o','П'=>'p','Р'=>'r','С'=>'s','Т'=>'t','У'=>'u','Ф'=>'f','Х'=>'x','Ц'=>'cz','Ч'=>'ch','Ш'=>'sh','Щ'=>'shh','Ъ'=>'','Ы'=>'yi','Ь'=>'','Э'=>'e','Ю'=>'yu','Я'=>'ya','а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'yo','ж'=>'zh','з'=>'z','и'=>'i','й'=>'j','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'x','ц'=>'cz','ч'=>'ch','ш'=>'sh','щ'=>'shh','ъ'=>'','ы'=>'yi','ь'=>'','э'=>'e','ю'=>'yu','я'=>'ya',' ' => '-');
  4. // Пробуем увеличить время выполнения скрипта
  5. set_time_limit(600);
  6. // Уровень ошибок
  7. //ini_set('display_errors', 0);
  8. require_once dirname(dirname(dirname(dirname(__FILE__)))).'/core/config/config.inc.php';
  9. include_once MODX_CORE_PATH . 'model/modx/modx.class.php';
  10. $modx= new modX();
  11. $modx->initialize('web');
  12. $modx->setLogLevel(modX::LOG_LEVEL_INFO);
  13. $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
  14. $miniShop = $modx->getService('minishop','miniShop',$modx->getOption('minishop.core_path',null,$modx->getOption('core_path').'components/minishop/').'model/minishop/');
  15. if (!($miniShop instanceof miniShop)) return '';
  16. $file = 'import.csv'; // Данные
  17. $cat_root = 2; // Каталог по категориям
  18. $vend_root = 3; // Каталог по производителям
  19. $wid = 1; // Номер склада
  20. $main_tpl = 1; // Номер обычного шаблона
  21. $cat_tpl = 2; // Номер шаблона категорий
  22. $goods_tpl = 3; // Номер шаблона товаров
  23. $cat1 = 'catalog1/'; // Корневой алиас первого каталога
  24. $cat2 = 'catalog2/'; // Корневой алиас второго каталога
  25. die('disabled'); // Отключен - защита от случайного запуска
  26. $save = 0; // 1 - сохраняем, 0 - нет
  27. // Работаем над импортом файла
  28. if (($tmp = fopen($file, "r")) !== false) {
  29. while (($csv = fgetcsv($tmp, 0, ';')) !== false) {
  30. $article = $csv[0]; // Артикул
  31. $vendor = trim($csv[1]); // Производитель
  32. //$vendor_img = 'assets/images/vendors/'.$csv[2]; // Логотип производителя
  33. $category = trim($csv[3]); // Категория товара
  34. $sub_category = trim($csv[4]); // Подкатегория товара
  35. $pagetitle = trim($csv[5]); // Название товара
  36. $longtitle = trim($csv[6]); // Расширенное название
  37. $content = $csv[7]; // Содержимое
  38. $img = 'assets/images/products/'.$csv[0].'.png'; // Изображение
  39. ////////////////////////////////////////////////////////////
  40. // Шаг 1
  41. // Производитель товара
  42. if (!$res_vendor = $modx->getObject('modResource', array('parent' => $vend_root, 'pagetitle' => $vendor))) {
  43. $res_vendor = $modx->newObject('modResource');
  44. $alias = strtolower(strtr($vendor, $translit_arr));
  45. $uri = strtolower($cat2.$alias.'/');
  46. $res_vendor->fromArray(array(
  47. 'pagetitle' => $vendor
  48. ,'published' => 1
  49. ,'parent' => $vend_root
  50. ,'template' => $cat_tpl
  51. ,'isfolder' => 1
  52. ,'uri' => $uri
  53. ,'alias' => $alias
  54. ));
  55. if ($save) {
  56. $res_vendor->save();
  57. }
  58. }
  59. $id_vendor = $res_vendor->get('id');
  60. ////////////////////////////////////////////////////////////
  61. ////////////////////////////////////////////////////////////
  62. // Шаг 2
  63. // Категория товара
  64. if (!$res_category = $modx->getObject('modResource', array('parent' => $cat_root, 'pagetitle' => $category))) {
  65. $res_category = $modx->newObject('modResource');
  66. $alias = strtolower(strtr($category, $translit_arr));
  67. $uri = strtolower($cat1.$alias.'/');
  68. $res_category->fromArray(array(
  69. 'pagetitle' => $category
  70. ,'published' => 1
  71. ,'parent' => $cat_root
  72. ,'template' => $main_tpl
  73. ,'isfolder' => 1
  74. ,'uri' => $uri
  75. ,'alias' => $alias
  76. ));
  77. if ($save) {
  78. $res_category->save();
  79. }
  80. }
  81. $id_category = $res_category->get('id');
  82. $alias_category = $res_category->get('alias');
  83. ////////////////////////////////////////////////////////////
  84. ////////////////////////////////////////////////////////////
  85. // Шаг 3
  86. // ПодКатегория товара
  87. if (!$res_sub_category = $modx->getObject('modResource', array('parent' => $id_category, 'pagetitle' => $sub_category))) {
  88. $res_sub_category = $modx->newObject('modResource');
  89. $alias = strtolower(strtr($sub_category, $translit_arr));
  90. $uri = strtolower($cat1.$alias_category.'/'.$alias.'/');
  91. $res_sub_category->fromArray(array(
  92. 'pagetitle' => $sub_category
  93. ,'published' => 1
  94. ,'parent' => $id_category
  95. ,'template' => $cat_tpl
  96. ,'isfolder' => 1
  97. ,'uri' => $uri
  98. ,'alias' => $alias
  99. ));
  100. if ($save) {
  101. $res_sub_category->save();
  102. }
  103. }
  104. $id_sub_category = $res_sub_category->get('id');
  105. $alias_sub_category = $res_sub_category->get('alias');
  106. ////////////////////////////////////////////////////////////
  107. ////////////////////////////////////////////////////////////
  108. // Шаг 4
  109. // Товар
  110. if (!$res_product = $modx->getObject('modResource', array('parent' => $id_sub_category, 'pagetitle' => $pagetitle))) {
  111. $res_product = $modx->newObject('modResource');
  112. $alias = strtolower(strtr($pagetitle, $translit_arr));
  113. $uri = strtolower($cat1.$alias_category.'/'.$alias_sub_category.'/'.$alias.'.html');
  114. $res_product->fromArray(array(
  115. 'pagetitle' => $pagetitle
  116. ,'longtitle' => $longtitle
  117. ,'published' => 1
  118. ,'parent' => $id_sub_category
  119. ,'template' => $goods_tpl
  120. ,'isfolder' => 0
  121. ,'uri' => $uri
  122. ,'alias' => $alias
  123. ,'content' => $content
  124. ));
  125. if ($save) {
  126. $res_product->save();
  127. }
  128. }
  129. $id_product = $res_product->get('id');
  130. ////////////////////////////////////////////////////////////
  131. ////////////////////////////////////////////////////////////
  132. // Шаг 5
  133. // Дополнительная связь товара и производителя
  134. if (!$res_categories = $modx->getObject('ModCategories', array('cid' => $id_vendor, 'gid' => $id_product))) {
  135. $res_categories = $modx->newObject('ModCategories');
  136. $res_categories->fromArray(array(
  137. 'cid' => $id_vendor
  138. ,'gid' => $id_product
  139. ));
  140. if ($save) {
  141. $res_categories->save();
  142. }
  143. }
  144. ////////////////////////////////////////////////////////////
  145. ////////////////////////////////////////////////////////////
  146. // Шаг 6
  147. // Дополнительные параметры товара
  148. if (!$res_goods = $modx->getObject('ModGoods', array('gid' => $id_product, 'wid' => $wid))) {
  149. $res_goods = $modx->newObject('ModGoods');
  150. $res_goods->fromArray(array(
  151. 'wid' => $wid
  152. ,'gid' => $id_product
  153. ,'img' => $img
  154. ,'price' => 0
  155. ,'remains' => 1
  156. ,'article' => $article
  157. ));
  158. if ($save) {
  159. $res_goods->save();
  160. }
  161. }
  162. ////////////////////////////////////////////////////////////
  163. /*
  164. echo '<pre>';
  165. print_r($res_goods->toArray());
  166. echo '</pre>';
  167. die;
  168. */
  169. // Вывод номера созданного продукта
  170. echo $id_product.'<br/>';
  171. }
  172. }
  173. ?>