⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ax.php

📁 简介:IceBB是一个强大
💻 PHP
📖 第 1 页 / 共 3 页
字号:
                                $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;    }    /**     * Get a single value for an attribute. If no value was sent for     * this attribute, use the supplied default. If there is more than     * one value for this attribute, this method will fail.     *     * @param type_uri: The URI for the attribute     * @param default: The value to return if the attribute was not     * sent in the fetch_response.     *     * @return $value Auth_OpenID_AX_Error on failure or the value of     * the attribute in the fetch_response message, or the default     * supplied     */    function getSingle($type_uri, $default=null)    {        $values = Auth_OpenID::arrayGet($this->data, $type_uri);        if (!$values) {            return $default;        } else if (count($values) == 1) {            return $values[0];        } else {            return new Auth_OpenID_AX_Error(              sprintf('More than one value present for %s',                      $type_uri)              );        }    }    /**     * Get the list of values for this attribute in the     * fetch_response.     *     * XXX: what to do if the values are not present? default     * parameter? this is funny because it's always supposed to return     * a list, so the default may break that, though it's provided by     * the user's code, so it might be okay. If no default is     * supplied, should the return be None or []?     *     * @param type_uri: The URI of the attribute     *     * @return $values The list of values for this attribute in the     * response. May be an empty list.  If the attribute was not sent     * in the response, returns Auth_OpenID_AX_Error.     */    function get($type_uri)    {        if (array_key_exists($type_uri, $this->data)) {            return $this->data[$type_uri];        } else {            return new Auth_OpenID_AX_Error(              sprintf("Type URI %s not found in response",                      $type_uri)              );        }    }    /**     * Get the number of responses for a particular attribute in this     * fetch_response message.     *     * @param type_uri: The URI of the attribute     *     * @returns int The number of values sent for this attribute.  If     * the attribute was not sent in the response, returns     * Auth_OpenID_AX_Error.     */    function count($type_uri)    {        if (array_key_exists($type_uri, $this->data)) {            return count($this->get($type_uri));        } else {            return new Auth_OpenID_AX_Error(              sprintf("Type URI %s not found in response",                      $type_uri)              );        }    }}/** * A fetch_response attribute exchange message. * * @package OpenID */class Auth_OpenID_AX_FetchResponse extends Auth_OpenID_AX_KeyValueMessage {    var $mode = 'fetch_response';    function Auth_OpenID_AX_FetchResponse($update_url=null)    {        $this->Auth_OpenID_AX_KeyValueMessage();        $this->update_url = $update_url;    }    /**     * Serialize this object into arguments in the attribute exchange     * namespace     *     * @return $args The dictionary of unqualified attribute exchange     * arguments that represent this fetch_response, or     * Auth_OpenID_AX_Error on error.     */    function getExtensionArgs(&$request)    {        $aliases = new Auth_OpenID_NamespaceMap();        $zero_value_types = array();        if ($request !== null) {            // Validate the data in the context of the request (the            // same attributes should be present in each, and the            // counts in the response must be no more than the counts            // in the request)            foreach ($this->data as $type_uri => $unused) {                if (!$request->contains($type_uri)) {                    return new Auth_OpenID_AX_Error(                      sprintf("Response attribute not present in request: %s",                              $type_uri)                      );                }            }            foreach ($request->iterAttrs() as $attr_info) {                // Copy the aliases from the request so that reading                // the response in light of the request is easier                if ($attr_info->alias === null) {                    $aliases->add($attr_info->type_uri);                } else {                    $alias = $aliases->addAlias($attr_info->type_uri,                                                $attr_info->alias);                    if ($alias === null) {                        return new Auth_OpenID_AX_Error(                          sprintf("Could not add alias %s for URI %s",                                  $attr_info->alias, $attr_info->type_uri)                          );                    }                }                if (array_key_exists($attr_info->type_uri, $this->data)) {                    $values = $this->data[$attr_info->type_uri];                } else {                    $values = array();                    $zero_value_types[] = $attr_info;                }                if (($attr_info->count != Auth_OpenID_AX_UNLIMITED_VALUES) &&                    ($attr_info->count < count($values))) {                    return new Auth_OpenID_AX_Error(                      sprintf("More than the number of requested values " .                              "were specified for %s",                              $attr_info->type_uri)                      );                }            }        }        $kv_args = $this->_getExtensionKVArgs($aliases);        // Add the KV args into the response with the args that are        // unique to the fetch_response        $ax_args = $this->_newArgs();        // For each requested attribute, put its type/alias and count        // into the response even if no data were returned.        foreach ($zero_value_types as $attr_info) {            $alias = $aliases->getAlias($attr_info->type_uri);            $kv_args['type.' . $alias] = $attr_info->type_uri;            $kv_args['count.' . $alias] = '0';        }        $update_url = null;        if ($request) {            $update_url = $request->update_url;        } else {            $update_url = $this->update_url;        }        if ($update_url) {            $ax_args['update_url'] = $update_url;        }        Auth_OpenID::update(&$ax_args, $kv_args);        return $ax_args;    }    /**     * @return $result Auth_OpenID_AX_Error on failure or true on     * success.     */    function parseExtensionArgs($ax_args)    {        $result = parent::parseExtensionArgs($ax_args);        if (Auth_OpenID_AX::isError($result)) {            return $result;        }        $this->update_url = Auth_OpenID::arrayGet($ax_args, 'update_url');        return true;    }    /**     * Construct a FetchResponse object from an OpenID library     * SuccessResponse object.     *     * @param success_response: A successful id_res response object     *     * @param signed: Whether non-signed args should be processsed. If     * True (the default), only signed arguments will be processsed.     *     * @return $response A FetchResponse containing the data from the     * OpenID message     */    function &fromSuccessResponse($success_response, $signed=true)    {        $obj = new Auth_OpenID_AX_FetchResponse();        if ($signed) {            $ax_args = $success_response->getSignedNS($obj->ns_uri);        } else {            $ax_args = $success_response->message->getArgs($obj->ns_uri);        }        return $obj->parseExtensionArgs($ax_args);    }}/** * A store request attribute exchange message representation. * * @package OpenID */class Auth_OpenID_AX_StoreRequest extends Auth_OpenID_AX_KeyValueMessage {    var $mode = 'store_request';    /**     * @param array $aliases The namespace aliases to use when making     * this store response. Leave as None to use defaults.     */    function getExtensionArgs($aliases=null)    {        $ax_args = $this->_newArgs();        $kv_args = $this->_getExtensionKVArgs($aliases);        Auth_OpenID::update(&$ax_args, $kv_args);        return $ax_args;    }}/** * An indication that the store request was processed along with this * OpenID transaction.  Use make(), NOT the constructor, to create * response objects. * * @package OpenID */class Auth_OpenID_AX_StoreResponse extends Auth_OpenID_AX_Message {    var $SUCCESS_MODE = 'store_response_success';    var $FAILURE_MODE = 'store_response_failure';    /**     * Returns Auth_OpenID_AX_Error on error or an     * Auth_OpenID_AX_StoreResponse object on success.     */    function &make($succeeded=true, $error_message=null)    {        if (($succeeded) && ($error_message !== null)) {            return new Auth_OpenID_AX_Error('An error message may only be '.                                    'included in a failing fetch response');        }        return new Auth_OpenID_AX_StoreResponse($succeeded, $error_message);    }    function Auth_OpenID_AX_StoreResponse($succeeded=true, $error_message=null)    {        if ($succeeded) {            $this->mode = $this->SUCCESS_MODE;        } else {            $this->mode = $this->FAILURE_MODE;        }        $this->error_message = $error_message;    }    /**     * Was this response a success response?     */    function succeeded()    {        return $this->mode == $this->SUCCESS_MODE;    }    function getExtensionArgs()    {        $ax_args = $this->_newArgs();        if ((!$this->succeeded()) && $this->error_message) {            $ax_args['error'] = $this->error_message;        }        return $ax_args;    }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -