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

📄 projectmessage.class.php

📁 ProjectPier 源码 很好的项目管理程序
💻 PHP
字号:
<?php  /**  * ProjectMessage class  * Generated on Sat, 04 Mar 2006 12:21:44 +0100 by DataObject generation tool  *  * @http://www.projectpier.org/  */  class ProjectMessage extends BaseProjectMessage {        /**    * This project object is taggable    *    * @var boolean    */    protected $is_taggable = true;        /**    * Project messages are searchable    *    * @var boolean    */    protected $is_searchable = true;        /**    * Array of searchable columns    *    * @var array    */    protected $searchable_columns = array('title', 'text', 'additional_text');        /**    * Messages are commentable    *    * @var boolean    */    protected $is_commentable = true;        /**    * Message is file container    *    * @var boolean    */    protected $is_file_container = true;        /**    * Cached array of subscribers    *    * @var array    */    private $subscribers;        /**    * Cached array of related forms    *    * @var array    */    private $related_forms;        // ---------------------------------------------------    //  Comments    // ---------------------------------------------------        /**    * Create new comment. This function is used by ProjectForms to post comments    * to the messages    *    * @param string $content    * @param boolean $is_private    * @return Comment or NULL if we fail to save comment    * @throws DAOValidationError    */    function addComment($content, $is_private = false) {      $comment = new Comment();      $comment->setText($content);      $comment->setIsPrivate($is_private);      return $this->attachComment($comment);    } // addComment        /**    * Handle on add comment event    *    * @param Comment $comment    * @return null    */    function onAddComment(Comment $comment) {      try {        Notifier::newMessageComment($comment);      } catch(Exception $e) {        // nothing here, just suppress error...      } // try    } // onAddComment        // ---------------------------------------------------    //  Subscriptions    // ---------------------------------------------------        /**    * Return array of subscribers    *    * @param void    * @return array    */    function getSubscribers() {      if (is_null($this->subscribers)) {        $this->subscribers = MessageSubscriptions::getUsersByMessage($this);      }      return $this->subscribers;    } // getSubscribers        /**    * Check if specific user is subscriber    *    * @param User $user    * @return boolean    */    function isSubscriber(User $user) {      $subscription = MessageSubscriptions::findById(array(        'message_id' => $this->getId(),        'user_id' => $user->getId()      )); // findById      return $subscription instanceof MessageSubscription;    } // isSubscriber        /**    * Subscribe specific user to this message    *    * @param User $user    * @return boolean    */    function subscribeUser(User $user) {      if ($this->isNew()) {        throw new Error('Can\'t subscribe user to message that is not saved');      } // if      if ($this->isSubscriber($user)) {        return true;      } // if            // New subscription      $subscription = new MessageSubscription();      $subscription->setMessageId($this->getId());      $subscription->setUserId($user->getId());      return $subscription->save();    } // subscribeUser        /**    * Unsubscribe user    *    * @param User $user    * @return boolean    */    function unsubscribeUser(User $user) {      $subscription = MessageSubscriptions::findById(array(        'message_id' => $this->getId(),        'user_id' => $user->getId()      )); // findById      if ($subscription instanceof MessageSubscription) {        return $subscription->delete();      } else {        return true;      } // if    } // unsubscribeUser        /**    * Clear all message subscriptions    *    * @param void    * @return boolean    */    function clearSubscriptions() {      return MessageSubscriptions::clearByMessage($this);    } // clearSubscriptions        // ---------------------------------------------------    //  Related forms    // ---------------------------------------------------        /**    * Get project forms that are in relation with this message    *    * @param void    * @return array    */    function getRelatedForms() {      if (is_null($this->related_forms)) {        $this->related_forms = ProjectForms::findAll(array(          'conditions' => '`action` = ' . DB::escape(ProjectForm::ADD_COMMENT_ACTION) . ' AND `in_object_id` = ' . DB::escape($this->getId()),          'order' => '`order`'        )); // findAll      } // if      return $this->related_forms;    } // getRelatedForms        // ---------------------------------------------------    //  Permissions    // ---------------------------------------------------        /**    * Check CAN_MANAGE_MESSAGES permission    *    * @access public    * @param User $user    * @return boolean    */    function canManage(User $user) {      if (!$user->isProjectUser($this->getProject())) {        return false;      } // if      return $user->getProjectPermission($this->getProject(), ProjectUsers::CAN_MANAGE_MESSAGES);    } // canManage        /**    * Returns true if $user can access this message    *    * @param User $user    * @return boolean    */    function canView(User $user) {      if (!$user->isProjectUser($this->getProject())) {        return false; // user have access to project      } // if      if ($this->isPrivate() && !$user->isMemberOfOwnerCompany()) {        return false; // user that is not member of owner company can't access private objects      } // if      return true;    } // canView        /**    * Check if specific user can add messages to specific project    *    * @access public    * @param User $user    * @param Project $project    * @return booelean    */    function canAdd(User $user, Project $project) {      if (!$user->isProjectUser($project)) {        return false; // user is on project      } // if      if ($user->isAdministrator()) {        return true; // administrator      } // if      return $user->getProjectPermission($project, ProjectUsers::CAN_MANAGE_MESSAGES);    } // canAdd        /**    * Check if specific user can edit this messages    *    * @access public    * @param User $user    * @return boolean    */    function canEdit(User $user) {      if (!$user->isProjectUser($this->getProject())) {        return false; // user is on project      } // if      if ($user->isAdministrator()) {        return true; // user is administrator or root      } // if      if ($this->isPrivate() && !$user->isMemberOfOwnerCompany()) {        return false; // user that is not member of owner company can't edit private message      } // if      if ($user->getId() == $this->getCreatedById()) {        return true; // user is message author      } // if      return false; // no no    } // canEdit        /**    * Check if $user can update message options    *    * @param User $user    * @return boolean    */    function canUpdateOptions(User $user) {      return $user->isMemberOfOwnerCompany() && $this->canEdit($user);    } // canUpdateOptions        /**    * Check if specific user can delete this messages    *    * @access public    * @param User $user    * @return boolean    */    function canDelete(User $user) {      if (!$user->isProjectUser($this->getProject())) {        return false; // user is on project      } // if      if ($user->isAdministrator()) {        return true; // user is administrator or root      } // if      return false; // no no    } // canDelete        /**    * Check if specific user can comment this message    *    * @access public    * @param void    * @return boolean    */    function canAddComment(User $user) {      if (!$user->isProjectUser($this->getProject())) {        return false; // user is on project      } // if      if (!$user->isMemberOfOwnerCompany()) {        if ($this->isPrivate()) {          return false;        } // if        if ($this->getIsLocked()) {          return false;        } // if      } // if      if (!$this->canManage($user)) {        return false;      } // if      return true;    } // canAddComment        // ---------------------------------------------------    //  URLS    // ---------------------------------------------------        /**    * Return view message URL    *    * @access public    * @param void    * @return string    */    function getViewUrl() {      return get_url('message', 'view', array('id' => $this->getId(), 'active_project' => $this->getProjectId()));    } // getViewUrl        /**    * Return edit message URL    *    * @access public    * @param void    * @return string    */    function getEditUrl() {      return get_url('message', 'edit', array('id' => $this->getId(), 'active_project' => $this->getProjectId()));    } // getEditUrl        /**    * Return update options URL    *    * @param void    * @return string    */    function getUpdateOptionsUrl() {      return get_url('message', 'update_options', array('id' => $this->getId(), 'active_project' => $this->getProjectId()));    } // getUpdateOptionsUrl        /**    * Return delete message URL    *    * @access public    * @param void    * @return string    */    function getDeleteUrl() {      return get_url('message', 'delete', array('id' => $this->getId(), 'active_project' => $this->getProjectId()));    } // getDeleteUrl        /**    * Return add comment URL    *    * @access public    * @param void    * @return string    */    function getAddCommentUrl() {      return get_url('message', 'add_comment', array('id' => $this->getId(), 'active_project' => $this->getProjectId()));    } // getAddCommentUrl        /**    * Return subscribe URL    *    * @param void    * @return boolean    */    function getSubscribeUrl() {      return get_url('message', 'subscribe', array('id' => $this->getId(), 'active_project' => $this->getProjectId()));    } // getSubscribeUrl        /**    * Return unsubscribe URL    *    * @param void    * @return boolean    */    function getUnsubscribeUrl() {      return get_url('message', 'unsubscribe', array('id' => $this->getId(), 'active_project' => $this->getProjectId()));    } // getUnsubscribeUrl        // ---------------------------------------------------    //  System    // ---------------------------------------------------        /**    * Delete this object    *    * @access public    * @param void    * @return boolean    */    function delete() {      $comments = $this->getComments();      if (is_array($comments)) {        foreach ($comments as $comment) {          $comment->delete();        }      }            $related_forms = $this->getRelatedForms();      if (is_array($related_forms)) {        foreach ($related_forms as $related_form) {          $related_form->setInObjectId(0);          $related_form->save();        } // foreach      } // if      $this->clearSubscriptions();      return parent::delete();    } // delete        /**    * Validate before save    *    * @access public    * @param array $errors    * @return null    */    function validate(&$errors) {      if ($this->validatePresenceOf('title')) {        if (!$this->validateUniquenessOf('title', 'project_id')) {          $errors[] = lang('message title unique');        }      } else {        $errors[] = lang('message title required');      } // if      if (!$this->validatePresenceOf('text')) {        $errors[] = lang('message text required');      }    } // validate        // ---------------------------------------------------    //  Override ApplicationDataObject methods    // ---------------------------------------------------        /**    * Return object name    *    * @access public    * @param void    * @return string    */    function getObjectName() {      return $this->getTitle();    } // getObjectName        /**    * Return object type name    *    * @param void    * @return string    */    function getObjectTypeName() {      return lang('message');    } // getObjectTypeName        /**    * Return object URl    *    * @access public    * @param void    * @return string    */    function getObjectUrl() {      return $this->getViewUrl();    } // getObjectUrl    } // ProjectMessage ?>

⌨️ 快捷键说明

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