/** * 发送图度 * * @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; }
/** * 审批图度(同意/不同意) * * @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; }