/bitrix/modules/main/classes/general/usertypestr.php

https://gitlab.com/Rad1calDreamer/honey · PHP · 498 lines · 241 code · 13 blank · 244 comment · 18 complexity · b4acb2fb7f96f9cd8ff3ffa3517033f8 MD5 · raw file

  1. <?
  2. /**
  3. * usertypestr.php, Òèï äëÿ ïîëüçîâàòåëüñêèõ ñâîéñòâ - ÑÒÐÎÊÀ
  4. *
  5. * Ñîäåðæèò êëàññ ðåàëèçóþùèé èíòåðôåéñû äëÿ òèïà "Ñòðîêà".
  6. * @author Bitrix <support@bitrixsoft.com>
  7. * @version 1.0
  8. * @package usertype
  9. */
  10. IncludeModuleLangFile(__FILE__);
  11. /**
  12. * Äàííûé êëàññ èñïîëüçóåòñÿ äëÿ óïðàâëåíèÿ ýêçåìïëÿðîì çíà÷åíèÿ
  13. * ïîëüçîâàòåëüñêîãî ñâîéñâà.
  14. *
  15. * <p>Íåêîòîðûå ìåòîäû ýòîãî êëàññà çàêàí÷èâàþòñÿ íà "2".
  16. * Îíè ïðèâåäåíû äëÿ äåìîíñòðàöèè è äâîéêîé èñêëþ÷àþòñÿ èç ïðîöåññà îáðàáîòêè.</p>
  17. * @package usertype
  18. * @subpackage classes
  19. */
  20. class CUserTypeString
  21. {
  22. /**
  23. * Îáðàáîò÷èê ñîáûòèÿ OnUserTypeBuildList.
  24. *
  25. * <p>Ýòà ôóíêöèÿ ðåãèñòðèðóåòñÿ â êà÷åñòâå îáðàáîò÷èêà ñîáûòèÿ OnUserTypeBuildList.
  26. * Âîçâðàùàåò ìàññèâ îïèñûâàþùèé òèï ïîëüçîâàòåëüñêèõ ñâîéñòâ.</p>
  27. * <p>Ýëåìåíòû ìàññèâà:</p>
  28. * <ul>
  29. * <li>USER_TYPE_ID - óíèêàëüíûé èäåíòèôèêàòîð
  30. * <li>CLASS_NAME - èìÿ êëàññà ìåòîäû êîòîðîãî ôîðìèðóþò ïîâåäåíèå òèïà
  31. * <li>DESCRIPTION - îïèñàíèå äëÿ ïîêàçà â èíòåðôåéñå (âûïàäàþùèé ñïèñîê è ò.ï.)
  32. * <li>BASE_TYPE - áàçîâûé òèï íà êîòîðîì áóäóò îñíîâàíû îïåðàöèè ôèëüòðà (int, double, string, date, datetime)
  33. * </ul>
  34. * @return array
  35. * @static
  36. */
  37. function GetUserTypeDescription()
  38. {
  39. return array(
  40. "USER_TYPE_ID" => "string",
  41. "CLASS_NAME" => "CUserTypeString",
  42. "DESCRIPTION" => GetMessage("USER_TYPE_STRING_DESCRIPTION"),
  43. "BASE_TYPE" => "string",
  44. );
  45. }
  46. /**
  47. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè äîáàâëåíèè íîâîãî ñâîéñòâà.
  48. *
  49. * <p>Ýòà ôóíêöèÿ âûçûâàåòñÿ äëÿ êîíñòðóèðîâàíèÿ SQL çàïðîñà
  50. * ñîçäàíèÿ êîëîíêè äëÿ õðàíåíèÿ íå ìíîæåñòâåííûõ çíà÷åíèé ñâîéñòâà.</p>
  51. * <p>Çíà÷åíèÿ ìíîæåñòâåííûõ ñâîéñòâ õðàíÿòñÿ íå â ñòðîêàõ, à ñòîëáèêàõ (êàê â èíôîáëîêàõ)
  52. * è òèï òàêîãî ïîëÿ â ÁÄ âñåãäà text.</p>
  53. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå
  54. * @return string
  55. * @static
  56. */
  57. function GetDBColumnType($arUserField)
  58. {
  59. global $DB;
  60. switch(strtolower($DB->type))
  61. {
  62. case "mysql":
  63. return "text";
  64. case "oracle":
  65. return "varchar2(2000 char)";
  66. case "mssql":
  67. return "varchar(2000)";
  68. }
  69. }
  70. /**
  71. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïåðåä ñîõðàíåíèåì ìåòàäàííûõ ñâîéñòâà â ÁÄ.
  72. *
  73. * <p>Îíà äîëæíà "î÷èñòèòü" ìàññèâ ñ íàñòðîéêàìè ýêçåìïëÿðà òèïà ñâîéñòâà.
  74. * Äëÿ òîãî ÷òî áû ñëó÷àéíî/íàìåðåííî íèêòî íå çàïèñàë òóäà âñÿêîé ôèãíè.</p>
  75. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå. <b>Âíèìàíèå!</b> ýòî îïèñàíèå ïîëÿ åùå íå ñîõðàíåíî â ÁÄ!
  76. * @return array Ìàññèâ êîòîðûé â äàëüíåéøåì áóäåò ñåðèàëèçîâàí è ñîõðàíåí â ÁÄ.
  77. * @static
  78. */
  79. function PrepareSettings($arUserField)
  80. {
  81. $size = intval($arUserField["SETTINGS"]["SIZE"]);
  82. $rows = intval($arUserField["SETTINGS"]["ROWS"]);
  83. $min = intval($arUserField["SETTINGS"]["MIN_LENGTH"]);
  84. $max = intval($arUserField["SETTINGS"]["MAX_LENGTH"]);
  85. return array(
  86. "SIZE" => ($size <= 1? 20: ($size > 255? 225: $size)),
  87. "ROWS" => ($rows <= 1? 1: ($rows > 50? 50: $rows)),
  88. "REGEXP" => $arUserField["SETTINGS"]["REGEXP"],
  89. "MIN_LENGTH" => $min,
  90. "MAX_LENGTH" => $max,
  91. "DEFAULT_VALUE" => $arUserField["SETTINGS"]["DEFAULT_VALUE"],
  92. );
  93. }
  94. /**
  95. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè âûâîäå ôîðìû íàñòðîéêè ñâîéñòâà.
  96. *
  97. * <p>Âîçâðàùàåò html äëÿ âñòðàèâàíèÿ â 2-õ êîëîíî÷íóþ òàáëèöó.
  98. * â ôîðìó usertype_edit.php</p>
  99. * <p>ò.å. tr td bla-bla /td td edit-edit-edit /td /tr </p>
  100. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå. Äëÿ íîâîãî (åùå íå äîáàâëåííîãî ïîëÿ - <b>false</b>)
  101. * @param array $arHtmlControl Ìàññèâ óïðàâëåíèÿ èç ôîðìû. Ïîêà ñîäåðæèò òîëüêî îäèí ýëåìåíò NAME (html áåçîïàñíûé)
  102. * @return string HTML äëÿ âûâîäà.
  103. * @static
  104. */
  105. function GetSettingsHTML($arUserField = false, $arHtmlControl, $bVarsFromForm)
  106. {
  107. $result = '';
  108. if($bVarsFromForm)
  109. $value = htmlspecialcharsbx($GLOBALS[$arHtmlControl["NAME"]]["DEFAULT_VALUE"]);
  110. elseif(is_array($arUserField))
  111. $value = htmlspecialcharsbx($arUserField["SETTINGS"]["DEFAULT_VALUE"]);
  112. else
  113. $value = "";
  114. $result .= '
  115. <tr>
  116. <td>'.GetMessage("USER_TYPE_STRING_DEFAULT_VALUE").':</td>
  117. <td>
  118. <input type="text" name="'.$arHtmlControl["NAME"].'[DEFAULT_VALUE]" size="20" maxlength="225" value="'.$value.'">
  119. </td>
  120. </tr>
  121. ';
  122. if($bVarsFromForm)
  123. $value = intval($GLOBALS[$arHtmlControl["NAME"]]["SIZE"]);
  124. elseif(is_array($arUserField))
  125. $value = intval($arUserField["SETTINGS"]["SIZE"]);
  126. else
  127. $value = 20;
  128. $result .= '
  129. <tr>
  130. <td>'.GetMessage("USER_TYPE_STRING_SIZE").':</td>
  131. <td>
  132. <input type="text" name="'.$arHtmlControl["NAME"].'[SIZE]" size="20" maxlength="20" value="'.$value.'">
  133. </td>
  134. </tr>
  135. ';
  136. if($bVarsFromForm)
  137. $value = intval($GLOBALS[$arHtmlControl["NAME"]]["ROWS"]);
  138. elseif(is_array($arUserField))
  139. $value = intval($arUserField["SETTINGS"]["ROWS"]);
  140. else
  141. $value = 1;
  142. if($value < 1) $value = 1;
  143. $result .= '
  144. <tr>
  145. <td>'.GetMessage("USER_TYPE_STRING_ROWS").':</td>
  146. <td>
  147. <input type="text" name="'.$arHtmlControl["NAME"].'[ROWS]" size="20" maxlength="20" value="'.$value.'">
  148. </td>
  149. </tr>
  150. ';
  151. if($bVarsFromForm)
  152. $value = intval($GLOBALS[$arHtmlControl["NAME"]]["MIN_LENGTH"]);
  153. elseif(is_array($arUserField))
  154. $value = intval($arUserField["SETTINGS"]["MIN_LENGTH"]);
  155. else
  156. $value = 0;
  157. $result .= '
  158. <tr>
  159. <td>'.GetMessage("USER_TYPE_STRING_MIN_LEGTH").':</td>
  160. <td>
  161. <input type="text" name="'.$arHtmlControl["NAME"].'[MIN_LENGTH]" size="20" maxlength="20" value="'.$value.'">
  162. </td>
  163. </tr>
  164. ';
  165. if($bVarsFromForm)
  166. $value = intval($GLOBALS[$arHtmlControl["NAME"]]["MAX_LENGTH"]);
  167. elseif(is_array($arUserField))
  168. $value = intval($arUserField["SETTINGS"]["MAX_LENGTH"]);
  169. else
  170. $value = 0;
  171. $result .= '
  172. <tr>
  173. <td>'.GetMessage("USER_TYPE_STRING_MAX_LENGTH").':</td>
  174. <td>
  175. <input type="text" name="'.$arHtmlControl["NAME"].'[MAX_LENGTH]" size="20" maxlength="20" value="'.$value.'">
  176. </td>
  177. </tr>
  178. ';
  179. if($bVarsFromForm)
  180. $value = htmlspecialcharsbx($GLOBALS[$arHtmlControl["NAME"]]["REGEXP"]);
  181. elseif(is_array($arUserField))
  182. $value = htmlspecialcharsbx($arUserField["SETTINGS"]["REGEXP"]);
  183. else
  184. $value = "";
  185. $result .= '
  186. <tr>
  187. <td>'.GetMessage("USER_TYPE_STRING_REGEXP").':</td>
  188. <td>
  189. <input type="text" name="'.$arHtmlControl["NAME"].'[REGEXP]" size="20" maxlength="200" value="'.$value.'">
  190. </td>
  191. </tr>
  192. ';
  193. return $result;
  194. }
  195. /**
  196. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè âûâîäå ôîðìû ðåäàêòèðîâàíèÿ çíà÷åíèÿ ñâîéñòâà.
  197. *
  198. * <p>Âîçâðàùàåò html äëÿ âñòðàèâàíèÿ â ÿ÷åéêó òàáëèöû.
  199. * â ôîðìó ðåäàêòèðîâàíèÿ ñóùíîñòè (íà âêëàäêå "Äîï. ñâîéñòâà")</p>
  200. * <p>Ýëåìåíòû $arHtmlControl ïðèâåäåíû ê html áåçîïàñíîìó âèäó.</p>
  201. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  202. * @param array $arHtmlControl Ìàññèâ óïðàâëåíèÿ èç ôîðìû. Ñîäåðæèò ýëåìåíòû NAME è VALUE.
  203. * @return string HTML äëÿ âûâîäà.
  204. * @static
  205. */
  206. function GetEditFormHTML($arUserField, $arHtmlControl)
  207. {
  208. if($arUserField["ENTITY_VALUE_ID"]<1 && strlen($arUserField["SETTINGS"]["DEFAULT_VALUE"])>0)
  209. $arHtmlControl["VALUE"] = htmlspecialcharsbx($arUserField["SETTINGS"]["DEFAULT_VALUE"]);
  210. if($arUserField["SETTINGS"]["ROWS"] < 2)
  211. {
  212. $arHtmlControl["VALIGN"] = "middle";
  213. return '<input type="text" '.
  214. 'name="'.$arHtmlControl["NAME"].'" '.
  215. 'size="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  216. ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  217. 'value="'.$arHtmlControl["VALUE"].'" '.
  218. ($arUserField["EDIT_IN_LIST"]!="Y"? 'disabled="disabled" ': '').
  219. '>';
  220. }
  221. else
  222. {
  223. return '<textarea '.
  224. 'name="'.$arHtmlControl["NAME"].'" '.
  225. 'cols="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  226. 'rows="'.$arUserField["SETTINGS"]["ROWS"].'" '.
  227. ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  228. ($arUserField["EDIT_IN_LIST"]!="Y"? 'disabled="disabled" ': '').
  229. '>'.$arHtmlControl["VALUE"].'</textarea>';
  230. }
  231. }
  232. /**
  233. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè âûâîäå ôîðìû ðåäàêòèðîâàíèÿ çíà÷åíèÿ <b>ìíîæåñòâåííîãî</b> ñâîéñòâà.
  234. *
  235. * <p>Åñëè êëàññ íå ïðåäîñòàâëÿåò òàêóþ ôóíêöèþ,
  236. * òî ìåíåäæåð òèïîâ "ñîáåðåò" òðåáóåìûé html èç âûçîâîâ GetEditFormHTML</p>
  237. * <p>Âîçâðàùàåò html äëÿ âñòðàèâàíèÿ â ÿ÷åéêó òàáëèöû.
  238. * â ôîðìó ðåäàêòèðîâàíèÿ ñóùíîñòè (íà âêëàäêå "Äîï. ñâîéñòâà")</p>
  239. * <p>Ýëåìåíòû $arHtmlControl ïðèâåäåíû ê html áåçîïàñíîìó âèäó.</p>
  240. * <p>Ïîëå VALUE $arHtmlControl - ìàññèâ.</p>
  241. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  242. * @param array $arHtmlControl Ìàññèâ óïðàâëåíèÿ èç ôîðìû. Ñîäåðæèò ýëåìåíòû NAME è VALUE.
  243. * @return string HTML äëÿ âûâîäà.
  244. * @static
  245. */
  246. /*
  247. function GetEditFormHTMLMulty($arUserField, $arHtmlControl)
  248. {
  249. if($arUserField["VALUE"]===false && strlen($arUserField["SETTINGS"]["DEFAULT_VALUE"])>0)
  250. $arHtmlControl["VALUE"] = array(htmlspecialcharsbx($arUserField["SETTINGS"]["DEFAULT_VALUE"]));
  251. $result = array();
  252. foreach($arHtmlControl["VALUE"] as $value)
  253. {
  254. if($arUserField["SETTINGS"]["ROWS"] < 2)
  255. $result[] = '<input type="text" '.
  256. 'name="'.$arHtmlControl["NAME"].'" '.
  257. 'size="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  258. ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  259. 'value="'.$value.'" '.
  260. ($arUserField["EDIT_IN_LIST"]!="Y"? 'disabled="disabled" ': '').
  261. '>';
  262. else
  263. $result[] = '<textarea '.
  264. 'name="'.$arHtmlControl["NAME"].'" '.
  265. 'cols="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  266. 'rows="'.$arUserField["SETTINGS"]["ROWS"].'" '.
  267. ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  268. ($arUserField["EDIT_IN_LIST"]!="Y"? 'disabled="disabled" ': '').
  269. '>'.$value.'</textarea>';
  270. }
  271. return implode("<br>", $result);
  272. }
  273. */
  274. /**
  275. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè âûâîäå ôèëüòðà íà ñòðàíèöå ñïèñêà.
  276. *
  277. * <p>Âîçâðàùàåò html äëÿ âñòðàèâàíèÿ â ÿ÷åéêó òàáëèöû.</p>
  278. * <p>Ýëåìåíòû $arHtmlControl ïðèâåäåíû ê html áåçîïàñíîìó âèäó.</p>
  279. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  280. * @param array $arHtmlControl Ìàññèâ óïðàâëåíèÿ èç ôîðìû. Ñîäåðæèò ýëåìåíòû NAME è VALUE.
  281. * @return string HTML äëÿ âûâîäà.
  282. * @static
  283. */
  284. function GetFilterHTML($arUserField, $arHtmlControl)
  285. {
  286. return '<input type="text" '.
  287. 'name="'.$arHtmlControl["NAME"].'" '.
  288. 'size="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  289. 'value="'.$arHtmlControl["VALUE"].'"'.
  290. '>';
  291. }
  292. /**
  293. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè âûâîäå çíà÷åíèÿ ñâîéñòâà â ñïèñêå ýëåìåíòîâ.
  294. *
  295. * <p>Âîçâðàùàåò html äëÿ âñòðàèâàíèÿ â ÿ÷åéêó òàáëèöû.</p>
  296. * <p>Ýëåìåíòû $arHtmlControl ïðèâåäåíû ê html áåçîïàñíîìó âèäó.</p>
  297. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  298. * @param array $arHtmlControl Ìàññèâ óïðàâëåíèÿ èç ôîðìû. Ñîäåðæèò ýëåìåíòû NAME è VALUE.
  299. * @return string HTML äëÿ âûâîäà.
  300. * @static
  301. */
  302. function GetAdminListViewHTML($arUserField, $arHtmlControl)
  303. {
  304. if(strlen($arHtmlControl["VALUE"])>0)
  305. return $arHtmlControl["VALUE"];
  306. else
  307. return '&nbsp;';
  308. }
  309. /**
  310. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè âûâîäå çíà÷åíèÿ <b>ìíîæåñòâåííîãî</b> ñâîéñòâà â ñïèñêå ýëåìåíòîâ.
  311. *
  312. * <p>Âîçâðàùàåò html äëÿ âñòðàèâàíèÿ â ÿ÷åéêó òàáëèöû.</p>
  313. * <p>Åñëè êëàññ íå ïðåäîñòàâëÿåò òàêóþ ôóíêöèþ,
  314. * òî ìåíåäæåð òèïîâ "ñîáåðåò" òðåáóåìûé html èç âûçîâîâ GetAdminListViewHTML</p>
  315. * <p>Ýëåìåíòû $arHtmlControl ïðèâåäåíû ê html áåçîïàñíîìó âèäó.</p>
  316. * <p>Ïîëå VALUE $arHtmlControl - ìàññèâ.</p>
  317. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  318. * @param array $arHtmlControl Ìàññèâ óïðàâëåíèÿ èç ôîðìû. Ñîäåðæèò ýëåìåíòû NAME è VALUE.
  319. * @return string HTML äëÿ âûâîäà.
  320. * @static
  321. */
  322. /*
  323. function GetAdminListViewHTMLMulty($arUserField, $arHtmlControl)
  324. {
  325. return implode(", ", $arHtmlControl["VALUE"]);
  326. }
  327. */
  328. /**
  329. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè âûâîäå çíà÷åíèÿ ñâîéñòâà â ñïèñêå ýëåìåíòîâ â ðåæèìå <b>ðåäàêòèðîâàíèÿ</b>.
  330. *
  331. * <p>Âîçâðàùàåò html äëÿ âñòðàèâàíèÿ â ÿ÷åéêó òàáëèöû.</p>
  332. * <p>Ýëåìåíòû $arHtmlControl ïðèâåäåíû ê html áåçîïàñíîìó âèäó.</p>
  333. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  334. * @param array $arHtmlControl Ìàññèâ óïðàâëåíèÿ èç ôîðìû. Ñîäåðæèò ýëåìåíòû NAME è VALUE.
  335. * @return string HTML äëÿ âûâîäà.
  336. * @static
  337. */
  338. function GetAdminListEditHTML($arUserField, $arHtmlControl)
  339. {
  340. if($arUserField["SETTINGS"]["ROWS"] < 2)
  341. return '<input type="text" '.
  342. 'name="'.$arHtmlControl["NAME"].'" '.
  343. 'size="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  344. ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  345. 'value="'.$arHtmlControl["VALUE"].'" '.
  346. '>';
  347. else
  348. return '<textarea '.
  349. 'name="'.$arHtmlControl["NAME"].'" '.
  350. 'cols="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  351. 'rows="'.$arUserField["SETTINGS"]["ROWS"].'" '.
  352. ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  353. '>'.$arHtmlControl["VALUE"].'</textarea>';
  354. }
  355. /**
  356. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè âûâîäå <b>ìíîæåñòâåííîãî</b> ñâîéñòâà â ñïèñêå ýëåìåíòîâ â ðåæèìå <b>ðåäàêòèðîâàíèÿ</b>.
  357. *
  358. * <p>Âîçâðàùàåò html äëÿ âñòðàèâàíèÿ â ÿ÷åéêó òàáëèöû.</p>
  359. * <p>Åñëè êëàññ íå ïðåäîñòàâëÿåò òàêóþ ôóíêöèþ,
  360. * òî ìåíåäæåð òèïîâ "ñîáåðåò" òðåáóåìûé html èç âûçîâîâ GetAdminListEditHTML</p>
  361. * <p>Ýëåìåíòû $arHtmlControl ïðèâåäåíû ê html áåçîïàñíîìó âèäó.</p>
  362. * <p>Ïîëå VALUE $arHtmlControl - ìàññèâ.</p>
  363. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  364. * @param array $arHtmlControl Ìàññèâ óïðàâëåíèÿ èç ôîðìû. Ñîäåðæèò ýëåìåíòû NAME è VALUE.
  365. * @return string HTML äëÿ âûâîäà.
  366. * @static
  367. */
  368. /*
  369. function GetAdminListEditHTMLMulty($arUserField, $arHtmlControl)
  370. {
  371. $result = array();
  372. foreach($arHtmlControl["VALUE"] as $value)
  373. {
  374. if($arUserField["SETTINGS"]["ROWS"] < 2)
  375. $result[] = '<input type="text" '.
  376. 'name="'.$arHtmlControl["NAME"].'" '.
  377. 'size="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  378. ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  379. 'value="'.$value.'" '.
  380. '>';
  381. else
  382. $result[] = '<textarea '.
  383. 'name="'.$arHtmlControl["NAME"].'" '.
  384. 'cols="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  385. 'rows="'.$arUserField["SETTINGS"]["ROWS"].'" '.
  386. ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  387. '>'.$value.'</textarea>';
  388. }
  389. return '&nbsp;'.implode("<br>", $result);
  390. }
  391. */
  392. /**
  393. * Ýòà ôóíêöèÿ âàëèäàòîð.
  394. *
  395. * <p>Âûçûâàåòñÿ èç ìåòîäà CheckFields îáúåêòà $USER_FIELD_MANAGER.</p>
  396. * <p>Êîòîðûé â ñâîþ î÷åðåäü ìîæåò áûòü âûçâàí èç ìåòîðîâ Add/Update ñóùíîñòè âëàäåëüöà ñâîéñòâ.</p>
  397. * <p>Âûïîëíÿåòñÿ 2 ïðîâåðêè:</p>
  398. * <ul>
  399. * <li>íà ìèíèìàëüíóþ äëèíó (åñëè â íàñòðîéêàõ ìèíèìàëüíàÿ äëèíà áîëüøå 0).
  400. * <li>íà ðåãóëÿðíîå âûðàæåíèå (åñëè çàäàíî â íàñòðîéêàõ).
  401. * </ul>
  402. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  403. * @param array $value çíà÷åíèå äëÿ ïðîâåðêè íà âàëèäíîñòü
  404. * @return array ìàññèâ ìàññèâîâ ("id","text") îøèáîê.
  405. * @static
  406. */
  407. function CheckFields($arUserField, $value)
  408. {
  409. $aMsg = array();
  410. if(strlen($value)<$arUserField["SETTINGS"]["MIN_LENGTH"])
  411. {
  412. $aMsg[] = array(
  413. "id" => $arUserField["FIELD_NAME"],
  414. "text" => GetMessage("USER_TYPE_STRING_MIN_LEGTH_ERROR",
  415. array(
  416. "#FIELD_NAME#"=>$arUserField["EDIT_FORM_LABEL"],
  417. "#MIN_LENGTH#"=>$arUserField["SETTINGS"]["MIN_LENGTH"]
  418. )
  419. ),
  420. );
  421. }
  422. if($arUserField["SETTINGS"]["MAX_LENGTH"]>0 && strlen($value)>$arUserField["SETTINGS"]["MAX_LENGTH"])
  423. {
  424. $aMsg[] = array(
  425. "id" => $arUserField["FIELD_NAME"],
  426. "text" => GetMessage("USER_TYPE_STRING_MAX_LEGTH_ERROR",
  427. array(
  428. "#FIELD_NAME#"=>$arUserField["EDIT_FORM_LABEL"],
  429. "#MAX_LENGTH#"=>$arUserField["SETTINGS"]["MAX_LENGTH"]
  430. )
  431. ),
  432. );
  433. }
  434. if(strlen($arUserField["SETTINGS"]["REGEXP"])>0 && !preg_match($arUserField["SETTINGS"]["REGEXP"], $value))
  435. {
  436. $aMsg[] = array(
  437. "id" => $arUserField["FIELD_NAME"],
  438. "text" => (strlen($arUserField["ERROR_MESSAGE"])>0?
  439. $arUserField["ERROR_MESSAGE"]:
  440. GetMessage("USER_TYPE_STRING_REGEXP_ERROR",
  441. array(
  442. "#FIELD_NAME#"=>$arUserField["EDIT_FORM_LABEL"],
  443. )
  444. )
  445. ),
  446. );
  447. }
  448. return $aMsg;
  449. }
  450. /**
  451. * Ýòà ôóíêöèÿ äîëæíà âåðíóòü ïðåäñòàâëåíèå çíà÷åíèÿ ïîëÿ äëÿ ïîèñêà.
  452. *
  453. * <p>Âûçûâàåòñÿ èç ìåòîäà OnSearchIndex îáúåêòà $USER_FIELD_MANAGER.</p>
  454. * <p>Êîòîðûé â ñâîþ î÷åðåäü âûçûâàåòñÿ è ôóíêöèè îáíîâëåíèÿ ïîèñêîâîãî èíäåêñà ñóùíîñòè.</p>
  455. * <p>Äëÿ ìíîæåñòâåííûõ çíà÷åíèé ïîëå VALUE - ìàññèâ.</p>
  456. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  457. * @return string ïîñêîâîå ñîäåðæèìîå.
  458. * @static
  459. */
  460. function OnSearchIndex($arUserField)
  461. {
  462. if(is_array($arUserField["VALUE"]))
  463. return implode("\r\n", $arUserField["VALUE"]);
  464. else
  465. return $arUserField["VALUE"];
  466. }
  467. /**
  468. * Ýòà ôóíêöèÿ âûçûâàåòñÿ ïåðåä ñîõðàíåíèåì çíà÷åíèé â ÁÄ.
  469. *
  470. * <p>Âûçûâàåòñÿ èç ìåòîäà Update îáúåêòà $USER_FIELD_MANAGER.</p>
  471. * <p>Äëÿ ìíîæåñòâåííûõ çíà÷åíèé ôóíêöèÿ âûçûâàåòñÿ íåñêîëüêî ðàç.</p>
  472. * @param array $arUserField Ìàññèâ îïèñûâàþùèé ïîëå.
  473. * @param mixed $value Çíà÷åíèå.
  474. * @return string çíà÷åíèå äëÿ âñòàâêè â ÁÄ.
  475. * @static
  476. */
  477. /*
  478. function OnBeforeSave($arUserField, $value)
  479. {
  480. if(strlen($value)>0)
  481. return "".round(doubleval($value), $arUserField["SETTINGS"]["PRECISION"]);
  482. }
  483. */
  484. }
  485. ?>