/** * @see SampleSecurityInterface::is_access() * @param integer $intention 1 = Read, 2 = Write * @param bool $ignore_admin_status * @return bool */ public function is_access($intention, $ignore_admin_status = false) { global $user; if ($this->sample_id) { if ($user->is_admin() and $ignore_admin_status == false) { return true; } else { $sample = new Sample($this->sample_id); $sample_folder_id = SampleFolder::get_folder_by_sample_id($this->sample_id); $sample_folder_data_entity = new DataEntity(Folder::get_data_entity_id_by_folder_id($sample_folder_id)); if ($sample->get_owner_id() == $user->get_user_id()) { return true; } else { $pk = SampleHasUser_Access::get_entry_by_sample_id_and_user_id($this->sample_id, $user->get_user_id()); $sample_has_user = new SampleHasUser_Access($pk); if ($intention == 1) { if ($sample_has_user->get_read() == true) { return true; } else { $organisation_unit_array = OrganisationUnit::list_entries_by_user_id($user->get_user_id()); if (is_array($organisation_unit_array) and count($organisation_unit_array) >= 1) { foreach ($organisation_unit_array as $key => $value) { $pk = SampleHasOrganisationUnit_Access::get_entry_by_sample_id_and_organisation_unit_id($this->sample_id, $value); if (is_numeric($pk)) { return true; } } } /* $parent_virtual_folder_array = $sample_folder_data_entity->get_parent_virtual_folder_ids(); if (is_array($parent_virtual_folder_array) and count($parent_virtual_folder_array) >= 1) { foreach($parent_virtual_folder_array as $key => $value) { $virtual_folder = new VirtualFolder($value); $parent_folder_id = $virtual_folder->get_parent_folder_id(); $folder = Folder::get_instance($parent_folder_id); if ($folder->is_read_access() == true) { return true; } } } */ return false; } } else { if ($sample_has_user->get_write() == true) { return true; } else { return false; } } } } } else { return null; } }
/** * @todo rebuild with List and JS operations * @todo move to admin * @throws UserIDMissingException */ public static function list_user_admin_organisation_units($user_id) { if (is_numeric($user_id)) { $template = new HTMLTemplate("organisation_unit/admin/dialog/list_user_admin.html"); $current_user = new User($user_id); $template->set_var("username", $current_user->get_username()); $template->set_var("fullname", $current_user->get_full_name(false)); $paramquery = $_GET; $paramquery['action'] = "add_organisation_unit"; $params = http_build_query($paramquery, '', '&'); $template->set_var("add_ou_params", $params); $organisation_unit_array = OrganisationUnit::list_entries_by_user_id($user_id); $organisation_unit_content_array = array(); $counter = 0; if (is_array($organisation_unit_array) and count($organisation_unit_array) >= 1) { foreach ($organisation_unit_array as $key => $value) { $organisation_unit = new OrganisationUnit($value); $paramquery = $_GET; $paramquery['action'] = "delete_organisation_unit"; $paramquery['key'] = $value; $params = http_build_query($paramquery, '', '&'); $organisation_unit_content_array[$counter]['name'] = $organisation_unit->get_name(); $organisation_unit_content_array[$counter]['delete_params'] = $params; $counter++; } $template->set_var("no_ou", false); } else { $template->set_var("no_ou", true); } $template->set_var("ou", $organisation_unit_content_array); $template->output(); } else { throw new UserIDMissingException(); } }