📄 project.class.php
字号:
* @return array */ function getOrphanedFiles() { if (is_null($this->orphaned_files)) { $this->orphaned_files = ProjectFiles::getOrphanedFilesByProject($this, logged_user()->isMemberOfOwnerCompany()); } // if return $this->orphaned_files; } // getOrphanedFiles // --------------------------------------------------- // Status // --------------------------------------------------- /** * Check if this project is active * * @access public * @param void * @return boolean */ function isActive() { return !$this->isCompleted(); } // isActive /** * Check if this project is completed * * @access public * @param void * @return boolean */ function isCompleted() { return (boolean) $this->getCompletedOn(); } // isCompleted // --------------------------------------------------- // Permissions // --------------------------------------------------- /** * Check if user can add project * * @access public * @param void * @return null */ function canAdd(User $user) { return $user->isAccountOwner() || $user->isAdministrator(owner_company()); } // canAdd /** * Returns true if user can update speicific project * * @access public * @param User $user * @return boolean */ function canEdit(User $user) { return $user->isAccountOwner() || $user->isAdministrator(owner_company()); } // canEdit /** * Returns true if user can delete specific project * * @access public * @param User $user * @return boolean */ function canDelete(User $user) { return $user->isAccountOwner() || $user->isAdministrator(owner_company()); } // canDelete /** * Returns true if user can change status of this project * * @access public * @param User $user * @return boolean */ function canChangeStatus(User $user) { return $this->canEdit($user); } // canChangeStatus /** * Returns true if user can access permissions page and can update permissions * * @access public * @param User $user * @return boolean */ function canChangePermissions(User $user) { return $user->isAccountOwner() || $user->isAdministrator(owner_company()); } // canChangePermissions /** * Check if specific user can remove company from project * * @access public * @param User $user * @param Company $remove_company Remove this company * @return boolean */ function canRemoveCompanyFromProject(User $user, Company $remove_company) { if ($remove_company->isOwner()) { return false; } return $user->isAccountOwner() || $user->isAdministrator(); } // canRemoveCompanyFromProject /** * Check if this user can remove other user from project * * @access public * @param User $user * @param User $remove_user User that need to be removed * @return boolean */ function canRemoveUserFromProject(User $user, User $remove_user) { if ($remove_user->isAccountOwner()) { return false; } return $user->isAccountOwner() || $user->isAdministrator(); } // canRemoveUserFromProject // --------------------------------------------------- // URLS // --------------------------------------------------- /** * Link to project overview page * * @access public * @param void * @return stirng */ function getOverviewUrl() { return get_url('project', 'overview', array('active_project' => $this->getId())); } // getOverviewUrl /** * Return project messages index page URL * * @param void * @return string */ function getMessagesUrl() { return get_url('message', 'index', array('active_project' => $this->getId())); } // getMessagesUrl /** * Return project tasks index page URL * * @param void * @return string */ function getTasksUrl() { return get_url('task', 'index', array('active_project' => $this->getId())); } // getTasksUrl /** * Return project milestones index page URL * * @param void * @return string */ function getMilestonesUrl() { return get_url('milestone', 'index', array('active_project' => $this->getId())); } // getMilestonesUrl /** * Return project forms index page URL * * @param void * @return string */ function getFormsUrl() { return get_url('form', 'index', array('active_project' => $this->getId())); } // getFormsUrl /** * Return project people index page URL * * @param void * @return string */ function getPeopleUrl() { return get_url('project', 'people', array('active_project' => $this->getId())); } // getPeopleUrl /** * Return project permissions page URL * * @param void * @return string */ function getPermissionsUrl() { return get_url('project', 'permissions', array('active_project' => $this->getId())); } // getPermissionsUrl /** * Return search URL * * @param string $search_for * @param integer $page * @return string */ function getSearchUrl($search_for = null, $page = null) { if (trim($search_for) <> '') { $params = array( 'active_project' => $this->getId(), 'search_for' => $search_for, 'page' => (integer) $page > 0 ? (integer) $page : 1 ); // array return get_url('project', 'search', $params); } else { return ROOT_URL . '/index.php'; } // if } // getSearchUrl /** * Return edit project URL * * @access public * @param void * @return string */ function getEditUrl() { return get_url('project', 'edit', array( 'id' => $this->getId(), 'active_project' => $this->getId(), )); } // getEditUrl /** * Return delete project URL * * @access public * @param void * @return string */ function getDeleteUrl() { return get_url('project', 'delete', array( 'id' => $this->getId(), 'active_project' => $this->getId(), )); } // getDeleteUrl /** * Return complete project url * * @access public * @param void * @return string */ function getCompleteUrl() { return get_url('project', 'complete', $this->getId()); } // getCompleteUrl /** * Return open project URL * * @access public * @param void * @return string */ function getOpenUrl() { return get_url('project', 'open', $this->getId()); } // getOpenUrl /** * Return remove user from project URL * * @access public * @param User $user * @return string */ function getRemoveUserUrl(User $user) { return get_url('project', 'remove_user', array('user_id' => $user->getId(), 'project_id' => $this->getId())); } // getRemoveUserUrl /** * Return remove company from project URL * * @access public * @param Company $company * @return string */ function getRemoveCompanyUrl(Company $company) { return get_url('project', 'remove_company', array('company_id' => $company->getId(), 'project_id' => $this->getId())); } // getRemoveCompanyUrl /** * Return tag URL * * @access public * @param string $tag_name * @return string */ function getTagUrl($tag_name) { return get_url('tag', 'project_tag', array('tag' => $tag_name, 'active_project' => $this->getId())); } // getTagUrl // --------------------------------------------------- // System functions // --------------------------------------------------- /** * Validate object before save * * @access public * @param array $errors * @return null */ function validate(&$errors) { if (!$this->validatePresenceOf('name')) { $errors[] = lang('project name required'); } // if if (!$this->validateUniquenessOf('name')) { $errors[] = lang('project name unique'); } // if } // validate /** * Delete project * * @param void * @return boolean */ function delete() { $this->clearMessages(); $this->clearTaskLists(); $this->clearMilestones(); $this->clearFiles(); $this->clearFolders(); $this->clearForms(); $this->clearPermissions(); $this->clearLogs(); return parent::delete(); } // delete /** * Clear all project messages * * @param void * @return null */ private function clearMessages() { $messages = $this->getAllMessages(); if (is_array($messages)) { foreach ($messages as $message) { $message->delete(); } // foreach } // if } // clearMessages /** * Clear all task lists * * @param void * @return null */ private function clearTaskLists() { $task_lists = $this->getAllTaskLists(); if (is_array($task_lists)) { foreach ($task_lists as $task_list) { $task_list->delete(); } // foreach } // if } // clearTaskLists /** * Clear all milestones * * @param void * @return null */ private function clearMilestones() { $milestones = $this->getAllMilestones(); if (is_array($milestones)) { foreach ($milestones as $milestone) { $milestone->delete(); } // foreach } // if } // clearMilestones /** * Clear forms * * @param void * @return null */ private function clearForms() { $forms = $this->getAllForms(); if (is_array($forms)) { foreach ($forms as $form) { $form->delete(); } // foreach } // if } // clearForms /** * Clear all files and folders * * @param void * @return null */ private function clearFiles() { $files = ProjectFiles::getAllFilesByProject($this); if (is_array($files)) { foreach ($files as $file) { $file->delete(); } // foreach } // if } // clearFiles /** * Clear all folders * * @param void * @return null */ private function clearFolders() { $folders = $this->getFolders(); if (is_array($folders)) { foreach ($folders as $folder) { $folder->delete(); } // foreach } // if } // clearFolders /** * Clear project level permissions * * @param void * @return null */ function clearPermissions() { ProjectCompanies::clearByProject($this); ProjectUsers::clearByProject($this); } // clearPermissions /** * Clear application logs for this project * * @param void * @return null */ function clearLogs() { ApplicationLogs::clearByProject($this); } // clearLogs // --------------------------------------------------- // ApplicationDataObject implementation // --------------------------------------------------- /** * Return object type name * * @param void * @return string */ function getObjectTypeName() { return lang('project'); } // getObjectTypeName /** * Return object URl * * @access public * @param void * @return string */ function getObjectUrl() { return $this->getOverviewUrl(); } // getObjectUrl } // Project ?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -