Skip to content

Commit

Permalink
Fixed issue #18135: Cant get all question attributes with API (Postma…
Browse files Browse the repository at this point in the history
…n) (#2445)
  • Loading branch information
gabrieljenik committed Jun 7, 2022
1 parent b4fe7fd commit 7d98b92
Showing 1 changed file with 20 additions and 14 deletions.
34 changes: 20 additions & 14 deletions application/helpers/remotecontrol/remotecontrol_handle.php
Expand Up @@ -1654,26 +1654,32 @@ public function get_question_properties($sSessionKey, $iQuestionID, $aQuestionSe
$aResult[$sPropertyName] = 'No available answers';
}
} elseif ($sPropertyName == 'attributes') {
$oAttributes = QuestionAttribute::model()->findAllByAttributes(array('qid' => $iQuestionID, 'language' => null), array('order' => 'attribute'));
if (count($oAttributes) > 0) {
$aData = array();
foreach ($oAttributes as $oAttribute) {
$aData[$oAttribute['attribute']] = $oAttribute['value'];
$questionAttributeHelper = new LimeSurvey\Models\Services\QuestionAttributeHelper();
$questionAttributes = $questionAttributeHelper->getQuestionAttributesWithValues($oQuestion, null, null, true);
$data = [];
foreach ($questionAttributes as $attributeName => $attributeData) {
if (empty($attributeData['i18n'])) {
$data[$attributeName] = $attributeData['value'];
}

$aResult['attributes'] = $aData;
}
if (count($data) > 0) {
ksort($data, SORT_NATURAL | SORT_FLAG_CASE);
$aResult['attributes'] = $data;
} else {
$aResult['attributes'] = 'No available attributes';
}
} elseif ($sPropertyName == 'attributes_lang') {
$oAttributes = QuestionAttribute::model()->findAllByAttributes(array('qid' => $iQuestionID, 'language' => $sLanguage), array('order' => 'attribute'));
if (count($oAttributes) > 0) {
$aData = array();
foreach ($oAttributes as $oAttribute) {
$aData[$oAttribute['attribute']] = $oAttribute['value'];
$questionAttributeHelper = new LimeSurvey\Models\Services\QuestionAttributeHelper();
$questionAttributes = $questionAttributeHelper->getQuestionAttributesWithValues($oQuestion, $sLanguage, null, true);
$data = [];
foreach ($questionAttributes as $attributeName => $attributeData) {
if (!empty($attributeData['i18n'])) {
$data[$attributeName] = $attributeData[$sLanguage]['value'];
}

$aResult['attributes_lang'] = $aData;
}
if (count($data) > 0) {
ksort($data, SORT_NATURAL | SORT_FLAG_CASE);
$aResult['attributes_lang'] = $data;
} else {
$aResult['attributes_lang'] = 'No available attributes';
}
Expand Down

0 comments on commit 7d98b92

Please sign in to comment.