Example #1
0
 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;
     }
 }