Determines the fields to translate on the given class
public static translated_fields_for ( $class ) : array | ||
return | array | List of field names and data types |
/** * Get all database fields to translate * * @param string $class Class name * @return array List of translated fields */ public function getTranslatedFields($class) { if (isset($this->translatedFields[$class])) { return $this->translatedFields[$class]; } $fields = array(); $hierarchy = ClassInfo::ancestry($class); foreach ($hierarchy as $class) { // Skip classes without tables if (!DataObject::has_own_table($class)) { continue; } // Check translated fields for this class $translatedFields = FluentExtension::translated_fields_for($class); if (empty($translatedFields)) { continue; } // Save fields $fields = array_merge($fields, array_keys($translatedFields)); } $this->translatedFields[$class] = $fields; return $fields; }
public function augmentSearch(SQLQuery &$query, DataQuery &$dataQuery = null) { // Skip non-search queries if (!($searchFilter = $this->getSearchFilter($query))) { return; } // Check translated columns on the searched class, making sure it's in the allowed search list $class = $this->getClass($query); if (empty($class) || !isset(self::$keyword_patterns[$class])) { return; } // Extract keywords $this->getSearchParameters($class, $searchFilter, $keywords, $keywordsHTML, $booleanMode); if (empty($keywords)) { return; } // Augment selected columns $translatedColumns = array_keys(FluentExtension::translated_fields_for($class)); $this->augmentSelect($class, $translatedColumns, $query, $keywords, $keywordsHTML); // Augment filter columns $this->augmentFilter($class, $translatedColumns, $query, $keywords, $keywordsHTML, $booleanMode); }