/** * Return parent folder instance * * @param void * @return ProjectFolder */ function getFolder() { if (is_null($this->folder)) { $this->folder = ProjectFolders::findById($this->getFolderId()); if ($this->folder instanceof ProjectFolder && $this->folder->getProjectId() != $this->getProjectId()) { $this->folder = null; } // if } // if return $this->folder; }
/** * Return parent folder * * @param void * @return object */ function getParent() { if (is_null($this->parent)) { $this->parent = ProjectFolders::findById($this->getParentId()); if ($this->parent instanceof ProjectFolder && $this->parent->getProjectId() != $this->getProjectId()) { $this->parent = null; } // if } // if return $this->parent; }
/** * Add file * * @access public * @param void * @return null */ function add_file() { if (!ProjectFile::canAdd(logged_user(), active_project())) { flash_error(lang('no access permissions')); $this->redirectToReferer(get_url('files')); } // if $file = new ProjectFile(); $file_data = array_var($_POST, 'file'); if (!is_array($file_data)) { $file_data = array('is_private' => config_option('default_private', false)); // array } // if $folder = null; $folder_id = get_id('folder_id'); if ($folder_id) { $folder = ProjectFolders::findById($folder_id); } // if if ($folder instanceof ProjectFolder) { if (!is_array($file_data)) { $file_data = array('folder_id' => $folder->getId(), 'is_private' => config_option('default_private', false)); // array } else { $file_data['is_private'] = config_option('default_private', false); } } // if tpl_assign('file', $file); tpl_assign('file_data', $file_data); if (is_array(array_var($_POST, 'file'))) { try { DB::beginWork(); $uploaded_file = array_var($_FILES, 'file_file'); $file->setFromAttributes($file_data); if (!logged_user()->isMemberOfOwnerCompany()) { $file->setIsPrivate(false); $file->setIsImportant(false); $file->setCommentsEnabled(true); $file->setAnonymousCommentsEnabled(false); } // if $file->setFilename(array_var($uploaded_file, 'name')); $file->setProjectId(active_project()->getId()); $file->setIsVisible(true); $file->save(); if (plugin_active('tags')) { $file->setTagsFromCSV(array_var($file_data, 'tags')); } $revision = $file->handleUploadedFile($uploaded_file, true); // handle uploaded file ApplicationLogs::createLog($file, active_project(), ApplicationLogs::ACTION_ADD); DB::commit(); flash_success(lang('success add file', $file->getFilename())); $this->redirectToUrl($file->getDetailsUrl()); } catch (Exception $e) { DB::rollback(); tpl_assign('error', $e); tpl_assign('file', new ProjectFile()); // reset file // If we uploaded the file remove it from repository if (isset($revision) && $revision instanceof ProjectFileRevision && FileRepository::isInRepository($revision->getRepositoryId())) { FileRepository::deleteFile($revision->getRepositoryId()); } // if } // try } // if }
/** * Delete folder * * @access public * @param void * @return null */ function delete_folder() { $this->setTemplate('del_folder'); $folder = ProjectFolders::findById(get_id()); if (!($folder instanceof ProjectFolder)) { flash_error(lang('folder dnx')); $this->redirectTo('files'); } // if if (!$folder->canDelete(logged_user())) { flash_error(lang('no access permissions')); $this->redirectToReferer(get_url('files')); } // if $delete_data = array_var($_POST, 'deleteFolder'); tpl_assign('folder', $folder); tpl_assign('delete_data', $delete_data); if (!is_array($delete_data)) { $delete_data = array( 'really' => 0, 'password' => '', ); // array tpl_assign('delete_data', $delete_data); } else if ($delete_data['really'] == 1) { $password = $delete_data['password']; if (trim($password) == '') { tpl_assign('error', new Error(lang('password value missing'))); return $this->render(); } if (!logged_user()->isValidPassword($password)) { tpl_assign('error', new Error(lang('invalid login data'))); return $this->render(); } try { DB::beginWork(); $folder->delete(); ApplicationLogs::createLog($folder, active_project(), ApplicationLogs::ACTION_DELETE); DB::commit(); flash_success(lang('success delete folder', $folder->getName())); } catch(Exception $e) { DB::rollback(); flash_error(lang('error delete folder')); } // try $this->redirectTo('files'); } else { flash_error(lang('error delete folder')); $this->redirectToUrl($folder->getDetailsUrl()); } } // delete_folder
/** * Add file * * @access public * @param void * @return null */ function add_file() { if (!ProjectFile::canAdd(logged_user(), active_project())) { flash_error(lang('no access permissions')); $this->redirectToReferer(get_url('files')); } // if $file = new ProjectFile(); $file_data = array_var($_POST, 'file'); if (!is_array($file_data)) { $file_data = array('is_private' => config_option('default_private', false)); // array } // if $folder = null; $folder_id = get_id('folder_id'); if ($folder_id) { $folder = ProjectFolders::findById($folder_id); } // if if ($folder instanceof ProjectFolder) { if (!is_array($file_data)) { $file_data = array('folder_id' => $folder->getId(), 'is_private' => config_option('default_private', false)); // array } else { $file_data['is_private'] = config_option('default_private', false); } } // if tpl_assign('file', $file); tpl_assign('file_data', $file_data); if (is_array(array_var($_POST, 'file'))) { try { DB::beginWork(); $uploaded_file = array_var($_FILES, 'file_file'); // move uploaded file to folder where I can read and write move_uploaded_file($uploaded_file['tmp_name'], ROOT . '/tmp/' . $uploaded_file['name']); $uploaded_file['tmp_name'] = ROOT . '/tmp/' . $uploaded_file['name']; $file->setFromAttributes($file_data); if (!logged_user()->isMemberOfOwnerCompany()) { $file->setIsPrivate(false); $file->setIsImportant(false); $file->setCommentsEnabled(true); $file->setAnonymousCommentsEnabled(false); } // if $file->setFilename(array_var($uploaded_file, 'name')); $file->setProjectId(active_project()->getId()); $file->setIsVisible(true); $file->save(); if (plugin_active('tags')) { $file->setTagsFromCSV(array_var($file_data, 'tags')); } $revision = $file->handleUploadedFile($uploaded_file, true); // handle uploaded file ApplicationLogs::createLog($file, active_project(), ApplicationLogs::ACTION_ADD); DB::commit(); // Try to send notifications but don't break submission in case of an error // define all the users to be notified - here all project users, from all companies. // Restrictions if comment is private is taken into account in newOtherComment() try { $notify_people = array(); $project_companies = active_project()->getCompanies(); foreach ($project_companies as $project_company) { $company_users = $project_company->getUsersOnProject(active_project()); if (is_array($company_users)) { foreach ($company_users as $company_user) { if (array_var($file_data, 'notify_company_' . $project_company->getId()) == 'checked' || array_var($file_data, 'notify_user_' . $company_user->getId())) { $notify_people[] = $company_user; } // if } // if } // if } // if Notifier::newFile($file, $notify_people); // send notification email... } catch (Exception $e) { Logger::log("Error: Notification failed, " . $e->getMessage(), Logger::ERROR); } // try flash_success(lang('success add file', $file->getFilename())); $this->redirectToUrl($file->getDetailsUrl()); } catch (Exception $e) { DB::rollback(); tpl_assign('error', $e); tpl_assign('file', new ProjectFile()); // reset file // If we uploaded the file remove it from repository if (isset($revision) && $revision instanceof ProjectFileRevision && FileRepository::isInRepository($revision->getRepositoryId())) { FileRepository::deleteFile($revision->getRepositoryId()); } // if } // try } // if }