function GetRelatedArray($field) { if ($relatedModule = $this->schema[$field]['relatedModule']) { $relatedModuleConfig = Module::ParseConfigFile($relatedModule, 'config/config.ini', true); // Look for keyQuery.ini if ($relatedQueryParams = Module::ParseConfigFile($relatedModule, 'config/keyQuery.ini', true)) { // Fetch array using specified query $relatedQuery = new Query($relatedQueryParams); } else { if (!($keyField = $relatedModuleConfig['keyField'])) { // If no key field was specified in config file, use first field $relatedModuleSchema = Module::ParseConfigFile($relatedModule, 'config/schema.ini', true); reset($relatedModuleSchema); $keyField = key($relatedModuleSchema); } // If we do find a key field, build query according to that if ($keyField) { $params = array(); if ($relatedModuleConfig['keepVersions']) { $params['fields']['id'] = 'IF(master IS NULL, id, master)'; } else { $params['fields']['id'] = 'id'; } $params['fields'][] = $keyField; $relatedQuery = new Query($params); } } // If we successfuly built a query, fetch data if ($relatedQuery) { $relatedQuery->AddFrom($relatedModule); // Manage versions if ($relatedModuleConfig['keepVersions']) { $relatedQuery->AddWhere($relatedModule . '.current = TRUE'); } return $relatedQuery->GetSimpleArray(); } } elseif ($relatedArray = $this->schema[$field]['relatedArray']) { // Array is specified in a config file $relatedArrays = IniFile::Parse($this->modulePath . 'config/relatedArrays.ini', true); $relatedData = $relatedArrays[$relatedArray]; // Look for localized strings foreach ($relatedData as $key => $label) { if ($string = $this->strings[$relatedArray][$label]) { $relatedData[$key] = $string; } } return $relatedData; } else { return false; } }