Auth_OpenID_FileStore::getAssociation PHP Method

getAssociation() public method

Retrieve an association. If no handle is specified, return the association with the most recent issue time.
public getAssociation ( $server_url, $handle = null ) : mixed
return mixed $association
    function getAssociation($server_url, $handle = null)
    {
        if (!$this->active) {
            trigger_error("FileStore no longer active", E_USER_ERROR);
            return null;
        }
        if ($handle === null) {
            $handle = '';
        }
        // The filename with the empty handle is a prefix of all other
        // associations for the given server URL.
        $filename = $this->getAssociationFilename($server_url, $handle);
        if ($handle) {
            return $this->_getAssociation($filename);
        } else {
            $association_files = Auth_OpenID_FileStore::_listdir($this->association_dir);
            $matching_files = array();
            // strip off the path to do the comparison
            $name = basename($filename);
            foreach ($association_files as $association_file) {
                $base = basename($association_file);
                if (strpos($base, $name) === 0) {
                    $matching_files[] = $association_file;
                }
            }
            $matching_associations = array();
            // read the matching files and sort by time issued
            foreach ($matching_files as $full_name) {
                $association = $this->_getAssociation($full_name);
                if ($association !== null) {
                    $matching_associations[] = array($association->issued, $association);
                }
            }
            $issued = array();
            $assocs = array();
            foreach ($matching_associations as $key => $assoc) {
                $issued[$key] = $assoc[0];
                $assocs[$key] = $assoc[1];
            }
            array_multisort($issued, SORT_DESC, $assocs, SORT_DESC, $matching_associations);
            // return the most recently issued one.
            if ($matching_associations) {
                list($issued, $assoc) = $matching_associations[0];
                return $assoc;
            } else {
                return null;
            }
        }
    }