/** * 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; }