/** * 初始化 */ public function init() { $this->_bootstrap = $this->getInvokeArg('bootstrap'); $this->_multidb = $this->_bootstrap->getResource('multidb'); $this->_options = $this->_bootstrap->getOptions(); $this->_helper->viewRenderer->view->setBasePath(APPLICATION_PATH . '/modules/foreign/views'); $this->_helper->viewRenderer->setViewScriptPathSpec(':module#:controller#:action.:suffix'); $this->_tsId = $this->_request->getParam('ts'); $tuduId = $this->_request->getParam('tid'); $unId = $this->_request->getParam('fid'); if (!$this->_tsId || !$tuduId || !$unId) { $this->getResponse()->setHttpResponseCode(404); $this->getResponse()->sendResponse(); return; } Tudu_Dao_Manager::setDbs(array(Tudu_Dao_Manager::DB_TS => $this->getTsDb($this->_tsId))); $this->_manager = Tudu_Tudu_Manager::getInstance(); $this->_deliver = new Tudu_Deliver($this->getTsDb($this->_tsId)); $this->_tudu = $this->_manager->getTuduById($tuduId, $unId); $this->_user = $this->_manager->getUser($tuduId, $unId); if (null !== $this->_user) { // 用户请求语言 $language = $this->_request->getHeader('ACCEPT_LANGUAGE'); if (strpos($language, 'zh') !== false) { if (strpos($language, 'hk') !== false || strpos($language, 'tw') !== false) { $language = 'zh_TW'; } else { $language = 'zh_CN'; } } else { $language = 'en_US'; } $this->_user['option'] = array('language' => $language); if (null !== $this->_tudu) { $this->_session = new Zend_Session_Namespace(self::SESSION_NAMESPACE, true); $this->_sessionId = Zend_Session::getId(); // /*if (isset($this->_session->foreign['uniqueid']) && $this->_session->foreign['uniqueid'] != $this->_user['uniqueid']) { $this->_destroySession(); }*/ $this->_session->foreign['uniqueid'] = $this->_user['uniqueid']; $this->_session->foreign['address'] = $this->_user['email'] ? $this->_user['email'] : $this->_user['uniqueid']; $this->_session->foreign['truename'] = $this->_user['truename']; $this->_session->foreign['logintime'] = time(); $this->_session->foreign['orgid'] = $this->_tudu->orgId; $this->_session->foreign['tsid'] = $this->_tsId; $this->_session->foreign['lasttime'] = time(); if (empty($this->_session->auth)) { $this->_session->auth = array('uniqueid' => $this->_user['uniqueid'], 'address' => $this->_session->foreign['address'], 'logintime' => $this->_session->foreign['logintime']); } } $this->_timestamp = time(); $this->view->options = $this->_options; $this->view->tsid = $this->_tsId; $this->view->user = $this->_user; } }
/** * 合并到图度组 */ public function mergeGroupAction() { $tuduId = $this->_request->getPost('tid'); $targetId = $this->_request->getPost('targetid'); // 目标图度组ID 图度ID if (!$targetId || !$tuduId) { return $this->json(false, $this->lang['invalid_tuduid']); } $targetTudu = $this->manager->getTuduById($targetId, $this->_user->uniqueId); // 目标图度组必须存在 if (null == $targetTudu) { return $this->json(false, $this->lang['target_tudugroup_not_exists']); } $tudu = $this->manager->getTuduById($tuduId, $this->_user->uniqueId); // 图度必须存在 if (null == $tudu) { return $this->json(false, $this->lang['tudu_not_exists']); } // 当前图度发起人是否为目标的图度组的执行人 $isAccepter = in_array($tudu->sender, $targetTudu->accepter, true); /* @var $addressBook Tudu_AddressBook */ $addressBook = Tudu_AddressBook::getInstance(); $user = $addressBook->searchUser($this->_user->orgId, $tudu->sender); if (!$isAccepter) { $ret = $this->manager->addRecipient($targetId, $user['uniqueid'], array('role' => 'to', 'accepterinfo' => $user['email'] . ' ' . $user['truename'], 'tudustatus' => 1)); if (!$ret) { return $this->json(true, $this->lang['append_tudu_group_failed']); } $this->manager->acceptTudu($targetId, $user['uniqueid'], null); $to = array_merge($targetTudu->accepter, (array) $tudu->sender); $this->manager->updateTudu($targetId, array('to' => implode("\n", $to))); $stepUser = array(array('uniqueid' => $user['uniqueid'], 'accepterinfo' => $user['email'] . ' ' . $user['truename'], 'processindex' => 0, 'stepstatus' => 0, 'percent' => 0)); $this->manager->addStepUsers($targetId, $targetTudu->stepId, $stepUser); $this->manager->addLabel($targetId, $user['uniqueid'], '^all'); $this->manager->addLabel($targetId, $user['uniqueid'], '^i'); $this->manager->addLabel($targetId, $user['uniqueid'], '^a'); } /* @var $daoGroup Dao_Td_Tudu_Group */ $daoGroup = $this->getDao('Dao_Td_Tudu_Group'); $ret = $daoGroup->createNode(array('tuduid' => $tuduId, 'parentid' => $targetId, 'uniqueid' => $user['uniqueid'], 'rootid' => !empty($targetTudu->rootId) ? $targetTudu->rootId : null, 'type' => Dao_Td_Tudu_Group::TYPE_LEAF)); if (!$ret) { return $this->json(true, $this->lang['append_tudu_group_failed']); } // 计算图度组进度 $this->manager->calParentsProgress($targetId); // 标记所有为未读 $this->manager->markAllUnRead($targetId); return $this->json(true, $this->lang['append_tudu_group_success']); }