Example #1
0
 /**
  * import the accounts from eGroupWare 1.4
  *
  * @todo add primary group or use Admin_Controller_User::getInstance()->create
  * @todo import user password
  */
 protected function importAccounts()
 {
     $this->_log->INFO('start importing egw users');
     $select = $this->_egwDb->select()->from(array('accounts' => 'egw_accounts'))->joinLeft(array('contacts' => 'egw_addressbook'), $this->_egwDb->quoteIdentifier('accounts.account_id') . ' = ' . $this->_egwDb->quoteIdentifier('contacts.account_id'))->where($this->_egwDb->quoteInto($this->_egwDb->quoteIdentifier('accounts.account_type') . ' = ?', 'u'));
     $accounts = $this->_egwDb->fetchAll($select, NULL, Zend_Db::FETCH_OBJ);
     foreach ($accounts as $account) {
         $user = new Tinebase_Model_FullUser(array('accountId' => $account->account_id, 'accountLoginName' => $account->account_lid, 'accountLastLogin' => $account->account_lastlogin > 0 ? new Tinebase_DateTime($account->account_lastlogin) : NULL, 'accountLastLoginfrom' => $account->account_lastloginfrom, 'accountLastPasswordChange' => $account->account_lastpwd_change > 0 ? new Tinebase_DateTime($account->account_lastpwd_change) : NULL, 'accountStatus' => $account->account_status == 'A' ? 'enabled' : 'disabled', 'accountExpires' => $account->account_expires > 0 ? new Tinebase_DateTime($account->account_expires) : NULL, 'accountPrimaryGroup' => abs($account->account_primary_group), 'accountLastName' => $account->n_family ? $account->n_family : 'Lastname', 'accountFirstName' => $account->n_given ? $account->n_given : 'Firstname', 'accountEmailAddress' => isset($account->email) ? $account->email : $account->contact_email));
         $this->_log->DEBUG(__METHOD__ . '::' . __LINE__ . ' user: '******'accountId', $user->accountId);
             $user = Tinebase_User::getInstance()->updateUser($user);
         } catch (Tinebase_Exception_NotFound $ten) {
             $user = Tinebase_User::getInstance()->addUser($user);
         }
         // (re)set password
         Tinebase_User::getInstance()->setPassword($user, $account->account_pwd, FALSE);
         // plase user in his groups
         Tinebase_Group::getInstance()->addGroupMember($user->accountPrimaryGroup, $user);
     }
     $this->_log->NOTICE('imported ' . count($accounts) . ' users from egw');
 }