PageRenderTime 48ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/bitrix/modules/catalog/mysql/store_docs_element.php

https://bitbucket.org/webrise-corp/bullofarmbitrix
PHP | 127 lines | 101 code | 18 blank | 8 comment | 23 complexity | b4c4fbbf4b4846d8d851c334cd5a19a5 MD5 | raw file
Possible License(s): Apache-2.0
  1. <?
  2. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/catalog/general/store_docs_element.php");
  3. class CCatalogStoreDocsElement
  4. extends CCatalogStoreDocsElementAll
  5. {
  6. public static function add($arFields)
  7. {
  8. global $DB;
  9. foreach(GetModuleEvents("catalog", "OnBeforeCatalogStoreDocsElementAdd", true) as $arEvent)
  10. if(ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
  11. return false;
  12. if (!self::CheckFields('ADD',$arFields))
  13. return false;
  14. $arInsert = $DB->PrepareInsert("b_catalog_docs_element", $arFields);
  15. $strSql = "INSERT INTO b_catalog_docs_element (".$arInsert[0].") VALUES(".$arInsert[1].")";
  16. $res = $DB->Query($strSql, true, "File: ".__FILE__."<br>Line: ".__LINE__);
  17. if(!$res)
  18. return false;
  19. $lastId = intval($DB->LastID());
  20. foreach(GetModuleEvents("catalog", "OnCatalogStoreDocsElementAdd", true) as $arEvent)
  21. ExecuteModuleEventEx($arEvent, array($lastId, $arFields));
  22. return $lastId;
  23. }
  24. /**
  25. * @param array $arOrder
  26. * @param array $arFilter
  27. * @param bool|array $arGroupBy
  28. * @param bool|array $arNavStartParams
  29. * @param array $arSelectFields
  30. * @return bool|CDBResult
  31. */
  32. public static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
  33. {
  34. global $DB;
  35. if (empty($arSelectFields))
  36. $arSelectFields = array("ID", "DOC_ID", "STORE_FROM", "STORE_TO", "ELEMENT_ID", "AMOUNT", "PURCHASING_PRICE");
  37. $arFields = array(
  38. "ID" => array("FIELD" => "DE.ID", "TYPE" => "int"),
  39. "DOC_ID" => array("FIELD" => "DE.DOC_ID", "TYPE" => "int"),
  40. "STORE_FROM" => array("FIELD" => "DE.STORE_FROM", "TYPE" => "int"),
  41. "STORE_TO" => array("FIELD" => "DE.STORE_TO", "TYPE" => "int"),
  42. "ELEMENT_ID" => array("FIELD" => "DE.ELEMENT_ID", "TYPE" => "int"),
  43. "AMOUNT" => array("FIELD" => "DE.AMOUNT", "TYPE" => "double"),
  44. "PURCHASING_PRICE" => array("FIELD" => "DE.PURCHASING_PRICE", "TYPE" => "double"),
  45. "IS_MULTIPLY_BARCODE" => array("FIELD" => "CP.BARCODE_MULTI", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_product CP ON (DE.ELEMENT_ID = CP.ID)"),
  46. "RESERVED" => array("FIELD" => "CP.QUANTITY_RESERVED", "TYPE" => "double", "FROM" => "INNER JOIN b_catalog_product CP ON (DE.ELEMENT_ID = CP.ID)"),
  47. "ELEMENT_IBLOCK_ID" => array("FIELD" => "IE.IBLOCK_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_iblock_element IE ON (DE.ELEMENT_ID = IE.ID)"),
  48. "ELEMENT_NAME" => array("FIELD" => "IE.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element IE ON (DE.ELEMENT_ID = IE.ID)")
  49. );
  50. $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
  51. $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
  52. if (empty($arGroupBy) && is_array($arGroupBy))
  53. {
  54. $strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_docs_element DE ".$arSqls["FROM"];
  55. if (!empty($arSqls["WHERE"]))
  56. $strSql .= " WHERE ".$arSqls["WHERE"];
  57. if (!empty($arSqls["GROUPBY"]))
  58. $strSql .= " GROUP BY ".$arSqls["GROUPBY"];
  59. $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
  60. if ($arRes = $dbRes->Fetch())
  61. return $arRes["CNT"];
  62. else
  63. return false;
  64. }
  65. $strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_docs_element DE ".$arSqls["FROM"];
  66. if (!empty($arSqls["WHERE"]))
  67. $strSql .= " WHERE ".$arSqls["WHERE"];
  68. if (!empty($arSqls["GROUPBY"]))
  69. $strSql .= " GROUP BY ".$arSqls["GROUPBY"];
  70. if (!empty($arSqls["ORDERBY"]))
  71. $strSql .= " ORDER BY ".$arSqls["ORDERBY"];
  72. $intTopCount = 0;
  73. $boolNavStartParams = (!empty($arNavStartParams) && is_array($arNavStartParams));
  74. if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams))
  75. {
  76. $intTopCount = intval($arNavStartParams["nTopCount"]);
  77. }
  78. if ($boolNavStartParams && 0 >= $intTopCount)
  79. {
  80. $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_docs_element DE ".$arSqls["FROM"];
  81. if (!empty($arSqls["WHERE"]))
  82. $strSql_tmp .= " WHERE ".$arSqls["WHERE"];
  83. if (!empty($arSqls["GROUPBY"]))
  84. $strSql_tmp .= " GROUP BY ".$arSqls["GROUPBY"];
  85. $dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__);
  86. $cnt = 0;
  87. if (empty($arSqls["GROUPBY"]))
  88. {
  89. if ($arRes = $dbRes->Fetch())
  90. $cnt = $arRes["CNT"];
  91. }
  92. else
  93. {
  94. $cnt = $dbRes->SelectedRowsCount();
  95. }
  96. $dbRes = new CDBResult();
  97. $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
  98. }
  99. else
  100. {
  101. if ($boolNavStartParams && 0 < $intTopCount)
  102. {
  103. $strSql .= " LIMIT ".$intTopCount;
  104. }
  105. $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
  106. }
  107. return $dbRes;
  108. }
  109. }