public function getDerivedFields()
    {
        if ($this->derivedFields === null) {
            $this->derivedFields = array();

            foreach ($this->getFieldsIterator() as $name => $field) {
                if (count($field['lookup_chain']) < 2) {
                    continue;
                }

                $key = sha1($field['base'] . serialize($field['lookup_chain']));
                $fieldname = "{$field['class']}:{$field['field']}";

                if (isset($this->derivedFields[$key])) {
                    $this->derivedFields[$key]['fields'][$fieldname] = $fieldname;
                    SearchIntrospection::add_unique_by_ancestor($this->derivedFields['classes'], $field['class']);
                } else {
                    $chain = array_reverse($field['lookup_chain']);
                    array_shift($chain);

                    $this->derivedFields[$key] = array(
                        'base' => $field['base'],
                        'fields' => array($fieldname => $fieldname),
                        'classes' => array($field['class']),
                        'chain' => $chain
                    );
                }
            }
        }

        return $this->derivedFields;
    }
public function getDerivedFields()
    {
        if ($this->derivedFields === null) {
            $this->derivedFields = array();

            foreach ($this->getFieldsIterator() as $name => $field) {
                if (count($field['lookup_chain']) < 2) {
                    continue;
                }

                $key = sha1($field['base'] . serialize($field['lookup_chain']));
                $fieldname = "{$field['class']}:{$field['field']}";

                if (isset($this->derivedFields[$key])) {
                    $this->derivedFields[$key]['fields'][$fieldname] = $fieldname;
                    SearchIntrospection::add_unique_by_ancestor($this->derivedFields['classes'], $field['class']);
                } else {
                    $chain = array_reverse($field['lookup_chain']);
                    array_shift($chain);

                    $this->derivedFields[$key] = array(
                        'base' => $field['base'],
                        'fields' => array($fieldname => $fieldname),
                        'classes' => array($field['class']),
                        'chain' => $chain
                    );
                }
            }
        }

        return $this->derivedFields;
    }
public function getDerivedFields ( ) { if ( $ this -> derivedFields === null ) { $ this -> derivedFields = array ( ) ; foreach ( $ this -> getFieldsIterator ( ) as $ name => $ field ) { if ( count ( $ field [ 'lookup_chain' ] ) < 2 ) { continue ; } $ key = sha1 ( $ field [ 'base' ] . serialize ( $ field [ 'lookup_chain' ] ) ) ; $ fieldname = "{$field['class']}:{$field['field']}" ; if ( isset ( $ this -> derivedFields [ $ key ] ) ) { $ this -> derivedFields [ $ key ] [ 'fields' ] [ $ fieldname ] = $ fieldname ; SearchIntrospection :: add_unique_by_ancestor ( $ this -> derivedFields [ 'classes' ] , $ field [ 'class' ] ) ; } else { $ chain = array_reverse ( $ field [ 'lookup_chain' ] ) ; array_shift ( $ chain ) ; $ this -> derivedFields [ $ key ] = array ( 'base' => $ field [ 'base' ] , 'fields' => array ( $ fieldname => $ fieldname ) , 'classes' => array ( $ field [ 'class' ] ) , 'chain' => $ chain ) ; } } } return $ this -> derivedFields ; }
Returns an array where each member is all the fields and the classes that are at the end of some
specific lookup chain from one of the base classes
Returns an array where each member is all the fields and the classes that are at the end of some specific lookup chain from one of the base classes