Beispiel #1
0
 /**
  *
  * @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];
 }
Beispiel #2
0
 /**
  * 登录页面
  */
 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');
         }
     }
 }
Beispiel #3
0
 /**
  * 聊天记录
  */
 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;
 }
Beispiel #4
0
    /**
     * 转发图度
     *
     */
    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);
    }
Beispiel #5
0
 /**
  * 编辑表单
  */
 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);
 }
Beispiel #6
0
 /**
  * 输出搜索表单
  *
  */
 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;
 }
Beispiel #7
0
 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');
         }
     }
 }
Beispiel #8
0
 /**
  * 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);
 }
Beispiel #9
0
 /**
  * 更新会议信息
  * @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);
     }
 }
Beispiel #10
0
 /**
  * 修改密码
  */
 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']);
 }
Beispiel #11
0
 /**
  * 查看页面
  */
 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();
     }
 }
Beispiel #12
0
 /**
  * 
  * @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);
 }
Beispiel #13
0
 /**
  *
  * @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;
 }
Beispiel #14
0
 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('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');
             } 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('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');
         }
         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));
 }
Beispiel #15
0
 /**
  * 获取组织信息
  *
  * @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;
 }