Error

Call to a member function getNodeAsArray() on null

/data/webdev/master/application/models/services/ThemeQuestionAttributeProvider.php(46)

34      * @param string $questionType   the extended typ (see table question_themes "extends")
35      * @return array<string,array> additional attributes for an extended theme or empty array
36      */
37     protected function getAttributesFromQuestionTheme($questionThemeName, $questionType)
38     {
39         /** @var array<string,array> An array of question attributes */
40         $attributes = array();
41 
42         $questionTheme = \QuestionTheme::model()->findByAttributes([], 'name = :name AND extends = :extends', ['name' => $questionThemeName, 'extends' => $questionType]);
43         if ($questionTheme !== null) {
44             $xmlFilePath = $questionTheme['xml_path'] . '/config.xml';
45             $extensionConfig = \ExtensionConfig::loadFromFile($xmlFilePath);
46             $xmlAttributes = $extensionConfig->getNodeAsArray('attributes');
47         }
48 
49         if (!empty($xmlAttributes)) {
50             if (!empty($xmlAttributes['attribute']['name'])) {
51                 // Only one attribute set in config: need an array of attributes
52                 $xmlAttributes['attribute'] = array($xmlAttributes['attribute']);
53             }
54             // Create array of attribute with name as key
55             foreach ($xmlAttributes['attribute'] as $attribute) {
56                 if (!empty($attribute['name'])) {
57                     $attributes[$attribute['name']] = array_merge(self::getBaseDefinition(), $attribute);
58                 }

Stack Trace

#0
+
 /data/webdev/master/application/models/services/ThemeQuestionAttributeProvider.php(26): LimeSurvey\Models\Services\ThemeQuestionAttributeProvider->getAttributesFromQuestionTheme()
21         $questionType = self::getQuestionType($options);
22         if (empty($questionType)) {
23             return [];
24         }
25 
26         return $this->getAttributesFromQuestionTheme($questionTheme, $questionType);
27     }
28 
29     /**
30      * Gets the additional attributes for an extended theme from xml file.
31      * If there are no attributes, an empty array is returned
#1
+
 /data/webdev/master/application/models/services/QuestionAttributeFetcher.php(52): LimeSurvey\Models\Services\ThemeQuestionAttributeProvider->getDefinitions()
47         $allAttributes = [];
48 
49         // We retrieve the attributes from each provider, sanitize them, and merge them.
50         foreach ($this->providers as $provider) {
51             $options = array_merge($this->options, ['question' => $this->question]);
52             $attributes = $provider->getDefinitions($options);
53             $sanitizedAttributes = $questionAttributeHelper->sanitizeQuestionAttributes($attributes);
54             $allAttributes = $questionAttributeHelper->mergeQuestionAttributes($allAttributes, $sanitizedAttributes);
55         }
56 
57         // Sort by category
#2
+
 /data/webdev/master/application/models/services/QuestionAttributeHelper.php(216): LimeSurvey\Models\Services\QuestionAttributeFetcher->fetch()
211         $questionAttributeFetcher->setAdvancedOnly($advancedOnly);
212         if (!empty($questionThemeOverride)) {
213             $questionAttributeFetcher->setTheme($questionThemeOverride);
214         }
215 
216         $questionAttributeDefinitions = $questionAttributeFetcher->fetch();
217         $questionAttributesWithValues = $questionAttributeFetcher->populateValues($questionAttributeDefinitions, $language);
218 
219         return $questionAttributesWithValues;
220     }
221 
2022-04-12 18:03:43 nginx/1.18.0 Yii Framework/1.1.24-dev