예제 #1
0
 /**
  * 导出投票数据
  */
 public function exportVoteAction()
 {
     $this->_helper->viewRenderer->setNeverRender();
     $tuduId = $this->_request->getParam('tid');
     $voteId = $this->_request->getParam('voteid');
     /* @var $daoTudu Dao_Td_Tudu_Tudu */
     $daoTudu = $this->getDao('Dao_Td_Tudu_Tudu');
     $tudu = $daoTudu->getTuduById($this->_user->uniqueId, $tuduId, array());
     $isSender = in_array($tudu->sender, array($this->_user->address, $this->_user->userName), true);
     /* @var $daoVote Dao_Td_Tudu_Vote */
     $daoVote = $this->getDao('Dao_Td_Tudu_Vote');
     $vote = $daoVote->getVote(array('tuduid' => $tuduId, 'voteid' => $voteId));
     $vote->getOptions();
     $vote = $vote->toArray();
     $filename = Oray_Function::utf8ToGbk(sprintf($this->lang['vote_info'], $vote['title']) . '.csv');
     $data = array();
     // 准备导出数据的列名
     $columns = array(Oray_Function::utf8ToGbk($this->lang['vote_option']), Oray_Function::utf8ToGbk($this->lang['vote_result']), Oray_Function::utf8ToGbk($this->lang['vote_percent']));
     // 创建人可见投票参与人
     if ($vote['anonymous'] && $isSender) {
         $vote['privacy'] = true;
     }
     // 公开参与人
     if ($vote['privacy']) {
         $columns[] = Oray_Function::utf8ToGbk($this->lang['vote_voter']);
     }
     $data[] = implode(',', $columns);
     foreach ($vote['options'] as $optionId => $option) {
         // 公开参与人
         if ($vote['privacy']) {
             $voters = array();
             if (!empty($option['voters'])) {
                 foreach ($option['voters'] as $voter) {
                     if (trim($voter)) {
                         $voter = explode(' ', $voter);
                         $voters[] = $voter[1];
                     }
                 }
             }
             $voters = !empty($voters) ? implode('、', $voters) : '-';
         }
         $percent = $option['votecount'] / $vote['votecount'] * 100;
         $optionItem = array(Oray_Function::utf8ToGbk($option['text']), $option['votecount'], $percent . '%');
         // 公开参与人
         if ($vote['privacy']) {
             $optionItem[] = Oray_Function::utf8ToGbk($voters);
         }
         $data[] = implode(',', $optionItem);
     }
     header("Content-type:text/csv");
     header("Content-Disposition:attachment;filename=" . $filename);
     header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
     header('Expires:0');
     header('Pragma:public');
     echo implode("\n", $data);
 }
예제 #2
0
파일: Whois.php 프로젝트: bjtenao/tudu-web
 /**
  * 获取WHOIS信息
  *
  * @param string $domainName
  * @param int    $detail
  * @param int    $raw
  */
 public function whois($domainName, $raw = 1, $detail = 1)
 {
     $query = array('names' => Oray_Function::utf8ToGbk($domainName), 'detail' => $detail, 'raw' => $raw);
     $url = $this->_apis[array_rand($this->_apis)] . '?' . http_build_query($query);
     $content = $this->_request('GET', $url);
     $whois = array();
     $pattern = "/<tag name='([\\w ]+)'>([\\s\\S]*?)<\\/tag>/";
     if (preg_match_all($pattern, $content, $matches)) {
         for ($i = 0; $i < count($matches[0]); $i++) {
             $value = $matches[2][$i];
             if (strpos($value, '<![CDATA[') === 0) {
                 $value = substr($value, 9, -3);
             }
             switch (strtoupper($matches[1][$i])) {
                 // 域名
                 case 'DOMAIN NAME':
                     $key = 'domainname';
                     break;
                     // 注册机构(顶级注册商)
                 // 注册机构(顶级注册商)
                 case 'REGISTER':
                     $key = 'registrar';
                     break;
                     // 注册单位
                 // 注册单位
                 case 'REGISTRANT ORG':
                 case 'DETAIL_REGISTANT_ORG':
                     $key = 'registrant';
                     break;
                     // 注册人(单位或个人)
                 // 注册人(单位或个人)
                 case 'REGISTRANT NAME':
                 case 'DETAIL_REGISTANT':
                     $key = 'registrantname';
                     break;
                     // 管理员邮箱
                 // 管理员邮箱
                 case 'ADMIN EMAIL':
                 case 'DETAIL_ADMIN_EMAIL':
                     $key = 'adminemail';
                     break;
                     // WHOIS服务器
                 // WHOIS服务器
                 case 'WHOIS SERVER':
                     $key = 'whoisserver';
                     $value = $value ? explode(',', $value) : '';
                     break;
                     // 解析服务器
                 // 解析服务器
                 case 'NAME SERVER':
                     $key = 'nameserver';
                     $value = $value ? explode(',', $value) : '';
                     break;
                     // 域名状态
                 // 域名状态
                 case 'STATUS':
                     $key = 'status';
                     $value = $value ? explode(',', $value) : '';
                     break;
                     // 注册时间
                 // 注册时间
                 case 'CREATE DATE':
                     $key = 'creationdate';
                     $value = strtotime($value);
                     break;
                     // 更新时间
                 // 更新时间
                 case 'UPDATE DATE':
                     $key = 'updateddate';
                     $value = strtotime($value);
                     break;
                     // 过期时间
                 // 过期时间
                 case 'EXPIRE DATE':
                     $key = 'expirationdate';
                     $value = strtotime($value);
                     break;
                     // WHOIS详细信息
                 // WHOIS详细信息
                 case 'WHOIS_RAW_DATA':
                     $key = 'whois';
                     break;
                 default:
                     $key = $matches[1][$i];
                     break;
             }
             $whois[$key] = $value;
         }
     }
     return $whois;
 }
예제 #3
0
 /**
  * 导出日程表数据
  */
 public function exportAction()
 {
     $this->_helper->viewRenderer->setNeverRender();
     $unIds = trim($this->_request->getQuery('unid'));
     $unIds = explode(',', $unIds);
     $type = $this->_request->getQuery('type', 'week');
     $startDate = $this->_request->getQuery('sd');
     // 周
     if ($type == 'week') {
         $startDate = $startDate - (int) date('w', $startDate) * 86400;
         $startDate = strtotime(date('Y-m-d', $startDate));
         $endDate = $startDate + 6 * 86400;
         // 月
     } else {
         $startDate = strtotime(date('Y-m-1', $startDate));
         $endDate = strtotime(date('Y-m-t', $startDate));
     }
     /* @var $daoCast Dao_Md_User_Cast */
     $daoCast = $this->getMdDao('Dao_Md_User_Cast');
     $users = $daoCast->getCastUsers(array('orgid' => $this->_user->orgId, 'userid' => $this->_user->userId), null, 'ordernum DESC');
     /* @var $daoTudu Dao_Td_Tudu_Calendar */
     $daoCaneldar = $this->getDao('Dao_Td_Tudu_Calendar');
     $tudus = array();
     // 读取图度数据
     foreach ($unIds as $unId) {
         $records = $daoCaneldar->getCalendarTudus(array('uniqueid' => $this->_user->uniqueId, 'target' => $unId, 'role' => 'to', 'starttime' => $startDate, 'endtime' => $endDate), 'status ASC, lastposttime DESC');
         $tudus[$unId] = $records->toArray();
     }
     $filename = 'calendar-' . date('Ymd') . '.csv';
     $data = array();
     // 准备导出数据的列名
     $columns = array(Oray_Function::utf8ToGbk($this->lang['tudu_user']), Oray_Function::utf8ToGbk($this->lang['subject']), Oray_Function::utf8ToGbk($this->lang['receiver']), Oray_Function::utf8ToGbk($this->lang['percent']), Oray_Function::utf8ToGbk($this->lang['starttime']), Oray_Function::utf8ToGbk($this->lang['endtime']), Oray_Function::utf8ToGbk($this->lang['finish_time']));
     $data[] = implode(',', $columns);
     $castUsers = $users->toArray('uniqueid');
     $accepterUsers = $users->toArray('username');
     foreach ($tudus as $uid => $tudu) {
         $user = $castUsers[$uid];
         $trueName = !empty($user['truename']) ? $user['truename'] : $user['userid'];
         foreach ($tudu as $record) {
             $startTime = !empty($record['starttime']) ? date('Y-m-d H:i', $record['starttime']) : '-';
             $endTime = !empty($record['endtime']) ? date('Y-m-d H:i', $record['endtime']) : '-';
             $completeTime = !empty($record['completetime']) ? date('Y-m-d H:i', $record['completetime']) : '-';
             $percent = !empty($record['percent']) ? $record['percent'] . '%' : '0%';
             $accepters = !empty($record['accepter']) ? $record['accepter'] : array();
             $receiver = array();
             foreach ($accepters as $accepter) {
                 if (!empty($accepterUsers[$accepter])) {
                     $accepterUser = $accepterUsers[$accepter];
                     $receiver[] = !empty($accepterUser['truename']) ? $accepterUser['truename'] : $accepterUser['userid'];
                 }
             }
             $receiver = !empty($receiver) ? implode('、', $receiver) : '-';
             $data[] = implode(',', array(Oray_Function::utf8ToGbk($trueName), Oray_Function::utf8ToGbk($record['subject']), Oray_Function::utf8ToGbk($receiver), $percent, $startTime, $endTime, $completeTime));
         }
     }
     header("Content-type:text/csv");
     header("Content-Disposition:attachment;filename=" . $filename);
     header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
     header('Expires:0');
     header('Pragma:public');
     echo implode("\n", $data);
 }
예제 #4
0
파일: Count.php 프로젝트: bjtenao/tudu-web
 /**
  *
  * @param array $records
  * @return string
  */
 public function arrayToString(array $records, $type, $categories = null)
 {
     $data = array();
     foreach ($records as $record) {
         $rs = array();
         $rs[] = Oray_Function::utf8ToGbk($record['truename']);
         $rs[] = Oray_Function::utf8ToGbk($record['deptname']);
         if ($type == 'date') {
             $weekday = date('w', $record['date']);
             $rs[] = Oray_Function::utf8ToGbk(date('Y-m-d', $record['date']) . '(' . $this->lang['week_' . $weekday] . ')');
             $rs[] = isset($record['checkintime']) ? Oray_Function::utf8ToGbk(date('H:i', $record['checkintime']) . '(' . $record['checkinip'] . ' ' . $record['checkinaddress'] . ')') : '-';
             $rs[] = isset($record['checkouttime']) ? Oray_Function::utf8ToGbk(date('H:i', $record['checkouttime']) . '(' . $record['checkoutip'] . ' ' . $record['checkoutaddress'] . ')') : '-';
             $rs[] = Oray_Function::utf8ToGbk($this->formatTime($record['worktime']));
             $rs[] = $record['islate'] ? 1 : 0;
             $rs[] = $record['isleave'] ? 1 : 0;
             $rs[] = $record['iswork'] ? 1 : 0;
         } elseif ($type == 'month') {
             $rs[] = $record['late'] ? $record['late'] : 0;
             $rs[] = $record['leave'] ? $record['leave'] : 0;
             $rs[] = $record['unwork'] ? $record['unwork'] : 0;
             foreach ($categories as $category) {
                 $id = strtr($category->categoryId, array('^' => ''));
                 foreach ($record as $key => $val) {
                     if ($key == $id) {
                         $rs[] = $val;
                     }
                 }
             }
         }
         $data[] = implode(',', $rs);
     }
     return implode("\n", $data);
 }