Auth_OpenID_AX_KeyValueMessage::parseExtensionArgs PHP Méthode

parseExtensionArgs() public méthode

Parse attribute exchange key/value arguments into this object.
public parseExtensionArgs ( $ax_args ) : Auth_OpenID_AX_Error
Résultat Auth_OpenID_AX_Error or true
    function parseExtensionArgs($ax_args)
    {
        $result = $this->_checkMode($ax_args);
        if (Auth_OpenID_AX::isError($result)) {
            return $result;
        }
        $aliases = new Auth_OpenID_NamespaceMap();
        foreach ($ax_args as $key => $value) {
            if (strpos($key, 'type.') === 0) {
                $type_uri = $value;
                $alias = substr($key, 5);
                $result = Auth_OpenID_AX_checkAlias($alias);
                if (Auth_OpenID_AX::isError($result)) {
                    return $result;
                }
                $alias = $aliases->addAlias($type_uri, $alias);
                if ($alias === null) {
                    return new Auth_OpenID_AX_Error(sprintf("Could not add alias %s for URI %s", $alias, $type_uri));
                }
            }
        }
        foreach ($aliases->iteritems() as $pair) {
            list($type_uri, $alias) = $pair;
            if (array_key_exists('count.' . $alias, $ax_args) && $ax_args['count.' . $alias] !== Auth_OpenID_AX_UNLIMITED_VALUES) {
                $count_key = 'count.' . $alias;
                $count_s = $ax_args[$count_key];
                $count = Auth_OpenID::intval($count_s);
                if ($count === false) {
                    return new Auth_OpenID_AX_Error(sprintf("Integer value expected for %s, got %s", 'count. %s' . $alias, $count_s, Auth_OpenID_AX_UNLIMITED_VALUES));
                }
                $values = array();
                for ($i = 1; $i < $count + 1; $i++) {
                    $value_key = sprintf('value.%s.%d', $alias, $i);
                    if (!array_key_exists($value_key, $ax_args)) {
                        return new Auth_OpenID_AX_Error(sprintf("No value found for key %s", $value_key));
                    }
                    $value = $ax_args[$value_key];
                    $values[] = $value;
                }
            } else {
                $key = 'value.' . $alias;
                if (!array_key_exists($key, $ax_args)) {
                    return new Auth_OpenID_AX_Error(sprintf("No value found for key %s", $key));
                }
                $value = $ax_args['value.' . $alias];
                if ($value == '') {
                    $values = array();
                } else {
                    $values = array($value);
                }
            }
            $this->data[$type_uri] = $values;
        }
        return true;
    }

Usage Example

 function test_longAlias()
 {
     // Spec minimum length is 32 characters.  This is a silly test
     // for this library, but it's here for completeness.
     $alias = str_repeat('x', Auth_OpenID_AX_MINIMUM_SUPPORTED_ALIAS_LENGTH);
     $msg = new Auth_OpenID_AX_KeyValueMessage();
     $result = $msg->parseExtensionArgs(array('type.' . $alias => 'urn:foo', 'count.' . $alias => '1', 'value.' . $alias . '.1' => 'first'));
     $this->assertFalse(Auth_OpenID_AX::isError($result));
 }
All Usage Examples Of Auth_OpenID_AX_KeyValueMessage::parseExtensionArgs