/** * @throws ProjectIDMissingException * @throws ProjectSecurityAccessDeniedException * @throws ProjectPermissionIDMissingException */ public static function permission_delete() { global $project_security, $user; if ($_GET['project_id']) { if ($_GET['id']) { $project = new Project($_GET['project_id']); if ($user->get_user_id() == $project->get_owner_id() or $project_security->is_access(2, false) == true or $project_security->is_access(4, false) == true or $project_security->is_access(7, false) == true) { if ($_GET['sure'] != "true") { $template = new HTMLTemplate("project/admin/permission_delete.html"); $paramquery = $_GET; $paramquery['sure'] = "true"; $params = http_build_query($paramquery); $template->set_var("yes_params", $params); $paramquery = $_GET; unset($paramquery['nextpage']); unset($paramquery['id']); $paramquery['run'] = "admin_permission"; $params = http_build_query($paramquery); $template->set_var("no_params", $params); $template->output(); } else { $paramquery = $_GET; unset($paramquery['nextpage']); unset($paramquery['id']); unset($paramquery['sure']); $paramquery['run'] = "admin_permission"; $params = http_build_query($paramquery); $project_permission = ProjectPermission::get_instance($_GET['id']); if ($project_permission->delete()) { Common_IO::step_proceed($params, "Delete Permission", "Operation Successful", null); } else { Common_IO::step_proceed($params, "Delete Permission", "Operation Failed", null); } } } else { throw new ProjectSecurityAccessDeniedException(); } } else { throw new ProjectPermissionIDMissingException(); } } else { throw new ProjectIDMissingException(); } }
/** * @see ProjectInterface::move_to_project() * @param integer $organisation_unit_id * @return bool * @throws ProjectMoveException * @throws ProjectMoveProjectExistsException * @throws ProjectMovePermissionException * @throws ProjectMoveFolderException * @throws ProjectSecurityAccessDeniedException */ public function move_to_project($project_id) { global $user, $transaction; if ($this->project_id and $this->project and is_numeric($project_id)) { $project_security = new ProjectSecurity($this->project_id); if ($project_security->is_access(3, false)) { if (self::exist_project_name(null, $project_id, $this->project->get_name()) == false) { $transaction_id = $transaction->begin(); $project_permission_array = ProjectPermission::list_entries_by_project_id($this->project_id); if (is_array($project_permission_array) and count($project_permission_array) >= 1) { foreach ($project_permission_array as $key => $value) { try { $project_permission = ProjectPermission::get_instance($value); $project_permission->delete(); } catch (ProjectPermissionException $e) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectMovePermissionException(); } } } if ($this->project->set_toid_organ_unit(null) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectMoveException(); } if ($this->project->set_toid_project($project_id) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectMoveException(); } $folder_id = ProjectFolder::get_folder_by_project_id($this->project_id); $folder = new Folder($folder_id); $destination_id = ProjectFolder::get_folder_by_project_id($project_id); if ($folder->move_folder($destination_id, false) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectMoveFolderException(); } if ($transaction_id != null) { $transaction->commit($transaction_id); } return true; } else { throw new ProjectMoveProjectExistsException(); } } else { throw new ProjectSecurityAccessDeniedException(); } } else { throw new ProjectMoveException(); } }
/** * @param string $json_column_array * @param string $json_argument_array * @param string $css_page_id * @param string $css_row_sort_id * @param string $entries_per_page * @param string $page * @param string $sortvalue * @param string $sortmethod * @return string * @throws ProjectSecurityAccessDeniedException * @throws ProjectIDMissingException */ public static function list_project_permissions($json_column_array, $json_argument_array, $css_page_id, $css_row_sort_id, $entries_per_page, $page, $sortvalue, $sortmethod) { global $user, $project_security; $argument_array = json_decode($json_argument_array); $project_id = $argument_array[1]; if (is_numeric($project_id)) { $project = new Project($project_id); $project_permission_array = ProjectPermission::list_entries_by_project_id($project_id); if ($user->get_user_id() == $project->get_owner_id() or $project_security->is_access(2, false) == true or $project_security->is_access(4, false) == true or $project_security->is_access(7, false) == true) { $list_request = new ListRequest_IO(); $list_request->set_column_array($json_column_array); if (!is_numeric($entries_per_page) or $entries_per_page < 1) { $entries_per_page = 20; } $list_array = Project_Wrapper::list_project_permissions($project_id, $sortvalue, $sortmethod, $page * $entries_per_page - $entries_per_page, $page * $entries_per_page); if (is_array($list_array) and count($list_array) >= 1) { $project = new Project($project_id); $project_security = new ProjectSecurity($project_id); foreach ($list_array as $key => $value) { $list_array[$key]['symbol'] = "<img src='images/icons/permissions.png' alt='N' border='0' />"; $project_permission = ProjectPermission::get_instance($list_array[$key]['id']); $user_id = $project_permission->get_user_id(); $group_id = $project_permission->get_group_id(); $organ_unit_id = $project_permission->get_organisation_unit_id(); if ($user_id) { $permission_user = new User($user_id); $list_array[$key]['name'] = $permission_user->get_username(); $list_array[$key]['type'] = "user"; $list_array[$key]['fullname'] = $permission_user->get_full_name(false); } elseif ($group_id) { $list_array[$key]['type'] = "group"; } else { $list_array[$key]['type'] = "organisation unit"; } if ($project_permission->get_owner_id() == null) { $list_array[$key]['createdby'] = "system"; } else { $created_by = new User($project_permission->get_owner_id()); $list_array[$key]['createdby'] = $created_by->get_username(); } $permission_array = $project_permission->get_permission_array(); if ($project_security->is_access(2, false) or $project->get_owner_id() == $user->get_user_id()) { if ($permission_array['read'] == true) { $list_array[$key]['re'] = "<img src='images/icons/permission_ok_active.png' alt='' />"; } else { $list_array[$key]['re'] = "<img src='images/icons/permission_denied_active.png' alt='' />"; } } else { if ($permission_array['read'] == true) { $list_array[$key]['re'] = "<img src='images/icons/permission_ok_active_na.png' alt='' />"; } else { $list_array[$key]['re'] = "<img src='images/icons/permission_denied_active_na.png' alt='' />"; } } if ($project_security->is_access(7, false) or $project->get_owner_id() == $user->get_user_id()) { if ($permission_array['set_readable'] == true) { $list_array[$key]['sr'] = "<img src='images/icons/permission_ok_active.png' alt='' />"; } else { $list_array[$key]['sr'] = "<img src='images/icons/permission_denied_active.png' alt='' />"; } } else { if ($permission_array['set_readable'] == true) { $list_array[$key]['sr'] = "<img src='images/icons/permission_ok_active_na.png' alt='' />"; } else { $list_array[$key]['sr'] = "<img src='images/icons/permission_denied_active_na.png' alt='' />"; } } if ($project_security->is_access(4, false) or $project->get_owner_id() == $user->get_user_id()) { if ($permission_array['write'] == true) { $list_array[$key]['wr'] = "<img src='images/icons/permission_ok_active.png' alt='' />"; } else { $list_array[$key]['wr'] = "<img src='images/icons/permission_denied_active.png' alt='' />"; } } else { if ($permission_array['write'] == true) { $list_array[$key]['wr'] = "<img src='images/icons/permission_ok_active_na.png' alt='' />"; } else { $list_array[$key]['wr'] = "<img src='images/icons/permission_denied_active_na.png' alt='' />"; } } if ($project_security->is_access(7, false) or $project->get_owner_id() == $user->get_user_id()) { if ($permission_array['set_writeable'] == true) { $list_array[$key]['sw'] = "<img src='images/icons/permission_ok_active.png' alt='' />"; } else { $list_array[$key]['sw'] = "<img src='images/icons/permission_denied_active.png' alt='' />"; } } else { if ($permission_array['set_writeable'] == true) { $list_array[$key]['sw'] = "<img src='images/icons/permission_ok_active_na.png' alt='' />"; } else { $list_array[$key]['sw'] = "<img src='images/icons/permission_denied_active_na.png' alt='' />"; } } if ($project_security->is_access(7, false)) { if ($permission_array['reactivate'] == true) { $list_array[$key]['ra'] = "<img src='images/icons/permission_ok_active.png' alt='' />"; } else { $list_array[$key]['ra'] = "<img src='images/icons/permission_denied_active.png' alt='' />"; } if ($permission_array['delete'] == true) { $list_array[$key]['de'] = "<img src='images/icons/permission_ok_active.png' alt='' />"; } else { $list_array[$key]['de'] = "<img src='images/icons/permission_denied_active.png' alt='' />"; } if ($permission_array['set_permissions'] == true) { $list_array[$key]['sp'] = "<img src='images/icons/permission_ok_active.png' alt='' />"; } else { $list_array[$key]['sp'] = "<img src='images/icons/permission_denied_active.png' alt='' />"; } } else { if ($permission_array['reactivate'] == true) { $list_array[$key]['ra'] = "<img src='images/icons/permission_ok_active_na.png' alt='' />"; } else { $list_array[$key]['ra'] = "<img src='images/icons/permission_denied_active_na.png' alt='' />"; } if ($permission_array['delete'] == true) { $list_array[$key]['de'] = "<img src='images/icons/permission_ok_active_na.png' alt='' />"; } else { $list_array[$key]['de'] = "<img src='images/icons/permission_denied_active_na.png' alt='' />"; } if ($permission_array['set_permissions'] == true) { $list_array[$key]['sp'] = "<img src='images/icons/permission_ok_active_na.png' alt='' />"; } else { $list_array[$key]['sp'] = "<img src='images/icons/permission_denied_active_na.png' alt='' />"; } } $edit_paramquery = array(); $edit_paramquery['username'] = $_GET['username']; $edit_paramquery['session_id'] = $_GET['session_id']; $edit_paramquery['nav'] = "project"; $edit_paramquery['run'] = "admin_permission_edit"; $edit_paramquery['project_id'] = $project_id; $edit_paramquery['id'] = $list_array[$key]['id']; $edit_params = http_build_query($edit_paramquery, '', '&'); $list_array[$key]['e']['link'] = $edit_params; $list_array[$key]['e']['content'] = "E"; if ($project_permission->get_intention() == null) { $delete_paramquery = array(); $delete_paramquery['username'] = $_GET['username']; $delete_paramquery['session_id'] = $_GET['session_id']; $delete_paramquery['nav'] = "project"; $delete_paramquery['run'] = "admin_permission_delete"; $delete_paramquery['project_id'] = $project_id; $delete_paramquery['id'] = $list_array[$key]['id']; $delete_params = http_build_query($delete_paramquery, '', '&'); $list_array[$key]['d']['link'] = $delete_params; $list_array[$key]['d']['content'] = "D"; } else { $list_array[$key]['d']['content'] = ""; } } } else { $list_request->empty_message("<span class='italic'>No permissions found!</span>"); } $list_request->set_array($list_array); return $list_request->get_page($page); } else { throw new ProjectSecurityAccessDeniedException(); } } else { throw new ProjectIDMissingException(); } }
/** * @see ProjectSecurityInterface::change_organisation_unit_permission() * @param integer $organisation_unit_id * @return bool * @throws ProjectSecurityChangeException */ public function change_organisation_unit_permission($organisation_unit_id) { global $transaction; if (is_numeric($organisation_unit_id)) { $transaction_id = $transaction->begin(); $organisation_unit = new OrganisationUnit($organisation_unit_id); $project_permission_ou_group_array = ProjectPermission::list_entries_by_project_id_and_intention($this->project_id, 4); if (is_array($project_permission_ou_group_array) and count($project_permission_ou_group_array) >= 1) { foreach ($project_permission_ou_group_array as $key => $value) { try { $project_permission = ProjectPermission::get_instance($value); $project_permission->delete() == false; } catch (ProjectPermissionException $e) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectSecurityChangeException(); } } } $project_permission_array = ProjectPermission::list_entries_by_project_id_and_intention($this->project_id, 3); if (count($project_permission_array) > 0 and is_numeric($project_permission_array[0])) { $project_permission = ProjectPermission::get_instance($project_permission_array[0]); if (($return_value = $project_permission->set_organisation_unit_id($organisation_unit_id)) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectSecurityChangeException(); } } else { try { $project_permission = new ProjectPermissionOrganisationUnit(null); $return_value = $project_permission->create($organisation_unit_id, $this->project_id, (int) Registry::get_value("project_organisation_unit_default_permission"), null, 3); } catch (ProjectPermissionOrganisationUnitException $e) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectSecurityChangeException(); } } $group_array = $organisation_unit->list_groups(); if (is_array($group_array) and count($group_array) >= 1) { foreach ($group_array as $key => $value) { try { $project_permission = new ProjectPermissionGroup(null); $project_permission->create($value, $this->project_id, (int) Registry::get_value("project_group_default_permission"), null, 4); } catch (ProjectPermissionGroupException $e) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectSecurityChangeException(); } } } if ($transaction_id != null) { $transaction->commit($transaction_id); } return $return_value; } else { throw new ProjectSecurityChangeException("Missing Information"); } }