예제 #1
0
 /**
  * @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;
     }
 }
예제 #2
0
 /**
  * @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();
     }
 }