/** * 导出投票数据 */ 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); }
/** * 获取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; }
/** * 导出日程表数据 */ 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); }
/** * * @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); }