/** * * @param $className * @param $dbKey */ public static function getDao($className, $key) { $db = self::getDb($key); if (!isset(self::$_arrDao[$key][$className])) { self::$_arrDao[$key][$className] = Oray_Dao::factory($className, $db); } return self::$_arrDao[$key][$className]; }
/** * 登录页面 */ public function indexAction() { $err = $this->_request->getQuery('err'); $isValid = true; do { if (Zend_Session::isStarted()) { if ($this->_user->isAdminLogined()) { return $this->referer($this->_basePath . '/'); } } // 没有传入登录的SessionID if (empty($this->_sessionId)) { $isValid = false; } if (empty($this->_session->auth) || empty($this->_session->auth['address'])) { $isValid = false; } } while (false); if (!$isValid) { $url = $this->_request->getCookie('track'); if (!$url) { $url = base64_decode($url); } if (!$url || !preg_match('/^https?:\\/\\//', $url)) { $url = $this->_options['sites']['tudu']; } return $this->referer($url . '/?error=admin'); } if ($err && isset($this->_errMessages[$err])) { $err = $this->_errMessages[$err]; } $memcache = $this->_bootstrap->memcache; $orgInfo = $memcache->get('TUDU-HOST-' . $this->_session->auth['orgid'] . '.tudu.com'); if (!$orgInfo) { /* @var $daoOrg Dao_Md_Org_Org */ $daoOrg = Oray_Dao::factory('Dao_Md_Org_Org', $this->_bootstrap->getResource('multidb')->getDefaultDb()); $orgInfo = $daoOrg->getOrgByHost($this->_session->auth['orgid'] . '.tudu.com'); $flag = null; $memcache->set('TUDU-HOST-' . $this->_session->auth['orgid'] . '.tudu.com', $orgInfo, $flag, 3600); } if ($orgInfo instanceof Dao_Md_Org_Record_Org) { $orgInfo = $orgInfo->toArray(); } $this->view->options = array('sites' => $this->_options['sites']); $this->view->address = $this->_session->auth['userid'] . '@' . $this->_session->auth['orgid']; $this->view->err = $err; $this->view->org = $orgInfo; // 选择登陆模板 if (!empty($orgInfo) && !empty($orgInfo['loginskin'])) { $loginSkin = $orgInfo['loginskin']; if (!empty($loginSkin['selected']) && !empty($loginSkin['selected']['value']) && $loginSkin['selected']['value'] != 'SYS:default') { $this->view->loginskin = $orgInfo['loginskin']; $this->render('custom'); } } }
/** * 聊天记录 */ public function logAction() { $jid = $this->_request->getQuery('jid'); $email = $this->_request->getQuery('email'); $clientKey = $this->_request->getQuery('clientkey'); $page = max((int) $this->_request->getQuery('page'), 1); $pageSize = 100; $bootstrap = $this->getInvokeArg('bootstrap'); $multidb = $bootstrap->getResource('multidb'); $options = $bootstrap->getOptions(); $config = $options['im']; $im = new Oray_Im_Client($config['host'], $config['port']); $userInfo = $im->getUserInfo($jid, $clientKey); if (!$userInfo) { //return $this->_redirect('/'); } /* @var $daoChatLog Dao_Im_Chat_Log */ $daoChatLog = Oray_Dao::factory('Dao_Im_Chat_Log', $multidb->getDb('im')); /* @var $daoUdContact Dao_Im_Contact_Contact */ $daoUdContact = Oray_Dao::factory('Dao_Im_Contact_Contact', $multidb->getDb('im')); $jemail = explode('@', $jid); $userId = $jemail[0]; $condition = array('orgid' => 'tudu', 'userid' => $userId, 'email' => $email); $info = $daoUdContact->getContact($condition); if (!$info) { $info = array('userid' => $userId, 'email' => $email, 'displayname' => $email); } else { $info = $info->toArray(); } $logs = $daoChatLog->getLogPage(array('ownerid' => $jid, 'otherid' => $email), 'createtime DESC', $page, $pageSize); $this->view->pageinfo = array('currpage' => $logs->currentPage(), 'pagecount' => $logs->pageCount(), 'recordcount' => $logs->recordCount()); $data = array('pageinfo' => array('currpage' => $logs->currentPage(), 'pagecount' => $logs->pageCount(), 'recordcount' => $logs->recordCount())); $logs = $logs->toArray(); $ret = array(); foreach ($logs as $log) { $ret[strtotime(date('Y-m-d', $log['createtime']))][$log['createtime']] = $log; } foreach ($ret as &$day) { ksort($day); } ksort($ret); $data['logs'] = $ret; $this->view->email = $email; $this->view->jid = $jid; $this->view->logs = $ret; $this->view->options = $options; $this->view->info = $info; }
/** * 转发图度 * */ public function sendAction() { $post = $this->_request->getPost(); $post = array_merge(array('to' => '', 'cc' => ''), $post); $action = $post['action']; $type = $post['type']; // 判断操作,默认为发送 if (!in_array($action, array('send', 'save'))) { $action = 'send'; } // 判断类型,默认为任务 if (!in_array($type, array('task', 'discuss', 'notice'))) { $type = 'task'; } // 当前用户唯一ID $uniqueId = $this->_user['uniqueid']; // 是否现在发送 $isSend = true; // 是否已经发送过,可判读来源的图度是否发送过,已发送过的不允许保存为草稿 $isSent = false; // 是否转发 $isForward = !empty($post['forward']); // 是否来源于草稿 $isFromDraft = false; // 是否发起人 $isSender = false; // 是否执行人 $isAccpter = false; // 是否通知所有关联人员 $notifyAll = !empty($post['notifyall']); // 需要发送提醒的人 $notifyTo = array(); // 抄送人加入自己 $post['cc'] .= "\n" . $this->_user['email'] . ' ' . $this->_user['truename']; // 需要发送的地址,可能为空 $address = array('to' => $this->_formatRecipients($post['to']), 'cc' => $this->_formatRecipients($post['cc'], true)); // 需要发送的执行人,方便后面调用 $accepters = $address['to']; // 需要投递的联系人数据,保存用户唯一ID // uniqueid => array(isaccepter => {boolean}, accepterinfo => {string}) $recipients = array(); // 需要移除接受人的用户唯一ID $removeAccepters = array(); if (null === $this->_tudu) { return $this->json(false, $this->lang['tudu_not_exists']); } $fromTudu = $this->_tudu; // 日志记录内容 $tuduLog = array('action' => 'create', 'detail' => array()); $postLog = array('action' => 'create', 'detail' => array()); //////////////////////////// // 操作及参数判断 // 发送操作 if ('send' == $action) { $isAccpter = array_key_exists($this->_user['email'], $accepters); // 如果是转发 if ($isForward) { // 转发时,必须有图度存在 if (!$fromTudu) { $this->json(false, $this->lang['tudu_not_exists']); } // 图度组不能转发 if ($fromTudu->isTuduGroup) { $this->json(false, $this->lang['deny_forward_tudugroup']); } // 非图度执行人不能转发图度 if (!in_array($this->_user['email'], $fromTudu->accepter)) { $this->json(false, $this->lang['forbid_non_accepter_forward']); } // 执行人不能转发给自己 if ($isAccpter) { $this->json(false, $this->lang['forbid_forward_myself']); } foreach ($address['to'] as $a => $n) { if (in_array($a, $fromTudu->accepter, true)) { $this->json(false, sprintf($this->lang['user_is_accepter'], $n)); } } $tuduLog['action'] = Dao_Td_Log_Log::ACTION_TUDU_FORWARD; } // 保存图度 } else { if ('save' == $action) { $this->json(false); } } // 发送时参数判断,1.检查必须的参数,2.检查联系人是否存在。保存草稿时不需要这些判断 if ($isSend) { if ('task' == $type) { if (empty($address['to']) && (!$fromTudu || !$fromTudu->isTuduGroup)) { $this->json(false, $this->lang['missing_to']); } } else { if (empty($address['cc'])) { $this->json(false, $this->lang['missing_cc']); } } if (!$isForward && empty($post['subject'])) { $this->json(false, $this->lang['missing_subject']); } if (empty($post['content'])) { $this->json(false, $this->lang['missing_content']); } /* @var $daouser Dao_Td_Contact_Contact */ $daoContact = $this->getDao('Dao_Td_Contact_Contact'); /* @var $daoUser Dao_Md_User_User */ $daoUser = Oray_Dao::factory('Dao_Md_User_User'); $forwardInfo = array(); //被转发用户继承转发用户进度 if ($isForward) { $forwardInfo = array('forwardinfo' => $this->_user['truename'] . "\n" . time(), 'percent' => isset($post['percent']) ? (int) $post['percent'] : $fromTudu->selfPercent); } $users = $this->_deliver->getTuduUsers($this->_tudu->tuduId); $isAuth = $fromTudu->isAuth; // 外部联系人转发,仅从当前图度相关用户中检查 foreach ($address['to'] as $a => $name) { foreach ($users as $u) { if ($u['email'] == $a && $u['truename'] == $name) { $unId = $u['uniqueid']; $recipients[$unId] = array_merge(array('uniqueid' => $unId, 'role' => Dao_Td_Tudu_Tudu::ROLE_ACCEPTER, 'accepterinfo' => $a . ' ' . $name, 'percent' => 0, 'tudustatus' => 0, 'isforeign' => $u['isforeign'], 'authcode' => $u['isforeign'] && $isAuth ? Oray_Function::randKeys(4) : null), $forwardInfo); continue 2; } } $unId = Dao_Td_Contact_Contact::getContactId(); $info = Oray_Function::isEmail($a) ? $a . ' ' . $name : $name; $recipients[$unId] = array_merge(array('uniqueid' => $unId, 'role' => Dao_Td_Tudu_Tudu::ROLE_ACCEPTER, 'accepterinfo' => $info, 'percent' => 0, 'tudustatus' => 0, 'isforeign' => 1, 'authcode' => $isAuth ? Oray_Function::randKeys(4) : null), $forwardInfo); } // 去除原有执行人 if ($fromTudu) { $fromAccepter = $this->_deliver->getTuduAccepters($fromTudu->tuduId); $removeInfos = array(); $to = array(); foreach ($fromAccepter as $acpter) { if ($isForward) { if ($acpter['uniqueid'] == $uniqueId) { $removeAccepters[] = $this->_user['uniqueid']; $removeInfos[$this->_user['uniqueid']] = $acpter['accepterinfo']; continue; } } elseif (!isset($recipients[$acpter['uniqueid']]) || !is_array($recipients[$acpter['uniqueid']])) { $removeAccepters[] = $acpter['uniqueid']; $removeInfos[$acpter['uniqueid']] = $acpter['accepterinfo']; continue; } if (isset($recipients[$acpter['uniqueid']]['tudustatus'])) { $recipients[$acpter['uniqueid']]['percent'] = (int) $acpter['percent']; if (!$isForward && $acpter['tudustatus'] != 3) { $recipients[$acpter['uniqueid']]['tudustatus'] = $acpter['tudustatus']; } } $to[] = $acpter['accepterinfo']; $acceptInfo = explode(' ', $acpter['accepterinfo']); $notifyTo[] = $acceptInfo[0]; } $post['to'] = array_unique(array_merge($to, explode("\n", $post['to']))); $post['to'] = implode("\n", $post['to']); if ($fromTudu->isTuduGroup && !empty($removeAccepters)) { /** @var $daoGroup Dao_Td_Tudu_Group */ $daoGroup = $this->getDao('Dao_Td_Tudu_Group'); foreach ($removeAccepters as $unId) { if ($daoGroup->getChildrenCount($fromTudu->tuduId, $unId) > 0) { $this->json(false, sprintf($this->lang['user_has_divide'], $removeInfos[$unId])); } } } } // 处理抄送人 $arrCC = array(); // 外部联系人转发,仅从当前图度相关用户中检查 foreach ($address['cc'] as $a => $name) { foreach ($users as $u) { if ($u['email'] == $a && $u['truename'] == $name) { $unId = $u['uniqueid']; $recipients[$unId] = array('uniqueid' => $unId, 'role' => Dao_Td_Tudu_Tudu::ROLE_CC, 'accepterinfo' => $a . ' ' . $name, 'isforeign' => $u['isforeign'], 'authcode' => $u['isforeign'] && $isAuth ? Oray_Function::randKeys(4) : null); continue 2; } } $unId = Dao_Td_Contact_Contact::getContactId(); $recipients[$unId] = array('uniqueid' => $unId, 'role' => Dao_Td_Tudu_Tudu::ROLE_CC, 'accepterinfo' => $a . ' ' . $name, 'isforeign' => 1, 'authcode' => $isAuth ? Oray_Function::randKeys(4) : null); } // 编辑/转发,合并原有转发人信息 if (null !== $fromTudu) { $fromCC = array(); foreach ($fromTudu->cc as $addr => $cc) { if (!array_key_exists($addr, $address['cc'])) { $fromCC[] = $addr . ' ' . $cc[0]; } } $post['cc'] = implode("\n", $fromCC) . "\n" . $post['cc']; } // 通知所有人 if (in_array($type, array('notice', 'discuss')) || $notifyAll) { $notifyTo = array_merge($notifyTo, $arrCC); } if ($fromTudu) { $users = $this->_deliver->getTuduUsers($fromTudu->tuduId); foreach ($users as $item) { $labels = explode(',', $item['labels']); if (in_array('^t', $labels) && !in_array('^n', $labels)) { $user = $daoUser->getUser(array('uniqueid' => $item['uniqueid'])); $notifyTo[] = $user->address; } } } // 通知跳过当前操作用户(如果有) $notifyTo = array_unique(array_diff($notifyTo, array($this->_user['email']))); if ($type == 'notice' && !isset($post['remind'])) { $notifyTo = null; } //$recipients = array_unique($recipients); //var_dump($address); //var_dump($recipients); } //////////////////////////////// // 参数构造逻辑 // 基本参数 $params = array('orgid' => $this->_tudu->orgId, 'boardid' => $fromTudu ? $fromTudu->boardId : $post['bid'], 'email' => $this->_user['email'], 'type' => $type, 'subject' => isset($post['subject']) ? $post['subject'] : $fromTudu->subject, 'to' => $post['to'], 'cc' => $post['cc'], 'priority' => empty($post['priority']) ? 0 : (int) $post['priority'], 'privacy' => empty($post['privacy']) ? 0 : (int) $post['privacy'], 'status' => Dao_Td_Tudu_Tudu::STATUS_UNSTART, 'lastposttime' => $this->_timestamp, 'content' => $post['content'], 'attachment' => !empty($post['attach']) ? (array) $post['attach'] : array(), 'file' => !empty($post['file']) ? (array) $post['file'] : array()); if (isset($post['starttime'])) { $params['starttime'] = !empty($post['starttime']) ? strtotime($post['starttime']) : null; } if (isset($post['endtime'])) { $params['endtime'] = !empty($post['endtime']) ? strtotime($post['endtime']) : null; } if (isset($post['totaltime']) && is_numeric($post['totaltime'])) { $params['totaltime'] = round((double) $post['totaltime'], 2) * 3600; } if (isset($post['percent'])) { $params['percent'] = min(100, (int) $post['percent']); } if (isset($post['classid'])) { $params['classid'] = $post['classid']; } if (!empty($post['notifyall'])) { $params['notifyall'] = $post['notifyall']; } // 公告置顶 if ($type == 'notice' && !empty($params['endtime']) && $params['endtime'] >= strtotime('today')) { $params['istop'] = 1; } else { $params['istop'] = 0; } // 仅当草稿发送时更新创建时间 if (!$fromTudu || $isFromDraft && $isSend) { $params['createtime'] = $this->_timestamp; } // 更新图度操作时,一些参数设置 if (!isset($params['percent'])) { $params['percent'] = $fromTudu->percent; } if (isset($params['percent'])) { if (100 === $params['percent']) { $params['status'] = Dao_Td_Tudu_Tudu::STATUS_DONE; $params['cycle'] = null; } elseif ($params['percent'] > 0) { $params['status'] = Dao_Td_Tudu_Tudu::STATUS_DOING; } } // 处理日志记录内容 $tuduLog['detail'] = $params; $postLog['detail'] = array('content' => $params['content']); unset($tuduLog['detail']['cycle'], $tuduLog['detail']['vote'], $tuduLog['detail']['email'], $tuduLog['detail']['content'], $tuduLog['detail']['attachment'], $tuduLog['detail']['file'], $tuduLog['detail']['poster'], $tuduLog['detail']['posterinfo']); $logPrivacy = !$isSend; /////////////////////////////////// // 保存图度数据 $tuduId = $fromTudu->tuduId; $postId = $fromTudu->postId; // 内容的参数 $postParams = array('content' => $params['content'], 'lastmodify' => implode(chr(9), array($uniqueId, $this->_timestamp, $this->_user['truename'])), 'createtime' => $this->_timestamp, 'attachment' => $params['attachment'], 'isforeign' => 1, 'file' => !empty($post['file']) ? (array) $post['file'] : array()); // 从未发送时(草稿),相关的数据初始化(时效性的数据清除) if (!$isSent) { // 创建时间可相当于最先发送的时间 $params['createtime'] = $this->_timestamp; // 未发送过,不存在最后编辑 unset($postParams['lastmodify']); } // 不变更发起人 unset($params['from']); if ($isForward) { // 转发,更新最后转发人信息,不更新图度元数据,新建回复内容 unset($postParams['lastmodify']); $params['subject'] = $fromTudu->subject; $params['content'] = $fromTudu->content; $params['status'] = Dao_Td_Tudu_Tudu::STATUS_UNSTART; $params['accepttime'] = null; $params['lastforward'] = implode("\n", array($this->_user['truename'], time())); // 先发送新的回复 $postParams = array_merge($postParams, array('orgid' => $this->_tudu->orgId, 'boardid' => $fromTudu->boardId, 'tuduid' => $tuduId, 'uniqueid' => $this->_user['uniqueid'], 'poster' => $this->_user['truename'], 'email' => $this->_user['email'])); $postId = $this->_deliver->createPost($postParams); if (!$postId) { $this->json(false, $this->lang['save_failure']); } $this->getDao('Dao_Td_Tudu_Post')->sendPost($tuduId, $postId); $postLog['detail'] = $postParams; // 工作流程 $steps = $this->_manager->getSteps($tuduId)->toArray('stepid'); if (!empty($steps) && ($type = 'task')) { $currentStep = $this->_tudu->stepId && false === strpos($this->_tudu->stepId, '^') ? $steps[$this->_tudu->stepId] : array_pop($steps); // 当前为审批步骤 $stepNum = count($steps); $newSteps = array(); $currentTo = array_keys($this->_formatStepRecipients($params['to'])); $fromTo = array_keys($this->_tudu->to); $fromCount = count($fromTo); $isChangeTo = count($currentTo) != $fromCount || count(array_uintersect($fromTo, $currentTo, "strcasecmp")) != $fromCount; if ($isChangeTo) { $prevId = $currentStep['stepid']; $orderNum = $currentStep['ordernum']; $stepId = Dao_Td_Tudu_Step::getStepId(); $newSteps[$stepId] = array('orgid' => $this->_tudu->orgId, 'tuduid' => $tuduId, 'stepid' => $stepId, 'uniqueid' => $uniqueId, 'prevstepid' => $prevId, 'nextstepid' => '^end', 'type' => $this->_tudu->acceptMode ? Dao_Td_Tudu_Step::TYPE_CLAIM : Dao_Td_Tudu_Step::TYPE_EXECUTE, 'ordernum' => ++$orderNum, 'createtime' => time(), 'users' => $this->_formatStepRecipients($params['to'])); $params['stepid'] = $stepId; } // 移除后随未开始执行的步骤 foreach ($steps as $step) { if ($step['ordernum'] > $currentStep['ordernum']) { $this->_manager->deleteStep($tuduId, $step['stepid']); $stepNum--; } } foreach ($newSteps as $step) { if ($this->_manager->createStep($step)) { var_dump($step['users']); $recipients = $this->_prepareStepRecipients($this->_tudu->orgId, $uniqueId, $step['users']); $processIndex = $step['type'] == Dao_Td_Tudu_Step::TYPE_EXAMINE ? 0 : null; $this->_manager->addStepUsers($tuduId, $step['stepid'], $recipients, $processIndex); $stepNum++; } } $params['stepnum'] = $stepNum; } // 更新图度 if (!$this->_deliver->updateTudu($tuduId, $params)) { $this->json(false, $this->lang['save_failure']); } } // 过滤日志变更内容参数 if ($fromTudu) { $arrFromTudu = $fromTudu->toArray(); foreach ($tuduLog['detail'] as $k => $val) { // 记录增加抄送人 if ($k == 'cc') { $arr = explode("\n", $val); foreach ($arr as $idx => $v) { $ccArr = explode(' ', $v); if (array_key_exists($ccArr[0], $fromTudu->cc)) { unset($arr[$idx]); } } if (!$arr) { unset($tuduLog['detail']['cc']); } else { $tuduLog['detail']['cc'] = implode("\n", $arr); } continue; } // 过滤未更新字段 if (array_key_exists($k, $arrFromTudu) && $val == $arrFromTudu[$k]) { unset($tuduLog['detail'][$k]); } } // 内容没有变更 if (!$isForward) { if ($postLog['detail']['content'] == $fromTudu->content) { unset($postLog['detail']); } else { if (isset($postParams['lastmodify'])) { $postLog['detail']['lastmodify'] = $postParams['lastmodify']; } $postLog['detail']['createtime'] = $postParams['createtime']; } } if (empty($tuduLog['detail']['cc'])) { unset($tuduLog['detail']['cc']); } unset($tuduLog['detail']['from']); } // 写入操作日志 $this->_writeLog(Dao_Td_Log_Log::TYPE_TUDU, $tuduId, $tuduLog['action'], $tuduLog['detail'], $logPrivacy); if (!empty($postLog['detail'])) { $this->_writeLog(Dao_Td_Log_Log::TYPE_POST, $postId, $postLog['action'], $postLog['detail'], $logPrivacy); } $sendParams = array(); if ($type != 'task') { $sendParams['notice'] = $type == 'notice'; $sendParams['discuss'] = $type == 'discuss'; } // 删除需要移除的接受人 if ($removeAccepters) { if (!$this->_deliver->removeTuduAccepter($tuduId, $removeAccepters)) { $this->json(false, $this->lang['send_failure']); } } // 发送图度 if (!$this->_deliver->sendTudu($tuduId, $recipients, $sendParams)) { $this->json(false, $this->lang['send_failure']); } // 已发送的任务更新时,设置所有人为未读状态 if ($isSent) { $this->_manager->markAllUnread($tuduId); } // 转发任务时,设置当前关联用户为转发状态 if ($isForward) { $this->_manager->markForward($tuduId, $uniqueId); // 更新转发编辑后的任务进度 $this->_deliver->updateProgress($tuduId, $uniqueId, null); // 更新转发后的任务接受状态 $this->_deliver->updateLastAcceptTime($tuduId, $uniqueId, null); // 移除“我执行”标签 $this->_manager->deleteLabel($tuduId, $uniqueId, '^a'); } // 重新计算父级图度进度 if ($fromTudu && $fromTudu->parentId) { $this->_deliver->calParentsProgress($fromTudu->parentId); } if ('task' == $type) { // 发起人为当前执行人 if ($isAccpter) { // 自动接受任务 $this->_deliver->acceptTudu($tuduId, $uniqueId, null); // 添加我执行 $this->_deliver->addLabel($tuduId, $uniqueId, '^a'); // 接受添加日志 $this->_writeLog(Dao_Td_Log_Log::TYPE_TUDU, $tuduId, Dao_Td_Log_Log::ACTION_TUDU_ACCEPT, array('status' => Dao_Td_Tudu_Tudu::STATUS_DOING, 'accepttime' => time())); // 非当前执行人 } else { // 设为已读 $this->_deliver->markRead($tuduId, $uniqueId); } } $config = $this->_bootstrap->getOption('httpsqs'); // 插入消息队列 $httpsqs = new Oray_Httpsqs($config['host'], $config['port'], $config['chartset'], $config['name']); // 收发规则过滤 $data = implode(' ', array('tudu', 'filter', '', http_build_query(array('tsid' => $this->_tsId, 'tuduid' => $tuduId)))); $httpsqs->put($data, 'tudu'); // 发送外部邮件(如果有),处理联系人 $data = implode(' ', array('send', 'tudu', '', http_build_query(array('tsid' => $this->_tsId, 'tuduid' => $tuduId, 'uniqueid' => $this->_user['uniqueid'], 'to' => '')))); $httpsqs->put($data, 'send'); // IM提醒 if (!empty($notifyTo)) { $content = str_replace('%', '%%', mb_substr(preg_replace('/<[^>]+>/', '', $params['content']), 0, 100, 'UTF-8')); $names = array('task' => '图度', 'discuss' => '讨论', 'notice' => '公告'); $tpl = <<<HTML <strong>您刚收到一个新的{$names[$type]}</strong><br /> <a href="http://{$this->_request->getServer('HTTP_HOST')}/frame#m=view&tid=%s&page=1" target="_blank">%s</a><br /> 发起人:{$this->_user['truename']}<br /> 更新日期:%s<br /> {$content} HTML; $data = implode(' ', array('tudu', 'create', '', http_build_query(array('tuduid' => $this->_tudu->tuduId, 'from' => $this->_user['email'], 'to' => implode(',', $notifyTo), 'content' => sprintf($tpl, $this->_tudu->tuduId, $params['subject'], date('Y-m-d H:i:s', time())))))); $httpsqs->put($data); } $this->json(true, $this->lang['send_success'], $tuduId); }
/** * 编辑表单 */ public function modifyAction() { $tuduId = $this->_request->getQuery('tid'); $type = $this->_request->getQuery('type', 'task'); $to = $this->_request->getQuery('to', $this->_request->getQuery('email')); // email IM跳转 $boardId = trim($this->_request->getQuery('bid')); $flowId = $this->_request->getQuery('flowid'); $autosave = $this->_request->getPost('autosave'); $newwin = (bool) $this->_request->getQuery('newwin'); $attachments = null; $isSynchro = false; //是否逐级执行 $tudu = array(); $votes = array(); $access = $this->_user->getAccess(); // 权限 $perm = array('task' => $access->assertEquals(Tudu_Access::PERM_CREATE_TUDU, true), 'discuss' => $access->assertEquals(Tudu_Access::PERM_CREATE_DISCUSS, true), 'notice' => $access->assertEquals(Tudu_Access::PERM_CREATE_NOTICE, true), 'meeting' => $access->assertEquals(Tudu_Access::PERM_CREATE_MEETING, true), 'board' => $access->assertEquals(Tudu_Access::PERM_CREATE_BOARD, true)); $perm['group'] = $perm['task']; if (!in_array($type, array('task', 'notice', 'discuss', 'group', 'meeting'))) { foreach ($perm as $key => $value) { if ($value) { $type = $key; break; } } } if ($type == 'board') { return $this->_redirect('/board/modify'); } if ($tuduId) { if (!$access->assertEquals(Tudu_Access::PERM_UPDATE_TUDU, true)) { Oray_Function::alert($this->lang['perm_deny_update_tudu'], '/tudu/?search=inbox'); } $tudu = $this->getDao('Dao_Td_Tudu_Tudu')->getTuduById($this->_user->uniqueId, $tuduId); if (null === $tudu) { Oray_Function::alert($this->_lang['tudu_not_exists']); } $perm = array('discuss' => false, 'group' => false, 'notice' => false, 'task' => false, 'board' => false); $boards = $this->getBoards(false); $board = $boards[$tudu->boardId]; $isSender = in_array($tudu->sender, array($this->_user->address, $this->_user->userName)); $isModerators = array_key_exists($this->_user->userId, $board['moderators']); // 上级分区负责人 $isSuperModerator = !empty($board['parentid']) && array_key_exists($this->_user->userId, $boards[$board['parentid']]['moderators']); $isOwner = $board['ownerid'] == $this->_user->userId; if (!$isSender && !$isModerators && !$isSuperModerator) { Oray_Function::alert($this->lang['perm_deny_update_tudu'], '/tudu/?search=inbox'); } $daoClasses = $this->getDao('Dao_Td_Tudu_Class'); $classes = $daoClasses->getClassesByBoardId($this->_user->orgId, $tudu->boardId, array('ordernum' => 'ASC'))->toArray(); if ($isModerators || $isSuperModerator || $isOwner) { $classes[] = array('classname' => $this->lang['create_board_class'], 'classid' => '^add-class'); } $this->view->classes = $classes; if ($tudu->attachNum > 0) { /** * * @var Dao_Td_Attachment_File */ $daoFile = $this->getDao('Dao_Td_Attachment_File'); $attachments = $daoFile->getFiles(array('tuduid' => $tudu->tuduId, 'postid' => $tudu->postId)); $attachments = $attachments->toArray(); } if ($tudu->special == Dao_Td_Tudu_Tudu::SPECIAL_VOTE) { /* @var $daoVote Dao_Td_Tudu_Vote */ $daoVote = $this->getDao('Dao_Td_Tudu_Vote'); $votes = $daoVote->getVotesByTuduId($tudu->tuduId); $votes = $votes->toArray(); $votes = $daoVote->formatVotes($votes); } if ($tudu->cycleId) { $daoCycle = $this->getDao('Dao_Td_Tudu_Cycle'); $cycle = $daoCycle->getCycle(array('cycleid' => $tudu->cycleId)); $this->view->cycle = $cycle->toArray(); } /* @var $daoFlow Dao_Td_Tudu_Flow */ $daoFlow = $this->getDao('Dao_Td_Tudu_Flow'); if ($tudu->flowId) { /* @var $daoFlowTpl Dao_Td_Flow_Flow */ $daoFlowTpl = $this->getDao('Dao_Td_Flow_Flow'); $flow = $daoFlowTpl->getFlow(array('flowid' => $tudu->flowId))->toArray(); $flows[] = $flow; $this->view->flows = $flows; $isDisagreed = false; if ($tudu->type == 'task' && $tudu->stepNum > 0) { $flow = $daoFlow->getFlow(array('tuduid' => $tudu->tuduId)); $steps = array(); $isExceed = false; $counter = 0; foreach ($flow->steps as $sid => $st) { if (!$isExceed && $sid == $flow->currentStepId) { $isExceed = true; } foreach ($st['section'] as $idx => $sec) { foreach ($sec as $i => $u) { $user = array('email' => $u['username'], 'truename' => $u['truename'], 'stepid' => $sid, 'type' => $st['type'], 'stepstatus' => isset($u['status']) ? (int) $u['status'] : 0, 'processindex' => $counter); if ($isExceed && ($sid != $flow->currentStepId || $st['type'] == 1 && (!isset($user['status']) || $user['status'] < 1))) { $user['future'] = true; } $steps[$counter]['users'][] = $user; $steps[$counter]['type'] = $st['type']; } $counter++; } } ksort($steps); if (!$isDisagreed && count($steps)) { $lastStep = end($steps); reset($steps); } if (count($steps) > 1) { $this->view->steps = $steps; } } } if ($tudu->type == 'meeting') { $daoMeeting = $this->getDao('Dao_Td_Tudu_Meeting'); $meeting = $daoMeeting->getMeeting(array('tuduid' => $tudu->tuduId)); if (null !== $meeting) { $this->view->meeting = $meeting->toArray(); } } if ($tudu->isTuduGroup && (!$tudu->to || in_array($this->_user->userName, $tudu->accepter))) { //$type = 'group'; $type = 'task'; $children = $this->getDao('Dao_Td_Tudu_Tudu')->getGroupTudus(array('parentid' => $tudu->tuduId, 'senderid' => $this->_user->uniqueId, 'uniqueid' => $this->_user->uniqueId), null, 'lastposttime DESC')->toArray(); /* @var $daoFlow Dao_Td_Tudu_Flow */ $daoFlow = $this->getDao('Dao_Td_Tudu_Flow'); foreach ($children as $key => $child) { $to = array(); $toText = array(); if (empty($child['flowid']) && $child['stepid']) { $flow = $daoFlow->getFlow(array('tuduid' => $child['tuduid'])); if (!$flow) { continue; } $isExceed = false; $toIdx = null; foreach ($flow->steps as $sid => $step) { if (!$isExceed && ($sid == $flow->currentStepId || ($flow->currentStepId = '^head'))) { $isExceed = true; } if ($isExceed && $step['type'] == 0) { foreach ($step['section'] as $sec) { if (!empty($to)) { $to[] = '>'; } foreach ($sec as $idx => $u) { if (!isset($u['status']) || (int) $u['status'] != 4) { if ($idx > 0) { $to[] = '+'; } $to[] = $u['username'] . ' ' . $u['truename']; } } } } } } if (!empty($to)) { foreach ($to as $item) { if ($item == '+' || $item == '>') { $toText[] = $item; continue; } $info = explode(' ', $item); if (isset($info[1])) { $toText[] = $info[1]; } } } $children[$key]['totext'] = $toText; $children[$key]['to'] = $to; if ($child['status'] == 3) { $claimAccepters = array(); foreach ($flow->steps as $step) { if ($step['type'] == 2) { foreach ($step['section'] as $sec) { foreach ($sec as $u) { $claimAccepters[] = array('email' => $u['username'], 'truename' => $u['truename'], 'userinfo' => $u['username'] . ' ' . $u['truename']); } } } } if (!empty($claimAccepters)) { $this->view->claimAccepters = $claimAccepters; } } } $this->view->children = $children; } if ($tudu->status == 3 && !$tudu->isTuduGroup && $tudu->stepId) { $flow = $daoFlow->getFlow(array('tuduid' => $tuduId)); if ($flow && isset($flow->steps[$tudu->stepId])) { //$claimAccepters = $daoFlow->getUsers($tuduId, $claim->stepId); $step = $flow->steps[$tudu->stepId]; if ($step['type'] == 2) { $claimAccepters = $step['section'][0]; foreach ($claimAccepters as &$claimAccepter) { $info = explode(' ', $claimAccepter['userinfo'], 2); if (count($info) == 2) { $claimAccepter['email'] = $info[0]; $claimAccepter['truename'] = $info[1]; } } $this->view->claimAccepters = $claimAccepters; } } } $tudu = $tudu->toArray(); $tudu['attachments'] = $attachments; $type = $tudu['type']; if ($type == 'task' && !empty($tudu['stepid']) && $tudu['stepid'] == '^end') { $to = array(); foreach ($tudu['to'] as $item) { if (!empty($to)) { $to[]['userinfo'] = '+'; } $to[] = array('email' => $item[3], 'truename' => $item[0], 'userinfo' => $item[3] . ' ' . $item[0]); } $tudu['to'] = $to; // 逐级执行,执行人填充 审批人填充 } elseif ($tudu && empty($tudu['flowid']) && ($type == 'task' || $type == 'notice') && !empty($tudu['stepid'])) { /* @var $daoFlow Dao_Td_Tudu_Flow */ $daoFlow = Tudu_Dao_Manager::getDao('Dao_Td_Tudu_Flow', Tudu_Dao_Manager::DB_TS); $flow = $daoFlow->getFlow(array('tuduid' => $tudu['tuduid'])); $steps = $flow->steps; $step = isset($flow->steps[$flow->currentStepId]) ? $flow->steps[$flow->currentStepId] : null; foreach ($steps as $st) { if ($st['type'] == 1 && $st['section']) { foreach ($st['section'] as $sec) { foreach ($sec as $u) { if ($u['status'] > 2) { $step = $st; break 3; } } } } } if (!$step) { $reviewer = array(); $to = array(); $step = isset($steps[$flow->currentStepId]) ? $steps[$flow->currentStepId] : null; if (null === $step && $flow->currentStepId == '^head') { $step = reset($steps); } } if (null !== $step) { if ($step['type'] == 1) { foreach ($step['section'] as $idx => $section) { if (isset($step['currentSection']) && $idx < $step['currentSection']) { continue; } if (!empty($reviewer)) { $reviewer[] = array('userinfo' => '>'); } foreach ($section as $i => $user) { if (isset($user['status']) && $user['status'] == 2) { continue; } if ($idx > 0 && $i > 0) { $reviewer[] = array('userinfo' => '+'); } $reviewer[] = array('email' => $user['username'], 'truename' => $user['truename'], 'userinfo' => $user['username'] . ' ' . $user['truename']); } } $executeStep = isset($steps[$step['next']]) ? $steps[$step['next']] : null; } else { $executeStep = isset($steps[$flow->currentStepId]) ? $steps[$flow->currentStepId] : null; } if ($executeStep && $executeStep['type'] != 1) { foreach ($executeStep['section'] as $idx => $section) { if (isset($executeStep['currentSection']) && $idx < $executeStep['currentSection']) { continue; } if (!empty($to)) { $to[] = array('userinfo' => '>'); } foreach ($section as $i => $user) { if ($i > 0) { $to[] = array('userinfo' => '+'); } $to[] = array('email' => $user['username'], 'truename' => $user['truename'], 'userinfo' => $user['username'] . ' ' . $user['truename']); } } } } if (!empty($reviewer)) { $this->view->reviewer = $reviewer; } if (!empty($to)) { $tudu['to'] = $to; } } } else { if (!$perm[$type]) { Oray_Function::alert($this->lang['perm_deny_create_' . $type], '/tudu/?search=inbox'); } if ($this->_request->getPost()) { $params = $this->_getModifyParams(); $tudu = $params['tudu']; if ($type == 'meeting') { unset($tudu['starttime']); unset($tudu['endtime']); } if (!empty($tudu['type']) && $tudu['type'] == 'meeting') { unset($tudu['starttime']); unset($tudu['endtime']); } unset($tudu['type']); } $boards = $this->getBoards(false); if (!empty($boardId) && isset($boards[$boardId])) { $board = $boards[$boardId]; $isModerators = array_key_exists($this->_user->userId, $board['moderators']); $isOwner = $board['ownerid'] == $this->_user->userId; // 上级分区负责人 $isSuperModerator = !empty($board['parentid']) && array_key_exists($this->_user->userId, $boards[$board['parentid']]['moderators']); if ($boardId && (!isset($tudu['tuduid']) || empty($tudu['boardid']))) { $tudu['boardid'] = $boardId; } $daoClasses = $this->getDao('Dao_Td_Tudu_Class'); $classes = $daoClasses->getClassesByBoardId($this->_user->orgId, $tudu['boardid'], array('ordernum' => 'ASC'))->toArray(); // XXX if ($isModerators || $isSuperModerator || $isOwner) { $classes[] = array('classname' => $this->lang['create_board_class'], 'classid' => '^add-class'); } $this->view->classes = $classes; } if ($flowId) { $this->view->flowid = $flowId; } if (isset($tudu['to']) && is_array($tudu['to'])) { foreach ($tudu['to'] as $idx => $item) { $tudu['to'][$idx]['userinfo'] = $item[3] . ' ' . $item[0]; } } } if ($to && !$tudu) { if (Oray_Function::isEmail($to)) { $to = explode('@', $to); $userId = $to[0]; echo $userId; $daoUser = Oray_Dao::factory('Dao_Md_User_User', $this->multidb->getDb()); $to = $daoUser->getUsers(array('orgid' => $this->_user->orgId, 'userid' => $userId), null, null, 1)->toArray(); if (!empty($to[0])) { $email = $to[0]['userid'] . '@' . $to[0]['domainname']; $tudu['to'] = array($email => array(0 => $to[0]['truename'], 1 => $to[0]['userid'], 2 => $to[0]['domainname'])); $tudu['accepter'] = array($email); } } else { // IM email特殊处理 $to = explode("\n", $to); foreach ($to as $item) { $tudu['to'][]['userinfo'] = $item; } /*if (strpos($to, ' ') === false) { $to = ' ' . $to; } $tudu['to'] = Dao_Td_Tudu_Tudu::formatAddress($to);*/ } } $perm['upload'] = $access->isAllowed(Tudu_Access::PERM_UPLOAD_ATTACH); $uploadOpt = $this->bootstrap->getOption('upload'); $boards = $this->getBoards(); $cookies = $this->_request->getCookie(); $this->view->registModifier('tudu_format_content', array($this, 'formatContent')); $board = null; if (!$tudu) { foreach ($boards as $key => $zone) { if (!empty($zone['children'])) { foreach ($zone['children'] as $k => $child) { if ($child['status'] == 2) { unset($boards[$key]['children'][$k]); $boards[$key]['children'] = array_values($boards[$key]['children']); } } } if ($zone['type'] == 'zone' && empty($zone['children'])) { unset($boards[$key]); } } //var_dump($boards['^zone']);exit(); } else { foreach ($boards as $key => $zone) { if (!empty($zone['children']) && !empty($tudu['boardid'])) { foreach ($zone['children'] as $k => $child) { if ($tudu['boardid'] == $child['boardid']) { $tudu['boardname'] = $child['boardname']; $board = $child; // 执行人拒绝任务,在不可修改板块也可修改图度 if ($board['protect'] && (isset($tudu['status']) && $tudu['status'] == Dao_Td_Tudu_Tudu::STATUS_REJECT && in_array($tudu['sender'], array($this->_user->address, $this->_user->userName))) || empty($tudu['tuduid']) || !empty($tudu['isdraft'])) { $board['protect'] = 0; } break; } } } } } // 处理快捷板块 //$attentions = array('children' => array()); /* @var $daoBoard Dao_Td_Board_Board */ /*$daoBoard = $this->getDao('Dao_Td_Board_Board'); $attenBoards = $daoBoard->getAttentionBoards($this->_user->orgId, $this->_user->uniqueId); if ($attenBoards !== null) { $attentions['children'] = $attenBoards; } if (!empty($attentions['children'])) { $attentions['type'] = 'zone'; $attentions['boardname'] = $this->lang['my_attention_board']; $boards = array_merge(array($attentions), $boards); }*/ $upload = $this->options['upload']; $upload['cgi']['upload'] .= '?' . session_name() . '=' . $this->_sessionId . '&email=' . $this->_user->address; if (!empty($tudu['tuduid'])) { $tudu['users'] = $this->getDao('Dao_Td_Tudu_Tudu')->getUsers($tudu['tuduid']); } if ($autosave) { $tudu['autosave'] = $autosave; } $accepters = $this->getDao('Dao_Td_Tudu_Tudu')->getAccepters($tuduId); foreach ($accepters as &$accepter) { $info = explode(' ', $accepter['accepterinfo'], 2); if (count($info) == 2) { $accepter['email'] = str_replace(array('oray.com', 'tudu.com'), array('oray', ''), $info[0]); $accepter['truename'] = $info[1]; } $accepter['percent'] = (int) $accepter['percent']; } if ($tudu && $type == 'task') { $canNotDelAccepter = array(); foreach ($accepters as &$accepter) { $childrenCount = $this->getDao('Dao_Td_Tudu_Group')->getChildrenCount($tudu['tuduid'], $accepter['uniqueid']); if ($childrenCount > 0) { $canNotDelAccepter[] = array('uniqueid' => $accepter['uniqueid'], 'truename' => $accepter['truename'], 'username' => $accepter['email'], 'accepterinfo' => $accepter['accepterinfo']); } } $this->view->cannotdelaccepter = $canNotDelAccepter; } if ($newwin) { $daoOrg = $this->getMdDao('Dao_Md_Org_Org'); $org = $daoOrg->getOrg(array('orgid' => $this->_user->orgId)); $this->view->org = $org->toArray(); } $this->view->registModifier('format_board_list', array($this, 'formatBoardList')); $this->view->board = $board; $this->view->back = $this->_request->getQuery('back'); $this->view->reopen = $this->_request->getQuery('reopen'); $this->view->upload = $upload; $this->view->cookies = serialize($cookies); $this->view->boards = $boards; $this->view->tudu = $tudu; $this->view->accepters = $accepters; $this->view->access = $perm; $this->view->votes = $votes; $this->view->ndfile = !empty($tudu['nd-attach']) ? $tudu['nd-attach'] : null; $this->view->newwin = $newwin; $this->view->sessionid = $this->_sessionId; $this->view->issynchro = $isSynchro; $this->render('modify_' . $type); }
/** * 输出搜索表单 * */ public function searchAction() { $castDao = Oray_Dao::factory('Dao_Md_User_Cast', $this->multidb->getDb()); $users = $castDao->getCastUsers(array('orgid' => $this->_user->orgId, 'castid' => $this->_user->castId)); $boards = $this->getBoards(); $labels = $this->getLabels(); foreach ($labels as &$label) { if ($label['issystem']) { $label['displayname'] = $this->lang['label_' . $label['labelalias']]; } else { $label['displayname'] = $label['labelalias']; } } $this->view->boards = $boards; $this->view->labels = $labels; $this->view->users = $users->toArray(); $this->view->LANG = $this->lang; }
public function indexAction() { $error = $this->_request->getQuery('error'); $redirect = $this->_request->getQuery('redirect'); $lang = Tudu_Lang::getInstance()->load('login'); $orgInfo = array(); // 使用SSL登陆 if ('http:' == PROTOCOL && strpos($this->options['sites']['www'], 'https:') === 0) { if (preg_replace('/^https:\\/\\//', '', $this->options['sites']['www']) == $this->_host) { $this->_redirect($this->options['sites']['www'] . $this->_request->getServer('REQUEST_URI')); } else { $this->_redirect('https://' . $this->_host . $this->_request->getServer('REQUEST_URI')); } } $memcache = $this->getInvokeArg('bootstrap')->getResource('memcache'); $orgInfo = $memcache->get('TUDU-HOST-' . $this->_host); if (!empty($this->session->auth['appinvoker'])) { return; } if (!$orgInfo) { /* @var $daoOrg Dao_Md_Org_Org */ $daoOrg = Oray_Dao::factory('Dao_Md_Org_Org', $this->bootstrap->getResource('multidb')->getDefaultDb()); $orgInfo = $daoOrg->getOrgByHost($this->_host); $flag = null; $memcache->set('TUDU-HOST-' . $this->_host, $orgInfo, $flag, 3600); } if ($this->_user && $this->_user->isLogined() && $this->_user->orgId == $orgInfo->orgId) { return $this->_redirect(PROTOCOL . '//' . $this->_request->getServer('HTTP_HOST') . '/frame'); } if ($orgInfo instanceof Dao_Md_Org_Record_Org) { $orgInfo = $orgInfo->toArray(); if (!empty($this->options['tudu']['customdomain'])) { $this->options['sites']['tudu'] = PROTOCOL . '//' . $orgInfo['orgid'] . '.' . $this->options['tudu']['domain']; } } if (in_array($error, array('params', 'failure', 'locked', 'unsupport', 'timeout', 'notexist', 'seccode', 'forbid')) && array_key_exists($error, $lang)) { $this->view->error = $error; } if ($error == 'admin') { $this->view->fromadmin = true; } $this->view->org = $orgInfo; $this->view->lang = $lang; $this->view->redirect = $redirect; $this->view->options = array('sites' => $this->options['sites'], 'tudu' => $this->options['tudu']); // 选择登陆模板 if (!empty($orgInfo) && !empty($orgInfo['loginskin'])) { $loginSkin = $orgInfo['loginskin']; if (!empty($loginSkin['selected']) && !empty($loginSkin['selected']['value']) && $loginSkin['selected']['value'] != 'SYS:default') { $this->view->loginskin = $orgInfo['loginskin']; $this->render('custom'); } } }
/** * Get dao * * @param string $className * @return Oray_Dao_Abstract */ public function getMdDao($className) { if (!Zend_Registry::isRegistered($className)) { Zend_Registry::set($className, Oray_Dao::factory($className, $this->_multidb->getDefaultDb())); } return Zend_Registry::get($className); }
/** * 更新会议信息 * @param $params */ public function updateMeeting(array $params) { if (empty($params['tuduid'])) { return false; } $daoMeeting = Oray_Dao::factory('Dao_Td_Tudu_Meeting', $this->_db); if ($daoMeeting->existsMeeting($params['tuduid'])) { return $daoMeeting->updateMeeting($params['tuduid'], $params); } else { return $daoMeeting->createMeeting($params); } }
/** * 修改密码 */ public function passwordAction() { $pwd = $this->_request->getPost('password'); $opwd = $this->_request->getPost('opassword'); $repwd = $this->_request->getPost('repassword'); if ($this->session->isdemo) { return $this->json(false, $this->lang['password_deny_to_demoaccount']); } // 验证原密码 $auth = Tudu_Auth::getInstance(); $auth->setAdapter(new Tudu_Auth_Adapter_User($this->multidb->getDb(), null, null, array('ignorelock' => true, 'skiplock' => true))); $result = $auth->checkPassword($this->_user->userName, $opwd); if (!$result->isValid()) { return $this->json(false, $this->lang['old_password_unmatch']); } if ($pwd != $repwd) { return $this->json(false, $this->lang['confirm_password_unmatch']); } // 安全级别匹配 $regs = array(1 => '/[0-9a-zA-Z]/', 2 => '/[0-9a-zA-Z^a-zA-Z0-9]/'); $pwdLevel = isset($this->_user->option['passwordlevel']) ? $this->_user->option['passwordlevel'] : 0; if ($pwdLevel > 0 && !preg_match($regs[$pwdLevel], $pwd)) { return $this->json(false, $this->lang['password_level_not_match_' . $pwdLevel]); } $daoUser = Oray_Dao::factory('Dao_Md_User_User', $this->multidb->getDb()); $params = array('password' => $pwd); $ret = $daoUser->updateUserInfo($this->_user->orgId, $this->_user->userId, $params); $ret = $daoUser->updateUser($this->_user->orgId, $this->_user->userId, array('initpassword' => 0)); if (!$ret) { return $this->json(false, $this->lang['password_update_failure']); } $this->cache->deleteCache('TUDU-USER-' . $this->_user->userId . '@' . $this->_user->orgId); $this->json(true, $this->lang['password_update_success']); }
/** * 查看页面 */ public function viewAction() { $email = $this->_request->getQuery('email'); $this->view->email = $email; // 企业联系人 if ($email) { if (!$email || false === strpos($email, '@')) { $this->_redirect($_SERVER['HTTP_REFERER']); } $userId = array_shift(explode('@', $email)); $orgId = array_pop(explode('@', $email)); $daoCast = Oray_Dao::factory('Dao_Md_User_Cast', $this->multidb->getDb()); // 不可见 if ($userId != $this->_user->userId && !$daoCast->existsUser($this->_user->orgId, $this->_user->userId, $userId)) { $this->_redirect($_SERVER['HTTP_REFERER']); } /* @var $daoUser Dao_Md_User_User */ $daoUser = Oray_Dao::factory('Dao_Md_User_User', $this->multidb->getDb()); $daoDept = Oray_Dao::factory('Dao_Md_Department_Department', $this->multidb->getDb()); $profile = $daoUser->getUser(array('orgid' => $orgId, 'userid' => $userId)); if (!$profile) { $this->_redirect($_SERVER['HTTP_REFERER']); } $dept = $daoDept->getDepartment(array('orgid' => $this->_user->orgId, 'deptid' => $profile->deptId)); $userinfo = $daoUser->getUserInfo(array('orgid' => $this->_user->orgId, 'userid' => $userId)); $this->view->back = $this->_request->getQuery('back'); $this->view->dept = $dept ? $dept->toArray() : null; $this->view->profile = $profile->toArray(); $this->view->userinfo = $userinfo->toArray(); } else { // 个人通讯录 $contactId = $this->_request->getQuery('ctid'); if (empty($contactId)) { $this->_redirect($_SERVER['HTTP_REFERER']); } $daoContact = $this->getDao('Dao_Td_Contact_Contact'); $contact = $daoContact->getContactById($contactId, $this->_user->uniqueId); $groupId = $contact->groups; $count = count($groupId); $daoGroup = $this->getDao('Dao_Td_Contact_Group'); $groups = $daoGroup->getGroupsByUniqueId($this->_user->uniqueId); $this->view->groups = $groups->toArray(); $this->view->groupid = $groupId; $this->view->count = $count; $this->view->back = $this->_request->getQuery('back'); $this->view->contact = $contact->toArray(); } }
/** * * @param $className * @param $tsId */ public function getTdDao($className, $tsId) { if (!Zend_Registry::isRegistered($className)) { Zend_Registry::set($className, Oray_Dao::factory($className, $this->getTsDb($tsId))); } return Zend_Registry::get($className); }
/** * * @param Zend_Db_Adapter_Abstract $db * @return Dao_Td_Tudu_Vote */ public function getDao($db = null) { if (self::$_daoVote == null) { self::$_daoVote = Oray_Dao::factory('Dao_Td_Tudu_Vote', $db); } return self::$_daoVote; }
public function indexAction() { $this->_helper->viewRenderer->setNeverRender(); $bootstrap = $this->getInvokeArg('bootstrap'); $multidb = $bootstrap->getResource('multidb'); $options = $bootstrap->getOptions(); $orgId = $this->_request->getQuery('oid'); $uniqueId = $this->_request->getQuery('unid'); $email = $this->_request->getQuery('email'); if (array_key_exists('unid', $_GET) || array_key_exists('email', $_GET)) { if (!empty($uniqueId) || !empty($email)) { /* @var $userDao Dao_Md_User_User */ $userDao = Oray_Dao::factory('Dao_Md_User_User', $multidb->getDb()); if ($uniqueId) { $avatars = $userDao->getAvatars($uniqueId); } else { $arr = explode('@', $email, 2); $userId = $arr[0]; $orgId = $arr[1]; $avatars = $userDao->getAvatars(array('userid' => $userId, 'orgid' => $orgId)); } if (!empty($avatars['avatars']) && !empty($avatars['type'])) { $type = $avatars['type']; $logo = $avatars['avatars']; } } if (!isset($logo)) { $type = 'image/png'; if (!isset($avatars['gender']) || $avatars['gender']) { $logo = base64_decode('iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/sl0p8zAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAhRSURBVHja7FxJjxNHFH7P3bYZwwCzwJjACAJMWCQEREkuiZQr+Z35A8khlxyiRIoQEkQEFDSsw2wZBmaB2Wz3+nLorqr3qrs9LDZpC/cBu6p68dff2+sNODc3B5/SUYFP7BgCHgIeAh4CHgIeAv7kAbcC3PXxf3m0+3EeE8Uwv+UsbDvrLWyHSAAAQERHD9AX49H5sajufCTA2O/QctfH2Q33+ZtKJwQAUFDFd6cCM2PRtamoUaUBBuyFeG/NfbrpxKSxUS7gZKmCMDMeX52KRms0YIBjgseb7v01N4ggwWgh1PizSxWEa83o2lRUwQHR4U6IfyxW19uYh4cE7LyliODOSmX+Dd44FzaqpbfSRPD7YnWjjQCACPrffOlKTshbWm/hz4/cVlB6wIvblc02psSR/iAERWhmCYCACDNLOx78Pu+UHfCjDSf50QJACgMQCpcgb2l5Cxe3sLyAoxg22sih5Mnz/kt86vlrLK/R2vExjpnSKnOEWk7hrZZQ2TAA2PNLbKU7IQAQ5DrRBAYIMHIp70KCICqxDvsR8h9tNJakzKql7gqcvAE/KjHDcZw63ozaEYIx0kqe84iV8sxNexkBH6xZ6phxvHkSjwhERRcSYolF+sgBopgKpNqIKVqRCiWOmgu58ds9z6J6yXDNgQMueBHlSTUoqSYmulLIgeQQEKDniUSPA4/JRmy70pQ3yaTRbbLJ10EYERCNN8odaR07BDERAekjzY7QoKbkK5Ea6szRTCQfBDBRdsAN0vQAAAJyT4OWc8JuvioZjo2UOz0cb6SpHiJqn4NacS2fDCAyCmBhF2nLj6VmeHVHE5XKM1NITh3phFjoraXkRHeWym207iwl4Qdl0wFE0KaIyXNXt0Tw71a5Aac1CgKKmfkFY4+Qu18rDSZCHVIqR1V2K90cZTEG+4qccY0TdM4khYKdNtnAUhut5iiwcJpECccONjIBthqk80QAcHy0/FZaeSRtq7slEsxQp0E1G9YcGG+U20q7DoxUSQRYVlkrY6u7aHVzFEudPCTH9FEkIhVvQRwbH6TqsiYMS6dJRFc6RLt6qvc/r/d3/Pp0ZeowamSyWkcyQbRDa+60vjvnNA/jAAB2KnDjUuXCcQTuY4hXPyzxNkMt3tdOVi41+7Kz2a/t0uZhIJ0IUIbhBCfaXld7o6ONfm2m9mu7tFFDIAAkkE7XruwUZMiH6jBggA/Vdb5PyMsBJJ1TAf4jI/1iuNI/hkeqLOIiXX8XUp1N/RHg3DGnURs0wABweqKS4szYaWXE7VQJCCoA33zex76EPgK+csqpOdTFOenigM4oEejKKedgHQcScKOG31+saZIptp2TIF9VZK9M97ftpL93rzoJVgQkaapVNJmUu8g0PlCfuzz627a0uhUbo5WVa5b36+yq7dMAA17bjoB0db7AVrO8HwHetOKBBNz26facv7gemSQwQzLyap0aPlwJ+yrVve/i2diN7877C2shIuoujuSb1fUhVNfMUL2KM033+plazcWyA771xPtnyQcABRYQDVo1o3ME4qUObbGSDHGkhl+drV/4rFpSwB2fbj7uPHsZapwp7AzJPKcvIlkXQiZGnW8v1o8fdkoEuOXR/UVvdtkPQiO0KbwPI1nDPn3MnTlRnZ503Q9uV/sgwOs70b1579mqH8eMTCbMPSFZg3crOD3pnG/Wpidd18GPB7gT0LNV/8lKsLIZ6l+vKbVQJaTy0/jryKKSlSB2gnkdVHXw5IQ7c6I2Pem+q2F7B8BRDAtr/sNlf/5VENPbii63zGrdnGlcFrHYS9JeJPNJdeV8s3p5un5izO0l4JXNcHbZe7rieSF0Z0+RbAnz+5NsSbjVlapPGzvoXDxVvzxdH9kvr+wG+PVu9HDZe7DY2e3EuXgKyOwZyQItSM7JblVNPs8cr10/e+DkRPXdAG/uRn8+2Hv6wsv9oZKl/TSWdZAWGbYCkq3WW/kWCl5K8kbOTNV++HK0mqfeOaHli9fBj79tPlnpWI1UZO8XkHrfxG2KNbSvIt40bZZQpRHaYcleWzNvUujMVajOnH/p/3Rrywtof8BRTL/c3grCWAf9ah+Qh8QmHzDwKJPd6dPMXrGcB6s2AKwSYNcx+bzYaiWNU9QSXmwGv97d3h/wX09ab3Yie0Moha2SeMYy3wHWHBedlt6E8i5nPXupvBMgYHaeZZTINU7uRSMAPF/1Hyx09gH891zLaEuG3tQ7Kt6A6ZXpWCFBu74DieKz2UC2ZF4W5U1jWrIXZWp9kk++yc7PvDm7F4RUCHhlw9/ajXiXkS46KpyWbKvfTXp/SBZ05B0yuqAfwnbSRLsAS5jZo+12AYFT7Gm0vWhp3S8EvLjmk3nrlh0CFv0WmiiFsmCehOnKGDxGMmjGJMnCqmWtV87SdisqBPzqdSjqTmQUkgX1oo9B6nk3lSYDt/gmQoGzLSJc4TFvMqvb0PaosIi3sR2Y55ub6ZdFpLatUbWEJrOIukyHJDoakFJOUFOLCIBIROxWkAzldkzKJ+kWW910jUC6gUB9yS4lV7XaxQzvtSPIBDRQ0PRtG3J2FYDNm1WMtIdWMISCbTbknjn/nOzhBXEhw36o/SOjN3kEpuRQKjOpnKlJQrQFQbOd0pgRED2fPEQNrShaphAywBKhTHYJCBD2vLiQYT+IlatktoRv4Iu9IiC5JKOLvIhFmDmSBqybudaRhvi7GBGuiKX0KgAg8IMCt1RUK6Q8ic0K8/tJb+ZaKa5dpVcWBrE4ey8QaWYzmCSL1iNueNBaUrbKlurcS6TZSw2YeIoyP3rfWP51CDdLVh+QWEIAT4o0Dv+nliHgIeAh4CHgEh//DQDCDiYi87rz1wAAAABJRU5ErkJggg=='); } else { $logo = base64_decode('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'); } } echo $logo; // 联系人头像 } elseif (array_key_exists('ctid', $_GET) && array_key_exists('tsid', $_GET)) { $contactId = $_GET['ctid']; $tsId = $_GET['tsid']; /* @var $daoContact Dao_Td_Contact_Contact */ $daoContact = Oray_Dao::factory('Dao_Td_Contact_Contact', $multidb->getDb('ts' . $tsId)); $info = $daoContact->getAvatars($contactId); if (null !== $info) { $logo = $info['avatars']; $type = $info['avatarstype']; } if (empty($logo)) { $type = 'image/png'; $logo = base64_decode('iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/sl0p8zAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAhRSURBVHja7FxJjxNHFH7P3bYZwwCzwJjACAJMWCQEREkuiZQr+Z35A8khlxyiRIoQEkQEFDSsw2wZBmaB2Wz3+nLorqr3qrs9LDZpC/cBu6p68dff2+sNODc3B5/SUYFP7BgCHgIeAh4CHgIeAv7kAbcC3PXxf3m0+3EeE8Uwv+UsbDvrLWyHSAAAQERHD9AX49H5sajufCTA2O/QctfH2Q33+ZtKJwQAUFDFd6cCM2PRtamoUaUBBuyFeG/NfbrpxKSxUS7gZKmCMDMeX52KRms0YIBjgseb7v01N4ggwWgh1PizSxWEa83o2lRUwQHR4U6IfyxW19uYh4cE7LyliODOSmX+Dd44FzaqpbfSRPD7YnWjjQCACPrffOlKTshbWm/hz4/cVlB6wIvblc02psSR/iAERWhmCYCACDNLOx78Pu+UHfCjDSf50QJACgMQCpcgb2l5Cxe3sLyAoxg22sih5Mnz/kt86vlrLK/R2vExjpnSKnOEWk7hrZZQ2TAA2PNLbKU7IQAQ5DrRBAYIMHIp70KCICqxDvsR8h9tNJakzKql7gqcvAE/KjHDcZw63ozaEYIx0kqe84iV8sxNexkBH6xZ6phxvHkSjwhERRcSYolF+sgBopgKpNqIKVqRCiWOmgu58ds9z6J6yXDNgQMueBHlSTUoqSYmulLIgeQQEKDniUSPA4/JRmy70pQ3yaTRbbLJ10EYERCNN8odaR07BDERAekjzY7QoKbkK5Ea6szRTCQfBDBRdsAN0vQAAAJyT4OWc8JuvioZjo2UOz0cb6SpHiJqn4NacS2fDCAyCmBhF2nLj6VmeHVHE5XKM1NITh3phFjoraXkRHeWym207iwl4Qdl0wFE0KaIyXNXt0Tw71a5Aac1CgKKmfkFY4+Qu18rDSZCHVIqR1V2K90cZTEG+4qccY0TdM4khYKdNtnAUhut5iiwcJpECccONjIBthqk80QAcHy0/FZaeSRtq7slEsxQp0E1G9YcGG+U20q7DoxUSQRYVlkrY6u7aHVzFEudPCTH9FEkIhVvQRwbH6TqsiYMS6dJRFc6RLt6qvc/r/d3/Pp0ZeowamSyWkcyQbRDa+60vjvnNA/jAAB2KnDjUuXCcQTuY4hXPyzxNkMt3tdOVi41+7Kz2a/t0uZhIJ0IUIbhBCfaXld7o6ONfm2m9mu7tFFDIAAkkE7XruwUZMiH6jBggA/Vdb5PyMsBJJ1TAf4jI/1iuNI/hkeqLOIiXX8XUp1N/RHg3DGnURs0wABweqKS4szYaWXE7VQJCCoA33zex76EPgK+csqpOdTFOenigM4oEejKKedgHQcScKOG31+saZIptp2TIF9VZK9M97ftpL93rzoJVgQkaapVNJmUu8g0PlCfuzz627a0uhUbo5WVa5b36+yq7dMAA17bjoB0db7AVrO8HwHetOKBBNz26facv7gemSQwQzLyap0aPlwJ+yrVve/i2diN7877C2shIuoujuSb1fUhVNfMUL2KM033+plazcWyA771xPtnyQcABRYQDVo1o3ME4qUObbGSDHGkhl+drV/4rFpSwB2fbj7uPHsZapwp7AzJPKcvIlkXQiZGnW8v1o8fdkoEuOXR/UVvdtkPQiO0KbwPI1nDPn3MnTlRnZ503Q9uV/sgwOs70b1579mqH8eMTCbMPSFZg3crOD3pnG/Wpidd18GPB7gT0LNV/8lKsLIZ6l+vKbVQJaTy0/jryKKSlSB2gnkdVHXw5IQ7c6I2Pem+q2F7B8BRDAtr/sNlf/5VENPbii63zGrdnGlcFrHYS9JeJPNJdeV8s3p5un5izO0l4JXNcHbZe7rieSF0Z0+RbAnz+5NsSbjVlapPGzvoXDxVvzxdH9kvr+wG+PVu9HDZe7DY2e3EuXgKyOwZyQItSM7JblVNPs8cr10/e+DkRPXdAG/uRn8+2Hv6wsv9oZKl/TSWdZAWGbYCkq3WW/kWCl5K8kbOTNV++HK0mqfeOaHli9fBj79tPlnpWI1UZO8XkHrfxG2KNbSvIt40bZZQpRHaYcleWzNvUujMVajOnH/p/3Rrywtof8BRTL/c3grCWAf9ah+Qh8QmHzDwKJPd6dPMXrGcB6s2AKwSYNcx+bzYaiWNU9QSXmwGv97d3h/wX09ab3Yie0Moha2SeMYy3wHWHBedlt6E8i5nPXupvBMgYHaeZZTINU7uRSMAPF/1Hyx09gH891zLaEuG3tQ7Kt6A6ZXpWCFBu74DieKz2UC2ZF4W5U1jWrIXZWp9kk++yc7PvDm7F4RUCHhlw9/ajXiXkS46KpyWbKvfTXp/SBZ05B0yuqAfwnbSRLsAS5jZo+12AYFT7Gm0vWhp3S8EvLjmk3nrlh0CFv0WmiiFsmCehOnKGDxGMmjGJMnCqmWtV87SdisqBPzqdSjqTmQUkgX1oo9B6nk3lSYDt/gmQoGzLSJc4TFvMqvb0PaosIi3sR2Y55ub6ZdFpLatUbWEJrOIukyHJDoakFJOUFOLCIBIROxWkAzldkzKJ+kWW910jUC6gUB9yS4lV7XaxQzvtSPIBDRQ0PRtG3J2FYDNm1WMtIdWMISCbTbknjn/nOzhBXEhw36o/SOjN3kEpuRQKjOpnKlJQrQFQbOd0pgRED2fPEQNrShaphAywBKhTHYJCBD2vLiQYT+IlatktoRv4Iu9IiC5JKOLvIhFmDmSBqybudaRhvi7GBGuiKX0KgAg8IMCt1RUK6Q8ic0K8/tJb+ZaKa5dpVcWBrE4ey8QaWYzmCSL1iNueNBaUrbKlurcS6TZSw2YeIoyP3rfWP51CDdLVh+QWEIAT4o0Dv+nliHgIeAh4CHgEh//DQDCDiYi87rz1wAAAABJRU5ErkJggg=='); } echo $logo; // 组织Logo } else { /* @var $orgDao Dao_Md_Org_Org */ $orgDao = Oray_Dao::factory('Dao_Md_Org_Org', $multidb->getDb()); $logo = $orgDao->getLogo($orgId); if (!$logo) { $logo = base64_decode('R0lGODlhqgAyAMQAAAAAAP///8jY10mAe4+xrtbi4R9jXC1tZjt3cFeKhWWUj3OemYGopJ27uLrPzazFwuTs6/L29f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAACqADIAAAX/YCCOZGmeaKqubOu+cCzPdG3feK7vfO//wKBwSCwaj8ikcslsOp/QqHRKrVqv2KwWy1AUtmBS5EEom8/odAMigxgMiSwjkfiCIYe3fs/v7wknEQKDhIV6hYiEbEsJbwJhC36Sk2+LIw55lJp6BxGMjmEIbw+eMQUDbw0loputnZ8Gj2BvcSYFiYSlAQJvgCNuBgMOg5EDuISRsYWWSY2xYbQlBZmTvgG9JLwGDiMEcCreBlLOslvRv9STtdcG1rupyMHHxI6FuiIQZkPk0N8jqHDSEMhkDdsIba02vTqoZx+oWf4CJDOAwM6IB28Q6DIoAmFCTcwQOnwGsVayA3kO/3ALEOGkRXbutC0w40wgzV5nynVsKIRfyQAYDRwoMO0NAwcAh5bg+I5kgHDg3qCAMKjBIUJfqAq4l22QCQFz6BBgw48QCkECmCWJZlVpgKJ7BqiFme3h0zcrbbFCEU5SnHA6SfAUEUFBnwMP+A0uoc3dWn8FdCXmM6DBS7oMnfbVtK7E5j5/7S6VShign0yPFtdt1+QcSwcMWNFKByeBF6bayuFRGPhX1auDvgBGMXiigkUP0qUm/ZXp4wQtZWccy5KA9F64RUdwYLOMA64nRHoWLZg0MAMLpFFbLi68cyS0HPBRUCZwAQIKRCEAFhNUvu42XbZaeyQMdwJP4SxEQv9Qz6iWmWPwwQGBAgksQEoAziBAHXGsZfYIbQk9gIJ4BZI3Ak/OpHcgKA7u1OESrpFg2B4KiGhCdg1+9MeIDhp4I2l6qHKCYswx9t4RMUawiAMTvaHSaO5Y9YwzwsxDj4kuEtgNluy0dwgKybDH44tKuBZBHpV5EkEDpikAZYkGeALXAAJepAcDKZC4pVOjecnlcC02BSGSEZ33Ro0iFLBAHW+OwABzBchGAFcRPPqGimNqKYKPfYrw5QmAFrnaoEbE6IAznCzQm6dkojKAGDNSZCNQ1AiZZ49c8pSJrSUQqemDrUX0SwPXaagWRxEc+pVsCDSAakUs6LnpkewcIEL/iiigFkAmfFFbRIzSMECbThzJR+aC1xmgAHjuiQqUUScAU4uUBsxl7pSVnGDprGUGwwKTesza2AhhxktsHwgcxe6AtmQE6qWEZdIZS7I9kgy/I7BSpxGsbKjCGLa2xFFKI9xCwALXDWCaHgkcVSdCDJSyCCsL3CNAJnn1ZYwIDkj3SFAHBJYMAk40qWMfdhRw6YSSJJx0bKe52ecetdx7wEwMmDax0XE9ZNoAZaCsR15LeHQ01Zk9QK+TCliGQgHO9mGCpWhPK8kA4H02ioERrMwHxktA0ACAhBPQwD2Gs8TATA9s/DYZLZ+QmCgDJMCvAGKzDPiwdLTMho9rrnz1IaphlG766ainrvrqrLfu+uuwxy777LTXbvvtuOeuu+khAAA7'); } //$fp = fopen('php://output', 'r+', false); //fwrite($fp, $logo); //$info = getimagesize($fp); //$type = $info['mime']; $type = $this->_getFileType($logo); echo $logo; } $this->_response->setHeader('Expires', gmdate('D, d M Y H:i:s T', time() + 36000), true); $this->_response->setHeader('Cache-Control', 'private', true); $this->_response->setHeader('Pragma', 'private', true); $this->_response->setHeader('Content-type', $type); $this->_response->setHeader('Content-Length', strlen($logo)); }
/** * 获取组织信息 * * @param $orgId */ public function getOrg($orgId) { $memcache = $this->_bootstrap->memcache; $key = 'TUDU-ORG-' . $orgId; $org = $memcache->get($key); if (!$org) { $daoOrg = Oray_Dao::factory('Dao_Md_Org_Org', $this->_multidb->getDb()); $org = $daoOrg->getOrgById($orgId); if ($org) { $org = $org->toArray(); $memcache->set($key, $org); } } return $org; }