public function run() { list($page, $perpage, $username, $starttime, $endtime, $keyword) = $this->getInput(array('page', 'perpage', 'username', 'starttime', 'endtime', 'keyword')); $starttime && ($pwStartTime = Pw::str2time($starttime)); $endtime && ($pwEndTime = Pw::str2time($endtime)); $page = $page ? $page : 1; $perpage = $perpage ? $perpage : $this->perpage; list($start, $limit) = Pw::page2limit($page, $perpage); if ($username) { $userinfo = $this->_getUserDs()->getUserByName($username); $fromUid = $userinfo['uid'] ? $userinfo['uid'] : 0; } Wind::import('WINDID:service.message.srv.vo.WindidMessageSo'); $vo = new WindidMessageSo(); $endtime && $vo->setEndTime($endtime); $fromUid && $vo->setFromUid($fromUid); $keyword && $vo->setKeyword($keyword); $starttime && $vo->setStarttime($starttime); $messages = $this->_getMessageDs()->searchMessage($vo, $start, $limit); $count = $this->_getMessageDs()->countMessage($vo); foreach ($messages as $k => $v) { $uids[] = $v['from_uid']; } $users = $this->_getUserDs()->fetchUserByUid($uids); foreach ($messages as $k => $v) { $messages[$k]['username'] = $users[$v['from_uid']]['username']; } $this->setOutput($count, 'count'); $this->setOutput($page, 'page'); $this->setOutput($perpage, 'perpage'); $this->setOutput(array('keyword' => $keyword, 'username' => $username, 'starttime' => $starttime, 'endtime' => $endtime), 'args'); $this->setOutput($messages, 'messages'); }