Example #1
0
 /**
  * For a give User name, run a partial search by
  * full name and retrieve user models.
  *
  */
 public static function getUsersByPartialFullName($partialName, $pageSize)
 {
     assert('is_string($partialName)');
     assert('is_int($pageSize)');
     $personTableName = RedBeanModel::getTableName('Person');
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('User');
     $joinTablesAdapter->addFromTableAndGetAliasName($personTableName, "{$personTableName}_id");
     $fullNameSql = DatabaseCompatibilityUtil::concat(array('person.firstname', '\' \'', 'person.lastname'));
     $where = "      (person.firstname      like lower('{$partialName}%') or " . "       person.lastname       like lower('{$partialName}%') or " . "       {$fullNameSql} like lower('{$partialName}%')) ";
     return User::getSubset($joinTablesAdapter, null, $pageSize, $where, "person.firstname, person.lastname");
 }
Example #2
0
 public static function getUsersByEmailAddress($emailAddress, $operatorType = null)
 {
     assert('is_string($emailAddress)');
     assert('$operatorType == null || is_string($operatorType)');
     if ($operatorType == null) {
         $operatorType = 'equals';
     }
     $metadata = array();
     $metadata['clauses'] = array(1 => array('attributeName' => 'primaryEmail', 'relatedAttributeName' => 'emailAddress', 'operatorType' => $operatorType, 'value' => $emailAddress));
     $metadata['structure'] = '(1)';
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('User');
     $where = RedBeanModelDataProvider::makeWhere('User', $metadata, $joinTablesAdapter);
     $users = User::getSubset($joinTablesAdapter, null, null, $where);
     return $users;
 }
Example #3
0
 /**
  * For a given email find user.
  * Function consider that user sent email to dropbox (To, CC or BCC),
  * or forwarded email to dropbox, via his email client.
  * @param ImapMessage $emailMessage
  * @return User $user
  */
 public static function resolveOwnerOfEmailMessage(ImapMessage $emailMessage)
 {
     if (isset($emailMessage->fromEmail) && $emailMessage->fromEmail != '') {
         $searchAttributeData = array();
         $searchAttributeData['clauses'] = array(1 => array('attributeName' => 'primaryEmail', 'relatedAttributeName' => 'emailAddress', 'operatorType' => 'equals', 'value' => $emailMessage->fromEmail));
         $searchAttributeData['structure'] = '1';
         $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('User');
         $where = RedBeanModelDataProvider::makeWhere('User', $searchAttributeData, $joinTablesAdapter);
         $models = User::getSubset($joinTablesAdapter, null, null, $where, null);
     }
     if (count($models) == 1) {
         return $models[0];
     } else {
         throw new NotFoundException();
     }
 }
 /**
  * Test users count using NonSystemUsersStateMetadataAdapter
  */
 public function testGetUsersListUsingNonSystemUsersStateMetadataAdapter()
 {
     $users = User::getAll();
     $this->assertEquals(5, count($users));
     $user = UserTestHelper::createBasicUser('mysysuser');
     $user->setIsSystemUser();
     $this->assertTrue($user->save());
     $nonSystemUsersStateMetadataAdapter = new NonSystemUsersStateMetadataAdapter(array('clauses' => array(), 'structure' => ''));
     $metadata = $nonSystemUsersStateMetadataAdapter->getAdaptedDataProviderMetadata();
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('User');
     $where = RedBeanModelDataProvider::makeWhere('User', $metadata, $joinTablesAdapter);
     $models = User::getSubset($joinTablesAdapter, null, null, $where, null);
     $this->assertEquals(5, count($models));
     $actualUsers = User::getAll();
     $this->assertEquals(6, count($actualUsers));
     unset($user);
     $user = User::getByUsername('mysysuser');
     $this->assertTrue((bool) $user->isSystemUser);
     $user->setIsNotSystemUser();
     $this->assertTrue($user->save());
     unset($user);
     $user = User::getByUsername('mysysuser');
     $this->assertEquals(0, $user->isSystemUser);
     $where = RedBeanModelDataProvider::makeWhere('User', $metadata, $joinTablesAdapter);
     $models = User::getSubset($joinTablesAdapter, null, null, $where, null);
     $this->assertEquals(6, count($models));
 }
Example #5
0
 /**
  * Get active users.
  * @return array
  */
 public static function getActiveUsers($includeRootUser = false)
 {
     $searchAttributeData = self::makeActiveUsersQuerySearchAttributeData($includeRootUser);
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('User');
     $where = RedBeanModelDataProvider::makeWhere('User', $searchAttributeData, $joinTablesAdapter);
     return User::getSubset($joinTablesAdapter, null, null, $where);
 }
Example #6
0
 /**
  * Check if user email is unique in system. Two users can't share same email address.
  * @param string $email
  * @return bool
  */
 public function isUserEmailUnique($email)
 {
     if (!$email) {
         return true;
     }
     $searchAttributeData['clauses'] = array(1 => array('attributeName' => 'primaryEmail', 'relatedAttributeName' => 'emailAddress', 'operatorType' => 'equals', 'value' => $email));
     if ($this->id > 0) {
         $searchAttributeData['clauses'][2] = array('attributeName' => 'id', 'operatorType' => 'doesNotEqual', 'value' => $this->id);
         $searchAttributeData['structure'] = '(1 AND 2)';
     } else {
         $searchAttributeData['structure'] = '1';
     }
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('User');
     $where = RedBeanModelDataProvider::makeWhere('User', $searchAttributeData, $joinTablesAdapter);
     $models = User::getSubset($joinTablesAdapter, null, null, $where, null);
     if (count($models) > 0 && is_array($models)) {
         // Todo: fix form element name below
         $this->primaryEmail->addError('emailAddress', Zurmo::t('UsersModule', 'Email address already exists in system.'));
         return false;
     }
     return true;
 }
 public static function getUsersByPartialFullNameOrAnyEmailAddress($partialNameOrEmailAddress, $pageSize, $stateMetadataAdapterClassName = null, $operatorType = null, $autoCompleteOptions = null)
 {
     $modelName = 'User';
     assert('is_string($partialNameOrEmailAddress)');
     assert('is_int($pageSize)');
     assert('$stateMetadataAdapterClassName == null || is_string($stateMetadataAdapterClassName)');
     assert('$operatorType == null || is_string($operatorType)');
     assert('$autoCompleteOptions == null || is_string($autoCompleteOptions)');
     if ($operatorType == null) {
         $operatorType = 'startsWith';
     }
     $metadata = array();
     $metadata['clauses'] = array(1 => array('attributeName' => 'primaryEmail', 'relatedAttributeName' => 'emailAddress', 'operatorType' => $operatorType, 'value' => $partialNameOrEmailAddress), 2 => array('attributeName' => 'hideFromSelecting', 'operatorType' => 'equals', 'value' => 0), 3 => array('attributeName' => 'hideFromSelecting', 'operatorType' => 'isNull', 'value' => null));
     $metadata['structure'] = '((1 or partialnamesearch) and (2 or 3))';
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter($modelName);
     if ($stateMetadataAdapterClassName != null) {
         $stateMetadataAdapter = new $stateMetadataAdapterClassName($metadata);
         $metadata = $stateMetadataAdapter->getAdaptedDataProviderMetadata();
     }
     $where = RedBeanModelDataProvider::makeWhere($modelName, $metadata, $joinTablesAdapter);
     $partialNameWherePart = self::getWherePartForPartialNameSearchByPartialName($partialNameOrEmailAddress);
     $where = strtr(strtolower($where), array('partialnamesearch' => $partialNameWherePart));
     static::handleAutoCompleteOptions($joinTablesAdapter, $where, $autoCompleteOptions);
     return User::getSubset($joinTablesAdapter, null, $pageSize, $where, "person.firstname, person.lastname");
 }
Example #8
0
 public function getUsersExceptSystemUsers()
 {
     $searchAttributeData['clauses'] = array(1 => array('attributeName' => 'isSystemUser', 'operatorType' => 'equals', 'value' => 0), 2 => array('attributeName' => 'isSystemUser', 'operatorType' => 'isNull', 'value' => null));
     if ($this->name == Group::EVERYONE_GROUP_NAME) {
         $searchAttributeData['structure'] = '1 or 2';
     } else {
         $searchAttributeData['clauses'][3] = array('attributeName' => 'groups', 'relatedAttributeName' => 'id', 'operatorType' => 'equals', 'value' => $this->id);
         $searchAttributeData['structure'] = '(1 or 2) and 3';
     }
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('User');
     $where = RedBeanModelDataProvider::makeWhere('User', $searchAttributeData, $joinTablesAdapter);
     return User::getSubset($joinTablesAdapter, null, null, $where);
 }