1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
catalog_export.php
См. документацию.
1<?php
2
4{
5 public static function CheckFields($ACTION, &$arFields)
6 {
7 global $DB;
8 global $USER;
9
10 $ACTION = mb_strtoupper($ACTION);
11 if ('UPDATE' != $ACTION && 'ADD' != $ACTION)
12 return false;
13
14 if ((is_set($arFields, "FILE_NAME") || $ACTION=="ADD") && $arFields["FILE_NAME"] == '')
15 return false;
16 if ((is_set($arFields, "NAME") || $ACTION=="ADD") && $arFields["NAME"] == '')
17 return false;
18
19 if ((is_set($arFields, "IN_MENU") || $ACTION=="ADD") && $arFields["IN_MENU"]!="Y")
20 $arFields["IN_MENU"]="N";
21 if ((is_set($arFields, "DEFAULT_PROFILE") || $ACTION=="ADD") && $arFields["DEFAULT_PROFILE"]!="Y")
22 $arFields["DEFAULT_PROFILE"]="N";
23 if ((is_set($arFields, "IN_AGENT") || $ACTION=="ADD") && $arFields["IN_AGENT"]!="Y")
24 $arFields["IN_AGENT"]="N";
25 if ((is_set($arFields, "IN_CRON") || $ACTION=="ADD") && $arFields["IN_CRON"]!="Y")
26 $arFields["IN_CRON"]="N";
27 if ((is_set($arFields, "NEED_EDIT") || $ACTION=="ADD") && $arFields["NEED_EDIT"] != "Y")
28 $arFields["NEED_EDIT"]="N";
29
30 $arFields["IS_EXPORT"] = "Y";
31
32 $intUserID = 0;
33 $boolUserExist = CCatalog::IsUserExists();
34 if ($boolUserExist)
35 $intUserID = intval($USER->GetID());
36 $strDateFunction = $DB->GetNowFunction();
37 $boolNoUpdate = false;
38 if (isset($arFields['=LAST_USE']) && $strDateFunction == $arFields['=LAST_USE'])
39 {
40 $arFields['~LAST_USE'] = $strDateFunction;
41 $boolNoUpdate = ('UPDATE' == $ACTION);
42 }
43 foreach ($arFields as $key => $value)
44 {
45 if (0 == strncmp($key, '=', 1))
46 unset($arFields[$key]);
47 }
48
49 if (array_key_exists('TIMESTAMP_X', $arFields))
50 unset($arFields['TIMESTAMP_X']);
51 if (array_key_exists('DATE_CREATE', $arFields))
52 unset($arFields['DATE_CREATE']);
53
54 if ('ADD' == $ACTION)
55 {
56 $arFields['~TIMESTAMP_X'] = $strDateFunction;
57 $arFields['~DATE_CREATE'] = $strDateFunction;
58 if ($boolUserExist)
59 {
60 if (!array_key_exists('CREATED_BY', $arFields) || intval($arFields["CREATED_BY"]) <= 0)
61 $arFields["CREATED_BY"] = $intUserID;
62 if (!array_key_exists('MODIFIED_BY', $arFields) || intval($arFields["MODIFIED_BY"]) <= 0)
63 $arFields["MODIFIED_BY"] = $intUserID;
64 }
65 }
66 if ('UPDATE' == $ACTION)
67 {
68 if (array_key_exists('CREATED_BY', $arFields))
69 unset($arFields['CREATED_BY']);
70 if ($boolNoUpdate)
71 {
72 if (array_key_exists('MODIFIED_BY',$arFields))
73 unset($arFields['MODIFIED_BY']);
74 }
75 else
76 {
77 if ($boolUserExist)
78 {
79 if (!array_key_exists('MODIFIED_BY', $arFields) || intval($arFields["MODIFIED_BY"]) <= 0)
80 $arFields["MODIFIED_BY"] = $intUserID;
81 }
82 $arFields['~TIMESTAMP_X'] = $strDateFunction;
83 }
84 }
85
86 return true;
87 }
88
89 public static function Delete($ID)
90 {
91 global $DB;
92
93 $ID = (int)$ID;
94 if ($ID <= 0)
95 return false;
96 return $DB->Query("DELETE FROM b_catalog_export WHERE ID = ".$ID." AND IS_EXPORT = 'Y'", true);
97 }
98
99 public static function GetList($arOrder = array("ID"=>"ASC"), $arFilter = array(), $bCount = false)
100 {
101 global $DB;
102 $arSqlSearch = array();
103
104 if (!is_array($arFilter))
105 $filter_keys = array();
106 else
107 $filter_keys = array_keys($arFilter);
108
109 for ($i = 0, $intCount = count($filter_keys); $i < $intCount; $i++)
110 {
111 $val = $DB->ForSql($arFilter[$filter_keys[$i]]);
112 if ($val == '')
113 continue;
114
115 $bInvert = false;
116 $key = $filter_keys[$i];
117 if (mb_substr($key, 0, 1) == "!")
118 {
119 $key = mb_substr($key, 1);
120 $bInvert = true;
121 }
122
123 switch(mb_strtoupper($key))
124 {
125 case "ID":
126 $arSqlSearch[] = "CE.ID ".($bInvert? "<>" : "=")." ".intval($val)."";
127 break;
128 case "FILE_NAME":
129 $arSqlSearch[] = "CE.FILE_NAME ".($bInvert? "<>" : "=")." '".$val."'";
130 break;
131 case "NAME":
132 $arSqlSearch[] = "CE.NAME ".($bInvert? "<>" : "=")." '".$val."'";
133 break;
134 case "DEFAULT_PROFILE":
135 $arSqlSearch[] = "CE.DEFAULT_PROFILE ".($bInvert? "<>" : "=")." '".$val."'";
136 break;
137 case "IN_MENU":
138 $arSqlSearch[] = "CE.IN_MENU ".($bInvert? "<>" : "=")." '".$val."'";
139 break;
140 case "IN_AGENT":
141 $arSqlSearch[] = "CE.IN_AGENT ".($bInvert? "<>" : "=")." '".$val."'";
142 break;
143 case "IN_CRON":
144 $arSqlSearch[] = "CE.IN_CRON ".($bInvert? "<>" : "=")." '".$val."'";
145 break;
146 case 'NEED_EDIT':
147 $arSqlSearch[] = "CE.NEED_EDIT ".($bInvert? "<>" : "=")." '".$val."'";
148 break;
149 case 'CREATED_BY':
150 $arSqlSearch[] = "CE.CREATED_BY ".($bInvert? "<>" : "=")." '".intval($val)."'";
151 break;
152 case 'MODIFIED_BY':
153 $arSqlSearch[] = "CE.MODIFIED_BY ".($bInvert? "<>" : "=")." '".intval($val)."'";
154 break;
155 }
156 }
157
158 $strSqlSearch = "";
159 if (!empty($arSqlSearch))
160 {
161 $strSqlSearch = ' AND ('.implode(') AND (', $arSqlSearch).') ';
162 }
163
164 $strSqlSelect =
165 "SELECT CE.ID, CE.FILE_NAME, CE.NAME, CE.IN_MENU, CE.IN_AGENT, ".
166 " CE.IN_CRON, CE.SETUP_VARS, CE.DEFAULT_PROFILE, CE.LAST_USE, CE.NEED_EDIT, ".
167 " ".$DB->DateToCharFunction("CE.LAST_USE", "FULL")." as LAST_USE_FORMAT, ".
168 " CE.CREATED_BY, CE.MODIFIED_BY, ".$DB->DateToCharFunction('CE.TIMESTAMP_X', 'FULL').' as TIMESTAMP_X, '.$DB->DateToCharFunction('CE.DATE_CREATE', 'FULL').' as DATE_CREATE ';
169
170 $strSqlFrom =
171 "FROM b_catalog_export CE ";
172
173 if ($bCount)
174 {
175 $strSql =
176 "SELECT COUNT(CE.ID) as CNT ".
177 $strSqlFrom.
178 "WHERE CE.IS_EXPORT = 'Y' ".
179 $strSqlSearch;
180 $db_res = $DB->Query($strSql);
181 $iCnt = 0;
182 if ($ar_res = $db_res->Fetch())
183 {
184 $iCnt = intval($ar_res["CNT"]);
185 }
186 return $iCnt;
187 }
188
189 $strSql =
190 $strSqlSelect.
191 $strSqlFrom.
192 "WHERE CE.IS_EXPORT = 'Y' ".
193 $strSqlSearch;
194
195 $arSqlOrder = array();
196 $arOrderKeys = array();
197 foreach ($arOrder as $by=>$order)
198 {
199 $by = mb_strtoupper($by);
200 $order = mb_strtoupper($order);
201 if ($order!="ASC") $order = "DESC";
202 if (!in_array($by, $arOrderKeys))
203 {
204 if ($by == "NAME") $arSqlOrder[] = "CE.NAME ".$order;
205 elseif ($by == "FILE_NAME") $arSqlOrder[] = "CE.FILE_NAME ".$order;
206 elseif ($by == "DEFAULT_PROFILE") $arSqlOrder[] = "CE.DEFAULT_PROFILE ".$order;
207 elseif ($by == "IN_MENU") $arSqlOrder[] = "CE.IN_MENU ".$order;
208 elseif ($by == "LAST_USE") $arSqlOrder[] = "CE.LAST_USE ".$order;
209 elseif ($by == "IN_AGENT") $arSqlOrder[] = "CE.IN_AGENT ".$order;
210 elseif ($by == "IN_CRON") $arSqlOrder[] = "CE.IN_CRON ".$order;
211 elseif ($by == "NEED_EDIT") $arSqlOrder[] = "CE.NEED_EDIT ".$order;
212 else
213 {
214 $by = "ID";
215 if (in_array($by, $arOrderKeys))
216 continue;
217 $arSqlOrder[] = "CE.ID ".$order;
218 }
219 $arOrderKeys[] = $by;
220 }
221 }
222
223 $strSqlOrder = "";
224 if (!empty($arSqlOrder))
225 {
226 $strSqlOrder = ' ORDER BY '.implode(', ', $arSqlOrder);
227 }
228
229 $strSql .= $strSqlOrder;
230
231 $db_res = $DB->Query($strSql);
232 return $db_res;
233 }
234
235 public static function GetByID($ID)
236 {
237 global $DB;
238
239 $strSql =
240 "SELECT CE.ID, CE.FILE_NAME, CE.NAME, CE.IN_MENU, CE.IN_AGENT, ".
241 " CE.IN_CRON, CE.SETUP_VARS, CE.DEFAULT_PROFILE, CE.LAST_USE, CE.NEED_EDIT, ".
242 " ".$DB->DateToCharFunction("CE.LAST_USE", "FULL")." as LAST_USE_FORMAT, ".
243 " CE.CREATED_BY, CE.MODIFIED_BY, ".$DB->DateToCharFunction('CE.TIMESTAMP_X', 'FULL').' as TIMESTAMP_X, '.$DB->DateToCharFunction('CE.DATE_CREATE', 'FULL').' as DATE_CREATE '.
244 "FROM b_catalog_export CE ".
245 "WHERE CE.ID = ".intval($ID)." ".
246 " AND CE.IS_EXPORT = 'Y' ";
247 $db_res = $DB->Query($strSql);
248
249 if ($res = $db_res->Fetch())
250 {
251 return $res;
252 }
253 return false;
254 }
255
256 public static function PreGenerateExport($profile_id)
257 {
258 global $DB;
259
261 if ($profile_id <= 0)
262 return false;
263
265 if ((!$ar_profile) || ('Y' == $ar_profile['NEED_EDIT']))
266 return false;
267
268 $strFile = CATALOG_PATH2EXPORTS.$ar_profile["FILE_NAME"]."_run.php";
269 if (!file_exists($_SERVER["DOCUMENT_ROOT"].$strFile))
270 {
271 $strFile = CATALOG_PATH2EXPORTS_DEF.$ar_profile["FILE_NAME"]."_run.php";
272 if (!file_exists($_SERVER["DOCUMENT_ROOT"].$strFile))
273 return false;
274 }
275
278 if ('Y' != $ar_profile["DEFAULT_PROFILE"])
279 {
280 parse_str($ar_profile["SETUP_VARS"], $arSetupVars);
281 if (!empty($arSetupVars) && is_array($arSetupVars))
282 $intSetupVarsCount = extract($arSetupVars, EXTR_SKIP);
283 }
284
295
308
309 if (!defined('CATALOG_EXPORT_NO_STEP'))
310 define('CATALOG_EXPORT_NO_STEP', true);
311 $firstStep = true;
312 $finalExport = true;
313 $CUR_ELEMENT_ID = 0;
314
316 include($_SERVER["DOCUMENT_ROOT"].$strFile);
318
320 "=LAST_USE" => $DB->GetNowFunction()
321 )
322 );
323
324 return "CCatalogExport::PreGenerateExport(".$profile_id.");";
325 }
326}
$db_res
Определения options_user_settings.php:8
$ar_res
Определения options_user_settings_set.php:16
const CATALOG_PATH2EXPORTS_DEF
Определения include.php:13
const CATALOG_PATH2EXPORTS
Определения include.php:12
static Disable()
Определения discount_save.php:38
static Enable()
Определения discount_save.php:33
static PreGenerateExport($profile_id)
Определения catalog_export.php:256
static Delete($ID)
Определения catalog_export.php:89
static GetByID($ID)
Определения catalog_export.php:235
static CheckFields($ACTION, &$arFields)
Определения catalog_export.php:5
static GetList($arOrder=array("ID"=>"ASC"), $arFilter=array(), $bCount=false)
Определения catalog_export.php:99
static IsUserExists()
Определения catalog.php:1812
const FIELDS_PRICE
Определения csv_settings.php:9
static getDefaultSettings($type, $extFormat=false)
Определения csv_settings.php:335
const FIELDS_CURRENCY
Определения csv_settings.php:12
static getSettingsFields($type, $extFormat=false)
Определения csv_settings.php:14
const FIELDS_PRICE_EXT
Определения csv_settings.php:10
const FIELDS_ELEMENT
Определения csv_settings.php:7
const FIELDS_CATALOG
Определения csv_settings.php:8
const FIELDS_SECTION
Определения csv_settings.php:11
static Update($ID, $arFields)
Определения catalog_export.php:24
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
if($ajaxMode) $ID
Определения get_user.php:27
if(!file_exists($_SERVER["DOCUMENT_ROOT"]. $strFile)) $arSetupVars
Определения cron_frame.php:69
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
if(!\Bitrix\Main\Loader::includeModule('catalog')) $profile_id
Определения cron_frame.php:43
global $arCatalogAvailPriceFields
Определения cron_frame.php:84
global $defCatalogAvailValueFields
Определения cron_frame.php:97
global $arCatalogAvailQuantityFields
Определения cron_frame.php:88
if(! $ar_profile) $strFile
Определения cron_frame.php:59
global $defCatalogAvailProdFields
Определения cron_frame.php:93
global $DB
Определения cron_frame.php:29
if(isset( $argv[1])) if($profile_id<=0) $ar_profile
Определения cron_frame.php:53
global $defCatalogAvailQuantityFields
Определения cron_frame.php:99
global $arCatalogAvailProdFields
Определения cron_frame.php:82
global $defCatalogAvailCurrencies
Определения cron_frame.php:103
if($ar_profile["DEFAULT_PROFILE"] !='Y') $firstStep
Определения cron_frame.php:80
global $arCatalogAvailGroupFields
Определения cron_frame.php:90
$intSetupVarsCount
Определения cron_frame.php:70
global $arCatalogAvailValueFields
Определения cron_frame.php:86
global $defCatalogAvailPriceFields
Определения cron_frame.php:95
global $defCatalogAvailGroupFields
Определения cron_frame.php:101
global $USER
Определения csv_new_run.php:40
$ACTION
Определения csv_new_setup.php:27
is_set($a, $k=false)
Определения tools.php:2133
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$val
Определения options.php:1793
$arFilter
Определения user_search.php:106