public function execute(CommandContext $context)
 {
     if (!Current_User::allow('hms', 'edit_role_members')) {
         PHPWS_Core::initModClass('hms', 'exception/PermissionException.php');
         throw new PermissionException('You do not have permission to edit role members.');
     }
     $username = $context->get('username');
     $role_id = $context->get('role');
     $classname = $context->get('class');
     $instance = $context->get('instance');
     if (is_null($username) || is_null($role_id)) {
         echo json_encode(false);
         exit;
     }
     $role = new HMS_Role();
     $role->id = $role_id;
     if ($role->load()) {
         try {
             $role->addUser($username, $classname, $instance);
             echo json_encode('true');
             exit;
         } catch (Exception $e) {
             echo json_encode($e->getMessage());
             exit;
         }
     }
 }
Example #2
0
 /**
  * Copies this floor object to a new term, then calls copy on all
  * 'this' floor's rooms
  *
  * Setting $assignments to 'true' causes the copy public function to copy
  * the assignments as well as the hall structure.
  *
  * @return bool False if unsuccessful.
  */
 public function copy($to_term, $hall_id, $assignments = false, $roles = false)
 {
     if (!$this->id) {
         return false;
     }
     //echo "in hms_floor, copying this floor id: $this->id <br>";
     // Create a clone of the current floor object
     // Set id to 0, set term, and save
     $new_floor = clone $this;
     $new_floor->reset();
     $new_floor->term = $to_term;
     $new_floor->residence_hall_id = $hall_id;
     $new_floor->f_movein_time_id = null;
     $new_floor->t_movein_time_id = null;
     $new_floor->rt_movein_time_id = null;
     try {
         $new_floor->save();
     } catch (Exception $e) {
         throw $e;
     }
     // Copy any roles related to this floor.
     if ($roles) {
         PHPWS_Core::initModClass("hms", "HMS_Permission.php");
         PHPWS_Core::initModClass("hms", "HMS_Role.php");
         // Get memberships by object instance.
         $membs = HMS_Permission::getUserRolesForInstance($this);
         // Add each user to new floor
         foreach ($membs as $m) {
             // Lookup the username
             $user = new PHPWS_User($m['user_id']);
             // Load role and add user to new instance
             $role = new HMS_Role();
             $role->id = $m['role'];
             $role->load();
             $role->addUser($user->getUsername(), get_class($new_floor), $new_floor->id);
         }
     }
     // Load all the rooms for this floor
     if (empty($this->_rooms)) {
         try {
             $this->loadRooms();
         } catch (Exception $e) {
             throw $e;
         }
     }
     /**
      * Rooms exist. Start making copies.
      * Further copying is needed at the room level.
      */
     if (!empty($this->_rooms)) {
         foreach ($this->_rooms as $room) {
             try {
                 $room->copy($to_term, $new_floor->id, null, $assignments);
             } catch (Exception $e) {
                 throw $e;
             }
         }
     }
 }
 public function copy($to_term, $assignments = FALSE, $roles = FALSE)
 {
     if (!$this->id) {
         return false;
     }
     // echo "In hms_residence_hall, copying this hall: $this->id <br>";
     // Create clone of current room object
     // Set id to 0, set term, and save
     $new_hall = clone $this;
     $new_hall->reset();
     $new_hall->id = 0;
     $new_hall->term = $to_term;
     try {
         $new_hall->save();
     } catch (Exception $e) {
         // rethrow it to the top level
         throw $e;
     }
     // Copy any roles related to this residence hall.
     if ($roles) {
         PHPWS_Core::initModClass("hms", "HMS_Permission.php");
         PHPWS_Core::initModClass("hms", "HMS_Role.php");
         // Get memberships by object instance.
         $membs = HMS_Permission::getUserRolesForInstance($this);
         // test($membs,1);
         // Add each user to new hall
         foreach ($membs as $m) {
             // Lookup the username
             $user = new PHPWS_User($m['user_id']);
             // Load role and add user to new instance
             $role = new HMS_Role();
             $role->id = $m['role'];
             $role->load();
             $role->addUser($user->getUsername(), get_class($new_hall), $new_hall->id);
         }
     }
     // Save successful, create new floors
     // Load all floors for this hall
     if (empty($this->_floors)) {
         try {
             $this->loadFloors();
         } catch (Exception $e) {
             throw $e;
         }
     }
     // Floors exist, start making copies
     if (!empty($this->_floors)) {
         foreach ($this->_floors as $floor) {
             try {
                 $floor->copy($to_term, $new_hall->id, $assignments, $roles);
             } catch (Exception $e) {
                 throw $e;
             }
         }
     }
 }