Esempio n. 1
0
 /**
  * 获取图度参数
  */
 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;
 }
Esempio n. 2
0
 /**
  *
  * @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;
 }