public function fetch(\Bitrix\Main\Text\Converter $converter = null) { if ($this->trackerQuery != null) { $this->trackerQuery->restartQuery(); } $dataTmp = $this->fetchRowInternal(); if ($this->trackerQuery != null) { $this->trackerQuery->refinishQuery(); } if (!$dataTmp) { return false; } $resultFields = $this->getResultFields(); if ($resultFields !== null) { $data = array(); foreach ($dataTmp as $key => $value) { $data[$resultFields[$key]["name"]] = $this->convertDataFromDb($value, $resultFields[$key]["type"]); } } else { $data = $dataTmp; } if (!empty($this->arSerializedFields)) { foreach ($this->arSerializedFields as $field) { if (isset($data[$field])) { $data[$field] = unserialize($data[$field]); } } } if (!empty($this->arReplacedAliases)) { foreach ($this->arReplacedAliases as $tech => $human) { $data[$human] = $data[$tech]; unset($data[$tech]); } } if ($this->fetchDataModifier != null) { $c = $this->fetchDataModifier; $data = $c($data); } if ($converter != null) { foreach ($data as $key => $val) { $data[$key] = $converter->encode($val, isset($data[$key . "_TYPE"]) ? $data[$key . "_TYPE"] : \Bitrix\Main\Text\Converter::TEXT); } } return $data; }
/** * Fetches one row of the query result and returns it in the associative array of converted data or false on empty data. * * @param \Bitrix\Main\Text\Converter $converter Optional converter to encode data on fetching. * * @return array|false */ public function fetch(\Bitrix\Main\Text\Converter $converter = null) { $data = $this->fetchRaw(); if (!$data) { return false; } if ($this->converters) { foreach ($this->converters as $field => $convertDataModifier) { $data[$field] = call_user_func_array($convertDataModifier, array($data[$field])); } } if ($this->serializedFields) { foreach ($this->serializedFields as $field) { if (isset($data[$field])) { $data[$field] = unserialize($data[$field]); } } } if ($this->replacedAliases) { foreach ($this->replacedAliases as $tech => $human) { $data[$human] = $data[$tech]; unset($data[$tech]); } } if ($this->fetchDataModifiers) { foreach ($this->fetchDataModifiers as $fetchDataModifier) { $result = call_user_func_array($fetchDataModifier, array(&$data)); if (is_array($result)) { $data = $result; } } } if ($converter != null) { foreach ($data as $key => $val) { $data[$key] = $converter->encode($val, isset($data[$key . "_TYPE"]) ? $data[$key . "_TYPE"] : \Bitrix\Main\Text\Converter::TEXT); } } return $data; }