示例#1
0
  * campus_id [INTEGER]  ID of a campus
  */
 $CampusGroup = new RowManager_CampusGroupManager();
 $CampusGroup->dropTable();
 $CampusGroup->createTable();
 /*
  * Group Table
  *
  * Contains the meta data for each of the groups
  *
  * group_id [INTEGER]  ID of the group
  * groupType_id [INTEGER]  ID of the group type
  * group_name [STRING]  The name of the group
  * group_desc [STRING]  The description of the group
  */
 $Group = new RowManager_GroupManager();
 $Group->dropTable();
 $Group->createTable();
 /*
  * GroupAssociation Table
  *
  * Contains the relationship between the group and the person. 
  *
  * groupAssocation_id [INTEGER]  ID of the association between group and person
  * group_id [INTEGER]  ID of the group
  * person_id [INTEGER]  ID of the person
  */
 $GroupAssociation = new RowManager_GroupAssociationManager();
 $GroupAssociation->dropTable();
 $GroupAssociation->createTable();
 /*
 function displayGroups()
 {
     // This array get passed back to the template multiple time
     $groupCollectionArray = array();
     $multiTableManager = new MultiTableManager();
     $groupManager = new RowManager_GroupManager();
     $superAdminManager = new RowManager_PermissionsSuperAdminManager();
     //SUPER ADMIN
     //Check if user's Viewer_id is in the PermissionSuperAdmin table
     //If the user is a super admin then show all gorups per campus including public groups
     if ($superAdminManager->loadByViewerID($this->viewer->getViewerID())) {
         // the viewer is a super admin
         echo "ViewerID[" . $this->viewer->getViewerID() . "] is a super admin<br/>";
         $campusManager = new RowManager_CampusManager();
         $campusArray = array();
         $this->listIterator = $campusManager->getListIterator();
         $this->listIterator->setFirst();
         while ($this->listIterator->moveNext()) {
             $group = $this->listIterator->getCurrent(new RowManager_CampusManager());
             $campusArray[] = $group->getCampusID();
         }
         //echo "<pre>".print_r($campusArray)."</pre>";
         foreach ($campusArray as $key => $campusID) {
             $campusManager = new RowManager_CampusManager($campusID);
             $campusGroupManager = new RowManager_CampusGroupManager();
             $campusGroupManager->setCampusID($campusID);
             $groupManager = new RowManager_GroupManager();
             $multiTableManager = new MultiTableManager();
             $multiTableManager->addRowManager($groupManager);
             $multiTableManager->addRowManager($campusGroupManager, new JoinPair($campusGroupManager->getJoinOnGroupID(), $groupManager->getJoinOnGroupID(), JOIN_TYPE_RIGHT));
             $multiTableManager->addRowManager($campusManager, new JoinPair($campusManager->getJoinOnCampusID(), $campusGroupManager->getJoinOnCampusID(), JOIN_TYPE_RIGHT));
             //Go through the result and save all the groups of that campus to an array
             $campusGroupArray = array();
             $this->listIterator = $multiTableManager->getListIterator();
             $this->listIterator->setFirst();
             while ($this->listIterator->moveNext()) {
                 $group = $this->listIterator->getCurrent(new RowManager_CampusGroupManager());
                 $campusGroupArray[] = $group;
             }
             //set the campusID and CampusDesc for the $campusGroupArray
             $groupCollectionArray[] = new GroupCollection($campusManager->getShortDesc(), $campusID, $campusGroupArray);
         }
         //TODO - not a correct join
         //TODO - get all campus ID and groups
         //TODO - get all public groups
     } else {
         //STAFF OR STUDENT
         //If the user is a student or staff then they should have campus assignmnets in cim_hrdb_assignment
         //Find all the campuses and save them in the $campusAssigment array
         $campusAssignments = array();
         $statusArray = array();
         $statusArray[] = CA_STAFF;
         $statusArray[] = CA_STUDENT;
         foreach ($statusArray as $key => $statusID) {
             // filter from the cim_hrdb_assignment table
             $assignmentManager = new RowManager_AssignmentsManager();
             $assignmentManager->setPersonID($this->personID);
             $assignmentManager->setAssignmentStatus($statusID);
             $assignmentList = new ListIterator($assignmentManager);
             $assignmentList->setFirst();
             while ($assignmentList->moveNext()) {
                 $assManager = $assignmentList->getCurrent(new RowManager_AssignmentsManager());
                 $campusAssignments[] = $assManager->getCampusID();
             }
         }
         //CAMPUS ADMIN
         //some users can be admin to a campus that they are neither a student or staff for
         //Check cim_sch_permissionsCampusAdmin for the viewer id of the user
         //for each found save the campusID in the $campusAssignments table
         $permissionsCampusAdmin = new RowManager_PermissionsCampusAdminManager();
         $permissionsCampusAdmin->setViewerID($this->viewer->getViewerID());
         $campusAdminList = new ListIterator($permissionsCampusAdmin);
         $campusAdminList->setFirst();
         while ($campusAdminList->moveNext()) {
             $permCampus = $campusAdminList->getCurrent(new RowManager_PermissionsCampusAdminManager());
             //for each campuses found, store in array
             $campusAssignments[] = $permCampus->getCampusID();
         }
         //remove any duplicate campus ID in the array
         $campusAssignments = array_unique($campusAssignments);
         //After collection all the campusIDs lets go through each campusID and get the groups
         //for each campusID find all the groups in $campusGroupManager table
         //Save the groups in an array taged with the campusID, Shortdesc
         foreach ($campusAssignments as $key => $campusID) {
             //Set the campusID so we can get the shortDesc at the end
             $campusManager = new RowManager_CampusManager($campusID);
             //Join cim_sch_Group and cim_sch_campusgroup
             $campusGroupManager = new RowManager_CampusGroupManager();
             $campusGroupManager->setCampusID($campusID);
             $multiTableManager = new MultiTableManager();
             $multiTableManager->addRowManager($campusGroupManager);
             $groupManager = new RowManager_GroupManager();
             $multiTableManager->addRowManager($groupManager, new JoinPair($campusGroupManager->getJoinOnGroupID(), $groupManager->getJoinOnGroupID()));
             //Go through the result and save all the groups of that campus to an array
             $campusGroupArray = array();
             $this->listIterator = $multiTableManager->getListIterator();
             $this->listIterator->setFirst();
             while ($this->listIterator->moveNext()) {
                 $group = $this->listIterator->getCurrent(new RowManager_GroupManager());
                 $campusGroupArray[] = $group;
             }
             //set the campusID and CampusDesc for the $campusGroupArray
             $groupCollectionArray[] = new GroupCollection($campusManager->getShortDesc(), $campusID, $campusGroupArray);
         }
         //GROUP ADMIN
         //The user might be a group admin so we should display that group as well
         //We have to find the which groups the user is admin for in cim_sch_permissionsGroupAdmin
         //For each of these gorups, look in cim_sch_campusGroup table and find and store the campusID in an array
         //Use the campusID array and for each campusID and only save the gorups with the same campusID
         //Save all the gorups in the $gorupCollectionArray
         //Set a fillter for only show results if its the user's ViewerID
         $permissionsGroupAdminManager = new RowManager_PermissionsGroupAdminManager();
         $permissionsGroupAdminManager->setViewerID($this->viewer->getViewerID());
         //Set Fillter to only show results that are a campus group
         $groupManager = new RowManager_GroupManager();
         $groupManager->setGroupTypeID(1);
         //Make the join of tables cim_sch_group, cim_sch_campusGroup, cim_sch_permissionsGroupAdmin
         $campusGroupManager = new RowManager_CampusGroupManager();
         $multiTableManager = new MultiTableManager();
         $multiTableManager->addRowManager($groupManager);
         $multiTableManager->addRowManager($campusGroupManager, new JoinPair($campusGroupManager->getJoinOnGroupID(), $groupManager->getJoinOnGroupID(), JOIN_TYPE_RIGHT));
         $multiTableManager->addRowManager($permissionsGroupAdminManager, new JoinPair($permissionsGroupAdminManager->getJoinOnGroupID(), $groupManager->getJoinOnGroupID(), JOIN_TYPE_RIGHT));
         //Go through the results and save the campusID of that group
         $campusGroupArray = array();
         $this->listIterator = $multiTableManager->getListIterator();
         $this->listIterator->setFirst();
         while ($this->listIterator->moveNext()) {
             $group = $this->listIterator->getCurrent(new RowManager_CampusGroupManager());
             $campusGroupArray[] = $group->getCampusID();
         }
         //For each campus found, go through the result again and fillter by campusID
         //Only the groups of the same campusID are saved together
         foreach ($campusGroupArray as $key => $campusID) {
             //This allows us to get the campus shortDesc at the end
             $campusManager = new RowManager_CampusManager($campusID);
             //same code as before to join the tables
             $permissionsGroupAdminManager = new RowManager_PermissionsGroupAdminManager();
             $permissionsGroupAdminManager->setViewerID($this->viewer->getViewerID());
             $campusGroupManager = new RowManager_CampusGroupManager();
             $campusGroupManager->setCampusID($campusID);
             $groupManager = new RowManager_GroupManager();
             $groupManager->setGroupTypeID(1);
             $multiTableManager = new MultiTableManager();
             $multiTableManager->addRowManager($groupManager);
             $multiTableManager->addRowManager($campusGroupManager, new JoinPair($campusGroupManager->getJoinOnGroupID(), $groupManager->getJoinOnGroupID(), JOIN_TYPE_RIGHT));
             $multiTableManager->addRowManager($permissionsGroupAdminManager, new JoinPair($permissionsGroupAdminManager->getJoinOnGroupID(), $groupManager->getJoinOnGroupID(), JOIN_TYPE_RIGHT));
             //go through the results and save the gorups
             $campusGroupArray = array();
             $this->listIterator = $multiTableManager->getListIterator();
             $this->listIterator->setFirst();
             while ($this->listIterator->moveNext()) {
                 $group = $this->listIterator->getCurrent(new RowManager_GroupManager());
                 $campusGroupArray[] = $group;
             }
             //set the campusID and CampusDesc for the $campusGroupArray
             $groupCollectionArray[] = new GroupCollection($campusManager->getShortDesc(), $campusID, $campusGroupArray);
         }
         //PUBLIC Groups
         //Show all groups in cim_sch_group with the groupTypeID of 2 (public)
         //The public gorup does not have a campus assign
         $campusID = 0;
         //The public gorup desc is public, this is shown in the template
         $publicGroupDesc = "Public";
         //Set the public gorup fillter
         $thisIsAPublicGroup = 2;
         $groupManager = new RowManager_GroupManager();
         $groupManager->setGroupTypeID($thisIsAPublicGroup);
         //go through the results and save the groups
         $groupArray = array();
         $this->listIterator = $groupManager->getListIterator();
         $this->listIterator->setFirst();
         while ($this->listIterator->moveNext()) {
             $group = $this->listIterator->getCurrent(new RowManager_GroupManager());
             $groupArray[] = $group;
         }
         //save the public groups to the array
         $groupCollectionArray[] = new GroupCollection($publicGroupDesc, $campusID, $groupArray);
     }
     //END OF IF
     //KSL
     //NORMAL
     /*
     		 $campusAssignments = array();
     
     		 $statusArray = array();
     		 $statusArray[] = CA_STAFF;
     		 $statusArray[] = CA_STUDENT;
     		 foreach( $statusArray as $key=>$statusID )
     		 {
     		 // filter from the cim_hrdb_assignment table
     		 $assignmentManager = new RowManager_AssignmentsManager();
     		 $assignmentManager->setPersonID( $this->personID );
     		 $assignmentManager->setAssignmentStatus( $statusID );
     
     		  
     
     		 $assignmentList = new ListIterator( $assignmentManager );
     		 $assignmentList->setFirst();
     		 while ( $assignmentList->moveNext() )
     		 {
     		 $assManager = $assignmentList->getCurrent( new RowManager_AssignmentsManager() );
     		 $campusAssignments[] = $assManager->getCampusID();
     		 }
     
     		 }
     		 // echo "<pre>".print_r($campusAssignments, true)."</pre>";
     
     		 // STEP 2:  get the appropriate groups
     		 foreach( $campusAssignments as $key=>$campusID )
     		 {
     		 $campusManager = new RowManager_CampusManager( $campusID );
     
     		 $campusGroupManager = new RowManager_CampusGroupManager();
     		 $campusGroupManager->setCampusID( $campusID );
     
     		 $multiTableManager = new MultiTableManager();
     		 $multiTableManager->addRowManager($campusGroupManager);
     		  
     		 $groupManager = new RowManager_GroupManager();
     		 $multiTableManager->addRowManager( $groupManager, new JoinPair( $campusGroupManager->getJoinOnGroupID(), $groupManager->getJoinOnGroupID() ) );
     
     		 $campusGroupArray = array();
     		 $this->listIterator = $multiTableManager->getListIterator();
     		 $this->listIterator->setFirst();
     		 while( $this->listIterator->moveNext() )
     		 {
     		 $group = $this->listIterator->getCurrent(new RowManager_GroupManager());
     		 $campusGroupArray[] = $group;
     		 }
     
     		 $groupCollectionArray[] = new GroupCollection( $campusManager->getShortDesc(), $campusID, $campusGroupArray );
     		 }*/
     return $this->template->set('groupCollectionArray', $groupCollectionArray);
 }