public static function checkFields($action, &$fields, $currency = '', $language = '', $getErrors = false) { global $DB, $USER, $APPLICATION; $getErrors = ($getErrors === true); $action = strtoupper($action); if ($action != 'ADD' && $action != 'UPDATE') return false; if (!is_array($fields)) return false; if ($action == 'ADD') { if (isset($fields['CURRENCY'])) $currency = $fields['CURRENCY']; if (isset($fields['LID'])) $language = $fields['LID']; } $currency = Currency\CurrencyManager::checkCurrencyID($currency); $language = Currency\CurrencyManager::checkLanguage($language); if ($currency === false || $language === false) return false; $errorMessages = array(); $clearFields = array( '~CURRENCY', '~LID', 'TIMESTAMP_X', 'DATE_CREATE', '~DATE_CREATE', '~MODIFIED_BY', '~CREATED_BY' ); if ($action == 'UPDATE') { $clearFields[] = 'CREATED_BY'; $clearFields[] = 'CURRENCY'; $clearFields[] = 'LID'; } $fields = array_filter($fields, 'CCurrencyLang::clearFields'); foreach ($clearFields as &$fieldName) { if (isset($fields[$fieldName])) unset($fields[$fieldName]); } unset($fieldName, $clearFields); if ($action == 'ADD') { $defaultValues = self::$arDefaultValues; unset($defaultValues['FORMAT_STRING']); $fields = array_merge($defaultValues, $fields); unset($defaultValues); if (!isset($fields['FORMAT_STRING']) || empty($fields['FORMAT_STRING'])) { $errorMessages[] = array( 'id' => 'FORMAT_STRING', 'text' => Loc::getMessage('BT_CUR_LANG_ERR_FORMAT_STRING_IS_EMPTY', array('#LANG#' => $language)) ); } if (empty($errorMessages)) { $fields['CURRENCY'] = $currency; $fields['LID'] = $language; } } if (empty($errorMessages)) { if (isset($fields['FORMAT_STRING']) && empty($fields['FORMAT_STRING'])) { $errorMessages[] = array( 'id' => 'FORMAT_STRING', 'text' => Loc::getMessage('BT_CUR_LANG_ERR_FORMAT_STRING_IS_EMPTY', array('#LANG#' => $language)) ); } if (isset($fields['DECIMALS'])) { $fields['DECIMALS'] = (int)$fields['DECIMALS']; if ($fields['DECIMALS'] < 0) $fields['DECIMALS'] = self::$arDefaultValues['DECIMALS']; } if (isset($fields['THOUSANDS_VARIANT'])) { if (empty($fields['THOUSANDS_VARIANT']) || !isset(self::$arSeparators[$fields['THOUSANDS_VARIANT']])) { $fields['THOUSANDS_VARIANT'] = false; } else { $fields['THOUSANDS_SEP'] = false; } } if (isset($fields['HIDE_ZERO'])) { $fields['HIDE_ZERO'] = ($fields['HIDE_ZERO'] == 'Y' ? 'Y' : 'N'); } } $intUserID = 0; $boolUserExist = CCurrency::isUserExists(); if ($boolUserExist) $intUserID = (int)$USER->GetID(); $strDateFunction = $DB->GetNowFunction(); $fields['~DATE_UPDATE'] = $strDateFunction; if ($boolUserExist) { if (!isset($fields['MODIFIED_BY'])) $fields['MODIFIED_BY'] = $intUserID; $fields['MODIFIED_BY'] = (int)$fields['MODIFIED_BY']; if ($fields['MODIFIED_BY'] <= 0) $fields['MODIFIED_BY'] = $intUserID; } if ($action == 'ADD') { $fields['~DATE_CREATE'] = $strDateFunction; if ($boolUserExist) { if (!isset($arFields['CREATED_BY'])) $fields['CREATED_BY'] = $intUserID; $fields['CREATED_BY'] = (int)$fields['CREATED_BY']; if ($fields['CREATED_BY'] <= 0) $fields['CREATED_BY'] = $intUserID; } } if (!empty($errorMessages)) { if ($getErrors) { return $errorMessages; } $obError = new CAdminException($errorMessages); $APPLICATION->ResetException(); $APPLICATION->ThrowException($obError); return false; } return true; }