forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			112 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			112 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * OpenID protocol key-value/comma-newline format parsing and
							 | 
						||
| 
								 | 
							
								 * serialization
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * PHP versions 4 and 5
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * LICENSE: See the COPYING file included in this distribution.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @access private
							 | 
						||
| 
								 | 
							
								 * @package OpenID
							 | 
						||
| 
								 | 
							
								 * @author JanRain, Inc. <openid@janrain.com>
							 | 
						||
| 
								 | 
							
								 * @copyright 2005-2008 Janrain, Inc.
							 | 
						||
| 
								 | 
							
								 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Container for key-value/comma-newline OpenID format and parsing
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class Auth_OpenID_KVForm {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Convert an OpenID colon/newline separated string into an
							 | 
						||
| 
								 | 
							
								     * associative array
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @static
							 | 
						||
| 
								 | 
							
								     * @access private
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    function toArray($kvs, $strict=false)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $lines = explode("\n", $kvs);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $last = array_pop($lines);
							 | 
						||
| 
								 | 
							
								        if ($last !== '') {
							 | 
						||
| 
								 | 
							
								            array_push($lines, $last);
							 | 
						||
| 
								 | 
							
								            if ($strict) {
							 | 
						||
| 
								 | 
							
								                return false;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $values = array();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        for ($lineno = 0; $lineno < count($lines); $lineno++) {
							 | 
						||
| 
								 | 
							
								            $line = $lines[$lineno];
							 | 
						||
| 
								 | 
							
								            $kv = explode(':', $line, 2);
							 | 
						||
| 
								 | 
							
								            if (count($kv) != 2) {
							 | 
						||
| 
								 | 
							
								                if ($strict) {
							 | 
						||
| 
								 | 
							
								                    return false;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                continue;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            $key = $kv[0];
							 | 
						||
| 
								 | 
							
								            $tkey = trim($key);
							 | 
						||
| 
								 | 
							
								            if ($tkey != $key) {
							 | 
						||
| 
								 | 
							
								                if ($strict) {
							 | 
						||
| 
								 | 
							
								                    return false;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            $value = $kv[1];
							 | 
						||
| 
								 | 
							
								            $tval = trim($value);
							 | 
						||
| 
								 | 
							
								            if ($tval != $value) {
							 | 
						||
| 
								 | 
							
								                if ($strict) {
							 | 
						||
| 
								 | 
							
								                    return false;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            $values[$tkey] = $tval;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return $values;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Convert an array into an OpenID colon/newline separated string
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @static
							 | 
						||
| 
								 | 
							
								     * @access private
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    function fromArray($values)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        if ($values === null) {
							 | 
						||
| 
								 | 
							
								            return null;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        ksort($values);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $serialized = '';
							 | 
						||
| 
								 | 
							
								        foreach ($values as $key => $value) {
							 | 
						||
| 
								 | 
							
								            if (is_array($value)) {
							 | 
						||
| 
								 | 
							
								                list($key, $value) = array($value[0], $value[1]);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (strpos($key, ':') !== false) {
							 | 
						||
| 
								 | 
							
								                return null;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (strpos($key, "\n") !== false) {
							 | 
						||
| 
								 | 
							
								                return null;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (strpos($value, "\n") !== false) {
							 | 
						||
| 
								 | 
							
								                return null;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            $serialized .= "$key:$value\n";
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return $serialized;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								?>
							 |