/** * @see ProjectPermissionInterface::set_organisation_unit_id() * @param integer $organisation_unit_id * @return bool */ public function set_organisation_unit_id($organisation_unit_id) { global $transaction; if (is_numeric($organisation_unit_id) and $this->project_permission and $this->permission_id) { $transaction_id = $transaction->begin(); $project_id = $this->project_permission->get_project_id(); $project_folder_id = ProjectFolder::get_folder_by_project_id($project_id); $current_ou_folder_id = OrganisationUnitFolder::get_folder_by_organisation_unit_id($this->project_permission->get_organisation_unit_id()); $new_ou_folder_id = OrganisationUnitFolder::get_folder_by_organisation_unit_id($organisation_unit_id); $current_virtual_folder_array = VirtualFolder::list_entries_by_folder_id($current_ou_folder_id); foreach ($current_virtual_folder_array as $key => $value) { $virtual_folder = new ProjectVirtualFolder($value); if ($virtual_folder->is_project_vfolder() == true) { $virtual_folder_id = $value; } } if ($virtual_folder_id) { $virtual_folder = new VirtualFolder($virtual_folder_id); if ($virtual_folder->unlink_folder($project_folder_id) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } $new_virtual_folder_array = $virtual_folder->list_entries_by_folder_id($new_ou_folder_id); foreach ($new_virtual_folder_array as $key => $value) { $virtual_folder = new ProjectVirtualFolder($value); if ($virtual_folder->is_project_vfolder() == true) { $virtual_folder_id = $value; } } if ($virtual_folder_id) { $virtual_folder = new VirtualFolder($virtual_folder_id); if ($virtual_folder->link_folder($project_folder_id) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } if ($this->project_permission->set_organisation_unit_id($organisation_unit_id) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } else { if ($transaction_id != null) { $transaction->commit($transaction_id); } return true; } } else { return false; } }
/** * @see SampleSecurityInterface::delete_organisation_unit() * @param integer $entry_id * @return bool */ public function delete_organisation_unit($entry_id) { global $transaction; if ($this->sample_id and is_numeric($entry_id)) { $transaction_id = $transaction->begin(); $sample_has_organisation_unit = new SampleHasOrganisationUnit_Access($entry_id); $organisation_unit_id = $sample_has_organisation_unit->get_organisation_unit_id(); $success = $sample_has_organisation_unit->delete(); if ($success == true) { $sample_folder_id = SampleFolder::get_folder_by_sample_id($this->sample_id); $folder_id = OrganisationUnitFolder::get_folder_by_organisation_unit_id($organisation_unit_id); $virtual_folder = new VirtualFolder(null); $virtual_folder_array = $virtual_folder->list_entries_by_folder_id($folder_id); foreach ($virtual_folder_array as $key => $value) { $virtual_folder = new SampleVirtualFolder($value); if ($virtual_folder->is_sample_vfolder() == true) { $virtual_folder_id = $value; } } if ($virtual_folder_id) { $virtual_folder = new VirtualFolder($virtual_folder_id); if ($virtual_folder->unlink_folder($sample_folder_id) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } $organisation_unit = new OrganisationUnit($organisation_unit_id); $group_array = $organisation_unit->list_groups(); if (is_array($group_array) and count($group_array) >= 1) { foreach ($group_array as $key => $value) { $folder_id = GroupFolder::get_folder_by_group_id($value); $virtual_folder = new VirtualFolder(null); $virtual_folder_array = $virtual_folder->list_entries_by_folder_id($folder_id); foreach ($virtual_folder_array as $key => $value) { $virtual_folder = new SampleVirtualFolder($value); if ($virtual_folder->is_sample_vfolder() == true) { $virtual_folder_id = $value; } } if (is_numeric($virtual_folder_id)) { $virtual_folder = new VirtualFolder($virtual_folder_id); if ($virtual_folder->unlink_folder($sample_folder_id) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } } } if ($transaction_id != null) { $transaction->commit($transaction_id); } return true; } else { if ($transaction_id != null) { $transaction->rollback($transaction_id); } return false; } } else { return false; } }
/** * @see ProjectPermissionOrganisationUnitInterface::delete() * @return bool * @throws ProjectPermissionOrganisationUnitDeleteException * @throws ProjectPermisisonOrganisationUnitDeleteVirtualFolderException */ public function delete() { global $transaction; if ($this->permission_id and $this->project_permission) { $transaction_id = $transaction->begin(); $project_id = $this->project_permission->get_project_id(); $project_folder_id = ProjectFolder::get_folder_by_project_id($project_id); $permission_string = strrev(decbin($this->project_permission->get_permission())); if (ProjectPermission_Access::count_entries_with_project_id_and_organisation_unit_id($project_id, $this->project_permission->get_organisation_unit_id()) <= 1) { $folder_id = OrganisationUnitFolder::get_folder_by_organisation_unit_id($this->project_permission->get_organisation_unit_id()); $virtual_folder = new VirtualFolder(null); $virtual_folder_array = $virtual_folder->list_entries_by_folder_id($folder_id); foreach ($virtual_folder_array as $key => $value) { $virtual_folder = new ProjectVirtualFolder($value); if ($virtual_folder->is_project_vfolder() == true) { $virtual_folder_id = $value; } } if ($virtual_folder_id) { $virtual_folder = new VirtualFolder($virtual_folder_id); if ($virtual_folder->unlink_folder($project_folder_id) == false) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectPermissionOrganisationUnitDeleteVirtualFolderException(); } } } if (parent::delete() == true) { if ($transaction_id != null) { $transaction->commit($transaction_id); } return true; } else { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw new ProjectPermissionOrganisationUnitDeleteException(); } } else { throw new ProjectPermissionOrganisationUnitDeleteException(); } }
/** * @see EventListenerInterface::listen_events() * @param object $event_object * @return bool */ public static function listen_events($event_object) { if ($event_object instanceof OrganisationUnitCreateEvent) { if ($event_object->get_stores_data() == true) { $organisation_unit_folder = new OrganisationUnitFolder(null); if ($organisation_unit_folder->create($event_object->get_organisation_unit_id()) == false) { return false; } } } if ($event_object instanceof OrganisationUnitPostDeleteEvent) { if ($event_object->get_stores_data() == true) { $folder_id = OrganisationUnitFolder::get_folder_by_organisation_unit_id($event_object->get_organisation_unit_id()); $organisation_unit_folder = new OrganisationUnitFolder($folder_id); if ($organisation_unit_folder->delete(true, true) == false) { return false; } } } if ($event_object instanceof OrganisationUnitRenameEvent) { $organisation_unit = new OrganisationUnit($event_object->get_organisation_unit_id()); $organisation_unit_folder = new OrganisationUnitFolder(self::get_folder_by_organisation_unit_id($event_object->get_organisation_unit_id())); if ($organisation_unit_folder->set_name($organisation_unit->get_name()) == false) { return false; } } if ($event_object instanceof OrganisationUnitChangeOwnerEvent) { $organisation_unit = new OrganisationUnit($event_object->get_organisation_unit_id()); $folder_id = self::get_folder_by_organisation_unit_id($event_object->get_organisation_unit_id()); if ($folder_id) { $organisation_unit_folder = new OrganisationUnitFolder($folder_id); if ($organisation_unit_folder->set_owner_id($organisation_unit->get_master_owner_id()) == false) { return false; } } } return true; }