public function requestQuestionValueList($fbUserId, $questionNameList = null, $userId = null) { $fieldDtoList = empty($questionNameList) ? $this->fieldDao->findAll() : $this->fieldDao->findListByQuestionList($questionNameList); $converterList = array(); $fbFields = array(); foreach ($fieldDtoList as $fieldDto) { /* @var $fieldDto FBCONNECT_BOL_Field */ $allowedFBFields = $this->getPossibleFbFieldList($fieldDto->question); if (in_array($fieldDto->fbField, $allowedFBFields)) { $fbFields[$fieldDto->fbField] = $fieldDto->fbField; } } $fbFields = array_values($fbFields); $fbFieldValues = $this->fbGetFieldValueList($fbUserId, $fbFields); $out = array(); foreach ($fieldDtoList as $fieldDto) { /* @var $fieldDto FBCONNECT_BOL_Field */ if (empty($fbFieldValues[$fieldDto->fbField])) { continue; } $class = $fieldDto->converter; if (empty($converterList[$class])) { $converter = new $class($userId); } $out[$fieldDto->question] = $converter->convert($fieldDto->question, $fieldDto->fbField, $fbFieldValues[$fieldDto->fbField]); } return $out; }