API::parseDropdowns PHP Méthode

parseDropdowns() protected static méthode

transform array of fields passed in parameter : change value from integer id to string name of foreign key You can pass an array of array, this method is recursive.
protected static parseDropdowns ( $fields, $params = [] ) : array
$fields array to check and transform
Résultat array altered $fields
    protected static function parseDropdowns($fields, $params = array())
    {
        // default params
        $default = array('expand_dropdowns' => false, 'get_hateoas' => true);
        $params = array_merge($default, $params);
        // parse fields recursively
        foreach ($fields as $key => &$value) {
            if (is_array($value)) {
                $value = self::parseDropdowns($value);
            }
            if (is_integer($key)) {
                continue;
            }
            if (isForeignKeyField($key)) {
                // specific key transformations
                if ($key == "items_id" && isset($fields['itemtype'])) {
                    $key = getForeignKeyFieldForItemType($fields['itemtype']);
                }
                if ($key == "auths_id" && isset($fields['authtype']) && $fields['authtype'] == Auth::LDAP) {
                    $key = "authldaps_id";
                }
                if ($key == "default_requesttypes_id") {
                    $key = "requesttypes_id";
                }
                if (!empty($value) || $key == 'entities_id' && $value >= 0) {
                    $tablename = getTableNameForForeignKeyField($key);
                    $itemtype = getItemTypeForTable($tablename);
                    // get hateoas
                    if ($params['get_hateoas']) {
                        $fields['links'][] = array('rel' => $itemtype, 'href' => self::$api_url . "/{$itemtype}/" . $value);
                    }
                    // expand dropdown
                    if ($params['expand_dropdowns']) {
                        $value = Dropdown::getDropdownName($tablename, $value);
                        // fix value for inexistent items
                        if ($value == " ") {
                            $value = "";
                        }
                    }
                }
            }
        }
        return $fields;
    }