/** * 获取图度参数 */ private function _formatTuduParams(array $set, $suffix = '') { $ret = array(); $type = !empty($set['type' . $suffix]) ? $set['type' . $suffix] : 'task'; foreach ($this->_tuduParams as $col => $name) { $key = $name . $suffix; switch ($col) { case 'subject': case 'boardid': case 'classid': case 'flowid': case 'content': case 'parentid': case 'prevtuduid': case 'file': case 'attachment': if (isset($set[$key])) { $ret[$col] = $set[$key]; } break; case 'starttime': case 'endtime': $ret[$col] = !empty($set[$key]) ? strtotime($set[$key]) : null; break; case 'priority': case 'privacy': case 'notifyall': case 'cycle': case 'isauth': case 'needconfirm': case 'istop': case 'acceptmode': $ret[$col] = !empty($set[$key]) ? 1 : 0; break; case 'password': if (empty($set['privacy' . $suffix]) || empty($set['open_pwd' . $suffix])) { $ret[$col] = null; } else { $ret[$col] = !empty($set[$key]) ? $set[$key] : null; } break; case 'to': if ($type == 'task') { if ($suffix) { $key = 'ch-' . $key; } if (!empty($set[$key])) { $ret[$col] = $this->_formatReviewer($set[$key]); } if (isset($set[$name . 'idx' . $suffix]) && is_array($set[$name . 'idx' . $suffix])) { $recIdx = $set[$name . 'idx' . $suffix]; $rec = array(); foreach ($recIdx as $index) { $info = $set[$name . '-' . $index . $suffix]; $arr = explode(' ', $info, 2); $item = array('truename' => $arr[1], 'email' => $arr[0]); if (isset($set[$name . '-percent-' . $index . $suffix])) { $item['percent'] = (int) $set[$name . '-percent-' . $index . $suffix]; } if (!$item['email']) { $rec[] = $item; } else { $rec[$item['email']] = $item; } } } if (!empty($rec) && !empty($ret[$col])) { $recKeys = array_keys($rec); foreach ($ret[$col] as &$item) { foreach ($item as &$to) { if (in_array($to['email'], $recKeys) && isset($rec[$to['email']]['percent'])) { $to['percent'] = $rec[$to['email']]['percent']; } } } } } else { $ret[$col] = $this->_getReceiver($set, $name, $suffix); } break; case 'cc': case 'bcc': $ret[$col] = $this->_getReceiver($set, $name, $suffix); break; case 'reviewer': if (!empty($set[$key])) { $ret[$col] = $this->_formatReviewer($set[$key]); } break; } } if (!empty($set['nd-attach' . $suffix])) { $ret['attachment'] = array_diff($ret['attachment'], $set['nd-attach' . $suffix]); $daoNdFile = $this->getDao('Dao_Td_Netdisk_File'); $daoAttachment = $this->getDao('Dao_Td_Attachment_File'); foreach ($set['nd-attach' . $suffix] as $ndfileId) { $fileId = $ndfileId; $attach = $daoAttachment->getFile(array('fileid' => $fileId)); if (null !== $attach) { $ret['attachment'][] = $fileId; continue; } $file = $daoNdFile->getFile(array('uniqueid' => $this->_user->uniqueId, 'fileid' => $ndfileId)); if ($file->fromFileId) { $fileId = $file->fromFileId; } if ($file->attachFileId) { $fileId = $file->attachFileId; } $fid = $daoAttachment->createFile(array('uniqueid' => $this->_user->uniqueId, 'fileid' => $fileId, 'orgid' => $this->_user->orgId, 'filename' => $file->fileName, 'path' => $file->path, 'type' => $file->type, 'size' => $file->size, 'createtime' => time())); if ($fid) { $ret['attachment'][] = $fileId; } } } if ($type == 'notice') { $ret['istop'] = 0; if (!empty($ret['endtime']) && $ret['endtime'] >= strtotime('today')) { $ret['istop'] = 1; } } // 讨论,投票 if ($type == 'discuss' && !empty($set['vote' . $suffix])) { $extVote = new Tudu_Tudu_Extension_Vote(); if (!Tudu_Tudu_Extension::isRegistered('vote')) { $extVote = new Tudu_Tudu_Extension_Vote(); Tudu_Tudu_Extension::registerExtension('vote', $extVote); } $ret['vote'] = Tudu_Tudu_Extension::getExtension('vote')->formatParams($set, $suffix); $ret['special'] = Dao_Td_Tudu_Tudu::SPECIAL_VOTE; } // 会议 if ($type == 'meeting') { if (!Tudu_Tudu_Extension::isRegistered('meeting')) { $extMeeting = new Tudu_Tudu_Extension_Meeting(); Tudu_Tudu_Extension::registerExtension('meeting', $extMeeting); } $extMeeting = new Tudu_Tudu_Extension_Meeting(); $ret['meeting'] = Tudu_Tudu_Extension::getExtension('meeting')->formatParams($set, $suffix); } // 周期 if (($type == 'task' || $type == 'meeting') && isset($set['cycle'])) { if (!Tudu_Tudu_Extension::isRegistered('cycle')) { $extCycle = new Tudu_Tudu_Extension_Cycle(); Tudu_Tudu_Extension::registerExtension('cycle', $extCycle); } $ret['cycle'] = Tudu_Tudu_Extension::getExtension('cycle')->formatParams($set, $suffix); if ($ret['cycle']['endtype'] == Dao_Td_Tudu_Cycle::END_TYPE_COUNT && $ret['cycle']['endcount'] <= 0) { return $this->json(false, $this->lang['invalid_endcount']); } if ($ret['cycle']['endtype'] == Dao_Td_Tudu_Cycle::END_TYPE_DATE && !$ret['cycle']['enddate']) { return $this->json(false, $this->lang['invalid_enddate']); } $ret['special'] = Dao_Td_Tudu_Tudu::SPECIAL_CYCLE; $ret['cycleid'] = $ret['cycle']['cycleid']; } $ret['type'] = $type; $ret['uniqueid'] = $this->_user->uniqueId; $ret['orgid'] = $this->_user->orgId; $ret['status'] = Dao_Td_Tudu_Tudu::STATUS_UNSTART; $ret['poster'] = $this->_user->trueName; $ret['email'] = $this->_user->userName; $ret['posterinfo'] = $this->_user->position; $ret['lastposter'] = $this->_user->trueName; $ret['issend'] = 1; return $ret; }
/** * * @param $params * @param $tudu */ public function prepareTudu(array $params, Dao_Td_Tudu_Record_Tudu $tudu = null) { if (null !== $tudu) { $params['isdraft'] = $tudu->isDraft; $params['postid'] = $tudu->postId; $params['tuduid'] = $tudu->tuduId; $params['from'] = $tudu->from[3] . ' ' . $tudu->from[0]; $params['sender'] = $tudu->sender; $params['stepid'] = $tudu->stepId; $params['type'] = $tudu->type; $params['flowid'] = $tudu->flowId; if (!$tudu->isDraft) { $params['boardid'] = $tudu->boardId; } if ($tudu->parentId) { $params['parentid'] = $tudu->parentId; } if ($tudu->rootId) { $params['rootid'] = $tudu->rootId; } //$params['lastpost'] = ; // 继承需要的字段 if (!$tudu->isDraft) { // 抄送人,只添加 if ($tudu->cc) { $cc = !empty($params['cc']) ? $params['cc'] : array(); foreach ($tudu->cc as $key => $item) { if (false !== strpos($key, '@')) { $cc[$key] = array('email' => $key, 'truename' => $item[0]); } else { $cc[$key] = array('groupid' => $key, 'truename' => $item[0]); } } $params['cc'] = $cc; } if ($tudu->bcc) { $bcc = !empty($params['bcc']) ? $params['bcc'] : array(); foreach ($tudu->bcc as $key => $item) { if (false !== strpos($key, '@')) { $bcc[$key] = array('email' => $key, 'truename' => $item[0]); } else { $bcc[$key] = array('groupid' => $key, 'truename' => $item[0]); } } $params['bcc'] = $bcc; } } } else { $params['tuduid'] = Dao_Td_Tudu_Tudu::getTuduId(); } if (isset($params['vote'])) { if (!Tudu_Tudu_Extension::isRegistered('vote')) { Tudu_Tudu_Extension::registerExtension('vote', 'Tudu_Tudu_Extension_Vote'); } } $tudu = new Tudu_Tudu_Storage_Tudu($params, $tudu); if ($tudu->type == 'task' && $tudu->to && is_array($tudu->to)) { $to = array(); foreach ($tudu->to as $item) { foreach ($item as $val) { $to[$val['email']] = array('email' => $val['email'], 'truename' => $val['truename']); if (isset($val['percent'])) { $to[$val['email']]['percent'] = $val['percent']; } } break; } $tudu->setAttributes(array('to' => $to, 'stepto' => $tudu->to)); } $extensions = Tudu_Tudu_Extension::getRegisteredExtensions(); foreach ($extensions as $key) { Tudu_Tudu_Extension::getExtension($key)->onPrepare($tudu, $params); } return $tudu; }