public function testGetExtension() { $data = array('openid_op_endpoint' => 'http://localhost', 'openid_ns_ax' => 'http://openid.net/srv/ax/1.0', 'openid_ax_mode' => 'fetch_response', 'openid_ax_type_fname' => 'http://example.com/schema/fullname', 'openid_ax_value_fname' => 'John Smith', 'openid_ns_ay' => 'http://openid.net/srv/ax/1.1', 'openid_ay_mode' => 'fetch_response', 'openid_ay_type_fname' => 'http://example.com/schema/fullname', 'openid_ay_value_fname' => 'Foo Bar', 'foo' => 'bar', 'test' => 'test'); // ns http://openid.net/srv/ax/1.0 $this->assertEquals(array('mode' => 'fetch_response', 'type_fname' => 'http://example.com/schema/fullname', 'value_fname' => 'John Smith'), ProviderAbstract::getExtension($data, 'http://openid.net/srv/ax/1.0')); // ns http://openid.net/srv/ax/1.1 $this->assertEquals(array('mode' => 'fetch_response', 'type_fname' => 'http://example.com/schema/fullname', 'value_fname' => 'Foo Bar'), ProviderAbstract::getExtension($data, 'http://openid.net/srv/ax/1.1')); }
protected function getAccountData(array $data) { $account = array(); // sreg extension $params = ProviderAbstract::getExtension($data, Extension\Sreg::NS); if (!empty($params)) { if (isset($params['fullname'])) { $account['name'] = $params['fullname']; } else { if (isset($params['nickname'])) { $account['name'] = $params['nickname']; } } if (isset($params['gender'])) { $params['gender'] = strtoupper($params['gender']); $account['gender'] = $params['gender'] == 'M' ? 'male' : ($params['gender'] == 'F' ? 'female' : 'undisclosed'); } else { $account['gender'] = 'undisclosed'; } if (isset($params['timezone']) && in_array($params['timezone'], DateTimeZone::listIdentifiers())) { $account['timezone'] = $params['timezone']; } else { $account['timezone'] = 'UTC'; } return $account; } // ax extension $params = ProviderAbstract::getExtension($data, Extension\Ax::NS); if (!empty($params)) { $keys = array(); $values = array('fullname' => 'http://axschema.org/namePerson', 'firstname' => 'http://axschema.org/namePerson/first', 'lastname' => 'http://axschema.org/namePerson/last', 'gender' => 'http://axschema.org/person/gender', 'timezone' => 'http://axschema.org/pref/timezone'); foreach ($params as $k => $v) { foreach ($values as $key => $ns) { if ($v == $ns) { $keys[$key] = str_replace('type', 'value', $k); } } } if (isset($keys['firstname']) && $keys['lastname'] && isset($params[$keys['firstname']]) && isset($params[$keys['lastname']])) { $account['name'] = $params[$keys['firstname']] . ' ' . $params[$keys['lastname']]; } elseif (isset($keys['fullname']) && isset($params[$keys['fullname']])) { $account['name'] = $params[$keys['fullname']]; } if (isset($keys['gender']) && isset($params[$keys['gender']])) { $params[$keys['gender']] = strtoupper($params[$keys['gender']]); $account['gender'] = $params[$keys['gender']] == 'M' ? 'male' : ($params[$keys['gender']] == 'F' ? 'female' : 'undisclosed'); } else { $account['gender'] = 'undisclosed'; } if (isset($keys['timezone']) && isset($params[$keys['timezone']]) && in_array($params[$keys['timezone']], DateTimeZone::listIdentifiers())) { $account['timezone'] = $params[$keys['timezone']]; } else { $account['timezone'] = 'UTC'; } return $account; } }
public function getExtension($ns) { return ProviderAbstract::getExtension($this->params, $ns); }
private function getOauthAccessToken($hostId, array $data) { $data = ProviderAbstract::getExtension($data, Extension\Oauth::NS); $token = isset($data['request_token']) ? $data['request_token'] : null; $verifier = isset($data['verifier']) ? $data['verifier'] : null; if ($hostId > 0 && !empty($token) && !empty($verifier)) { $row = $this->hm->getTable('AmunService\\Core\\Host')->select(array('consumerKey', 'consumerSecret', 'url'))->where('id', '=', $hostId)->where('status', '=', Host\Record::NORMAL)->getRow(); if (!empty($row)) { $url = $this->discoverOauthAcessUrl(new Url($row['url'])); $oauth = new Oauth($this->http); return $oauth->accessToken($url, $row['consumerKey'], $row['consumerSecret'], $token, '', $verifier); } else { throw new Exception('Invalid host id'); } } }