/**
  * Factory method to create and configure a group provider from it's given configuration
  *
  * @static
  * @abstract
  * @param Zend_Config $config
  * @param string $userId
  * @return EngineBlock_Group_Provider_Grouper
  */
 public static function createFromConfigs(Zend_Config $config, $userId)
 {
     $grouperClient = Grouper_Client_Rest::createFromConfig($config);
     $provider = new self($config->id, $config->name, $grouperClient);
     $provider->setUserId($userId);
     $provider->configurePreconditions($config);
     $provider->configureGroupFilters($config);
     $provider->configureGroupMemberFilters($config);
     $decoratedProvider = $provider->configureDecoratorChain($config);
     return $decoratedProvider;
 }
 public static function createFromConfigs(Zend_Config $config, $userId)
 {
     $httpClient = new Zend_Http_Client();
     $httpClient->setAuth($config->auth->user, $config->auth->password);
     $openSocialRestClient = new OpenSocial_Rest_Client($httpClient);
     $provider = new self($config->id, $config->name, $openSocialRestClient);
     $provider->configurePreconditions($config);
     $provider->configureGroupFilters($config);
     $provider->configureGroupMemberFilters($config);
     $decoratedProvider = $provider->configureDecoratorChain($config);
     return $decoratedProvider;
 }
 public static function createFromConfigs(Zend_Config $config, $userId)
 {
     $databaseFactory = new EngineBlock_Database_ConnectionFactory();
     $databaseAdapter = $databaseFactory->create(EngineBlock_Database_ConnectionFactory::MODE_READ);
     $accessTokenHelper = new EngineBlock_Group_Provider_OpenSocial_Oauth_Helper_AccessToken($config->id, $databaseAdapter, $userId);
     $authConfig = $config->auth->toArray();
     if (isset($authConfig['rsaPrivateKey'])) {
         if (empty($authConfig['rsaPrivateKey'])) {
             unset($authConfig['rsaPrivateKey']);
         } else {
             $authConfig['rsaPrivateKey'] = new Zend_Crypt_Rsa_Key_Private($authConfig['rsaPrivateKey']);
         }
     }
     if (isset($authConfig['rsaPublicKey'])) {
         if (empty($authConfig['rsaPublicKey'])) {
             unset($authConfig['rsaPublicKey']);
         } else {
             $authConfig['rsaPublicKey'] = new Zend_Crypt_Rsa_Key_Public($authConfig['rsaPublicKey']);
         }
     }
     $httpClient = new Zend_Oauth_Client($authConfig, $config->url, $config);
     $accessToken = $accessTokenHelper->loadAccessToken();
     if ($accessToken) {
         $httpClient->setToken($accessToken);
     }
     $openSocialRestClient = new OpenSocial_Rest_Client($httpClient);
     $provider = new self($config->id, $config->name, $openSocialRestClient);
     $provider->setUserId($userId);
     $provider->setAccessTokenHelper($accessTokenHelper);
     $provider->addPrecondition('EngineBlock_Group_Provider_Precondition_OpenSocial_Oauth_AccessTokenExists');
     $provider->configurePreconditions($config);
     $provider->configureGroupFilters($config);
     $provider->configureGroupMemberFilters($config);
     $decoratedProvider = $provider->configureDecoratorChain($config);
     return $decoratedProvider;
 }