function __construct($viewerID)
 {
     $this->viewer_id = $viewerID;
     // set defaults
     $this->isSuperAdmin = false;
     $this->isFinanceAdmin = array();
     $this->isEventAdmin = array();
     $this->isCampusAdmin = array();
     $superAdminManager = new RowManager_SuperAdminAssignmentManager();
     // the permissions are scaled if you have n permission you all have any permission < n
     $this->isSuperAdmin = $superAdminManager->loadByViewer($viewerID);
     if ($this->isSuperAdmin == true) {
         $this->isFinanceAdmin[PrivilegeManager::ALL_EVENTS] = 1;
         $this->isEventAdmin[PrivilegeManager::ALL_EVENTS] = 1;
         $this->isCampusAdmin[PrivilegeManager::ALL_EVENTS] = PrivilegeManager::ALL_CAMPUSES;
     }
     // determine for which events the viewer is an finance, event, or campus admin
     $eventPrivManager = new RowManager_EventAdminAssignmentManager();
     $eventPrivManager->setViewerID($this->viewer_id);
     $privList = $eventPrivManager->getListIterator();
     $privArray = $privList->getDataList();
     $isEventAdmin = array();
     reset($privArray);
     foreach (array_keys($privArray) as $k) {
         $record = current($privArray);
         $eventID = $record['event_id'];
         $priv = $record['priv_id'];
         $adminID = $record['eventadmin_id'];
         // set admin flags based on records found in eventadmin table (SUPER_ADMIN has its own table)
         switch ($priv) {
             case PrivilegeManager::FINANCE_ADMIN:
                 $this->isFinanceAdmin[$eventID] = 1;
                 // set value to true (1)
                 $this->isEventAdmin[$eventID] = 1;
                 // set value to true (1)
                 $this->isCampusAdmin[$eventID] = PrivilegeManager::ALL_CAMPUSES;
                 // set value to represent all campuses
                 break;
             case PrivilegeManager::EVENT_ADMIN:
                 $this->isEventAdmin[$eventID] = 1;
                 // set value to true (1)
                 $this->isCampusAdmin[$eventID] = PrivilegeManager::ALL_CAMPUSES;
                 // set value to represent all campuses
                 break;
             case PrivilegeManager::CAMPUS_ADMIN:
                 $adminCampuses = new RowManager_EventAdminCampusAssignmentManager();
                 $adminCampuses->setEventAdminID($adminID);
                 $campusList = $adminCampuses->getListIterator();
                 $campusArray = $campusList->getDataList();
                 // 		       	echo "campuslist = <pre>".print_r($campusArray,true)."</pre>";
                 $adminCampusList = '';
                 reset($campusArray);
                 foreach (array_keys($campusArray) as $k) {
                     $row = current($campusArray);
                     $campus_id = $row['campus_id'];
                     $adminCampusList .= $campus_id . '|';
                     next($campusArray);
                 }
                 $adminCampusList = substr($adminCampusList, 0, -1);
                 // remove last '|'
                 $this->isCampusAdmin[$eventID] = $adminCampusList;
                 // set value to list of campus IDs
                 break;
             default:
                 break;
         }
         next($privArray);
     }
     // if no privileges found, then check if viewer is C4C staff with associated campus(es)
     if (count($this->isCampusAdmin) < 1) {
         $access = new RowManager_AccessManager();
         $access->setViewerID($this->viewer_id);
         $person = new RowManager_PersonManager();
         $staff = new RowManager_StaffManager();
         $staff->setIsActive('1');
         $assign = new RowManager_AssignmentsManager();
         $assign->setAssignmentStatus(CA_STAFF);
         $campus = new RowManager_CampusManager();
         $multiTables = new MultiTableManager();
         $multiTables->addRowManager($access);
         $multiTables->addRowManager($person, new JoinPair($access->getJoinOnPersonID(), $person->getJoinOnPersonID()));
         $multiTables->addRowManager($staff, new JoinPair($person->getJoinOnPersonID(), $staff->getJoinOnPersonID()));
         $multiTables->addRowManager($assign, new JoinPair($assign->getJoinOnPersonID(), $person->getJoinOnPersonID()));
         $multiTables->addRowManager($campus, new JoinPair($assign->getJoinOnCampusID(), $campus->getJoinOnCampusID()));
         // 		    $multiTables->addSearchCondition("cim_hrdb_assignment.assignmentstatus_id = ".PrivilegeManager::STATUS_STAFF);
         $campusList = $multiTables->getListIterator();
         $campusArray = $campusList->getDataList();
         reset($campusArray);
         //  		    echo 'campus array for user: <pre>'.print_r($campusArray, true).'</pre><br>';
         // some campus was found, so viewer is admin for this campus (for all events)
         if (isset($campusArray) && count($campusArray) > 0) {
             $listOfCampuses = '';
             foreach (array_keys($campusArray) as $k) {
                 $record = current($campusArray);
                 $campus_id = $record['campus_id'];
                 $listOfCampuses = $campus_id . '|';
                 next($campusArray);
             }
             $listOfCampuses = substr($listOfCampuses, 0, -1);
             // remove last '|'
             $this->isCampusAdmin[PrivilegeManager::ALL_EVENTS] = $listOfCampuses;
             // 				 echo 'pre campus list = <pre>'.print_r($this->isCampusAdmin,true).'</pre>';
         }
     }
     //        echo '<br>super admin = '.$this->isSuperAdmin;
     //        echo '<br>event admin = <pre>'.print_r($this->isEventAdmin,true).'</pre>';
     //        echo '<br>campus admin = <pre>'.print_r($this->isCampusAdmin, true).'</pre>';
     //        echo '<br>finance admin = <pre>'.print_r($this->isFinanceAdmin, true).'</pre>';
     $this->isStudent = true;
     // all users have at least student-level access
 }