PageRenderTime 26ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/storecommander/ead6f6fce09/SC/lib/cat/feature/cat_feature_productfeature_update_queue.php

https://gitlab.com/ptisky/API_prestashop
PHP | 207 lines | 153 code | 20 blank | 34 comment | 30 complexity | b5ac46ada50363fc5df5d6d62a63dde8 MD5 | raw file
  1. <?php
  2. /**
  3. * Store Commander
  4. *
  5. * @category administration
  6. * @author Store Commander - support@storecommander.com
  7. * @version 2015-09-15
  8. * @uses Prestashop modules
  9. * @since 2009
  10. * @copyright Copyright &copy; 2009-2015, Store Commander
  11. * @license commercial
  12. * All rights reserved! Copying, duplication strictly prohibited
  13. *
  14. * *****************************************
  15. * * STORE COMMANDER *
  16. * * http://www.StoreCommander.com *
  17. * * V 2015-09-15 *
  18. * *****************************************
  19. *
  20. * Compatibility: PS version: 1.1 to 1.6.1
  21. *
  22. **/
  23. @error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
  24. @ini_set("display_errors", "ON");
  25. $id_lang = Tools::getValue('id_lang','0');
  26. $action = Tools::getValue('action','');
  27. $return = "ERROR: Try again later";
  28. // FUNCTIONS
  29. $updated_products = array();
  30. // Récupération de toutes les modifications à effectuer
  31. if(!empty($_POST["rows"]) || $action=="insert")
  32. {
  33. if($action!="insert")
  34. {
  35. if(_PS_MAGIC_QUOTES_GPC_)
  36. $_POST["rows"] = stripslashes($_POST["rows"]);
  37. $rows = json_decode($_POST["rows"]);
  38. }
  39. else
  40. {
  41. $rows = array();
  42. $rows[0] = new stdClass();
  43. $rows[0]->name = Tools::getValue('act','');
  44. $rows[0]->action = Tools::getValue('action','');
  45. $rows[0]->row = Tools::getValue('gr_id','');
  46. $rows[0]->callback = Tools::getValue('callback','');
  47. $rows[0]->params = $_POST;
  48. }
  49. if(is_array($rows) && count($rows)>0)
  50. {
  51. $callbacks = '';
  52. // Première boucle pour remplir la table sc_queue_log
  53. // avec toutes ces modifications
  54. $log_ids = array();
  55. $date = date("Y-m-d H:i:s");
  56. foreach($rows as $num => $row)
  57. {
  58. $id = QueueLog::add($row->name, $row->row, $row->action, (!empty($row->params)?$row->params:array()), (!empty($row->callback)?$row->callback:null), $date);
  59. $log_ids[$num] = $id;
  60. }
  61. // Deuxième boucle pour effectuer les
  62. // actions les une après les autres
  63. foreach($rows as $num => $row)
  64. {
  65. if(!empty($log_ids[$num]))
  66. {
  67. $gr_id = intval($row->row);
  68. $action = $row->action;
  69. if(!empty($row->callback))
  70. $callbacks .= $row->callback.";";
  71. if($action!="insert")
  72. {
  73. $_POST=array();
  74. $_POST = (array) json_decode($row->params);
  75. }
  76. if(!empty($action) && $action=="update" && !empty($gr_id))
  77. {
  78. $id_lang=intval(Tools::getValue('id_lang'));
  79. $id_productList=explode(',',Tools::getValue('id_product',''));
  80. $id_feature=$gr_id;
  81. $id_feature_value=intval(Tools::getValue('id_feature_value',0));
  82. if(!empty($id_productList) && count($id_productList)==1)
  83. $updated_products[$id_productList[0]]=$id_productList[0];
  84. elseif(!empty($id_productList) && count($id_productList)>1)
  85. $updated_products = array_merge($updated_products,$id_productList);
  86. foreach($id_productList AS $id_product)
  87. {
  88. $sql = "SELECT id_feature_value FROM "._DB_PREFIX_."feature_product WHERE id_feature=".intval($id_feature)." AND id_product=".intval($id_product);
  89. $fv=Db::getInstance()->getRow($sql);
  90. $id_feature_value_OLD=intval($fv['id_feature_value']);
  91. if ($id_feature_value > 0 && $id_feature!=0 && $id_product!=0)
  92. {
  93. // if custom value exists...
  94. $sql = "SELECT custom FROM "._DB_PREFIX_."feature_value WHERE id_feature_value=".intval($id_feature_value_OLD)." AND id_feature=".intval($id_feature);
  95. $fv=Db::getInstance()->getRow($sql);
  96. if ($fv['custom'])
  97. {
  98. // ...delete it
  99. $sql = "DELETE FROM "._DB_PREFIX_."feature_value_lang WHERE id_feature_value=".intval($id_feature_value_OLD);
  100. Db::getInstance()->Execute($sql);
  101. $sql = "DELETE FROM "._DB_PREFIX_."feature_value WHERE id_feature_value=".intval($id_feature_value_OLD);
  102. Db::getInstance()->Execute($sql);
  103. }
  104. if ($id_feature_value_OLD)
  105. {
  106. $sql = "UPDATE "._DB_PREFIX_."feature_product SET id_feature_value=".intval($id_feature_value)." WHERE id_feature=".intval($id_feature)." AND id_product=".intval($id_product)." AND id_feature_value=".intval($id_feature_value_OLD);
  107. Db::getInstance()->Execute($sql);
  108. }else{
  109. $sql = "INSERT INTO "._DB_PREFIX_."feature_product (id_feature_value,id_feature,id_product) VALUES (".intval($id_feature_value).",".intval($id_feature).",".intval($id_product).")";
  110. Db::getInstance()->Execute($sql);
  111. }
  112. }
  113. if ($id_feature_value==-1) // delete
  114. {
  115. // if custom value exists...
  116. $sql = "SELECT custom FROM "._DB_PREFIX_."feature_value WHERE id_feature_value=".intval($id_feature_value_OLD)." AND id_feature=".intval($id_feature);
  117. $fv=Db::getInstance()->getRow($sql);
  118. if ($fv['custom'])
  119. {
  120. // ...delete it
  121. $sql = "DELETE FROM "._DB_PREFIX_."feature_value_lang WHERE id_feature_value=".intval($id_feature_value_OLD);
  122. Db::getInstance()->Execute($sql);
  123. $sql = "DELETE FROM "._DB_PREFIX_."feature_value WHERE id_feature_value=".intval($id_feature_value_OLD);
  124. Db::getInstance()->Execute($sql);
  125. }
  126. // delete feature_value for product
  127. $sql = "DELETE FROM "._DB_PREFIX_."feature_product WHERE id_feature_value=".intval($id_feature_value_OLD)." AND id_feature=".intval($id_feature)." AND id_product=".intval($id_product);
  128. Db::getInstance()->Execute($sql);
  129. }
  130. if ($id_feature_value==-2) // custom
  131. {
  132. $sql = "SELECT custom FROM "._DB_PREFIX_."feature_value WHERE id_feature_value=".intval($id_feature_value_OLD)." AND id_feature=".intval($id_feature);
  133. $fv=Db::getInstance()->getRow($sql);
  134. if ($fv['custom'])
  135. {
  136. foreach($languages AS $lang){
  137. $custom=Tools::getValue('custom_'.$lang['iso_code'],'');
  138. $sql="UPDATE "._DB_PREFIX_."feature_value_lang SET value='".psql($custom)."' WHERE id_feature_value=".intval($id_feature_value_OLD)." AND id_lang=".intval($lang['id_lang']);
  139. Db::getInstance()->Execute($sql);
  140. }
  141. }else{
  142. $sql="INSERT INTO "._DB_PREFIX_."feature_value (id_feature,custom) VALUES (".intval($id_feature).",1)";
  143. Db::getInstance()->Execute($sql);
  144. $id_value = Db::getInstance()->Insert_ID();
  145. foreach($languages AS $lang){
  146. $sql="INSERT INTO "._DB_PREFIX_."feature_value_lang (id_feature_value,id_lang,value) VALUES (".intval($id_value).",".intval($lang['id_lang']).",'')";
  147. Db::getInstance()->Execute($sql);
  148. }
  149. if ($id_feature_value_OLD)
  150. {
  151. $sql="UPDATE "._DB_PREFIX_."feature_product SET id_feature_value=".intval($id_value)." WHERE id_feature=".intval($id_feature)." AND id_product=".intval($id_product);
  152. Db::getInstance()->Execute($sql);
  153. }else{
  154. $sql = "INSERT INTO "._DB_PREFIX_."feature_product (id_feature_value,id_feature,id_product) VALUES (".intval($id_value).",".intval($id_feature).",".intval($id_product).")";
  155. Db::getInstance()->Execute($sql);
  156. }
  157. }
  158. }
  159. $sql="UPDATE "._DB_PREFIX_."product SET date_upd=NOW() WHERE id_product=".intval($id_product);
  160. Db::getInstance()->Execute($sql);
  161. if (version_compare(_PS_VERSION_, '1.5.0.0', '>='))
  162. {
  163. $sql="UPDATE "._DB_PREFIX_."product_shop SET date_upd=NOW(),indexed=0 WHERE id_product=".intval($id_product)." AND id_shop=".(int)SCI::getSelectedShop();
  164. Db::getInstance()->Execute($sql);
  165. }
  166. if (_s('APP_COMPAT_HOOK') && !_s('APP_COMPAT_EBAY'))
  167. {
  168. $product=new Product(intval($id_product));
  169. SCI::hookExec('updateProduct', array('product' => $product));
  170. }elseif(_s('APP_COMPAT_EBAY')){
  171. Configuration::updateValue('EBAY_SYNC_LAST_PRODUCT', min(Configuration::get('EBAY_SYNC_LAST_PRODUCT'),intval($id_product)));
  172. }
  173. }
  174. if(_s("CAT_APPLY_ALL_CART_RULES"))
  175. SpecificPriceRule::applyAllRules($id_productList);
  176. }
  177. QueueLog::delete(($log_ids[$num]));
  178. }
  179. }
  180. // PM Cache
  181. if(!empty($updated_products))
  182. ExtensionPMCM::clearFromIdsProduct($updated_products);
  183. // RETURN
  184. $return = json_encode(array("callback"=>$callbacks));
  185. }
  186. }
  187. echo $return;