PageRenderTime 47ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/components/bitrix/webservice.sale/component.php

https://gitlab.com/alexprowars/bitrix
PHP | 277 lines | 244 code | 33 blank | 0 comment | 18 complexity | c9c7af45675992fae0ca6da7da176598 MD5 | raw file
  1. <?
  2. if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
  3. if(!CModule::IncludeModule("webservice"))
  4. return;
  5. if(!CModule::IncludeModule("sale"))
  6. return;
  7. class CSaleWS extends IWebService
  8. {
  9. function CheckAuth()
  10. {
  11. $saleRight = $GLOBALS["APPLICATION"]->GetGroupRight("sale");
  12. if ($saleRight == "D")
  13. {
  14. $GLOBALS["USER"]->RequiredHTTPAuthBasic();
  15. return new CSOAPFault('Server Error', 'Unable to authorize user.');
  16. }
  17. return False;
  18. }
  19. function GetLiveFeedData($site_id = "", $lang = "en")
  20. {
  21. global $MESS;
  22. if (($r = CSaleWS::CheckAuth()) !== False)
  23. return $r;
  24. $saleRight = $GLOBALS["APPLICATION"]->GetGroupRight("sale");
  25. CComponentUtil::__IncludeLang("/bitrix/components/bitrix/webservice.sale/", "/component_1.php", $lang);
  26. $arFilter = array();
  27. $server_name = COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]);
  28. $protocol = (CMain::IsHTTPS() ? "https" : "http");
  29. if ($site_id <> '')
  30. {
  31. $rsSites = CSite::GetByID($arFields["SITE_ID"]);
  32. if ($arSite = $rsSites->Fetch())
  33. {
  34. $arFilterLID = array("LID" => $site_id);
  35. if ($arSite["SERVER_NAME"] <> '')
  36. $server_name = $arSite["SERVER_NAME"];
  37. }
  38. $strSiteCurrency = CSaleLang::GetLangCurrency($site_id);
  39. }
  40. else
  41. {
  42. $arFilterLID = array();
  43. $strSiteCurrency = CCurrency::GetBaseCurrency();
  44. }
  45. if ($saleRight != "W")
  46. $arFilterPerms = array(
  47. "STATUS_PERMS_GROUP_ID" => $GLOBALS["USER"]->GetUserGroupArray(),
  48. ">=STATUS_PERMS_PERM_VIEW" => "Y"
  49. );
  50. else
  51. $arFilterPerms = array();
  52. $d = date("w");
  53. if($d < 1)
  54. $d = -6;
  55. elseif($d > 1)
  56. $d = $d-1;
  57. else
  58. $d = 0;
  59. $BeforeLastWeek_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".(14+$d)), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
  60. $BeforeLastWeek_maxDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".(7+$d), "SS" => -1), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
  61. $LastWeek_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".(7+$d)), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
  62. $LastWeek_maxDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".$d, "SS" => -1), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
  63. $ThisWeek_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-".$d), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
  64. $ThisWeek_maxDate = ConvertTimeStamp(mktime(0, 0, 0, date("n"), date("j")+1, date("Y")), "FULL");
  65. $BeforeYesterday_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-2"), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
  66. $BeforeYesterday_maxDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-1", "SS" => -1), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
  67. $Yesterday_minDate = ConvertTimeStamp(AddToTimeStamp(array("DD" => "-1"), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
  68. $Yesterday_maxDate = ConvertTimeStamp(AddToTimeStamp(array("SS" => -1), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "FULL");
  69. $Today_minDate = ConvertTimeStamp(mktime(0, 0, 0, date("n"), date("j"), date("Y")), "FULL");
  70. $Today_maxDate = ConvertTimeStamp(mktime(0, 0, 0, date("n"), date("j")+1, date("Y")), "FULL");
  71. $arDatePeriods = array(
  72. "BEFORE_LAST_WEEK" => array(
  73. "MIN_DATE" => $BeforeLastWeek_minDate,
  74. "MAX_DATE" => $BeforeLastWeek_maxDate
  75. ),
  76. "LAST_WEEK" => array(
  77. "MIN_DATE" => $LastWeek_minDate,
  78. "MAX_DATE" => $LastWeek_maxDate
  79. ),
  80. "THIS_WEEK" => array(
  81. "MIN_DATE" => $ThisWeek_minDate,
  82. "MAX_DATE" => $ThisWeek_maxDate
  83. ),
  84. "BEFORE_YESTERDAY" => array(
  85. "MIN_DATE" => $BeforeYesterday_minDate,
  86. "MAX_DATE" => $BeforeYesterday_maxDate
  87. ),
  88. "YESTERDAY" => array(
  89. "MIN_DATE" => $Yesterday_minDate,
  90. "MAX_DATE" => $Yesterday_maxDate
  91. ),
  92. "TODAY" => array(
  93. "MIN_DATE" => $Today_minDate,
  94. "MAX_DATE" => $Today_maxDate
  95. )
  96. );
  97. $arStatus1 = array(
  98. "CREATED" => array(
  99. "NAME" => GetMessage("BX_WS_SALE_STATUS_1_CREATED"),
  100. "DB_FIELD" => "DATE"
  101. ),
  102. "PAID" => array(
  103. "NAME" => GetMessage("BX_WS_SALE_STATUS_1_PAID"),
  104. "DB_FIELD" => "DATE_PAYED"
  105. ),
  106. "CANCELED" => array(
  107. "NAME" => GetMessage("BX_WS_SALE_STATUS_1_CANCELED"),
  108. "DB_FIELD" => "DATE_UPDATE",
  109. "Y_FIELD" => "CANCELED"
  110. ),
  111. "ALLOW_DELIVERY" =>array(
  112. "NAME" => GetMessage("BX_WS_SALE_STATUS_1_ALLOW_DELIVERY"),
  113. "DB_FIELD" => "DATE_UPDATE",
  114. "Y_FIELD" => "ALLOW_DELIVERY"
  115. )
  116. );
  117. foreach($arDatePeriods as $key => $arPeriod)
  118. {
  119. foreach($arStatus1 as $status_code => $arStatus)
  120. {
  121. $arOrderStats[$key][$status_code] = 0;
  122. $arOrderStats[$key]["PRICE_".$status_code] = 0;
  123. }
  124. foreach($arStatus1 as $status_code => $arStatus)
  125. {
  126. if (
  127. !is_array($arGadgetParams["ORDERS_STATUS_1"])
  128. || in_array($status_code, $arGadgetParams["ORDERS_STATUS_1"])
  129. )
  130. {
  131. if (array_key_exists("Y_FIELD", $arStatus) && $arStatus["Y_FIELD"] <> '')
  132. $arFilterYField = array($arStatus["Y_FIELD"] => "Y");
  133. else
  134. $arFilterYField = array();
  135. $arFilter = array_merge(
  136. array(
  137. $arStatus["DB_FIELD"]."_FROM"=> $arPeriod["MIN_DATE"],
  138. $arStatus["DB_FIELD"]."_TO" => $arPeriod["MAX_DATE"]
  139. ),
  140. $arFilterLID,
  141. $arFilterPerms,
  142. $arFilterYField
  143. );
  144. $dbOrder = CSaleOrder::GetList(Array(), $arFilter, array("SUM" => "PRICE", "COUNT" => "ID"));
  145. if($arOrder = $dbOrder->Fetch())
  146. {
  147. $arOrderStats[$key][$status_code] = $arOrder["ID"];
  148. $arOrderStats[$key]["PRICE_".$status_code] = $arOrder["PRICE"];
  149. }
  150. }
  151. }
  152. }
  153. $strSaleStat = '<table border="0">';
  154. $strSaleStat .= '<tr><td>&nbsp;</td>';
  155. foreach($arStatus1 as $status_code => $arStatus)
  156. $strSaleStat .= '<td><b>'.$arStatus["NAME"].'</b></td>';
  157. $strSaleStat .= '</tr>';
  158. $strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_TODAY").'</td>';
  159. foreach($arStatus1 as $status_code => $arStatus)
  160. $strSaleStat .= '<td align="center">'.intval($arOrderStats["TODAY"][$status_code]).'</td>';
  161. $strSaleStat .= '</tr>';
  162. $strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_YESTERDAY").'</td>';
  163. foreach($arStatus1 as $status_code => $arStatus)
  164. $strSaleStat .= '<td align="center">'.intval($arOrderStats["YESTERDAY"][$status_code]).'</td>';
  165. $strSaleStat .= '</tr>';
  166. $strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_BEFOREYESTERDAY").'</td>';
  167. foreach($arStatus1 as $status_code => $arStatus)
  168. $strSaleStat .= '<td align="center">'.intval($arOrderStats["BEFORE_YESTERDAY"][$status_code]).'</td>';
  169. $strSaleStat .= '</tr>';
  170. $strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_THISWEEK").'</td>';
  171. foreach($arStatus1 as $status_code => $arStatus)
  172. $strSaleStat .= '<td align="center">'.intval($arOrderStats["THIS_WEEK"][$status_code]).'</td>';
  173. $strSaleStat .= '</tr>';
  174. $strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_LASTWEEK").'</td>';
  175. foreach($arStatus1 as $status_code => $arStatus)
  176. $strSaleStat .= '<td align="center">'.intval($arOrderStats["LAST_WEEK"][$status_code]).'</td>';
  177. $strSaleStat .= '</tr>';
  178. $strSaleStat .= '<tr><td>'.GetMessage("BX_WS_SALE_BEFORELASTWEEK").'</td>';
  179. foreach($arStatus1 as $status_code => $arStatus)
  180. $strSaleStat .= '<td align="center">'.intval($arOrderStats["BEFORE_LAST_WEEK"][$status_code]).'</td>';
  181. $strSaleStat .= '</tr>';
  182. $strSaleStat .= '</table>';
  183. $strSaleStatText = '';
  184. foreach($arStatus1 as $status_code => $arStatus)
  185. {
  186. $strSaleStatText .= '#BR#'.$arStatus["NAME"].'#BR#';
  187. $strSaleStatText .= GetMessage("BX_WS_SALE_TODAY").' '.intval($arOrderStats["TODAY"][$status_code]).(intval($arOrderStats["TODAY"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["TODAY"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
  188. $strSaleStatText .= GetMessage("BX_WS_SALE_YESTERDAY").' '.intval($arOrderStats["YESTERDAY"][$status_code]).(intval($arOrderStats["YESTERDAY"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["YESTERDAY"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
  189. $strSaleStatText .= GetMessage("BX_WS_SALE_BEFOREYESTERDAY").' '.intval($arOrderStats["BEFORE_YESTERDAY"][$status_code]).(intval($arOrderStats["BEFORE_YESTERDAY"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["BEFORE_YESTERDAY"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
  190. $strSaleStatText .= GetMessage("BX_WS_SALE_THISWEEK").' '.intval($arOrderStats["THIS_WEEK"][$status_code]).(intval($arOrderStats["THIS_WEEK"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["THIS_WEEK"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
  191. $strSaleStatText .= GetMessage("BX_WS_SALE_LASTWEEK").' '.intval($arOrderStats["LAST_WEEK"][$status_code]).(intval($arOrderStats["LAST_WEEK"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["LAST_WEEK"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
  192. $strSaleStatText .= GetMessage("BX_WS_SALE_BEFORELASTWEEK").' '.intval($arOrderStats["BEFORE_LAST_WEEK"][$status_code]).(intval($arOrderStats["BEFORE_LAST_WEEK"][$status_code]) > 0 ? ' ('.CurrencyFormat($arOrderStats["BEFORE_LAST_WEEK"]["PRICE_".$status_code], $strSiteCurrency).')' : '').'#BR#';
  193. }
  194. $arResult = array(
  195. "TITLE" => htmlspecialchars(GetMessage("BX_WS_SALE_LF_TITLE")),
  196. "MESSAGE" => htmlspecialchars($strSaleStat),
  197. "TEXT_MESSAGE" => htmlspecialchars($strSaleStatText),
  198. "URL" => htmlspecialchars($protocol."://".$server_name."/bitrix/admin/sale_stat.php?lang=".$lang)
  199. );
  200. return $arResult;
  201. }
  202. public static function GetWebServiceDesc()
  203. {
  204. $wsdesc = new CWebServiceDesc();
  205. $wsdesc->wsname = "bitrix.webservice.sale";
  206. $wsdesc->wsclassname = "CSaleWS";
  207. $wsdesc->wsdlauto = true;
  208. $wsdesc->wsendpoint = CWebService::GetDefaultEndpoint();
  209. $wsdesc->wstargetns = CWebService::GetDefaultTargetNS();
  210. $wsdesc->classTypes = array();
  211. $wsdesc->structTypes["LiveFeedData"] = Array(
  212. "TITLE" => array("varType" => "string"),
  213. "MESSAGE" => array("varType" => "string"),
  214. "TEXT_MESSAGE" => array("varType" => "string"),
  215. "URL" => array("varType" => "string")
  216. );
  217. $wsdesc->classes = array(
  218. "CSaleWS" => array(
  219. "GetLiveFeedData" => array(
  220. "type" => "public",
  221. "name" => "GetLiveFeedData",
  222. "input" => array(
  223. "site_id" => array("varType" => "string", "strict" => "no"),
  224. "lang" => array("varType" => "string", "strict" => "no")
  225. ),
  226. "output" => array(
  227. "livefeeddata" => array("varType" => "LiveFeedData")
  228. )
  229. )
  230. )
  231. );
  232. return $wsdesc;
  233. }
  234. }
  235. $arParams["WEBSERVICE_NAME"] = "bitrix.webservice.sale";
  236. $arParams["WEBSERVICE_CLASS"] = "CSaleWS";
  237. $arParams["WEBSERVICE_MODULE"] = "";
  238. $APPLICATION->IncludeComponent(
  239. "bitrix:webservice.server",
  240. "",
  241. $arParams
  242. );
  243. die();
  244. ?>