/**
  * @access private
  */
 function &createManager($services, $yadis_url = null)
 {
     $key = $this->getSessionKey();
     if ($this->getManager()) {
         return $this->getManager();
     }
     if ($services) {
         $loader = new Services_Yadis_ManagerLoader();
         $manager = new Services_Yadis_Manager($this->url, $yadis_url, $services, $key);
         $this->session->set($this->session_key, serialize($loader->toSession($manager)));
         return $manager;
     } else {
         // Oh, PHP.
         $unused = null;
         return $unused;
     }
 }
Example #2
0
 /**
  * Start the OpenID authentication process. See steps 1-2 in the
  * overview at the top of this file.
  *
  * @param User_url: Identity URL given by the user. This method
  * performs a textual transformation of the URL to try and make
  * sure it is normalized. For example, a user_url of example.com
  * will be normalized to http://example.com/ normalizing and
  * resolving any redirects the server might issue.
  *
  * @return Auth_OpenID_AuthRequest $auth_request An object
  * containing the discovered information will be returned, with a
  * method for building a redirect URL to the server, as described
  * in step 3 of the overview. This object may also be used to add
  * extension arguments to the request, using its 'addExtensionArg'
  * method.
  */
 function begin($user_url)
 {
     $discoverMethod = '_Auth_OpenID_discoverServiceList';
     $openid_url = $user_url;
     if (Services_Yadis_identifierScheme($user_url) == 'XRI') {
         $discoverMethod = '_Auth_OpenID_discoverXRIServiceList';
     } else {
         $openid_url = Auth_OpenID::normalizeUrl($user_url);
     }
     $disco =& new Services_Yadis_Discovery($this->session, $openid_url, $this->session_key_prefix);
     // Set the 'stale' attribute of the manager.  If discovery
     // fails in a fatal way, the stale flag will cause the manager
     // to be cleaned up next time discovery is attempted.
     $m = $disco->getManager();
     $loader = new Services_Yadis_ManagerLoader();
     if ($m) {
         if ($m->stale) {
             $disco->destroyManager();
         } else {
             $m->stale = true;
             $disco->session->set($disco->session_key, serialize($loader->toSession($m)));
         }
     }
     $endpoint = $disco->getNextService($discoverMethod, $this->consumer->fetcher);
     // Reset the 'stale' attribute of the manager.
     $m =& $disco->getManager();
     if ($m) {
         $m->stale = false;
         $disco->session->set($disco->session_key, serialize($loader->toSession($m)));
     }
     if ($endpoint === null) {
         return null;
     } else {
         return $this->beginWithoutDiscovery($endpoint);
     }
 }