Esempio n. 1
0
 /**
  * 发送图度
  *
  * @param Tudu_Tudu_Storage_Tudu $tudu
  * @param array $recipients
  * @return boolean
  */
 public function sendTudu($tudu, $recipients, $action = Tudu_Tudu_Manager::ACTION_SEND)
 {
     //list($userId, $domainName) = explode('@', $email);
     //$recipients = $this->prepareRecipients($uniqueId, $userId, $tudu);
     /* @var $daoTudu Dao_Td_Tudu_Tudu */
     $daoTudu = Tudu_Dao_Manager::getDao('Dao_Td_Tudu_Tudu', Tudu_Dao_Manager::DB_TS);
     // 移除原有审批
     if (!$tudu->isDraft && !$tudu->flowId) {
         $reviewers = $daoTudu->getUsers($tudu->tuduId, array('labelid' => '^e'));
         foreach ($reviewers as $reviewer) {
             $daoTudu->deleteLabel($tudu->tuduId, $reviewer['uniqueid'], '^e');
         }
     }
     $to = array();
     foreach ($recipients as $unId => $recipient) {
         if (!isset($recipient['accepterinfo']) && isset($recipient['email']) && isset($recipient['truename'])) {
             $recipient['accepterinfo'] = $recipient['email'] . ' ' . $recipient['truename'];
         }
         $params = $recipient;
         if (array_key_exists('percent', $params) || !empty($params['role']) && $params['role'] == 'to') {
             $params['percent'] = isset($params['percent']) ? (int) $params['percent'] : 0;
         }
         $labels = $daoTudu->addUser($tudu->tuduId, $recipient['uniqueid'], $params);
         if (false !== $labels) {
             if (is_string($labels) && !empty($recipient)) {
                 $daoTudu->updateTuduUser($tudu->tuduId, $recipient['uniqueid'], $recipient);
             }
             if (!empty($recipient['role']) && $recipient['role'] === 'to') {
                 $to[] = $unId;
             }
             if (is_string($labels)) {
                 $labels = explode(',', $labels);
             } else {
                 $labels = array();
             }
             // 所有图度标签
             if (!in_array('^all', $labels)) {
                 $daoTudu->addLabel($tudu->tuduId, $recipient['uniqueid'], '^all');
             }
             // 图度箱
             if (!in_array('^i', $labels) && !in_array('^g', $labels)) {
                 $daoTudu->addLabel($tudu->tuduId, $recipient['uniqueid'], '^i');
             }
             // 相关
             if (empty($recipient['role']) || $tudu->uniqueId != $recipient['uniqueid']) {
                 $daoTudu->addLabel($tudu->tuduId, $recipient['uniqueid'], '^c');
             } else {
                 if ($tudu->type == 'task' && in_array('^c', $labels)) {
                     $daoTudu->deleteLabel($tudu->tuduId, $recipient['uniqueid'], '^c');
                 }
             }
             // 待办
             if (!empty($recipient['role']) && empty($recipient['accepttime']) || $tudu->uqnieuId == $recipient['uniqueid'] && !$tudu->acceptTime) {
                 $daoTudu->addLabel($tudu->tuduId, $recipient['uniqueid'], '^td');
             }
             // 我执行
             if (!empty($recipient['role']) && $recipient['role'] === 'to' && !in_array('^a', $labels) && $tudu->type == 'task') {
                 $daoTudu->addLabel($tudu->tuduId, $recipient['uniqueid'], '^a');
             }
             // 已发送
             if ($tudu->uniqueId == $recipient['uniqueid'] && !in_array('^f', $labels)) {
                 $daoTudu->addLabel($tudu->tuduId, $recipient['uniqueid'], '^f');
             }
             // 审批
             if (!empty($recipient['isreview']) && !in_array('^e', $labels)) {
                 $daoTudu->addLabel($tudu->tuduId, $recipient['uniqueid'], '^e');
             }
             if (isset($this->_typeLabels[$tudu->type])) {
                 $labelId = $this->_typeLabels[$tudu->type];
                 if (!in_array($labelId, $labels)) {
                     $daoTudu->addLabel($tudu->tuduId, $recipient['uniqueid'], $labelId);
                 }
             }
         }
     }
     $ret = $daoTudu->sendTudu($tudu->tuduId);
     $extensions = Tudu_Tudu_Extension::getRegisteredExtensions();
     foreach ($extensions as $key) {
         Tudu_Tudu_Extension::getExtension($key)->onSend($tudu);
     }
     return $ret;
 }
Esempio n. 2
0
 /**
  * 审批图度(同意/不同意)
  *
  * @param $tudu
  */
 public function reviewTudu(Tudu_Tudu_Storage_Tudu $tudu, $isAgree)
 {
     $extensions = Tudu_Tudu_Extension::getRegisteredExtensions();
     foreach ($extensions as $key) {
         Tudu_Tudu_Extension::getExtension($key)->onReview($tudu, $isAgree);
     }
     $attrs = $tudu->getAttributes();
     /* @var $tuduDao Dao_Td_Tudu_Tudu */
     $daoTudu = $this->getDao('Dao_Td_Tudu_Tudu');
     $params['to'] = isset($attrs['to']) ? self::formatReceiver($attrs['to']) : null;
     $params['cc'] = isset($attrs['cc']) ? self::formatReceiver($attrs['cc']) : null;
     $params['stepid'] = $attrs['stepid'];
     $ret = $daoTudu->updateTudu($tudu->tuduId, $params);
     if (!$ret) {
         return false;
     }
     $header = array('action' => 'review', 'tudu-act-value' => $isAgree ? 1 : 0);
     $headerKey = $tudu->reviewer ? 'tudu-reviewer' : 'tudu-to';
     $items = $tudu->reviewer ? $tudu->reviewer : $tudu->to;
     $val = array();
     if ($tudu->reviewer) {
         $items = $tudu->reviewer;
         $items = array_shift($items);
     } else {
         $items = $tudu->to;
     }
     foreach ($items as $item) {
         if (!empty($attrs['samereview'])) {
             break;
         }
         $val[] = $item['truename'];
     }
     if (!empty($val)) {
         $header[$headerKey] = implode(',', $val);
     }
     if ($tudu->type == 'notice' && empty($val)) {
         unset($header[$headerKey]);
     }
     $postParams = array('orgid' => $tudu->orgId, 'boardid' => $tudu->boardId, 'tuduid' => $tudu->tuduId, 'header' => $header, 'content' => isset($attrs['content']) ? $attrs['content'] : '', 'poster' => $tudu->poster, 'postinfo' => $tudu->posterInfo, 'email' => $attrs['email'], 'uniqueid' => $tudu->uniqueId, 'attachment' => !empty($attrs['attachment']) ? (array) $attrs['attachment'] : array(), 'file' => !empty($attrs['file']) ? (array) $attrs['file'] : array());
     $postId = $this->createPost($postParams);
     $this->sendPost($tudu->tuduId, $postId);
     return true;
 }