Ejemplo n.º 1
0
 /**
  * @see ProjectSecurityInterface::change_ou_user_permission()
  * @param integer $leader_id
  * @return bool
  * @throws ProjectSecurityChangeException
  */
 public function change_ou_user_permission($organisation_unit_id)
 {
     if (is_numeric($organisation_unit_id)) {
         if (ProjectPermission::delete_entries_by_project_id_and_intention($this->project_id, 2) == true and ProjectPermission::delete_entries_by_project_id_and_intention($this->project_id, 5) == true) {
             $organisation_unit = new OrganisationUnit($organisation_unit_id);
             $leader_array = $organisation_unit->list_leaders($organisation_unit_id);
             if (is_array($leader_array) and count($leader_array) >= 1) {
                 foreach ($leader_array as $key => $value) {
                     try {
                         $project_permission = new ProjectPermissionUser(null);
                         $project_permission->create($value, $project_id, (int) Registry::get_value("project_leader_default_permission"), null, 2);
                     } catch (ProjectPermissionUserException $e) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         throw new ProjectSecurityChangeException();
                     }
                 }
             }
             $quality_manager_array = $organisation_unit->list_quality_managers();
             if (is_array($quality_manager_array) and count($quality_manager_array) >= 1) {
                 foreach ($quality_manager_array as $key => $value) {
                     try {
                         $project_permission = new ProjectPermissionUser(null);
                         $project_permission->create($value, $project_id, (int) Registry::get_value("project_quality_manager_default_permission"), null, 5);
                     } catch (ProjectPermissionUserException $e) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         throw new ProjectSecurityChangeException();
                     }
                 }
             }
             return true;
         } else {
             throw new ProjectSecurityChangeException("Cannot delete Entries");
         }
     } else {
         throw new ProjectSecurityChangeException("Missing Information");
     }
 }