$arItem['CATALOG_MEASURE'] = 0; } if (!isset($arItem['CATALOG_MEASURE_NAME'])) { $arItem['CATALOG_MEASURE_NAME'] = ''; } $arItem['CATALOG_MEASURE_NAME'] = $arDefaultMeasure['SYMBOL_RUS']; $arItem['~CATALOG_MEASURE_NAME'] = $arDefaultMeasure['~SYMBOL_RUS']; if (0 < $arItem['CATALOG_MEASURE']) { if (!isset($arMeasureMap[$arItem['CATALOG_MEASURE']])) { $arMeasureMap[$arItem['CATALOG_MEASURE']] = array(); } $arMeasureMap[$arItem['CATALOG_MEASURE']][] = $intKey; } } if ($arParams["SET_LAST_MODIFIED"]) { $time = DateTime::createFromUserTime($arItem["TIMESTAMP_X"]); if (!isset($arResult["ITEMS_TIMESTAMP_X"]) || $time->getTimestamp() > $arResult["ITEMS_TIMESTAMP_X"]->getTimestamp()) { $arResult["ITEMS_TIMESTAMP_X"] = $time; } } $arResult["ITEMS"][$intKey] = $arItem; $arResult["ELEMENTS"][$intKey] = $arItem["ID"]; $arElementLink[$arItem['ID']] =& $arResult["ITEMS"][$intKey]; $intKey++; } $arResult['MODULES'] = $arResultModules; $navComponentParameters = array(); if ($arParams["PAGER_BASE_LINK_ENABLE"] === "Y") { $pagerBaseLink = trim($arParams["PAGER_BASE_LINK"]); if ($pagerBaseLink === "") { $pagerBaseLink = $arResult["SECTION_PAGE_URL"];
if ($arParams["ADD_SECTIONS_CHAIN"] && !empty($arResult["SECTION"]["PATH"]) && is_array($arResult["SECTION"]["PATH"])) { foreach($arResult["SECTION"]["PATH"] as $arPath) { if ($arPath["IPROPERTY_VALUES"]["SECTION_PAGE_TITLE"] != "") $APPLICATION->AddChainItem($arPath["IPROPERTY_VALUES"]["SECTION_PAGE_TITLE"], $arPath["~SECTION_PAGE_URL"]); else $APPLICATION->AddChainItem($arPath["NAME"], $arPath["~SECTION_PAGE_URL"]); } } if ($arParams["ADD_ELEMENT_CHAIN"]) { if ($arResult["IPROPERTY_VALUES"]["ELEMENT_PAGE_TITLE"] != "") $APPLICATION->AddChainItem($arResult["IPROPERTY_VALUES"]["ELEMENT_PAGE_TITLE"]); else $APPLICATION->AddChainItem($arResult["NAME"]); } if ($arParams["SET_LAST_MODIFIED"] && $arResult["TIMESTAMP_X"]) { Context::getCurrent()->getResponse()->setLastModified(DateTime::createFromUserTime($arResult["TIMESTAMP_X"])); } return $arResult["ID"]; } else { return 0; } ?>
function SearchDateChatMessage($searchDate, $chatId, $bTimeZone = true) { global $DB; $chatId = IntVal($chatId); $sqlHelper = Bitrix\Main\Application::getInstance()->getConnection()->getSqlHelper(); try { $dateStart = \Bitrix\Main\Type\DateTime::createFromUserTime($searchDate); $sqlDateStart = $sqlHelper->getCharToDateFunction($dateStart->format("Y-m-d H:i:s")); $dateEnd = $dateStart->add('1 DAY'); $sqlDateEnd = $sqlHelper->getCharToDateFunction($dateEnd->format("Y-m-d H:i:s")); } catch (\Bitrix\Main\ObjectException $e) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_HISTORY_SEARCH_DATE_EMPTY"), "ERROR_SEARCH_EMPTY"); return false; } $limitById = ''; $ar = \CIMChat::GetRelationById($chatId, $this->user_id); if ($ar && $ar['START_ID'] > 0) { $limitById = 'AND M.ID >= ' . intval($ar['START_ID']); } if (!$bTimeZone) { CTimeZone::Disable(); } $strSql = "\n\t\t\tSELECT\n\t\t\t\tM.ID,\n\t\t\t\tM.CHAT_ID,\n\t\t\t\tM.MESSAGE,\n\t\t\t\t" . $DB->DatetimeToTimestampFunction('M.DATE_CREATE') . " DATE_CREATE,\n\t\t\t\tM.AUTHOR_ID\n\t\t\tFROM b_im_relation R1\n\t\t\tINNER JOIN b_im_message M ON M.CHAT_ID = R1.CHAT_ID\n\t\t\tWHERE\n\t\t\t\tR1.USER_ID = " . $this->user_id . "\n\t\t\tAND R1.CHAT_ID = " . $chatId . "\n\t\t\tAND R1.MESSAGE_TYPE <> '" . IM_MESSAGE_PRIVATE . "'\n\t\t\tAND M.DATE_CREATE >= " . $sqlDateStart . " AND M.DATE_CREATE <= " . $sqlDateEnd . "\n\t\t\t\t" . $limitById . "\n\t\t\tORDER BY M.DATE_CREATE DESC, M.ID DESC\n\t\t"; if (!$bTimeZone) { CTimeZone::Enable(); } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $arMessages = array(); $arMessageId = array(); $arUnreadMessage = array(); $usersMessage = array(); $CCTP = new CTextParser(); $CCTP->MaxStringLen = 200; $CCTP->allow = array("HTML" => "N", "ANCHOR" => $this->bHideLink ? "N" : "Y", "BIU" => "Y", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "LIST" => "N", "SMILES" => $this->bHideLink ? "N" : "Y", "NL2BR" => "Y", "VIDEO" => "N", "TABLE" => "N", "CUT_ANCHOR" => "N", "ALIGN" => "N"); while ($arRes = $dbRes->Fetch()) { $arMessages[$arRes['ID']] = array('id' => $arRes['ID'], 'chatId' => $arRes['CHAT_ID'], 'senderId' => $arRes['AUTHOR_ID'], 'recipientId' => $arRes['CHAT_ID'], 'date' => $arRes['DATE_CREATE'], 'text' => $CCTP->convertText(htmlspecialcharsbx($arRes['MESSAGE']))); $usersMessage[$arRes['CHAT_ID']][] = $arRes['ID']; $arMessageId[] = $arRes['ID']; } $params = CIMMessageParam::Get($arMessageId); $arFiles = array(); foreach ($params as $messageId => $param) { $arMessages[$messageId]['params'] = $param; if (isset($param['FILE_ID'])) { foreach ($param['FILE_ID'] as $fileId) { $arFiles[$fileId] = $fileId; } } } $arMessageFiles = CIMDisk::GetFiles($chatId, $arFiles); return array('chatId' => $chatId, 'message' => $arMessages, 'unreadMessage' => $arUnreadMessage, 'usersMessage' => $usersMessage, 'files' => $arMessageFiles); }
public static function checkFilter(Main\HttpRequest $request) { $filter = array(); if (!empty($request['filter']['filter_type'])) { switch ($request['filter']['filter_type']) { case 'id': if (isset($request['filter']['order_id_from']) && (int) $request['filter']['order_id_from'] > 0) { $filter['>=ID'] = (int) $request['filter']['order_id_from']; } if (isset($request['filter']['order_id_to']) && (int) $request['filter']['order_id_to'] > 0) { $filter['<=ID'] = (int) $request['filter']['order_id_to']; } break; case 'date': CTimeZone::Disable(); if (isset($request['filter']['order_date_from']) && is_string($request['filter']['order_date_from'])) { $date = trim($request['filter']['order_date_from']); if ($date != '') { try { $filter['>=DATE_INSERT'] = Main\Type\DateTime::createFromUserTime($date); } catch (Main\ObjectException $e) { } } unset($date); } if (isset($request['filter']['order_date_to']) && is_string($request['filter']['order_date_to'])) { $date = trim($request['filter']['order_date_to']); if ($date != '') { try { $filter['<=DATE_INSERT'] = Main\Type\DateTime::createFromUserTime($date); } catch (Main\ObjectException $e) { } } unset($date); } CTimeZone::Enable(); break; } } return $filter; }
public static function update($primary, array $data) { $entityName = static::getEntity()->getName(); $hlblock = HighloadBlockTable::getList(array('select' => array('ID'), 'filter' => array('=NAME' => $entityName)))->fetch(); // add other fields $fields = $GLOBALS['USER_FIELD_MANAGER']->getUserFields('HLBLOCK_' . $hlblock['ID']); foreach ($data as $k => $v) { $arUserField = $fields[$k]; if (is_callable(array($arUserField["USER_TYPE"]["CLASS_NAME"], "onbeforesave"))) { if ($arUserField["USER_TYPE"]['BASE_TYPE'] == 'file' && !empty($v['old_id']) && $v['error'] === 4) { // no files changed. dear uf manager, please keep current file $arUserField['VALUE'] = $v; } $data[$k] = call_user_func_array(array($arUserField["USER_TYPE"]["CLASS_NAME"], "onbeforesave"), array($arUserField, $data[$k])); } if (strlen($data[$k]) <= 0) { $data[$k] = false; } else { // convert string datetime to DateTime object if ($arUserField['USER_TYPE_ID'] == 'datetime') { try { $data[$k] = Type\DateTime::createFromUserTime($v); } catch (Main\ObjectException $e) { $data[$k] = ''; } } } } return parent::update($primary, $data); }
/** * Returns time object in server timezone * * @param $userfield * @param $value * * @return Type\DateTime|string */ public static function onBeforeSave($userfield, $value) { if (strlen($value) && !$value instanceof Type\DateTime) { $value = Type\DateTime::createFromUserTime($value); } return $value; }