⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 projecttask.class.php

📁 ProjectPier 源码 很好的项目管理程序
💻 PHP
字号:
<?php  /**  * ProjectTask class  * Generated on Sat, 04 Mar 2006 12:50:11 +0100 by DataObject generation tool  *  * @http://www.projectpier.org/  */  class ProjectTask extends BaseProjectTask {        /**    * Message comments are searchable    *    * @var boolean    */    protected $is_searchable = true;        /**    * Array of searchable columns    *    * @var array    */    protected $searchable_columns = array('text');        /**    * Return parent task lists    *    * @access public    * @param void    * @return ProjectTaskList    */    function getTaskList() {      return ProjectTaskLists::findById($this->getTaskListId());    } // getTaskList        /**    * Return project that this task belongs to    *    * @param void    * @return Project    */    function getProject() {      $task_list = $this->getTaskList();      return $task_list instanceof ProjectTaskList ? $task_list->getProject() : null;    } // getProject        /**    * Return project ID if project exists    *    * @param void    * @return integer    */    function getProjectId() {      $project = $this->getProject();      return $project instanceof Project ? $project->getId() : null;    } // getProjectId        /**    * Return user object of person who completed this task    *    * @access public    * @param void    * @return User    */    function getCompletedBy() {      return Users::findById($this->getCompletedById());    } // getCompletedBy        /**    * Return owner user or company    *    * @access public    * @param void    * @return ApplicationDataObject    */    function getAssignedTo() {      if ($this->getAssignedToUserId() > 0) {        return $this->getAssignedToUser();      } elseif ($this->getAssignedToCompanyId() > 0) {        return $this->getAssignedToCompany();      } else {        return null;      } // if    } // getAssignedTo        /**    * Return owner comapny    *    * @access public    * @param void    * @return Company    */    function getAssignedToCompany() {      return Companies::findById($this->getAssignedToCompanyId());    } // getAssignedToCompany        /**    * Return owner user    *    * @access public    * @param void    * @return User    */    function getAssignedToUser() {      return Users::findById($this->getAssignedToUserId());    } // getAssignedToUser        /**    * Returns true if this task was not completed    *    * @access public    * @param void    * @return boolean    */    function isOpen() {      return !$this->isCompleted();    } // isOpen        /**    * Returns true if this task is completed    *    * @access public    * @param void    * @return boolean    */    function isCompleted() {      return $this->getCompletedOn() instanceof DateTimeValue;    } // isCompleted        /**    * Returns value of is private flag inehrited from parent task list    *    * @param void    * @return boolean    */    function isPrivate() {      $parent_list = $this->getTaskList();      return $parent_list instanceof ProjectTaskList ? $parent_list->isPrivate() : true;    } // isPrivate        // ---------------------------------------------------    //  Permissions    // ---------------------------------------------------        /**    * Empty implementation. Task list is responsible for this check    *    * @param User $user    * @return boolean    */    function canView(User $user) {      return false;    } // canView        /**    * Empty implementation. Owner list will check for add permissions    *    * @param User $user    * @param Project $project    * @return boolean    */    function canAdd(User $user, Project $project) {      return false;    } // canAdd        /**    * Check if specific user can update this task    *    * @access public    * @param User $user    * @return boolean    */    function canEdit(User $user) {      if (!$user->isProjectUser($this->getProject())) {        return false;      } // if      if ($user->isAdministrator()) {        return true;      } // if            $assigned_to = $this->getAssignedTo();      if ($assigned_to instanceof User) {        if ($user->getId() == $assigned_to->getId()) {          return true;        } // if      } elseif ($assigned_to instanceof Company) {        if ($user->getCompanyId() == $assigned_to->getId()) {          return true;        } // if      } else {        return true;      } // if            // Client who created the task can edit it for the next 3 minutes      if ($this->getCreatedById() == logged_user()->getId()) {        $valid_time = DateTimeValueLib::now();        $valid_time->advance(180);        if ($this->getCreatedOn()->getTimestamp() < $valid_time->getTimestamp()) {          return true;        } // if      } // if            $task_list = $this->getTaskList();      return $task_list instanceof ProjectTaskList ? $task_list->canEdit($user) : false;    } // canEdit        /**    * Check if specific user can change task status    *    * @access public    * @param User $user    * @return boolean    */    function canChangeStatus(User $user) {      if ($this->canEdit($user)) {        return true; // can edit? cool...      } // if            // Additional check - is this task assigned to this user or its company      if ($this->getAssignedTo() instanceof User) {        if ($user->getId() == $this->getAssignedTo()->getObjectId()) {          return true;        }      } elseif ($this->getAssignedTo() instanceof Company) {        if ($user->getCompanyId() == $this->getAssignedTo()->getObjectId()) {          return true;        }      } // if      return false;    } // canChangeStatus        /**    * Check if specific user can delete this task    *    * @access public    * @param User $user    * @return boolean    */    function canDelete(User $user) {      if (!$user->isProjectUser($this->getProject())) {        return false;      } // if      if ($user->isAdministrator()) {        return true;      } // if            $task_list = $this->getTaskList();      return $task_list instanceof ProjectTaskList ? $task_list->canDelete($user) : false;    } // canDelete        // ---------------------------------------------------    //  Operations    // ---------------------------------------------------        /**    * Complete this task and check if we need to complete the list    *    * @access public    * @param void    * @return null    */    function completeTask() {      $this->setCompletedOn(DateTimeValueLib::now());      $this->setCompletedById(logged_user()->getId());      $this->save();            $task_list = $this->getTaskList();      if (($task_list instanceof ProjectTaskList) && $task_list->isOpen()) {        $open_tasks = $task_list->getOpenTasks();        if (empty($open_tasks)) {          $task_list->complete(DateTimeValueLib::now(), logged_user());        }      } // if    } // completeTask        /**    * Open this task and check if we need to reopen list again    *    * @access public    * @param void    * @return null    */    function openTask() {      $this->setCompletedOn(null);      $this->setCompletedById(0);      $this->save();            $task_list = $this->getTaskList();      if (($task_list instanceof ProjectTaskList) && $task_list->isCompleted()) {        $open_tasks = $task_list->getOpenTasks();        if (!empty($open_tasks)) {          $task_list->open();        }      } // if    } // openTask        // ---------------------------------------------------    //  URLs    // ---------------------------------------------------        /**    * Return edit task URL    *    * @access public    * @param void    * @return string    */    function getEditUrl() {      return get_url('task', 'edit_task', array('id' => $this->getId(), 'active_project' => $this->getProjectId()));    } // getEditUrl        /**    * Return delete task URL    *    * @access public    * @param void    * @return string    */    function getDeleteUrl() {      return get_url('task', 'delete_task', array('id' => $this->getId(), 'active_project' => $this->getProjectId()));    } // getDeleteUrl        /**    * Return comete task URL    *    * @access public    * @param string $redirect_to Redirect to this URL (referer will be used if this URL is not provided)    * @return string    */    function getCompleteUrl($redirect_to = null) {      $params = array(        'id' => $this->getId(),         'active_project' => $this->getProjectId()      ); // array            if (trim($redirect_to)) {        $params['redirect_to'] = $redirect_to;      } // if            return get_url('task', 'complete_task', $params);    } // getCompleteUrl        /**    * Return open task URL    *    * @access public    * @param string $redirect_to Redirect to this URL (referer will be used if this URL is not provided)    * @return string    */    function getOpenUrl($redirect_to = null) {      $params = array(        'id' => $this->getId(),         'active_project' => $this->getProjectId()      ); // array            if (trim($redirect_to)) {        $params['redirect_to'] = $redirect_to;      } // if            return get_url('task', 'open_task', $params);    } // getOpenUrl        // ---------------------------------------------------    //  System    // ---------------------------------------------------        /**    * Validate before save    *    * @access public    * @param array $errors    * @return null    */    function validate(&$errors) {      if (!$this->validatePresenceOf('text')) {        $errors[] = lang('task text required');      }    } // validate        /**    * Delete this task    *    * @access public    * @param void    * @return boolean    */    function delete() {      $task_list = $this->getTaskList();      if ($task_list instanceof ProjectTaskList) {        $task_list->detachTask($this);      }      return parent::delete();    } // delete        // ---------------------------------------------------    //  ApplicationDataObject implementation    // ---------------------------------------------------        /**    * Return object name    *    * @access public    * @param void    * @return string    */    function getObjectName() {      $return = substr_utf($this->getText(), 0, 50);      return strlen_utf($this->getText()) > 50 ? $return . '...' : $return;    } // getObjectName        /**    * Return object type name    *    * @param void    * @return string    */    function getObjectTypeName() {      return lang('task');    } // getObjectTypeName        /**    * Return object URl    *    * @access public    * @param void    * @return string    */    function getObjectUrl() {      $list = $this->getTaskList();      return $list instanceof ProjectTaskList ? $list->getViewUrl() : null;    } // getObjectUrl    } // ProjectTask ?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -