+ return !empty($aLogin) && ($aLogin instanceof Login) && $aLogin->canLogin();
+}
+
+function isAdmin($aLogin=null) {
+ if (is_null($aLogin)) {
+ global $Login;
+ $aLogin = $Login;
+ }
+ return !empty($aLogin) && ($aLogin instanceof Login) && $aLogin->getUL()>=100;
+}
+
+function isImpersonating() {
+ return isSess('_UserId') && isSess('UserId');
+}
+
+function isOffline() {
+ return (defined('OFFLINE') && OFFLINE);
+}
+
+function isOnline() {
+ return !isOffline();
+}
+
+function impersonate($userId=null) {
+ $wasImpersonating = isImpersonating();
+ if ($wasImpersonating) {
+ if (is_null($userId) || empty($userId)) {
+ sess('UserId',sess('_UserId'));
+ sess('_UserId','');
+ } elseif ($userId>0) {
+ sess('UserId',$userId);
+ } else {
+ return false;
+ }
+ } elseif (isLoggedIn()) {
+ sess('_UserId',sess('UserId'));
+ sess('UserId',$userId);
+ return true;
+ } else {
+ return false;
+ }