protected function _getPersistentNameId($originalCollabPersonId, $spEntityId)
 {
     $factory = new EngineBlock_Database_ConnectionFactory();
     $db = $factory->create(EngineBlock_Database_ConnectionFactory::MODE_WRITE);
     $serviceProviderUuid = $this->_getServiceProviderUuid($spEntityId, $db);
     $userUuid = $this->_getUserUuid($originalCollabPersonId);
     $statement = $db->prepare("SELECT persistent_id FROM saml_persistent_id WHERE service_provider_uuid = ? AND user_uuid = ?");
     $statement->execute(array($serviceProviderUuid, $userUuid));
     $rows = $statement->fetchAll();
     if (empty($rows)) {
         $persistentId = sha1(self::PERSISTENT_NAMEID_SALT . $userUuid . $serviceProviderUuid);
         $statement = $db->prepare("INSERT INTO saml_persistent_id (persistent_id, service_provider_uuid, user_uuid) VALUES (?,?,?)");
         $result = $statement->execute(array($persistentId, $serviceProviderUuid, $userUuid));
         if (!$result) {
             throw new EngineBlock_Exception('Unable to store new persistent id for SP UUID: ' . $serviceProviderUuid . ' and user uuid: ' . $userUuid . ' error info: ' . var_export($statement->errorInfo(), true));
         }
         return $persistentId;
     } else {
         if (count($rows) > 1) {
             throw new EngineBlock_Exception('Multiple persistent IDs found? For: SPUUID: ' . $serviceProviderUuid . ' and user UUID: ' . $userUuid);
         } else {
             return $rows[0]['persistent_id'];
         }
     }
 }
 /**
  * Creates db connection
  *
  * @todo this was copied from EngineBlock_VirtualOrganization, this should be reused somehow instead of copied
  * @return PDO $this->_db
  */
 protected function _getDbConnection()
 {
     if (isset($this->_db)) {
         return $this->_db;
     }
     $factory = new EngineBlock_Database_ConnectionFactory();
     $this->_db = $factory->create(EngineBlock_Database_ConnectionFactory::MODE_READ);
     return $this->_db;
 }
 protected function _getReadDatabase()
 {
     if ($this->_factory == NULL) {
         $this->_factory = new EngineBlock_Database_ConnectionFactory();
     }
     return $this->_factory->create(EngineBlock_Database_ConnectionFactory::MODE_READ);
 }
 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;
 }
 /**
  * @return PDO
  */
 protected function _getDatabaseConnection()
 {
     $factory = new EngineBlock_Database_ConnectionFactory();
     return $factory->create(EngineBlock_Database_ConnectionFactory::MODE_READ);
 }
 /**
  * @return bool|PDO
  */
 protected function _getConsentDatabaseConnection()
 {
     // We only use the write connection because consent is 3 queries of which only 1 light select query.
     return $this->_databaseConnectionFactory->create(EngineBlock_Database_ConnectionFactory::MODE_WRITE);
 }
 /**
  * @return PDO
  */
 protected function _getDatabaseConnection()
 {
     if (!isset($this->_factory)) {
         $factory = new EngineBlock_Database_ConnectionFactory();
         $this->_factory = $factory->create(EngineBlock_Database_ConnectionFactory::MODE_READ);
     }
     return $this->_factory;
 }
 protected function _getDb()
 {
     static $s_db;
     if ($s_db) {
         return $s_db;
     }
     $factory = new EngineBlock_Database_ConnectionFactory();
     $s_db = $factory->create(EngineBlock_Database_ConnectionFactory::MODE_WRITE);
     return $s_db;
 }
 /**
  * Create an Zend_Config of Group Provider(s) from database configuration
  *
  * @param $providerId the unique identifier of the Provider (optional)
  * @return Zend_Config
  */
 public function createFromDatabaseFor($providerId = null)
 {
     $factory = new EngineBlock_Database_ConnectionFactory();
     $db = $factory->create(EngineBlock_Database_ConnectionFactory::MODE_READ);
     $sql = 'SELECT *
         FROM group_provider';
     $parameters = array();
     if ($providerId) {
         $sql .= " WHERE identifier = ?";
         $parameters[] = $providerId;
     }
     $statement = $db->prepare($sql);
     $statement->execute($parameters);
     $groupProviderRows = $statement->fetchAll(PDO::FETCH_ASSOC);
     $groupProviders = array();
     foreach ($groupProviderRows as $groupProviderRow) {
         $groupProvider = array('id' => $groupProviderRow['identifier'], 'name' => $groupProviderRow['name'], 'className' => $groupProviderRow['classname']);
         // Retrieve options
         $optionRows = $db->query("SELECT `name`, `value`\n                FROM group_provider_option\n                WHERE group_provider_id = {$groupProviderRow['id']}")->fetchAll(PDO::FETCH_ASSOC);
         foreach ($optionRows as $optionRow) {
             if (!isset($optionRow['value']) || empty($optionRow['value'])) {
                 continue;
             }
             $groupProviderOptionPointer =& $groupProvider;
             $optionNameParts = explode('.', $optionRow['name']);
             $lastOptionNamePart = null;
             while ($optionNamePart = array_shift($optionNameParts)) {
                 if (!isset($groupProviderOptionPointer[$optionNamePart]) && !empty($optionNameParts)) {
                     $groupProviderOptionPointer[$optionNamePart] = array();
                 }
                 $groupProviderOptionPointer =& $groupProviderOptionPointer[$optionNamePart];
             }
             $groupProviderOptionPointer = $optionRow['value'];
         }
         // decorators
         $decoratorAndOptionsRows = $db->query("SELECT gpd.id        AS id,\n                        gpd.classname AS className,\n                        gpdo.name     AS option_name,\n                        gpdo.value    AS option_value\n                FROM group_provider_decorator gpd\n                LEFT JOIN group_provider_decorator_option gpdo ON gpd.id = gpdo.group_provider_decorator_id\n                WHERE gpd.group_provider_id = {$groupProviderRow['id']}");
         if (!empty($decoratorAndOptionsRows)) {
             $groupProvider['decorators'] = array();
             foreach ($decoratorAndOptionsRows as $decoratorOptionsRow) {
                 if (!isset($groupProvider['decorators'][$decoratorOptionsRow['id']])) {
                     $groupProvider['decorators'][$decoratorOptionsRow['id']] = array();
                 }
                 $groupProvider['decorators'][$decoratorOptionsRow['id']]['className'] = $decoratorOptionsRow['className'];
                 if (isset($decoratorOptionsRow['option_name']) && $decoratorOptionsRow['option_name']) {
                     $groupProvider['decorators'][$decoratorOptionsRow['id']][$decoratorOptionsRow['option_name']] = $decoratorOptionsRow['option_value'];
                 }
             }
         }
         // filters
         $filterAndOptionsRows = $db->query("SELECT gpf.id        AS id,\n                        gpf.type      AS type,\n                        gpf.classname AS className,\n                        gpfo.name     AS option_name,\n                        gpfo.value    AS option_value\n                FROM group_provider_filter gpf\n                LEFT JOIN group_provider_filter_option gpfo ON gpf.id = gpfo.group_provider_filter_id\n                WHERE gpf.group_provider_id = {$groupProviderRow['id']}");
         foreach ($filterAndOptionsRows as $filterOptionsRow) {
             if (!isset($groupProvider[$filterOptionsRow['type'] . 'Filters'])) {
                 $groupProvider[$filterOptionsRow['type'] . 'Filters'] = array();
             }
             $filters =& $groupProvider[$filterOptionsRow['type'] . 'Filters'];
             if (!isset($filters[$filterOptionsRow['id']])) {
                 $filters[$filterOptionsRow['id']] = array();
             }
             $filters[$filterOptionsRow['id']]['className'] = $filterOptionsRow['className'];
             if (isset($filterOptionsRow['option_name']) && $filterOptionsRow['option_name']) {
                 $filters[$filterOptionsRow['id']][$filterOptionsRow['option_name']] = $filterOptionsRow['option_value'];
             }
         }
         // preconditions
         $preconditionAndOptionsRows = $db->query("SELECT gpp.id        AS id,\n                        gpp.classname AS className,\n                        gppo.name     AS option_name,\n                        gppo.value    AS option_value\n                FROM group_provider_precondition gpp\n                LEFT JOIN group_provider_precondition_option gppo ON gpp.id = gppo.group_provider_precondition_id\n                WHERE gpp.group_provider_id = {$groupProviderRow['id']}");
         if (!empty($preconditionAndOptionsRows)) {
             $groupProvider['preconditions'] = array();
             foreach ($preconditionAndOptionsRows as $preconditionOptionsRow) {
                 if (!isset($groupProvider['preconditions'][$preconditionOptionsRow['id']])) {
                     $groupProvider['preconditions'][$preconditionOptionsRow['id']] = array();
                 }
                 $groupProvider['preconditions'][$preconditionOptionsRow['id']]['className'] = $preconditionOptionsRow['className'];
                 if (isset($preconditionOptionsRow['option_name']) && $preconditionOptionsRow['option_name']) {
                     $groupProvider['preconditions'][$preconditionOptionsRow['id']][$preconditionOptionsRow['option_name']] = $preconditionOptionsRow['option_value'];
                 }
             }
         }
         $groupProviders[] = $groupProvider;
     }
     return new Zend_Config($groupProviders);
 }
示例#10
0
 /**
  * @return PDO
  */
 protected function _getDatabaseConnection()
 {
     $pdo = new EngineBlock_Database_ConnectionFactory();
     return $pdo->create(EngineBlock_Database_ConnectionFactory::MODE_WRITE);
 }
 public function __construct($writer)
 {
     $this->_writer = $writer;
     $factory = new EngineBlock_Database_ConnectionFactory();
     $this->_database = $factory->create(EngineBlock_Database_ConnectionFactory::MODE_WRITE);
 }