/** * Возвращает список полей по списку ID топиков * * @param array $aTopicId Список ID топиков * * @return array * @TODO рефакторинг + solid */ public function GetTopicValuesByArrayId($aTopicId) { if (!$aTopicId) { return array(); } if (!is_array($aTopicId)) { $aTopicId = array($aTopicId); } $aTopicId = array_unique($aTopicId); $aValues = array(); $s = join(',', $aTopicId); if (false === ($data = E::ModuleCache()->Get("topic_values_{$s}"))) { $data = $this->oMapper->GetTopicValuesByArrayId($aTopicId); foreach ($data as $oValue) { $aValues[$oValue->getTargetId()][$oValue->getFieldId()] = $oValue; } E::ModuleCache()->Set($aValues, "topic_values_{$s}", array('topic_new', 'topic_update'), 60 * 60 * 24 * 1); return $aValues; } return $data; }