示例#1
0
 /**
  * A method which returns all the accounts linked to the user
  *
  * Returns array of:
  *   accountId => 'account name'
  *
  * If $groupByType is equal true returns:
  *   accountType => accountId => 'account name'
  *
  * where accountType is one of: OA_ACCOUNT_ADMIN, OA_ACCOUNT_MANAGER, etc.
  *
  * @param boolean $groupByType
  * @param boolean $sort         An optional parameter, when true, sorts
  *                              the returned values alphabetically by account
  *                              name. Ignored when $groupByType is false.
  * @return array
  */
 function getLinkedAccounts($groupByType = false, $sort = false)
 {
     $doAccount_user_Assoc = OA_Dal::factoryDO('account_user_assoc');
     $doAccount_user_Assoc->user_id = OA_Permission::getUserId();
     $doAccounts = OA_Dal::factoryDO('accounts');
     $doAccounts->orderBy('account_name');
     $doAccount_user_Assoc->joinAdd($doAccounts);
     $doAccount_user_Assoc->find();
     $aAccountsByType = array();
     while ($doAccount_user_Assoc->fetch()) {
         $aAccountsByType[$doAccount_user_Assoc->account_type][$doAccount_user_Assoc->account_id] = $doAccount_user_Assoc->account_name;
     }
     uksort($aAccountsByType, array('OA_Permission', '_accountTypeSort'));
     if (isset($aAccountsByType[OA_ACCOUNT_ADMIN])) {
         $aAccountsByType = OA_Permission::mergeAdminAccounts($aAccountsByType);
     }
     if (!$groupByType) {
         $aAccounts = array();
         foreach ($aAccountsByType as $accountType => $aAccount) {
             foreach ($aAccount as $id => $name) {
                 $aAccounts[$id] = $name;
             }
         }
         return $aAccounts;
     }
     if ($sort) {
         foreach ($aAccountsByType as $accountType => $aAccount) {
             natcasesort($aAccountsByType[$accountType]);
         }
     }
     return $aAccountsByType;
 }