public static function fetchConfigurationForObject( $objectID,
                                                        $groupByLanguage = true,
                                                        $languageCode = null,
                                                        $limit = null,
                                                        $countOnly = false,
                                                        $searchQuery = null )
    {
        if ( ! is_numeric( $objectID ) )
            return null;

        $fieldFilters = $custom = null;
        $asObject = true;
        $results = array();
        $sortClause = $groupByLanguage ? array( 'language_code' => 'asc' ) : null;

        $conds = array( 'contentobject_id' => $objectID );
        if ( $languageCode and $languageCode !== '' )
            $conds['language_code'] = array( array( $languageCode, self::WILDCARD ) );

        if ( $searchQuery )
        {
            if ( !is_array( $searchQuery ) and $searchQuery != '' )
            {
                $conds['search_query'] = $searchQuery;
            }
            elseif ( array_key_exists( 'searchQuery', $searchQuery ) and $searchQuery['searchQuery'] != '' )
            {
                $conds['search_query'] = $searchQuery['fuzzy'] === true ? array( 'like', "%{$searchQuery['searchQuery']}%" ) : $searchQuery['searchQuery'];
            }
        }

        if ( $countOnly )
        {
            return parent::count( self::definition(), $conds );
        }
        else
        {
            $rows = parent::fetchObjectList( self::definition(), $fieldFilters, $conds, $sortClause, $limit, $asObject, false, $custom );
            foreach ( $rows as $row )
            {
                if ( $groupByLanguage )
                {
                    $results[$row->attribute( 'language_code' )][] = $row;
                }
                else
                {
                    $results[] = $row;
                }
            }
            return $results;
        }
    }